{"version":3,"file":"vendor.3aca650283aa5b39.js","mappings":";;;;;;;;;;;;;;;;;;;AAAoC;AACmG;AAC5F;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACwC;AACxC,yBAAyB,yDAAc;AACvC;AACA;AACA,CAAC;AACD;AACA;AACA,WAAW,qDAAM,CAAC,qDAAQ;AAC1B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,uDAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,iCAAiC,sDAAe;AAC3G,uBAAuB,gEAAqB,GAAG,6CAA6C,0BAA0B,sDAAW,qBAAqB,6CAA6C;AACnM;AACA,MAAM,gCAAgC,MAAM,mDAAQ,EAAE,IAAI,MAAM,iDAAM,yBAAyB;AAC/F;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,iBAAiB,oBAAoB;AACrC,KAAK,iBAAiB,UAAU;AAChC,sBAAsB,mDAAQ;AAC9B,aAAa;AACb,sBAAsB,iDAAM;AAC5B;AACA,aAAa,GAAG,IAAI,UAAU;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,uDAAY;AACtC;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC,yBAAyB,+DAAwB,GAAG,yGAAyG;AAC7J,QAAQ,yDAAkB;AAC1B,OAAO,YAAY,YAAY,aAAa,qBAAqB,gCAAgC,gEAAyB,IAAI,2CAA2C,KAAK;AAC9K;AACA,eAAe,MAAM,iDAAM,wBAAwB;AACnD,YAAY,MAAM,gDAAK,EAAE;AACzB;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA,8BAA8B,2CAA2C;AACzE,wBAAwB,yBAAyB;AACjD;AACA,aAAa;AACb,KAAK,iBAAiB,YAAY,IAAI;AACtC,kBAAkB,iDAAM;AACxB;AACA,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS,GAAG,IAAI;;AAEhB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD,gCAAgC,8DAAuB,GAAG,kBAAkB;AAC5E,gCAAgC,8DAAuB,GAAG;AAC1D,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,mDAAQ;AACtB;AACA;AACA;AACA,aAAa;AACb,KAAK,iBAAiB;AACtB,eAAe,mDAAmD,gEAAyB,eAAe,qCAAqC,IAAI;;AAEnJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEwH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtLvE;AACb;AACuB;;AAE3D;AACA;AACA;AACA;AACA;AACA;AACA;AACwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kDAAY,4BAA4B,wCAAE;AACzD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,uBAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,uBAAuB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,yCAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF;AACjF,kCAAkC,gEAAqB,GAAG,wDAAwD,yCAAyC,wDAAwD;AACnN,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,iBAAiB,oBAAoB;AACrC,KAAK,iBAAiB,YAAY,UAAU;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA,oCAAoC,yDAAc;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAE8N;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrd1L;AACsC;AACtB;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,2BAA2B,sDAAe,CAAC,sDAAW;AACrG,iBAAiB,gEAAqB,GAAG,uCAAuC,oBAAoB,sDAAW,CAAC,sDAAc,KAAK,uCAAuC;AAC1K;AACA,MAAM,6BAA6B,MAAM,iDAAM,SAAS,sDAAW,IAAI;AACvE;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,iBAAiB,oBAAoB;AACrC,KAAK,iBAAiB,UAAU;AAChC,sBAAsB,iDAAM;AAC5B,uBAAuB,sDAAW;AAClC,aAAa,GAAG,IAAI,UAAU;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D,oCAAoC,8DAAuB,GAAG,sBAAsB;AACpF,oCAAoC,8DAAuB,GAAG;AAC9D,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,mDAAQ;AACtB,iBAAiB;AACjB,KAAK,iBAAiB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,uBAAuB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEsR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClXnL;AAC/D;AAC4P;AAClK;AACG;AACrF;AACmE;AACzE;AACK;AACoB;AACiE;;AAEhI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACwC;AACQ;AACJ;AACO;;AAEnD;AACA;AACA,oCAAoC,yDAAc;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,yCAAO;AAC/C;AACA,kEAAkE,oEAAoB;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,0BAA0B,iBAAiB,2EAAoB;AAC/D;AACA;AACA;AACA;AACA,wBAAwB;AACxB,6BAA6B,oBAAoB,2EAAoB;AACrE;AACA;AACA;AACA,wBAAwB;AACxB,6BAA6B,oBAAoB,2EAAoB;AACrE;AACA;AACA;AACA;AACA,iFAAiF;AACjF,+CAA+C,+DAAwB,GAAG,yGAAyG,8EAA8E,aAAa,gEAAyB;AACvS;AACA;AACA,uBAAuB,yDAAU;AACjC,aAAa,IAAI,kEAA2B,GAAG;AAC/C;AACA,iBAAiB,MAAM,gDAAK,EAAE;AAC9B,oBAAoB,MAAM,gDAAK,EAAE;AACjC,oBAAoB,MAAM,gDAAK,EAAE;AACjC;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA;AACA;AACA;AACA,+BAA+B,yDAAU;AACzC,qBAAqB;AACrB,aAAa;AACb,KAAK,iBAAiB,YAAY,IAAI;AACtC,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS,GAAG,IAAI;;AAEhB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,yCAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,wCAAE;AACrB;AACA,mBAAmB,4CAAU;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,yDAAS;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,sDAAM;AACvD;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,oEAAa;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,+CAAS;AAC5B,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,mCAAmC,sDAAe,CAAC,iDAAa,GAAG,sDAAe,CAAC,2DAAe,GAAG,sDAAe,CAAC,sDAAQ;AAC5L,yBAAyB,gEAAqB,GAAG,+CAA+C,4BAA4B,sDAAW,CAAC,iDAAS,GAAG,sDAAW,CAAC,2DAAW,GAAG,sDAAW,CAAC,sDAAW,QAAQ,+CAA+C;AAC5P;AACA,MAAM,MAAM,iDAAM,EAAE;AACpB,MAAM,MAAM,2DAAQ,EAAE;AACtB,MAAM,gCAAgC,MAAM,mDAAQ,EAAE,IAAI,MAAM,iDAAM,SAAS,sDAAQ,IAAI;AAC3F;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,iBAAiB,oBAAoB;AACrC,KAAK,iBAAiB,UAAU,MAAM,iDAAa,EAAE,IAAI,MAAM,2DAAe,EAAE,IAAI;AACpF,sBAAsB,mDAAQ;AAC9B,aAAa;AACb,sBAAsB,iDAAM;AAC5B,uBAAuB,sDAAQ;AAC/B,aAAa,GAAG,IAAI,UAAU;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,yCAAO;AACrC,oCAAoC,4CAAU,mDAAmD,+CAAS,+CAA+C,0DAAS;AAClK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,2EAAoB;AACzC;AACA;AACA;AACA;AACA,gBAAgB,2EAAoB;AACpC;AACA;AACA,qBAAqB,2EAAoB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6EAAsB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,2EAAoB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,2EAAoB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,gCAAgC,+DAAwB,CAAC,qDAAiB,GAAG,+DAAwB,oBAAoB,+DAAwB,CAAC,iDAAa,GAAG,+DAAwB,CAAC,8DAAqB;AACzQ,mCAAmC,+DAAwB,GAAG,yFAAyF;AACvJ;AACA,MAAM,MAAM,qDAAU,EAAE;AACxB,MAAM,wBAAwB;AAC9B,MAAM,MAAM,iDAAM,EAAE;AACpB,MAAM,MAAM,8DAAc,iBAAiB,MAAM,mDAAQ,EAAE;AAC3D;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA,aAAa;AACb,KAAK,iBAAiB,UAAU,MAAM,qDAAiB,EAAE,IAAI,wBAAwB,IAAI,MAAM,iDAAa,EAAE,IAAI,MAAM,8DAAqB;AAC7I,sBAAsB,mDAAQ;AAC9B,aAAa,GAAG,IAAI,UAAU;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,yCAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,gBAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,yDAAS;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,uDAAuD;AACrE,cAAc;AACd;AACA;AACA,yDAAyD,gCAAgC,sDAAe,CAAC,2DAAe,GAAG,sDAAe,CAAC,iDAAa,GAAG,sDAAe,CAAC,sDAAQ;AACnL,sBAAsB,gEAAqB,GAAG,4CAA4C,yBAAyB,sDAAW,CAAC,2DAAW,GAAG,sDAAW,CAAC,iDAAS,GAAG,sDAAW,CAAC,sDAAW,QAAQ,4CAA4C;AAChP;AACA,MAAM,MAAM,2DAAQ,EAAE;AACtB,MAAM,MAAM,iDAAM,EAAE;AACpB,MAAM,gCAAgC,MAAM,mDAAQ,EAAE,IAAI,MAAM,iDAAM,SAAS,sDAAQ,IAAI;AAC3F;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,iBAAiB,oBAAoB;AACrC,KAAK,iBAAiB,UAAU,MAAM,2DAAe,EAAE,IAAI,MAAM,iDAAa,EAAE,IAAI;AACpF,sBAAsB,mDAAQ;AAC9B,aAAa;AACb,sBAAsB,iDAAM;AAC5B,uBAAuB,sDAAQ;AAC/B,aAAa,GAAG,IAAI,UAAU;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,0DAAuB,GAAG,gDAAa;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,yCAAO;AAC3C;AACA,yCAAyC,yCAAO;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,4CAAU;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,qDAAkB;AAClD;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,4EAAqB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,0DAAS;AACrB;AACA;AACA;AACA,YAAY,yDAAS;AACrB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,0DAAS;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,KAAK,GAAG,+BAA+B;AAC3E;AACA;AACA,sCAAsC,KAAK;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,uBAAuB;AAC/E;AACA,mDAAmD,uBAAuB;AAC1E;AACA;AACA,+EAA+E,2CAA2C,+DAAwB,CAAC,qDAAiB,GAAG,+DAAwB,CAAC,4DAAwB,GAAG,+DAAwB,CAAC,iDAAa,GAAG,+DAAwB,8BAA8B,+DAAwB,CAAC,8DAAqB,MAAM,+DAAwB,oBAAoB,+DAAwB;AAClb,8CAA8C,+DAAwB,GAAG,4IAA4I;AACrN,QAAQ,yDAAkB;AAC1B,MAAM;AACN;AACA,QAAQ,4DAAqB,MAAM,yDAAkB;AACrD,OAAO,sIAAsI;AAC7I,QAAQ,yDAAkB;AAC1B,OAAO,YAAY,sDAAsD,aAAa,4CAA4C,aAAa,gEAAyB;AACxK;AACA;AACA,aAAa,IAAI,wEAAiC,8NAA8N;AAChR,QAAQ,6DAAsB;AAC9B,QAAQ,4DAAqB;AAC7B,QAAQ,0DAAmB;AAC3B,QAAQ,0DAAmB;AAC3B,QAAQ,uDAAgB;AACxB,MAAM;AACN,QAAQ,uDAAgB;AACxB,QAAQ,yDAAkB;AAC1B,OAAO,wCAAwC,cAAc,kBAAkB,cAAc,eAAe,wBAAwB,4BAA4B,iCAAiC,oCAAoC,kBAAkB,MAAM,OAAO,gBAAgB,8CAA8C,QAAQ,UAAU,+EAA+E,gBAAgB,+ZAA+Z,eAAe,gBAAgB,cAAc,eAAe,oBAAoB,qBAAqB,aAAa,6EAA6E,eAAe,uZAAuZ,cAAc,iBAAiB,aAAa,gBAAgB,mBAAmB,sBAAsB,aAAa,2BAA2B,kBAAkB,MAAM,OAAO,WAAW,UAAU,qBAAqB,qCAAqC,QAAQ,UAAU,wBAAwB,4CAA4C;AACxwD;AACA,MAAM,MAAM,qDAAU,EAAE;AACxB,MAAM,MAAM,4DAAiB,EAAE;AAC/B,MAAM,MAAM,iDAAM,EAAE;AACpB,MAAM,gCAAgC,MAAM,mDAAQ,EAAE,IAAI,MAAM,iDAAM,oCAAoC,GAAG;AAC7G,MAAM,MAAM,8DAAc,iBAAiB,MAAM,mDAAQ,EAAE,GAAG;AAC9D,MAAM,wBAAwB;AAC9B,MAAM;AACN;AACA;AACA,oBAAoB,MAAM,gDAAK,EAAE;AACjC,mBAAmB,MAAM,gDAAK,EAAE;AAChC,4BAA4B,MAAM,iDAAM,EAAE;AAC1C,wBAAwB,MAAM,oDAAS,6BAA6B,cAAc,IAAI;AACtF;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,+BAA+B,iEAAsB;AACrD,iCAAiC,yEAA8B;AAC/D;AACA;AACA;AACA,qBAAqB;AACrB,sDAAsD,cAAc,kBAAkB,cAAc,eAAe,wBAAwB,4BAA4B,iCAAiC,oCAAoC,kBAAkB,MAAM,OAAO,gBAAgB,8CAA8C,QAAQ,UAAU,+EAA+E,gBAAgB,+ZAA+Z,eAAe,gBAAgB,cAAc,eAAe,oBAAoB,qBAAqB,aAAa,6EAA6E,eAAe,uZAAuZ,cAAc,iBAAiB,aAAa,gBAAgB,mBAAmB,sBAAsB,aAAa,2BAA2B,kBAAkB,MAAM,OAAO,WAAW,UAAU,qBAAqB,qCAAqC,QAAQ,UAAU,wBAAwB;AACnuD,aAAa;AACb,KAAK,iBAAiB,UAAU,MAAM,qDAAiB,EAAE,IAAI,MAAM,4DAAwB,EAAE,IAAI,MAAM,iDAAa,EAAE,IAAI;AAC1H,sBAAsB,mDAAQ;AAC9B,aAAa;AACb,sBAAsB,iDAAM;AAC5B;AACA,aAAa,GAAG,IAAI,MAAM,8DAAqB;AAC/C,sBAAsB,mDAAQ;AAC9B,aAAa,GAAG,IAAI,wBAAwB,IAAI,qBAAqB,IAAI,IAAI;AAC7E,kBAAkB,iDAAM;AACxB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,oDAAS;AAC3B,uCAAuC,cAAc;AACrD,SAAS,GAAG,IAAI;;AAEhB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,yCAAO;AACrC;AACA,sCAAsC,yCAAO;AAC7C;AACA;AACA;AACA;AACA,QAAQ,0DAAS;AACjB;AACA,QAAQ,yDAAQ;AAChB;AACA;AACA;AACA,QAAQ,0DAAS;AACjB;AACA,QAAQ,4DAAW;AACnB;AACA;AACA;AACA;AACA,8BAA8B,yCAAO;AACrC;AACA;AACA;AACA,SAAS;AACT,gDAAgD,0DAAS;AACzD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAY;AACxB;AACA;AACA;AACA;AACA,6CAA6C,sEAAe,CAAC,mDAAY;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,2EAAoB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,cAAc;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,QAAQ;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,wCAAE;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,6DAA6D,kCAAkC,+DAAwB,CAAC,2DAAuB,GAAG,+DAAwB,CAAC,sDAAkB,GAAG,+DAAwB,CAAC,0DAAsB,GAAG,+DAAwB,CAAC,8EAAuB,GAAG,+DAAwB,+BAA+B,+DAAwB,CAAC,iDAAa;AAClY,qCAAqC,+DAAwB,GAAG,gGAAgG,oMAAoM,aAAa,gEAAyB;AAC1Y,cAAc,SAAS,8EAAuB,YAAY,mFAA4B,EAAE;AACxF,aAAa;AACb;AACA,MAAM,MAAM,2DAAgB,EAAE;AAC9B,MAAM,MAAM,sDAAW,EAAE;AACzB,MAAM,MAAM,0DAAe,EAAE;AAC7B,MAAM,MAAM,mFAA4B,iBAAiB,MAAM,iDAAM,SAAS,8EAAuB,IAAI,GAAG;AAC5G,MAAM,+CAA+C,MAAM,mDAAQ,EAAE,GAAG;AACxE,MAAM,MAAM,iDAAM;AAClB;AACA;AACA,wBAAwB,MAAM,gDAAK,EAAE;AACrC,6BAA6B,MAAM,gDAAK,EAAE;AAC1C,8BAA8B,MAAM,gDAAK,EAAE;AAC3C,uCAAuC,MAAM,gDAAK,EAAE;AACpD;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA;AACA,sBAAsB,SAAS,8EAAuB,YAAY,mFAA4B,EAAE;AAChG;AACA,aAAa;AACb,KAAK,iBAAiB,UAAU,MAAM,2DAAuB,EAAE,IAAI,MAAM,sDAAkB,EAAE,IAAI,MAAM,0DAAsB,EAAE,IAAI,MAAM,mFAAmC;AAC5K,sBAAsB,iDAAM;AAC5B,uBAAuB,8EAAuB;AAC9C,aAAa,GAAG,IAAI;AACpB,sBAAsB,mDAAQ;AAC9B,aAAa,GAAG,IAAI,MAAM,iDAAa,EAAE,IAAI,IAAI;AACjD,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS,GAAG,IAAI;;AAEhB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE;AACrE,yCAAyC,8DAAuB,GAAG,2BAA2B;AAC9F,yCAAyC,8DAAuB,GAAG;AACnE,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,mDAAQ;AACtB;AACA;AACA;AACA,aAAa;AACb,KAAK,iBAAiB;AACtB,eAAe,mDAAmD,gEAAyB,wBAAwB,yDAAyD,IAAI;AAChL;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D,qCAAqC,8DAAuB,GAAG,uBAAuB;AACtF,qCAAqC,8DAAuB,GAAG;AAC/D,YAAY,0DAAU;AACtB,YAAY,iEAAc;AAC1B;AACA,WAAW,0DAAU,wBAAwB;AAC7C,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,mDAAQ;AACtB;AACA;AACA,oBAAoB,0DAAU;AAC9B,oBAAoB,iEAAc;AAClC;AACA;AACA;AACA,oBAAoB,0DAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,KAAK,iBAAiB;AACtB,eAAe,mDAAmD,gEAAyB,oBAAoB,4BAA4B,gFAAgF,yBAAyB,QAAQ,0DAAU;AACtQ,QAAQ,iEAAc,yBAAyB,yBAAyB,QAAQ,0DAAU,iGAAiG,IAAI;;AAE/L;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEiT;;;;;;;;;;;;;;;;;;;;;;;;ACt8CtQ;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,MAAM;AACrC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,MAAM;AACxD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,qDAAU;AAC7C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB,oBAAoB;AACpB,8BAA8B;AAC9B,yBAAyB;AACzB,SAAS,MAAM,SAAS;AACxB,QAAQ,MAAM,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,MAAM;AACrE;AACA,qCAAqC,YAAY;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAE2I;;;;;;;;;;;;;;;;;;;;;AClI3I;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA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AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,EAAE;;;AAGF,iEAAe;AACf;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;AChDmE;AACR;AAC0B;AAC9B;AACY;AACA;AAChB,CAAC;;AAErD;AACA,MAAM,sEAAgB,gBAAgB,2CAAI;AAC1C;AACA;;AAEA,0BAA0B,0EAAoB;AAC9C,UAAU,mFAA6B,gCAAgC,mFAA6B;AACpG;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,sEAAgB;AACtC;AACA,iGAAiG,0EAAoB;AACrH;AACA,sBAAsB,sEAAgB,gBAAgB,2CAAI,GAAG,0EAAoB;AACjF;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,uBAAuB;AACzC;;AAEA,yBAAyB,sEAAgB;;AAEzC,2BAA2B,kEAAY,gBAAgB,4CAAK;AAC5D,sBAAsB,0CAAG,EAAE,6CAAM;AACjC;AACA,mBAAmB,oEAAc;AACjC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,4DAA4D,4CAAK,GAAG,2CAAI,sBAAsB,6CAAM,GAAG,0CAAG;;AAE1G;AACA,0BAA0B,0EAAoB;AAC9C;;AAEA,2BAA2B,0EAAoB;AAC/C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA,kCAAkC,QAAQ;AAC1C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;;AAGF,iEAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;AClJsD;AACC;;AAExD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU,0CAAG,EAAE,4CAAK,EAAE,6CAAM,EAAE,2CAAI;AAClC;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,oEAAc;AACxC;AACA,GAAG;AACH,0BAA0B,oEAAc;AACxC;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,GAAG;AACH,EAAE;;;AAGF,iEAAe;AACf;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5DyD;AACZ;AACgB;AACE;AACpB;AACA;AACI;AACc;;;;;;;;;;;;;;;;;;;ACPF;AACD,CAAC;;AAErD;AACP,sBAAsB,sEAAgB;AACtC,wBAAwB,2CAAI,EAAE,0CAAG;;AAEjC,mEAAmE;AACnE;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,UAAU,2CAAI,EAAE,4CAAK;AACrB;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,wDAAiB;AAC9B;AACA;AACA,GAAG,IAAI;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;;AAGF,iEAAe;AACf;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;ACrDuD;;AAExD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,oEAAc;AAC5C;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;;AAGF,iEAAe;AACf;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;ACxB6D;AACF;AACgB;AAC5B;AACY;AACF;AACI;AACN;AACJ;AACY;AACE;;AAElE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC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AAuB,GAAG,eAAe;AACxE,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,mDAAQ;AACtB;AACA;AACA;AACA;AACA,aAAa;AACb,KAAK,iBAAiB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD,qBAAqB,gEAAqB,GAAG,2CAA2C,4BAA4B,2CAA2C;AAC/J,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB;AACA;AACA,aAAa;AACb,KAAK,iBAAiB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E;AAC/E,iCAAiC,gEAAqB,GAAG,uDAAuD,wCAAwC,uDAAuD;AAC/M,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB;AACA;AACA,aAAa;AACb,KAAK,iBAAiB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE;AACzE,8BAA8B,gEAAqB,GAAG,oDAAoD,qCAAqC,oDAAoD;AACnM,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB;AACA;AACA,aAAa;AACb,KAAK,iBAAiB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE;AACrE,4BAA4B,gEAAqB,GAAG,kDAAkD,mCAAmC,kDAAkD;AAC3L,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB;AACA;AACA,aAAa;AACb,KAAK,iBAAiB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD,mBAAmB,gEAAqB,GAAG,yCAAyC,0BAA0B,yCAAyC;AACvJ,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB;AACA;AACA,aAAa;AACb,KAAK,iBAAiB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D,uBAAuB,gEAAqB,GAAG,6CAA6C,8BAA8B,6CAA6C;AACvK,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB;AACA;AACA,aAAa;AACb,KAAK,iBAAiB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E;AAC3E,+BAA+B,gEAAqB,GAAG,qDAAqD,sCAAsC,qDAAqD;AACvM,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB;AACA;AACA,aAAa;AACb,KAAK,iBAAiB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD,sBAAsB,gEAAqB,GAAG,4CAA4C,6BAA6B,4CAA4C;AACnK,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB;AACA;AACA,aAAa;AACb,KAAK,iBAAiB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE;AACjE,0BAA0B,gEAAqB,GAAG,gDAAgD,iCAAiC,gDAAgD;AACnL,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB;AACA;AACA,aAAa;AACb,KAAK,iBAAiB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D,uBAAuB,gEAAqB,GAAG,6CAA6C,8BAA8B,6CAA6C;AACvK,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB;AACA;AACA,aAAa;AACb,KAAK,iBAAiB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD,qBAAqB,gEAAqB,GAAG,2CAA2C,4BAA4B,2CAA2C;AAC/J,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB;AACA;AACA,aAAa;AACb,KAAK,iBAAiB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,qFAAqF,8CAA8C,sDAAe,CAAC,4DAAiB;AACpK,oCAAoC,gEAAqB,GAAG,0DAA0D,uCAAuC,sDAAW,CAAC,4DAAa,KAAK,0DAA0D;AACrP;AACA,MAAM,MAAM,4DAAU;AACtB;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB;AACA;AACA,aAAa;AACb,KAAK,iBAAiB,UAAU,MAAM,4DAAiB,EAAE,IAAI,UAAU;;AAEvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,4CAAU;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,qFAAqF,8CAA8C,sDAAe,kBAAkB,sDAAe;AACnL,oCAAoC,gEAAqB,GAAG,0DAA0D,uCAAuC,sDAAW,kBAAkB,sDAAW,gBAAgB,0DAA0D;AAC/Q;AACA,MAAM,sBAAsB;AAC5B,MAAM;AACN;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB;AACA;AACA,aAAa;AACb,KAAK,iBAAiB,UAAU,sBAAsB,IAAI,kBAAkB,IAAI,UAAU;;AAE1F;AACA;AACA,qEAAqE;AACrE,0CAA0C,gEAAyB,GAAG,+DAA+D;AACrI,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,KAAK,iBAAiB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,iDAAe;AACtD;AACA;AACA;AACA;AACA;AACA,kBAAkB,0DAAU;AAC5B,iCAAiC,mEAAiB;AAClD;AACA;AACA;AACA;AACA;AACA,SAAS,GAAG,yDAAS;AACrB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wCAAE;AACjB;AACA;AACA;AACA;AACA;AACA,yDAAyD,yDAAS;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iDAAiD,sDAAM,oCAAoC,oDAAI,KAAK,yDAAS;AAC7G;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,kCAAkC,6DAAW;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,8DAAY;AACzC;AACA,sEAAsE,mDAAG;AACzE,6DAA6D;AAC7D;AACA;AACA,qBAAqB;AACrB;AACA,kFAAkF,0BAA0B;AAC5G,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA,eAAe,wCAAE;AACjB;AACA;AACA;AACA,mBAAmB,iDAAU;AAC7B;AACA,+DAA+D,yDAAS;AACxE,kEAAkE;AAClE,sCAAsC,8DAAY;AAClD;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iDAAU;AAC7B,SAAS;AACT;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,qCAAqC,sDAAe,+BAA+B,sDAAe,CAAC,mDAAe;AACrL,yCAAyC,gEAAyB,GAAG,6DAA6D;AAClI;AACA,MAAM,mCAAmC;AACzC,MAAM,MAAM,mDAAQ;AACpB;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,KAAK,iBAAiB,UAAU,mCAAmC,IAAI,MAAM,mDAAe,EAAE,IAAI,UAAU;;AAE5G;AACA;AACA;;AAEA;AACA;AACA;;AAEgU;;;;;;;;;;;;;AC7nBnT;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,yBAAyB,mBAAO,CAAC,mCAAwB;AACzD,uBAAuB;AACvB,sBAAsB,mBAAO,CAAC,+BAAqB;AACnD,oBAAoB;AACpB,kBAAe;;;;;;;;;;;;;ACNF;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,aAAa,mBAAO,CAAC,yBAAe;AACpC,aAAa,mBAAO,CAAC,yBAAe;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AA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EAAU,KAAV,CAHnB;AAAA,QAIIiE,OAAO,GAAG/B,SAAS,CAAClC,OAAD,EAAU,SAAV,CAJvB;AAAA,QAKIkE,YAAY,GAAGhC,SAAS,CAAC9zB,MAAD,EAAS,QAAT,CAL5B;AAOA;;AACA,QAAI+1B,OAAO,GAAGF,OAAO,IAAI,IAAIA,OAAJ,EAAzB;AAEA;;AACA,QAAIG,SAAS,GAAG,EAAhB;AAEA;;AACA,QAAIC,kBAAkB,GAAGC,QAAQ,CAACR,QAAD,CAAjC;AAAA,QACIS,aAAa,GAAGD,QAAQ,CAACP,GAAD,CAD5B;AAAA,QAEIS,iBAAiB,GAAGF,QAAQ,CAAC9yB,OAAD,CAFhC;AAAA,QAGIizB,aAAa,GAAGH,QAAQ,CAACN,GAAD,CAH5B;AAAA,QAIIU,iBAAiB,GAAGJ,QAAQ,CAACL,OAAD,CAJhC;AAMA;;AACA,QAAIU,WAAW,GAAG/rB,MAAM,GAAGA,MAAM,CAACvC,SAAV,GAAsB2K,SAA9C;AAAA,QACI4jB,aAAa,GAAGD,WAAW,GAAGA,WAAW,CAACE,OAAf,GAAyB7jB,SADxD;AAAA,QAEI8jB,cAAc,GAAGH,WAAW,GAAGA,WAAW,CAACxsB,QAAf,GAA0B6I,SAF1D;AAIA;;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA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ANqB,CAAtB;AAQA;;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,aAASwrB,KAAT,CAAejvC,KAAf,EAAsB;AACpB,UAAII,MAAM,GAAG2tB,MAAM,CAAC/tB,KAAD,CAAnB;AACAI,MAAAA,MAAM,CAACuuB,SAAP,GAAmB,IAAnB;AACA,aAAOvuB,MAAP;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAAS8uC,GAAT,CAAalvC,KAAb,EAAoBmvC,WAApB,EAAiC;AAC/BA,MAAAA,WAAW,CAACnvC,KAAD,CAAX;AACA,aAAOA,KAAP;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASslC,IAAT,CAActlC,KAAd,EAAqBmvC,WAArB,EAAkC;AAChC,aAAOA,WAAW,CAACnvC,KAAD,CAAlB;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,QAAIovC,SAAS,GAAGjK,QAAQ,CAAC,UAAS/Q,KAAT,EAAgB;AACvC,UAAIp+B,MAAM,GAAGo+B,KAAK,CAACp+B,MAAnB;AAAA,UACI+5B,KAAK,GAAG/5B,MAAM,GAAGo+B,KAAK,CAAC,CAAD,CAAR,GAAc,CADhC;AAAA,UAEIp0B,KAAK,GAAG,KAAKyuB,WAFjB;AAAA,UAGI0gB,WAAW,GAAG,UAAStpB,MAAT,EAAiB;AAAE,eAAOsO,MAAM,CAACtO,MAAD,EAASuO,KAAT,CAAb;AAA+B,OAHpE;;AAKA,UAAIp+B,MAAM,GAAG,CAAT,IAAc,KAAK04B,WAAL,CAAiB14B,MAA/B,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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,aAASyrC,KAAT,CAAe5qB,UAAf,EAA2BrB,SAA3B,EAAsCggB,KAAtC,EAA6C;AAC3C,UAAI5jC,IAAI,GAAG4T,OAAO,CAACqR,UAAD,CAAP,GAAsBtB,UAAtB,GAAmC6S,SAA9C;;AACA,UAAIoN,KAAK,IAAIC,cAAc,CAAC5e,UAAD,EAAarB,SAAb,EAAwBggB,KAAxB,CAA3B,EAA2D;AACzDhgB,QAAAA,SAAS,GAAG9Z,SAAZ;AACD;;AACD,aAAO9J,IAAI,CAACilB,UAAD,EAAaiY,WAAW,CAACtZ,SAAD,EAAY,CAAZ,CAAxB,CAAX;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAAS3rB,MAAT,CAAgBgtB,UAAhB,EAA4BrB,SAA5B,EAAuC;AACrC,UAAI5jB,IAAI,GAAG4T,OAAO,CAACqR,UAAD,CAAP,GAAsBpB,WAAtB,GAAoCiT,UAA/C;AACA,aAAO92B,IAAI,CAACilB,UAAD,EAAaiY,WAAW,CAACtZ,SAAD,EAAY,CAAZ,CAAxB,CAAX;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,QAAIlrB,IAAI,GAAGosC,UAAU,CAAC+G,SAAD,CAArB;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,QAAIiE,QAAQ,GAAGhL,UAAU,CAACgH,aAAD,CAAzB;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,aAASiE,OAAT,CAAiB9qB,UAAjB,EAA6B1B,QAA7B,EAAuC;AACrC,aAAOwT,WAAW,CAAClP,GAAG,CAAC5C,UAAD,EAAa1B,QAAb,CAAJ,EAA4B,CAA5B,CAAlB;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASysB,WAAT,CAAqB/qB,UAArB,EAAiC1B,QAAjC,EAA2C;AACzC,aAAOwT,WAAW,CAAClP,GAAG,CAAC5C,UAAD,EAAa1B,QAAb,CAAJ,EAA4BhK,QAA5B,CAAlB;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAAS02B,YAAT,CAAsBhrB,UAAtB,EAAkC1B,QAAlC,EAA4CyT,KAA5C,EAAmD;AACjDA,MAAAA,KAAK,GAAGA,KAAK,KAAKltB,SAAV,GAAsB,CAAtB,GAA0B8sB,SAAS,CAACI,KAAD,CAA3C;AACA,aAAOD,WAAW,CAAClP,GAAG,CAAC5C,UAAD,EAAa1B,QAAb,CAAJ,EAA4ByT,KAA5B,CAAlB;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASn9B,OAAT,CAAiBorB,UAAjB,EAA6B1B,QAA7B,EAAuC;AACrC,UAAIvjB,IAAI,GAAG4T,OAAO,CAACqR,UAAD,CAAP,GAAsBxB,SAAtB,GAAkCmQ,QAA7C;AACA,aAAO5zB,IAAI,CAACilB,UAAD,EAAaiY,WAAW,CAAC3Z,QAAD,EAAW,CAAX,CAAxB,CAAX;AAC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;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,QAAIuT,SAAS,GAAGjN,gBAAgB,CAAC,UAASrjC,MAAT,EAAiBJ,KAAjB,EAAwBsE,GAAxB,EAA6B;AAC5DlE,MAAAA,MAAM,CAACkE,GAAG,GAAG,CAAH,GAAO,CAAX,CAAN,CAAoBpJ,IAApB,CAAyB8E,KAAzB;AACD,KAF+B,EAE7B,YAAW;AAAE,aAAO,CAAC,EAAD,EAAK,EAAL,CAAP;AAAkB,KAFF,CAAhC;AAIA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,aAAS2wC,MAAT,CAAgBxrB,UAAhB,EAA4B1B,QAA5B,EAAsCC,WAAtC,EAAmD;AACjD,UAAIxjB,IAAI,GAAG4T,OAAO,CAACqR,UAAD,CAAP,GAAsBX,WAAtB,GAAoCuB,UAA/C;AAAA,UACItB,SAAS,GAAG1uB,SAAS,CAACC,MAAV,GAAmB,CADnC;AAGA,aAAOkK,IAAI,CAACilB,UAAD,EAAaiY,WAAW,CAAC3Z,QAAD,EAAW,CAAX,CAAxB,EAAuCC,WAAvC,EAAoDe,SAApD,EAA+DqP,QAA/D,CAAX;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAAS8c,WAAT,CAAqBzrB,UAArB,EAAiC1B,QAAjC,EAA2CC,WAA3C,EAAwD;AACtD,UAAIxjB,IAAI,GAAG4T,OAAO,CAACqR,UAAD,CAAP,GAAsBT,gBAAtB,GAAyCqB,UAApD;AAAA,UACItB,SAAS,GAAG1uB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,CAAT;AACD;;AACD,YAAIgG,CAAC,IAAI,CAAT,EAAY;AACVmE,UAAAA,IAAI,GAAG8J,SAAP;AACD;;AACD,eAAO5J,MAAP;AACD,OARD;AASD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,QAAIgxC,IAAI,GAAGjT,QAAQ,CAAC,UAASj+B,IAAT,EAAeojB,OAAf,EAAwBkf,QAAxB,EAAkC;AACpD,UAAI9N,OAAO,GAAGlc,cAAd;;AACA,UAAIgqB,QAAQ,CAACxsC,MAAb,EAAqB;AACnB,YAAIysC,OAAO,GAAGva,cAAc,CAACsa,QAAD,EAAWqC,SAAS,CAACuM,IAAD,CAApB,CAA5B;AACA1c,QAAAA,OAAO,IAAI7b,iBAAX;AACD;;AACD,aAAOqvB,UAAU,CAAChoC,IAAD,EAAOw0B,OAAP,EAAgBpR,OAAhB,EAAyBkf,QAAzB,EAAmCC,OAAnC,CAAjB;AACD,KAPkB,CAAnB;AASA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,QAAI4O,OAAO,GAAGlT,QAAQ,CAAC,UAAStY,MAAT,EAAiBvhB,GAAjB,EAAsBk+B,QAAtB,EAAgC;AACrD,UAAI9N,OAAO,GAAGlc,cAAc,GAAGC,kBAA/B;;AACA,UAAI+pB,QAAQ,CAACxsC,MAAb,EAAqB;AACnB,YAAIysC,OAAO,GAAGva,cAAc,CAACsa,QAAD,EAAWqC,SAAS,CAACwM,OAAD,CAApB,CAA5B;AACA3c,QAAAA,OAAO,IAAI7b,iBAAX;AACD;;AACD,aAAOqvB,UAAU,CAAC5jC,GAAD,EAAMowB,OAAN,EAAe7O,MAAf,EAAuB2c,QAAvB,EAAiCC,OAAjC,CAAjB;AACD,KAPqB,CAAtB;AASA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,aAAS6O,KAAT,CAAepxC,IAAf,EAAqB0kC,KAArB,EAA4Bd,KAA5B,EAAmC;AACjCc,MAAAA,KAAK,GAAGd,KAAK,GAAG95B,SAAH,GAAe46B,KAA5B;AACA,UAAIxkC,MAAM,GAAG8nC,UAAU,CAAChoC,IAAD,EAAOyY,eAAP,EAAwB3O,SAAxB,EAAmCA,SAAnC,EAA8CA,SAA9C,EAAyDA,SAAzD,EAAoEA,SAApE,EAA+E46B,KAA/E,CAAvB;AACAxkC,MAAAA,MAAM,CAAC+mB,WAAP,GAAqBmqB,KAAK,CAACnqB,WAA3B;AACA,aAAO/mB,MAAP;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASmxC,UAAT,CAAoBrxC,IAApB,EAA0B0kC,KAA1B,EAAiCd,KAAjC,EAAwC;AACtCc,MAAAA,KAAK,GAAGd,KAAK,GAAG95B,SAAH,GAAe46B,KAA5B;AACA,UAAIxkC,MAAM,GAAG8nC,UAAU,CAAChoC,IAAD,EAAO0Y,qBAAP,EAA8B5O,SAA9B,EAAyCA,SAAzC,EAAoDA,SAApD,EAA+DA,SAA/D,EAA0EA,SAA1E,EAAqF46B,KAArF,CAAvB;AACAxkC,MAAAA,MAAM,CAAC+mB,WAAP,GAAqBoqB,UAAU,CAACpqB,WAAhC;AACA,aAAO/mB,MAAP;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AAC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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAAS8zC,SAAT,GAAqB;AACnB,UAAI,CAAC/9C,SAAS,CAACC,MAAf,EAAuB;AACrB,eAAO,EAAP;AACD;;AACD,UAAIgK,KAAK,GAAGjK,SAAS,CAAC,CAAD,CAArB;AACA,aAAO+d,OAAO,CAAC9T,KAAD,CAAP,GAAiBA,KAAjB,GAAyB,CAACA,KAAD,CAAhC;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASuvB,KAAT,CAAevvB,KAAf,EAAsB;AACpB,aAAOy0B,SAAS,CAACz0B,KAAD,EAAQqY,kBAAR,CAAhB;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAAS07B,SAAT,CAAmB/zC,KAAnB,EAA0B20B,UAA1B,EAAsC;AACpCA,MAAAA,UAAU,GAAG,OAAOA,UAAP,IAAqB,UAArB,GAAkCA,UAAlC,GAA+C3qB,SAA5D;AACA,aAAOyqB,SAAS,CAACz0B,KAAD,EAAQqY,kBAAR,EAA4Bsc,UAA5B,CAAhB;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASqf,SAAT,CAAmBh0C,KAAnB,EAA0B;AACxB,aAAOy0B,SAAS,CAACz0B,KAAD,EAAQmY,eAAe,GAAGE,kBAA1B,CAAhB;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAAS47B,aAAT,CAAuBj0C,KAAvB,EAA8B20B,UAA9B,EAA0C;AACxCA,MAAAA,UAAU,GAAG,OAAOA,UAAP,IAAqB,UAArB,GAAkCA,UAAlC,GAA+C3qB,SAA5D;AACA,aAAOyqB,SAAS,CAACz0B,KAAD,EAAQmY,eAAe,GAAGE,kBAA1B,EAA8Csc,UAA9C,CAAhB;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASuf,UAAT,CAAoBruB,MAApB,EAA4BpJ,MAA5B,EAAoC;AAClC,aAAOA,MAAM,IAAI,IAAV,IAAkBsZ,cAAc,CAAClQ,MAAD,EAASpJ,MAAT,EAAiB/Q,IAAI,CAAC+Q,MAAD,CAArB,CAAvC;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASgX,EAAT,CAAYzzB,KAAZ,EAAmBo4B,KAAnB,EAA0B;AACxB,aAAOp4B,KAAK,KAAKo4B,KAAV,IAAoBp4B,KAAK,KAAKA,KAAV,IAAmBo4B,KAAK,KAAKA,KAAxD;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,QAAI+b,EAAE,GAAGhN,yBAAyB,CAAChP,MAAD,CAAlC;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,QAAIic,GAAG,GAAGjN,yBAAyB,CAAC,UAASnnC,KAAT,EAAgBo4B,KAAhB,EAAuB;AACzD,aAAOp4B,KAAK,IAAIo4B,KAAhB;AACD,KAFkC,CAAnC;AAIA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,QAAIvF,WAAW,GAAGuG,eAAe,CAAC,YAAW;AAAE,aAAOrjC,SAAP;AAAmB,KAAhC,EAAD,CAAf,GAAsDqjC,eAAtD,GAAwE,UAASp5B,KAAT,EAAgB;AACxG,aAAOguB,YAAY,CAAChuB,KAAD,CAAZ,IAAuBgV,cAAc,CAACtY,IAAf,CAAoBsD,KAApB,EAA2B,QAA3B,CAAvB,IACL,CAAC0qB,oBAAoB,CAAChuB,IAArB,CAA0BsD,KAA1B,EAAiC,QAAjC,CADH;AAED,KAHD;AAKA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,QAAI8T,OAAO,GAAG5d,KAAK,CAAC4d,OAApB;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,QAAI6O,aAAa,GAAGD,iBAAiB,GAAG+D,SAAS,CAAC/D,iBAAD,CAAZ,GAAkC2W,iBAAvE;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,aAAS2C,WAAT,CAAqBh8B,KAArB,EAA4B;AAC1B,aAAOA,KAAK,IAAI,IAAT,IAAiBm7B,QAAQ,CAACn7B,KAAK,CAAChK,MAAP,CAAzB,IAA2C,CAACyhC,UAAU,CAACz3B,KAAD,CAA7D;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAAS68B,iBAAT,CAA2B78B,KAA3B,EAAkC;AAChC,aAAOguB,YAAY,CAAChuB,KAAD,CAAZ,IAAuBg8B,WAAW,CAACh8B,KAAD,CAAzC;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASq0C,SAAT,CAAmBr0C,KAAnB,EAA0B;AACxB,aAAOA,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAK,KAA5B,IACJguB,YAAY,CAAChuB,KAAD,CAAZ,IAAuBg4B,UAAU,CAACh4B,KAAD,CAAV,IAAqBoa,OAD/C;AAED;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,QAAI2R,QAAQ,GAAGD,cAAc,IAAIue,SAAjC;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,QAAIxnB,MAAM,GAAGD,UAAU,GAAG6D,SAAS,CAAC7D,UAAD,CAAZ,GAA2B0W,UAAlD;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,aAASjkC,SAAT,CAAmB2K,KAAnB,EAA0B;AACxB,aAAOguB,YAAY,CAAChuB,KAAD,CAAZ,IAAuBA,KAAK,CAACmiB,QAAN,KAAmB,CAA1C,IAA+C,CAAC4a,aAAa,CAAC/8B,KAAD,CAApE;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASs0C,OAAT,CAAiBt0C,KAAjB,EAAwB;AACtB,UAAIA,KAAK,IAAI,IAAb,EAAmB;AACjB,eAAO,IAAP;AACD;;AACD,UAAIg8B,WAAW,CAACh8B,KAAD,CAAX,KACC8T,OAAO,CAAC9T,KAAD,CAAP,IAAkB,OAAOA,KAAP,IAAgB,QAAlC,IAA8C,OAAOA,KAAK,CAAC2qB,MAAb,IAAuB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D;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAAS25B,SAAT,CAAmB10C,KAAnB,EAA0B;AACxB,aAAO,OAAOA,KAAP,IAAgB,QAAhB,IAA4BA,KAAK,IAAI82B,SAAS,CAAC92B,KAAD,CAArD;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASm7B,QAAT,CAAkBn7B,KAAlB,EAAyB;AACvB,aAAO,OAAOA,KAAP,IAAgB,QAAhB,IACLA,KAAK,GAAG,CAAC,CADJ,IACSA,KAAK,GAAG,CAAR,IAAa,CADtB,IAC2BA,KAAK,IAAI0Z,gBAD3C;AAED;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAAS4U,QAAT,CAAkBtuB,KAAlB,EAAyB;AACvB,UAAI+D,IAAI,GAAG,OAAO/D,KAAlB;AACA,aAAOA,KAAK,IAAI,IAAT,KAAkB+D,IAAI,IAAI,QAAR,IAAoBA,IAAI,IAAI,UAA9C,CAAP;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASiqB,YAAT,CAAsBhuB,KAAtB,EAA6B;AAC3B,aAAOA,KAAK,IAAI,IAAT,IAAiB,OAAOA,KAAP,IAAgB,QAAxC;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,QAAI+iB,KAAK,GAAGD,SAAS,GAAG2D,SAAS,CAAC3D,SAAD,CAAZ,GAA0B0X,SAA/C;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,aAASma,OAAT,CAAiB9uB,MAAjB,EAAyBpJ,MAAzB,EAAiC;AAC/B,aAAOoJ,MAAM,KAAKpJ,MAAX,IAAqBge,WAAW,CAAC5U,MAAD,EAASpJ,MAAT,EAAiBwf,YAAY,CAACxf,MAAD,CAA7B,CAAvC;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASm4B,WAAT,CAAqB/uB,MAArB,EAA6BpJ,MAA7B,EAAqCkY,UAArC,EAAiD;AAC/CA,MAAAA,UAAU,GAAG,OAAOA,UAAP,IAAqB,UAArB,GAAkCA,UAAlC,GAA+C3qB,SAA5D;AACA,aAAOywB,WAAW,CAAC5U,MAAD,EAASpJ,MAAT,EAAiBwf,YAAY,CAACxf,MAAD,CAA7B,EAAuCkY,UAAvC,CAAlB;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASjhB,KAAT,CAAe1T,KAAf,EAAsB;AACpB;AACA;AACA;AACA,aAAO60C,QAAQ,CAAC70C,KAAD,CAAR,IAAmBA,KAAK,IAAI,CAACA,KAApC;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAAS80C,QAAT,CAAkB90C,KAAlB,EAAyB;AACvB,UAAIoqC,UAAU,CAACpqC,KAAD,CAAd,EAAuB;AACrB,cAAM,IAAIzD,KAAJ,CAAUsb,eAAV,CAAN;AACD;;AACD,aAAOgjB,YAAY,CAAC76B,KAAD,CAAnB;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAAS+0C,MAAT,CAAgB/0C,KAAhB,EAAuB;AACrB,aAAOA,KAAK,KAAK,IAAjB;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASg1C,KAAT,CAAeh1C,KAAf,EAAsB;AACpB,aAAOA,KAAK,IAAI,IAAhB;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAAS60C,QAAT,CAAkB70C,KAAlB,EAAyB;AACvB,aAAO,OAAOA,KAAP,IAAgB,QAAhB,IACJguB,YAAY,CAAChuB,KAAD,CAAZ,IAAuBg4B,UAAU,CAACh4B,KAAD,CAAV,IAAqB2a,SAD/C;AAED;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASoiB,aAAT,CAAuB/8B,KAAvB,EAA8B;AAC5B,UAAI,CAACguB,YAAY,CAAChuB,KAAD,CAAb,IAAwBg4B,UAAU,CAACh4B,KAAD,CAAV,IAAqB6a,SAAjD,EAA4D;AAC1D,eAAO,KAAP;AACD;;AACD,UAAIwT,KAAK,GAAG/D,YAAY,CAACtqB,KAAD,CAAxB;;AACA,UAAIquB,KAAK,KAAK,IAAd,EAAoB;AAClB,eAAO,IAAP;AACD;;AACD,UAAI6V,IAAI,GAAGlvB,cAAc,CAACtY,IAAf,CAAoB2xB,KAApB,EAA2B,aAA3B,KAA6CA,KAAK,CAAC5uB,WAA9D;AACA,aAAO,OAAOykC,IAAP,IAAe,UAAf,IAA6BA,IAAI,YAAYA,IAA7C,IACLxa,YAAY,CAAChtB,IAAb,CAAkBwnC,IAAlB,KAA2Bja,gBAD7B;AAED;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,QAAIhH,QAAQ,GAAGD,YAAY,GAAGyD,SAAS,CAACzD,YAAD,CAAZ,GAA6BgY,YAAxD;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,aAASia,aAAT,CAAuBj1C,KAAvB,EAA8B;AAC5B,aAAO00C,SAAS,CAAC10C,KAAD,CAAT,IAAoBA,KAAK,IAAI,CAAC0Z,gBAA9B,IAAkD1Z,KAAK,IAAI0Z,gBAAlE;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,QAAIyJ,KAAK,GAAGD,SAAS,GAAGuD,SAAS,CAACvD,SAAD,CAAZ,GAA0B+X,SAA/C;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,aAASqV,QAAT,CAAkBtwC,KAAlB,EAAyB;AACvB,aAAO,OAAOA,KAAP,IAAgB,QAAhB,IACJ,CAAC8T,OAAO,CAAC9T,KAAD,CAAR,IAAmBguB,YAAY,CAAChuB,KAAD,CAA/B,IAA0Cg4B,UAAU,CAACh4B,KAAD,CAAV,IAAqBkb,SADlE;AAED;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAAS0b,QAAT,CAAkB52B,KAAlB,EAAyB;AACvB,aAAO,OAAOA,KAAP,IAAgB,QAAhB,IACJguB,YAAY,CAAChuB,KAAD,CAAZ,IAAuBg4B,UAAU,CAACh4B,KAAD,CAAV,IAAqBmb,SAD/C;AAED;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,QAAIkI,YAAY,GAAGD,gBAAgB,GAAGqD,SAAS,CAACrD,gBAAD,CAAZ,GAAiC8X,gBAApE;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,aAASga,WAAT,CAAqBl1C,KAArB,EAA4B;AAC1B,aAAOA,KAAK,KAAKgK,SAAjB;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASmrC,SAAT,CAAmBn1C,KAAnB,EAA0B;AACxB,aAAOguB,YAAY,CAAChuB,KAAD,CAAZ,IAAuBk1B,MAAM,CAACl1B,KAAD,CAAN,IAAiBqb,UAA/C;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAAS+5B,SAAT,CAAmBp1C,KAAnB,EAA0B;AACxB,aAAOguB,YAAY,CAAChuB,KAAD,CAAZ,IAAuBg4B,UAAU,CAACh4B,KAAD,CAAV,IAAqBsb,UAAnD;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,QAAI+5B,EAAE,GAAGlO,yBAAyB,CAACrL,MAAD,CAAlC;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,QAAIwZ,GAAG,GAAGnO,yBAAyB,CAAC,UAASnnC,KAAT,EAAgBo4B,KAAhB,EAAuB;AACzD,aAAOp4B,KAAK,IAAIo4B,KAAhB;AACD,KAFkC,CAAnC;AAIA;AACJ;AACA;AACA;AACA;AACA;A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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,aAASkgD,OAAT,CAAiBtwB,MAAjB,EAAyB/B,SAAzB,EAAoC;AAClC,aAAOoB,WAAW,CAACW,MAAD,EAASuX,WAAW,CAACtZ,SAAD,EAAY,CAAZ,CAApB,EAAoCyS,UAApC,CAAlB;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAAS6f,WAAT,CAAqBvwB,MAArB,EAA6B/B,SAA7B,EAAwC;AACtC,aAAOoB,WAAW,CAACW,MAAD,EAASuX,WAAW,CAACtZ,SAAD,EAAY,CAAZ,CAApB,EAAoC2S,eAApC,CAAlB;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAAS4f,KAAT,CAAexwB,MAAf,EAAuBpC,QAAvB,EAAiC;AAC/B,aAAOoC,MAAM,IAAI,IAAV,GACHA,MADG,GAEHwR,OAAO,CAACxR,MAAD,EAASuX,WAAW,CAAC3Z,QAAD,EAAW,CAAX,CAApB,EAAmCyQ,MAAnC,CAFX;AAGD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASoiB,UAAT,CAAoBzwB,MAApB,EAA4BpC,QAA5B,EAAsC;AACpC,aAAOoC,MAAM,IAAI,IAAV,GACHA,MADG,GAEH0R,YAAY,CAAC1R,MAAD,EAASuX,WAAW,CAAC3Z,QAAD,EAAW,CAAX,CAApB,EAAmCyQ,MAAnC,CAFhB;AAGD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASqiB,MAAT,CAAgB1wB,MAAhB,EAAwBpC,QAAxB,EAAkC;AAChC,aAAOoC,MAAM,IAAI0Q,UAAU,CAAC1Q,MAAD,EAASuX,WAAW,CAAC3Z,QAAD,EAAW,CAAX,CAApB,CAA3B;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAAS+yB,WAAT,CAAqB3wB,MAArB,EAA6BpC,QAA7B,EAAuC;AACrC,aAAOoC,MAAM,IAAI4Q,eAAe,CAAC5Q,MAAD,EAASuX,WAAW,CAAC3Z,QAAD,EAAW,CAAX,CAApB,CAAhC;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASgzB,SAAT,CAAmB5wB,MAAnB,EAA2B;AACzB,aAAOA,MAAM,IAAI,IAAV,GAAiB,EAAjB,GAAsB2R,aAAa,CAAC3R,MAAD,EAASna,IAAI,CAACma,MAAD,CAAb,CAA1C;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAAS6wB,WAAT,CAAqB7wB,MAArB,EAA6B;AAC3B,aAAOA,MAAM,IAAI,IAAV,GAAiB,EAAjB,GAAsB2R,aAAa,CAAC3R,MAAD,EAASqO,MAAM,CAACrO,MAAD,CAAf,CAA1C;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAAShb,GAAT,CAAagb,MAAb,EAAqB8R,IAArB,EAA2B+O,YAA3B,EAAyC;AACvC,UAAItmC,MAAM,GAAGylB,MAAM,IAAI,IAAV,GAAiB7b,SAAjB,GAA6B0tB,OAAO,CAAC7R,MAAD,EAAS8R,IAAT,CAAjD;AACA,aAAOv3B,MAAM,KAAK4J,SAAX,GAAuB08B,YAAvB,GAAsCtmC,MAA7C;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASymB,GAAT,CAAahB,MAAb,EAAqB8R,IAArB,EAA2B;AACzB,aAAO9R,MAAM,IAAI,IAAV,IAAkBkkB,OAAO,CAAClkB,MAAD,EAAS8R,IAAT,EAAeU,OAAf,CAAhC;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASgE,KAAT,CAAexW,MAAf,EAAuB8R,IAAvB,EAA6B;AAC3B,aAAO9R,MAAM,IAAI,IAAV,IAAkBkkB,OAAO,CAAClkB,MAAD,EAAS8R,IAAT,EAAeW,SAAf,CAAhC;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,QAAIqe,MAAM,GAAGrQ,cAAc,CAAC,UAASlmC,MAAT,EAAiBJ,KAAjB,EAAwBsE,GAAxB,EAA6B;AACvD,UAAItE,KAAK,IAAI,IAAT,IACA,OAAOA,KAAK,CAACmB,QAAb,IAAyB,UAD7B,EACyC;AACvCnB,QAAAA,KAAK,GAAGgqB,oBAAoB,CAACttB,IAArB,CAA0BsD,KAA1B,CAAR;AACD;;AAEDI,MAAAA,MAAM,CAACJ,KAAD,CAAN,GAAgBsE,GAAhB;AACD,KAP0B,EAOxBq6B,QAAQ,CAACtD,QAAD,CAPgB,CAA3B;AASA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,QAAIub,QAAQ,GAAGtQ,cAAc,CAAC,UAASlmC,MAAT,EAAiBJ,KAAjB,EAAwBsE,GAAxB,EAA6B;AACzD,UAAItE,KAAK,IAAI,IAAT,IACA,OAAOA,KAAK,CAACmB,QAAb,IAAyB,UAD7B,EACyC;AACvCnB,QAAAA,KAAK,GAAGgqB,oBAAoB,CAACttB,IAArB,CAA0BsD,KAA1B,CAAR;AACD;;AAED,UAAIgV,cAAc,CAACtY,IAAf,CAAoB0D,MAApB,EAA4BJ,KAA5B,CAAJ,EAAwC;AACtCI,QAAAA,MAAM,CAACJ,KAAD,CAAN,CAAc9E,IAAd,CAAmBoJ,GAAnB;AACD,OAFD,MAEO;AACLlE,QAAAA,MAAM,CAACJ,KAAD,CAAN,GAAgB,CAACsE,GAAD,CAAhB;AACD;AACF,KAX4B,EAW1B84B,WAX0B,CAA7B;AAaA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,QAAIyZ,MAAM,GAAG1Y,QAAQ,CAAClF,UAAD,CAArB;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,aAASvtB,IAAT,CAAcma,MAAd,EAAsB;AACpB,aAAOmW,WAAW,CAACnW,MAAD,CAAX,GAAsB6M,aAAa,CAAC7M,MAAD,CAAnC,GAA8C4V,QAAQ,CAAC5V,MAAD,CAA7D;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASqO,MAAT,CAAgBrO,MAAhB,EAAwB;AACtB,aAAOmW,WAAW,CAACnW,MAA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S8R,IAAT,EAAe33B,KAAf,CAAxC;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASq3C,OAAT,CAAiBxxB,MAAjB,EAAyB8R,IAAzB,EAA+B33B,KAA/B,EAAsC20B,UAAtC,EAAkD;AAChDA,MAAAA,UAAU,GAAG,OAAOA,UAAP,IAAqB,UAArB,GAAkCA,UAAlC,GAA+C3qB,SAA5D;AACA,aAAO6b,MAAM,IAAI,IAAV,GAAiBA,MAAjB,GAA0B4X,OAAO,CAAC5X,MAAD,EAAS8R,IAAT,EAAe33B,KAAf,EAAsB20B,UAAtB,CAAxC;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,QAAI2iB,OAAO,GAAGrP,aAAa,CAACv8B,IAAD,CAA3B;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,QAAI6rC,SAAS,GAAGtP,aAAa,CAAC/T,MAAD,CAA7B;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,aAASjM,SAAT,CAAmBpC,MAAnB,EAA2BpC,QAA3B,EAAqCC,WAArC,EAAkD;AAChD,UAAIgM,KAAK,GAAG5b,OAAO,CAAC+R,MAAD,CAAnB;AAAA,UACI2xB,SAAS,GAAG9nB,KAAK,IAAI3D,QAAQ,CAAClG,MAAD,CAAjB,IAA6BxC,YAAY,CAACwC,MAAD,CADzD;AAGApC,MAAAA,QAAQ,GAAG2Z,WAAW,CAAC3Z,QAAD,EAAW,CAAX,CAAtB;;AACA,UAAIC,WAAW,IAAI,IAAnB,EAAyB;AACvB,YAAIwgB,IAAI,GAAGre,MAAM,IAAIA,MAAM,CAACpmB,WAA5B;;AACA,YAAI+3C,SAAJ,EAAe;AACb9zB,UAAAA,WAAW,GAAGgM,KAAK,GAAG,IAAIwU,IAAJ,EAAH,GAAc,EAAjC;AACD,SAFD,MAGK,IAAI5V,QAAQ,CAACzI,MAAD,CAAZ,EAAsB;AACzBnC,UAAAA,WAAW,GAAG+T,UAAU,CAACyM,IAAD,CAAV,GAAmB9V,UAAU,CAAC9D,YAAY,CAACzE,MAAD,CAAb,CAA7B,GAAsD,EAApE;AACD,SAFI,MAGA;AACHnC,UAAAA,WAAW,GAAG,EAAd;AACD;AACF;;AACD,OAAC8zB,SAAS,GAAG7zB,SAAH,GAAe4S,UAAzB,EAAqC1Q,MAArC,EAA6C,UAAS7lB,KAAT,EAAgB7F,KAAhB,EAAuB0rB,MAAvB,EAA+B;AAC1E,eAAOpC,QAAQ,CAACC,WAAD,EAAc1jB,KAAd,EAAqB7F,KAArB,EAA4B0rB,MAA5B,CAAf;AACD,OAFD;AAGA,aAAOnC,WAAP;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAAS+zB,KAAT,CAAe5xB,MAAf,EAAuB8R,IAAvB,EAA6B;AAC3B,aAAO9R,MAAM,IAAI,IAAV,GAAiB,IAAjB,GAAwBkY,SAAS,CAAClY,MAAD,EAAS8R,IAAT,CAAxC;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASj+B,MAAT,CAAgBmsB,MAAhB,EAAwB8R,IAAxB,EAA8B0I,OAA9B,EAAuC;AACrC,aAAOxa,MAAM,IAAI,IAAV,GAAiBA,MAAjB,GAA0Bua,UAAU,CAACva,MAAD,EAAS8R,IAAT,EAAeoJ,YAAY,CAACV,OAAD,CAA3B,CAA3C;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASqX,UAAT,CAAoB7xB,MAApB,EAA4B8R,IAA5B,EAAkC0I,OAAlC,EAA2C1L,UAA3C,EAAuD;AACrDA,MAAAA,UAAU,GAAG,OAAOA,UAAP,IAAqB,UAArB,GAAkCA,UAAlC,GAA+C3qB,SAA5D;AACA,aAAO6b,MAAM,IAAI,IAAV,GAAiBA,MAAjB,GAA0Bua,UAAU,CAACva,MAAD,EAAS8R,IAAT,EAAeoJ,YAAY,CAACV,OAAD,CAA3B,EAAsC1L,UAAtC,CAA3C;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASvzB,MAAT,CAAgBykB,MAAhB,EAAwB;AACtB,aAAOA,MAAM,IAAI,IAAV,GAAiB,EAAjB,GAAsBa,UAAU,CAACb,MAAD,EAASna,IAAI,CAACma,MAAD,CAAb,CAAvC;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAAS8xB,QAAT,CAAkB9xB,MAAlB,EAA0B;AACxB,aAAOA,MAAM,IAAI,IAAV,GAAiB,EAAjB,GAAsBa,UAAU,CAACb,MAAD,EAASqO,MAAM,CAACrO,MAAD,CAAf,CAAvC;AACD;AAED;;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAAS+xB,KAAT,CAAetjB,MAAf,EAAuBC,KAAvB,EAA8BC,KAA9B,EAAqC;AACnC,UAAIA,KAAK,KAAKxqB,SAAd,EAAyB;AACvBwqB,QAAAA,KAAK,GAAGD,KAAR;AACAA,QAAAA,KAAK,GAAGvqB,SAAR;AACD;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AS,EAAlB,CAAN,GAA8Bi+C,UAAU,CAACH,IAAD,CAA/C;AACD,KAF+B,CAAhC;AAIA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,aAASoB,UAAT,CAAoBt0B,MAApB,EAA4Bhd,MAA5B,EAAoCuwC,QAApC,EAA8C;AAC5CvzB,MAAAA,MAAM,GAAG5jB,QAAQ,CAAC4jB,MAAD,CAAjB;AACAuzB,MAAAA,QAAQ,GAAGA,QAAQ,IAAI,IAAZ,GACP,CADO,GAEPhlB,SAAS,CAACwD,SAAS,CAACwhB,QAAD,CAAV,EAAsB,CAAtB,EAAyBvzB,MAAM,CAAC/uB,MAAhC,CAFb;AAIA+R,MAAAA,MAAM,GAAGi4B,YAAY,CAACj4B,MAAD,CAArB;AACA,aAAOgd,MAAM,CAACxa,KAAP,CAAa+tC,QAAb,EAAuBA,QAAQ,GAAGvwC,MAAM,CAAC/R,MAAzC,KAAoD+R,MAA3D;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASuxC,QAAT,CAAkBv0B,MAAlB,EAA0B9tB,OAA1B,EAAmC6sC,KAAnC,EAA0C;AACxC;AACA;AACA;AACA,UAAIyV,QAAQ,GAAGxrB,MAAM,CAACe,gBAAtB;;AAEA,UAAIgV,KAAK,IAAIC,cAAc,CAAChf,MAAD,EAAS9tB,OAAT,EAAkB6sC,KAAlB,CAA3B,EAAqD;AACnD7sC,QAAAA,OAAO,GAAG+S,SAAV;AACD;;AACD+a,MAAAA,MAAM,GAAG5jB,QAAQ,CAAC4jB,MAAD,CAAjB;AACA9tB,MAAAA,OAAO,GAAG2+C,YAAY,CAAC,EAAD,EAAK3+C,OAAL,EAAcsiD,QAAd,EAAwBnR,sBAAxB,CAAtB;AAEA,UAAIoR,OAAO,GAAG5D,YAAY,CAAC,EAAD,EAAK3+C,OAAO,CAACuiD,OAAb,EAAsBD,QAAQ,CAACC,OAA/B,EAAwCpR,sBAAxC,CAA1B;AAAA,UACIqR,WAAW,GAAG/tC,IAAI,CAAC8tC,OAAD,CADtB;AAAA,UAEIE,aAAa,GAAGhzB,UAAU,CAAC8yB,OAAD,EAAUC,WAAV,CAF9B;AAIA,UAAIE,UAAJ;AAAA,UACIC,YADJ;AAAA,UAEIz/C,KAAK,GAAG,CAFZ;AAAA,UAGI0/C,WAAW,GAAG5iD,OAAO,CAAC4iD,WAAR,IAAuB17B,SAHzC;AAAA,UAII1B,MAAM,GAAG,UAJb,CAhBwC,CAsBxC;;AACA,UAAIq9B,YAAY,GAAGt9B,MAAM,CACvB,CAACvlB,OAAO,CAACshD,MAAR,IAAkBp6B,SAAnB,EAA8B1B,MAA9B,GAAuC,GAAvC,GACAo9B,WAAW,CAACp9B,MADZ,GACqB,GADrB,GAEA,CAACo9B,WAAW,KAAKh9B,aAAhB,GAAgCc,YAAhC,GAA+CQ,SAAhD,EAA2D1B,MAF3D,GAEoE,GAFpE,GAGA,CAACxlB,OAAO,CAAC8iD,QAAR,IAAoB57B,SAArB,EAAgC1B,MAHhC,GAGyC,IAJlB,EAKvB,GALuB,CAAzB,CAvBwC,CA8BxC;AACA;AACA;AACA;;AACA,UAAIu9B,SAAS,GAAG,oBACbhlC,cAAc,CAACtY,IAAf,CAAoBzF,OAApB,EAA6B,WAA7B,IACG,CAACA,OAAO,CAAC+iD,SAAR,GAAoB,EAArB,EAAyBrkC,OAAzB,CAAiC,KAAjC,EAAwC,GAAxC,CADH,GAEI,4BAA6B,EAAE0L,eAA/B,GAAkD,GAHzC,IAIV,IAJN;AAMA0D,MAAAA,MAAM,CAACpP,OAAP,CAAemkC,YAAf,EAA6B,UAAS9zC,KAAT,EAAgBi0C,WAAhB,EAA6BC,gBAA7B,EAA+CC,eAA/C,EAAgEC,aAAhE,EAA+E71B,MAA/E,EAAuF;AAClH21B,QAAAA,gBAAgB,KAAKA,gBAAgB,GAAGC,eAAxB,CAAhB,CADkH,CAGlH;;AACA19B,QAAAA,MAAM,IAAIsI,MAAM,CAACxa,KAAP,CAAapQ,KAAb,EAAoBoqB,MAApB,EAA4B5O,OAA5B,CAAoCyI,iBAApC,EAAuDkJ,gBAAvD,CAAV,CAJkH,CAMlH;;AACA,YAAI2yB,WAAJ,EAAiB;AACfN,UAAAA,UAAU,GAAG,IAAb;AACAl9B,UAAAA,MAAM,IAAI,cAAcw9B,WAAd,GAA4B,QAAtC;AACD;;AACD,YAAIG,aAAJ,EAAmB;AACjBR,UAAAA,YAAY,GAAG,IAAf;AACAn9B,UAAAA,MAAM,IAAI,SAAS29B,aAAT,GAAyB,aAAnC;AACD;;AACD,YAAIF,gBAAJ,EAAsB;AACpBz9B,UAAAA,MAAM,IAAI,mBAAmBy9B,gBAAnB,GAAsC,6BAAhD;AACD;;AACD//C,QAAAA,KAAK,GAAGoqB,MAAM,GAAGve,KAAK,CAAChQ,MAAvB,CAlBkH,CAoBlH;AACA;;AACA,eAAOgQ,KAAP;AACD,OAvBD;AAyBAyW,MAAAA,MAAM,IAAI,MAAV,CAjEwC,CAmExC;AACA;;AACA,UAAI49B,QAAQ,GAAGrlC,cAAc,CAACtY,IAAf,CAAoBzF,OAApB,EAA6B,UAA7B,KAA4CA,OAAO,CAACojD,QAAnE;;AACA,UAAI,CAACA,QAAL,EAAe;AACb59B,QAAAA,MAAM,GAAG,mBAAmBA,MAAnB,GAA4B,OAArC;AACD,OAFD,CAGA;AACA;AAJA,WAKK,IAAIgB,0BAA0B,CAAC9a,IAA3B,CAAgC03C,QAAhC,CAAJ,EAA+C;AAClD,cAAM,IAAI99C,KAAJ,CAAUwb,4BAAV,CAAN;AACD,OA7EuC,CA+ExC;;;AACA0E,MAAAA,MAAM,GAAG,CAACm9B,YAAY,GAAGn9B,MAAM,CAAC9G,OAAP,CAAeuG,oBAAf,EAAqC,EAArC,CAAH,GAA8CO,MAA3D,EACN9G,OADM,CACEwG,mBADF,EACuB,IADvB,EAENxG,OAFM,CAEEyG,qBAFF,EAEyB,KAFzB,CAAT,CAhFwC,CAoFxC;;AACAK,MAAAA,MAAM,GAAG,eAAe49B,QAAQ,IAAI,KAA3B,IAAoC,OAApC,IACNA,QAAQ,GACL,EADK,GAEL,sBAHG,IAKP,mBALO,IAMNV,UAAU,GACN,kBADM,GAEN,EARE,KAUNC,YAAY,GACT,oCACA,uDAFS,GAGT,KAbG,IAePn9B,MAfO,GAgBP,eAhBF;AAkBA,UAAIrc,MAAM,GAAGk6C,OAAO,CAAC,YAAW;AAC9B,eAAOr4B,QAAQ,CAACw3B,WAAD,EAAcO,SAAS,GAAG,SAAZ,GAAwBv9B,MAAtC,CAAR,CACJ9b,KADI,CACEqJ,SADF,EACa0vC,aADb,CAAP;AAED,OAHmB,CAApB,CAvGwC,CA4GxC;AACA;;AACAt5C,MAAAA,MAAM,CAACqc,MAAP,GAAgBA,MAAhB;;AACA,UAAIg4B,OAAO,CAACr0C,MAAD,CAAX,EAAqB;AACnB,cAAMA,MAAN;AACD;;AACD,aAAOA,MAAP;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASm6C,OAAT,CAAiBv6C,KAAjB,EAAwB;AACtB,aAAOmB,QAAQ,CAACnB,KAAD,CAAR,CAAgBk4C,WAAhB,EAAP;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASsC,OAAT,CAAiBx6C,KAAjB,EAAwB;AACtB,aAAOmB,QAAQ,CAACnB,KAAD,CAAR,CAAgBy6C,WAAhB,EAAP;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASC,IAAT,CAAc31B,MAAd,EAAsB+hB,KAAtB,EAA6BhD,KAA7B,EAAoC;AAClC/e,MAAAA,MAAM,GAAG5jB,QAAQ,CAAC4jB,MAAD,CAAjB;;AACA,UAAIA,MAAM,KAAK+e,KAAK,IAAIgD,KAAK,KAAK98B,SAAxB,CAAV,EAA8C;AAC5C,eAAOuc,QAAQ,CAACxB,MAAD,CAAf;AACD;;AACD,UAAI,CAACA,MAAD,IAAW,EAAE+hB,KAAK,GAAG9G,YAAY,CAAC8G,KAAD,CAAtB,CAAf,EAA+C;AAC7C,eAAO/hB,MAAP;AACD;;AACD,UAAIgC,UAAU,GAAG0B,aAAa,CAAC1D,MAAD,CAA9B;AAAA,UACIiC,UAAU,GAAGyB,aAAa,CAACqe,KAAD,CAD9B;AAAA,UAEI/W,KAAK,GAAGjJ,eAAe,CAACC,UAAD,EAAaC,UAAb,CAF3B;AAAA,UAGIgJ,GAAG,GAAG/I,aAAa,CAACF,UAAD,EAAaC,UAAb,CAAb,GAAwC,CAHlD;AAKA,aAAOka,SAAS,CAACna,UAAD,EAAagJ,KAAb,EAAoBC,GAApB,CAAT,CAAkCh3B,IAAlC,CAAuC,EAAvC,CAAP;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAAS2hD,OAAT,CAAiB51B,MAAjB,EAAyB+hB,KAAzB,EAAgChD,KAAhC,EAAuC;AACrC/e,MAAAA,MAAM,GAAG5jB,QAAQ,CAAC4jB,MAAD,CAAjB;;AACA,UAAIA,MAAM,KAAK+e,KAAK,IAAIgD,KAAK,KAAK98B,SAAxB,CAAV,EAA8C;AAC5C,eAAO+a,MAAM,CAACxa,KAAP,CAAa,CAAb,EAAgBic,eAAe,CAACzB,MAAD,CAAf,GAA0B,CAA1C,CAAP;AACD;;AACD,UAAI,CAACA,MAAD,IAAW,EAAE+hB,KAAK,GAAG9G,YAAY,CAAC8G,KAAD,CAAtB,CAAf,EAA+C;AAC7C,eAAO/hB,MAAP;AACD;;AACD,UAAIgC,UAAU,GAAG0B,aAAa,CAAC1D,MAAD,CAA9B;AAAA,UACIiL,GAAG,GAAG/I,aAAa,CAACF,UAAD,EAAa0B,aAAa,CAACqe,KAAD,CAA1B,CAAb,GAAkD,CAD5D;AAGA,aAAO5F,SAAS,CAACna,UAAD,EAAa,CAAb,EAAgBiJ,GAAhB,CAAT,CAA8Bh3B,IAA9B,CAAmC,EAAnC,CAAP;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAAS4hD,SAAT,CAAmB71B,MAAnB,EAA2B+hB,KAA3B,EAAkChD,KAAlC,EAAyC;AACvC/e,MAAAA,MAAM,GAAG5jB,QAAQ,CAAC4jB,MAAD,CAAjB;;AACA,UAAIA,MAAM,KAAK+e,KAAK,IAAIgD,KAAK,KAAK98B,SAAxB,CAAV,EAA8C;AAC5C,eAAO+a,MAAM,CAACpP,OAAP,CAAewH,WAAf,EAA4B,EAA5B,CAAP;AACD;;AACD,UAAI,CAAC4H,MAAD,IAAW,EAAE+hB,KAAK,GAAG9G,YAAY,CAAC8G,KAAD,CAAtB,CAAf,EAA+C;AAC7C,eAAO/hB,MAAP;AACD;;AACD,UAAIgC,UAAU,GAAG0B,aAAa,CAAC1D,MAAD,CAA9B;AAAA,UACIgL,KAAK,GAAGjJ,eAAe,CAACC,UAAD,EAAa0B,aAAa,CAACqe,KAAD,CAA1B,CAD3B;AAGA,aAAO5F,SAAS,CAACna,UAAD,EAAagJ,KAAb,CAAT,CAA6B/2B,IAA7B,CAAkC,EAAlC,CAAP;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAAS6hD,QAAT,CAAkB91B,MAAlB,EAA0B9tB,OAA1B,EAAmC;AACjC,UAAIjB,MAAM,GAAGkjB,oBAAb;AAAA,UACI4hC,QAAQ,GAAG3hC,sBADf;;AAGA,UAAImV,QAAQ,CAACr3B,OAAD,CAAZ,EAAuB;AACrB,YAAIy1C,SAAS,GAAG,eAAez1C,OAAf,GAAyBA,OAAO,CAACy1C,SAAjC,GAA6CA,SAA7D;AACA12C,QAAAA,MAAM,GAAG,YAAYiB,OAAZ,GAAsB6/B,SAAS,CAAC7/B,OAAO,CAACjB,MAAT,CAA/B,GAAkDA,MAA3D;AACA8kD,QAAAA,QAAQ,GAAG,cAAc7jD,OAAd,GAAwB+oC,YAAY,CAAC/oC,OAAO,CAAC6jD,QAAT,CAApC,GAAyDA,QAApE;AACD;;AACD/1B,MAAAA,MAAM,GAAG5jB,QAAQ,CAAC4jB,MAAD,CAAjB;AAEA,UAAI8zB,SAAS,GAAG9zB,MAAM,CAAC/uB,MAAvB;;AACA,UAAIyxB,UAAU,CAAC1C,MAAD,CAAd,EAAwB;AACtB,YAAIgC,UAAU,GAAG0B,aAAa,CAAC1D,MAAD,CAA9B;AACA8zB,QAAAA,SAAS,GAAG9xB,UAAU,CAAC/wB,MAAvB;AACD;;AACD,UAAIA,MAAM,IAAI6iD,SAAd,EAAyB;AACvB,eAAO9zB,MAAP;AACD;;AACD,UAAIiL,GAAG,GAAGh6B,MAAM,GAAGuyB,UAAU,CAACuyB,QAAD,CAA7B;;AACA,UAAI9qB,GAAG,GAAG,CAAV,EAAa;AACX,eAAO8qB,QAAP;AACD;;AACD,UAAI16C,MAAM,GAAG2mB,UAAU,GACnBma,SAAS,CAACna,UAAD,EAAa,CAAb,EAAgBiJ,GAAhB,CAAT,CAA8Bh3B,IAA9B,CAAmC,EAAnC,CADmB,GAEnB+rB,MAAM,CAACxa,KAAP,CAAa,CAAb,EAAgBylB,GAAhB,CAFJ;;AAIA,UAAI0c,SAAS,KAAK1iC,SAAlB,EAA6B;AAC3B,eAAO5J,MAAM,GAAG06C,QAAhB;AACD;;AACD,UAAI/zB,UAAJ,EAAgB;AACdiJ,QAAAA,GAAG,IAAK5vB,MAAM,CAACpK,MAAP,GAAgBg6B,GAAxB;AACD;;AACD,UAAI/M,QAAQ,CAACypB,SAAD,CAAZ,EAAyB;AACvB,YAAI3nB,MAAM,CAACxa,KAAP,CAAaylB,GAAb,EAAkB+qB,MAAlB,CAAyBrO,SAAzB,CAAJ,EAAyC;AACvC,cAAI1mC,KAAJ;AAAA,cACIyI,SAAS,GAAGrO,MADhB;;AAGA,cAAI,CAACssC,SAAS,CAAChxC,MAAf,EAAuB;AACrBgxC,YAAAA,SAAS,GAAGlwB,MAAM,CAACkwB,SAAS,CAACjwB,MAAX,EAAmBtb,QAAQ,CAACyc,OAAO,CAACkM,IAAR,CAAa4iB,SAAb,CAAD,CAAR,GAAoC,GAAvD,CAAlB;AACD;;AACDA,UAAAA,SAAS,CAAC7jB,SAAV,GAAsB,CAAtB;;AACA,iBAAQ7iB,KAAK,GAAG0mC,SAAS,CAAC5iB,IAAV,CAAerb,SAAf,CAAhB,EAA4C;AAC1C,gBAAIusC,MAAM,GAAGh1C,KAAK,CAAC7L,KAAnB;AACD;;AACDiG,UAAAA,MAAM,GAAGA,MAAM,CAACmK,KAAP,CAAa,CAAb,EAAgBywC,MAAM,KAAKhxC,SAAX,GAAuBgmB,GAAvB,GAA6BgrB,MAA7C,CAAT;AACD;AACF,OAdD,MAcO,IAAIj2B,MAAM,CAAC9hB,OAAP,CAAe+8B,YAAY,CAAC0M,SAAD,CAA3B,EAAwC1c,GAAxC,KAAgDA,GAApD,EAAyD;AAC9D,YAAI71B,KAAK,GAAGiG,MAAM,CAACusC,WAAP,CAAmBD,SAAnB,CAAZ;;AACA,YAAIvyC,KAAK,GAAG,CAAC,CAAb,EAAgB;AACdiG,UAAAA,MAAM,GAAGA,MAAM,CAACmK,KAAP,CAAa,CAAb,EAAgBpQ,KAAhB,CAAT;AACD;AACF;;AACD,aAAOiG,MAAM,GAAG06C,QAAhB;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASG,QAAT,CAAkBl2B,MAAlB,EAA0B;AACxBA,MAAAA,MAAM,GAAG5jB,QAAQ,CAAC4jB,MAAD,CAAjB;AACA,aAAQA,MAAM,IAAIxI,gBAAgB,CAAC5Z,IAAjB,CAAsBoiB,MAAtB,CAAX,GACHA,MAAM,CAACpP,OAAP,CAAe0G,aAAf,EAA8BuM,gBAA9B,CADG,GAEH7D,MAFJ;AAGD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,QAAIm2B,SAAS,GAAG3W,gBAAgB,CAAC,UAASnkC,MAAT,EAAiB63C,IAAjB,EAAuB99C,KAAvB,EAA8B;AAC7D,aAAOiG,MAAM,IAAIjG,KAAK,GAAG,GAAH,GAAS,EAAlB,CAAN,GAA8B89C,IAAI,CAACwC,WAAL,EAArC;AACD,KAF+B,CAAhC;AAIA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,QAAIrC,UAAU,GAAG/T,eAAe,CAAC,aAAD,CAAhC;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,aAASG,KAAT,CAAezf,MAAf,EAAuBgW,OAAvB,EAAgC+I,KAAhC,EAAuC;AACrC/e,MAAAA,MAAM,GAAG5jB,QAAQ,CAAC4jB,MAAD,CAAjB;AACAgW,MAAAA,OAAO,GAAG+I,KAAK,GAAG95B,SAAH,GAAe+wB,OAA9B;;AAEA,UAAIA,OAAO,KAAK/wB,SAAhB,EAA2B;AACzB,eAAO0d,cAAc,CAAC3C,MAAD,CAAd,GAAyB+D,YAAY,CAAC/D,MAAD,CAArC,GAAgDE,UAAU,CAACF,MAAD,CAAjE;AACD;;AACD,aAAOA,MAAM,CAAC/e,KAAP,CAAa+0B,OAAb,KAAyB,EAAhC;AACD;AAED;;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,QAAIuf,OAAO,GAAGnc,QAAQ,CAAC,UAASj+B,IAAT,EAAejK,IAAf,EAAqB;AAC1C,UAAI;AACF,eAAO0K,KAAK,CAACT,IAAD,EAAO8J,SAAP,EAAkB/T,IAAlB,CAAZ;AACD,OAFD,CAEE,OAAO4F,CAAP,EAAU;AACV,eAAO44C,OAAO,CAAC54C,CAAD,CAAP,GAAaA,CAAb,GAAiB,IAAIU,KAAJ,CAAUV,CAAV,CAAxB;AACD;AACF,KANqB,CAAtB;AAQA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,QAAIs/C,OAAO,GAAGhW,QAAQ,CAAC,UAAStf,MAAT,EAAiBu1B,WAAjB,EAA8B;AACnDz3B,MAAAA,SAAS,CAACy3B,WAAD,EAAc,UAAS92C,GAAT,EAAc;AACnCA,QAAAA,GAAG,GAAGuzB,KAAK,CAACvzB,GAAD,CAAX;AACAovB,QAAAA,eAAe,CAAC7N,MAAD,EAASvhB,GAAT,EAAc8sC,IAAI,CAACvrB,MAAM,CAACvhB,GAAD,CAAP,EAAcuhB,MAAd,CAAlB,CAAf;AACD,OAHQ,CAAT;AAIA,aAAOA,MAAP;AACD,KANqB,CAAtB;AAQA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,aAASw1B,IAAT,CAAc5oB,KAAd,EAAqB;AACnB,UAAIz8B,MAAM,GAAGy8B,KAAK,IAAI,IAAT,GAAgB,CAAhB,GAAoBA,KAAK,CAACz8B,MAAvC;AAAA,UACIuwC,UAAU,GAAGnJ,WAAW,EAD5B;AAGA3K,MAAAA,KAAK,GAAG,CAACz8B,MAAD,GAAU,EAAV,GAAequB,QAAQ,CAACoO,KAAD,EAAQ,UAASsV,IAAT,EAAe;AACpD,YAAI,OAAOA,IAAI,CAAC,CAAD,CAAX,IAAkB,UAAtB,EAAkC;AAChC,gBAAM,IAAI7oC,SAAJ,CAAc4Y,eAAd,CAAN;AACD;;AACD,eAAO,CAACyuB,UAAU,CAACwB,IAAI,CAAC,CAAD,CAAL,CAAX,EAAsBA,IAAI,CAAC,CAAD,CAA1B,CAAP;AACD,OAL8B,CAA/B;AAOA,aAAO5J,QAAQ,CAAC,UAASloC,IAAT,EAAe;AAC7B,YAAIkE,KAAK,GAAG,CAAC,CAAb;;AACA,eAAO,EAAEA,KAAF,GAAUnE,MAAjB,EAAyB;AACvB,cAAI+xC,IAAI,GAAGtV,KAAK,CAACt4B,KAAD,CAAhB;;AACA,cAAIwG,KAAK,CAAConC,IAAI,CAAC,CAAD,CAAL,EAAU,IAAV,EAAgB9xC,IAAhB,CAAT,EAAgC;AAC9B,mBAAO0K,KAAK,CAAConC,IAAI,CAAC,CAAD,CAAL,EAAU,IAAV,EAAgB9xC,IAAhB,CAAZ;AACD;AACF;AACF,OARc,CAAf;AASD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASqlD,QAAT,CAAkB7+B,MAAlB,EAA0B;AACxB,aAAOqZ,YAAY,CAACrB,SAAS,CAAChY,MAAD,EAAStE,eAAT,CAAV,CAAnB;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASwmB,QAAT,CAAkB3+B,KAAlB,EAAyB;AACvB,aAAO,YAAW;AAChB,eAAOA,KAAP;AACD,OAFD;AAGD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASu7C,SAAT,CAAmBv7C,KAAnB,EAA0B0mC,YAA1B,EAAwC;AACtC,aAAQ1mC,KAAK,IAAI,IAAT,IAAiBA,KAAK,KAAKA,KAA5B,GAAqC0mC,YAArC,GAAoD1mC,KAA3D;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,QAAIw7C,IAAI,GAAGtW,UAAU,EAArB;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,QAAIuW,SAAS,GAAGvW,UAAU,CAAC,IAAD,CAA1B;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,aAAS7J,QAAT,CAAkBr7B,KAAlB,EAAyB;AACvB,aAAOA,KAAP;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASyjB,QAAT,CAAkBvjB,IAAlB,EAAwB;AACtB,aAAOk7B,YAAY,CAAC,OAAOl7B,IAAP,IAAe,UAAf,GAA4BA,IAA5B,GAAmCu0B,SAAS,CAACv0B,IAAD,EAAOiY,eAAP,CAA7C,CAAnB;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASujC,OAAT,CAAiBj/B,MAAjB,EAAyB;AACvB,aAAO8e,WAAW,CAAC9G,SAAS,CAAChY,MAAD,EAAStE,eAAT,CAAV,CAAlB;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASwjC,eAAT,CAAyBhkB,IAAzB,EAA+BiD,QAA/B,EAAyC;AACvC,aAAOU,mBAAmB,CAAC3D,IAAD,EAAOlD,SAAS,CAACmG,QAAD,EAAWziB,eAAX,CAAhB,CAA1B;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,QAAIyjC,MAAM,GAAGzd,QAAQ,CAAC,UAASxG,IAAT,EAAe1hC,IAAf,EAAqB;AACzC,aAAO,UAAS4vB,MAAT,EA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AACI,aAASgU,MAAT,CAAgBjgD,CAAhB,EAAmB;AACjBA,MAAAA,CAAC,GAAG+6B,SAAS,CAAC/6B,CAAD,CAAb;AACA,aAAOoiC,QAAQ,CAAC,UAASloC,IAAT,EAAe;AAC7B,eAAOgnC,OAAO,CAAChnC,IAAD,EAAO8F,CAAP,CAAd;AACD,OAFc,CAAf;AAGD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,QAAIkgD,IAAI,GAAGtV,UAAU,CAACtiB,QAAD,CAArB;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,QAAI63B,SAAS,GAAGvV,UAAU,CAAC9iB,UAAD,CAA1B;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,QAAIs4B,QAAQ,GAAGxV,UAAU,CAAChiB,SAAD,CAAzB;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,aAAS6W,QAAT,CAAkB7D,IAAlB,EAAwB;AACtB,aAAOwE,KAAK,CAACxE,IAAD,CAAL,GAAc9S,YAAY,CAACgT,KAAK,CAACF,IAAD,CAAN,CAA1B,GAA0C+F,gBAAgB,CAAC/F,IAAD,CAAjE;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASykB,UAAT,CAAoBv2B,MAApB,EAA4B;AAC1B,aAAO,UAAS8R,IAAT,EAAe;AACpB,eAAO9R,MAAM,IAAI,IAAV,GAAiB7b,SAAjB,GAA6B0tB,OAAO,CAAC7R,MAAD,EAAS8R,IAAT,CAA3C;AACD,OAFD;AAGD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,QAAI0kB,KAAK,GAAGpV,WAAW,EAAvB;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,QAAIqV,UAAU,GAAGrV,WAAW,CAAC,IAAD,CAA5B;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,aAAS0C,SAAT,GAAqB;AACnB,aAAO,EAAP;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASU,SAAT,GAAqB;AACnB,aAAO,KAAP;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASkS,UAAT,GAAsB;AACpB,aAAO,EAAP;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASC,UAAT,GAAsB;AACpB,aAAO,EAAP;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASC,QAAT,GAAoB;AAClB,aAAO,IAAP;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASC,KAAT,CAAe3gD,CAAf,EAAkB0nB,QAAlB,EAA4B;AAC1B1nB,MAAAA,CAAC,GAAG+6B,SAAS,CAAC/6B,CAAD,CAAb;;AACA,UAAIA,CAAC,GAAG,CAAJ,IAASA,CAAC,GAAG2d,gBAAjB,EAAmC;AACjC,eAAO,EAAP;AACD;;AACD,UAAIvf,KAAK,GAAG0f,gBAAZ;AAAA,UACI7jB,MAAM,GAAGs2B,SAAS,CAACvwB,CAAD,EAAI8d,gBAAJ,CADtB;AAGA4J,MAAAA,QAAQ,GAAG2Z,WAAW,CAAC3Z,QAAD,CAAtB;AACA1nB,MAAAA,CAAC,IAAI8d,gBAAL;AAEA,UAAIzZ,MAAM,GAAGgmB,SAAS,CAACpwB,MAAD,EAASytB,QAAT,CAAtB;;AACA,aAAO,EAAEtpB,KAAF,GAAU4B,CAAjB,EAAoB;AAClB0nB,QAAAA,QAAQ,CAACtpB,KAAD,CAAR;AACD;;AACD,aAAOiG,MAAP;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASu8C,MAAT,CAAgB38C,KAAhB,EAAuB;AACrB,UAAI8T,OAAO,CAAC9T,KAAD,CAAX,EAAoB;AAClB,eAAOqkB,QAAQ,CAACrkB,KAAD,EAAQ63B,KAAR,CAAf;AACD;;AACD,aAAOjB,QAAQ,CAAC52B,KAAD,CAAR,GAAkB,CAACA,KAAD,CAAlB,GAA4BqvB,SAAS,CAAC2R,YAAY,CAAC7/B,QAAQ,CAACnB,KAAD,CAAT,CAAb,CAA5C;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAAS48C,QAAT,CAAkBC,MAAlB,EAA0B;AACxB,UAAI1b,EAAE,GAAG,EAAExX,SAAX;AACA,aAAOxoB,QAAQ,CAAC07C,MAAD,CAAR,GAAmB1b,EAA1B;AACD;AAED;;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,QAAInP,GAAG,GAAGwU,mBAAmB,CAAC,UAASsW,MAAT,EAAiBC,MAAjB,EAAyB;AACrD,aAAOD,MAAM,GAAGC,MAAhB;AACD,KAF4B,EAE1B,CAF0B,CAA7B;AAIA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,QAAItxB,IAAI,GAAGoc,WAAW,CAAC,MAAD,CAAtB;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,QAAImV,MAAM,GAAGxW,mBAAmB,CAAC,UAASyW,QAAT,EAAmBC,OAAnB,EAA4B;AAC3D,aAAOD,QAAQ,GAAGC,OAAlB;AACD,KAF+B,EAE7B,CAF6B,CAAhC;AAIA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,QAAIvxB,KAAK,GAAGkc,WAAW,CAAC,OAAD,CAAvB;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACI,aAASxb,GAAT,CAAazY,KAAb,EAAoB;AAClB,aAAQA,KAAK,IAAIA,KAAK,CAAC5d,MAAhB,GACH2gC,YAAY,CAAC/iB,KAAD,EAAQynB,QAAR,EAAkBlD,MAAlB,CADT,GAEHnuB,SAFJ;AAGD;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,aAASmzC,KAAT,CAAevpC,KAAf,EAAsB6P,QAAtB,EAAgC;AAC9B,aAAQ7P,KAAK,IAAIA,KAAK,CAAC5d,MAAhB,GACH2gC,YAAY,CAAC/iB,KAAD,EAAQwpB,WAAW,CAAC3Z,QAAD,EAAW,CAAX,CAAnB,EAAkC0U,MAAlC,CADT,GAEHnuB,SAFJ;A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G;AACtB;AACA,qBAAqB,GAAG;AACxB;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,EAAE,EAWV;;AAED;AACA;AACA,cAAc,yGAAyG;AACvH;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD,sDAAsD;AACtD;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,EAAE,EAoDV;;AAED;AACA;AACA,cAAc,yGAAyG;AACvH;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,EAAE,EAWV;;AAED;AACA;AACA,cAAc,yGAAyG;AACvH;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,EAAE,EAKV;AACD;AACA;AACA;AACA;AACA,IAAI,KAAK,EAAE,EAuCV;AACD;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,4BAA4B,uDAAY;AACxC;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,gDAAgD;AACvF;AACA,2CAA2C,4CAA4C;AACvF;AACA;AACA,2CAA2C,4CAA4C;AACvF;AACA;AACA,2CAA2C,4CAA4C;AACvF;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,IAAI;AACnB,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA,2BAA2B,GAAG;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,GAAG;AAC9B;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,GAAG;AACxB;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,GAAG;AAC9B,4BAA4B;AAC5B;AACA;AACA,+BAA+B,GAAG;AAClC;AACA;AACA,4EAA4E,WAAW;AACvF,uDAAuD,WAAW;AAClE;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA,SAAS;AACT;AACA,oBAAoB;AACpB;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B;AACA,yBAAyB,GAAG;AAC5B;AACA,SAAS;AACT;AACA,oBAAoB;AACpB;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA,SAAS;AACT;AACA,oBAAoB;AACpB;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,uBAAuB,GAAG;AAC1B,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,EAAE,EAwBV;;AAED;AACA;AACA,cAAc,yGAAyG;AACvH;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA,kCAAkC,uDAAY;AAC9C;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;A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ACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,yGAAyG;AACvH;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB,uCAAuC,GAAG;AAC1C;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,uCAAuC,oEAAkB,GAAG,0CAA0C,2BAA2B,0CAA0C;AAC3K,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,iBAAiB,oBAAoB;AACrC,KAAK,iBAAiB;;AAEtB;AACA;AACA;AACA,cAAc,yGAAyG;AACvH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,EAAE,EAuDV;;AAED;AACA;AACA;AACA,cAAc,yGAAyG;AACvH;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA,4BAA4B,UAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,mDAAmD,KAAK;AACxD,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,yGAAyG;AACvH;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,EAAE,EAKV;AACD;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA,uBAAuB,GAAG;AAC1B,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,2BAA2B,GAAG;AAC9B;AACA,2BAA2B,GAAG;AAC9B;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,eAAe,gDAAS;AACxB,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,eAAe,gDAAS;AACxB,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C,qBAAqB;AACrB;AACA;AACA;AACA,8CAA8C;AAC9C,qBAAqB;AACrB;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA,2BAA2B,GAAG;AAC9B;AACA,2BAA2B,GAAG;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,GAAG;AAC9B;AACA,2BAA2B,GAAG;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D,4CAA4C,oEAAkB,GAAG,+CAA+C,gCAAgC,+CAA+C;AAC/L,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,iBAAiB,oBAAoB;AACrC,KAAK,iBAAiB,YAAY,UAAU;AAC5C,IAAI,KAAK,EAAE,EAMV;;AAED;AACA;AACA;AACA,cAAc,yGAAyG;AACvH;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,GAAG;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,GAAG;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,GAAG;AAC9B;AACA,2BAA2B,GAAG;AAC9B;AACA,2BAA2B,GAAG;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,GAAG;AAC9B;AACA,2BAA2B,GAAG;AAC9B;AACA,2BAA2B,GAAG;AAC9B;AACA,2BAA2B,GAAG;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,2EAA2E;AAC3E,kDAAkD,oEAAkB,GAAG,qDAAqD,sCAAsC,qDAAqD;AACvN,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,iBAAiB,oBAAoB;AACrC,KAAK,iBAAiB;;AAEtB;AACA;AACA;AACA,cAAc,yGAAyG;AACvH;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;;AAEA;AACA;AACA;AACA,cAAc,yGAAyG;AACvH;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,GAAG,iBAAiB,GAAG;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,uDAAY;AAC5C,kCAAkC,uDAAY;AAC9C,+BAA+B,uDAAY;AAC3C,gCAAgC,uDAAY;AAC5C,mCAAmC,uDAAY;AAC/C;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B,wBAAwB;AACxB;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA,sCAAsC,cAAc;AACpD;AACA;AACA;AACA;AACA,iBAAiB,wDAAS;AAC1B;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA,yBAAyB,wBAAwB;AACjD;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,wJAAwJ;AACjM;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,iMAAiM;AAC1O;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;A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B;AACpD,aAAa;AACb;AACA,qEAAqE;AACrE,sDAAsD;AACtD;AACA;AACA,8BAA8B,gEAAc;AAC5C;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,+EAA+E,gBAAgB;AAC/F,oBAAoB,+CAAS;AAC7B,8BAA8B,yDAAS,MAAM,yDAAS;AACtD;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA,YAAY,kEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iDAAiD,kEAAiB;AAClE,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,kEAAiB;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF,4CAA4C,+DAAwB,CAAC,iDAAa,GAAG,+DAAwB,CAAC,0DAAsB,GAAG,+DAAwB,CAAC,qDAAiB,GAAG,+DAAwB,CAAC,sDAAW,GAAG,+DAAwB;AACpU,+CAA+C,+DAAwB,GAAG,sFAAsF,8DAA8D,aAAa,8RAA8R,gDAAgD,kEAA2B,GAAG;AACvlB;AACA,MAAM,MAAM,iDAAM,EAAE;AACpB,MAAM,MAAM,0DAAe,EAAE;AAC7B,MAAM,MAAM,qDAAU,EAAE;AACxB,MAAM,6BAA6B,MAAM,iDAAM,SAAS,sDAAW,IAAI,GAAG;AAC1E,MAAM,gCAAgC,MAAM,mDAAQ,EAAE,IAAI,MAAM,iDAAM,qCAAqC;AAC3G;AACA;AACA,iBAAiB,MAAM,gDAAK,EAAE;AAC9B,eAAe,MAAM,gDAAK,+BAA+B;AACzD,kBAAkB,MAAM,iDAAM,EAAE;AAChC,kBAAkB,MAAM,iDAAM,EAAE;AAChC,mBAAmB,MAAM,iDAAM,EAAE;AACjC,qBAAqB,MAAM,iDAAM,EAAE;AACnC,qBAAqB,MAAM,iDAAM,EAAE;AACnC,sBAAsB,MAAM,iDAAM,EAAE;AACpC,oBAAoB,MAAM,iDAAM,EAAE;AAClC,sBAAsB,MAAM,iDAAM,EAAE;AACpC,oBAAoB,MAAM,iDAAM,EAAE;AAClC,sBAAsB,MAAM,iDAAM,EAAE;AACpC;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA;AACA,aAAa;AACb,KAAK,iBAAiB,UAAU,MAAM,iDAAa,EAAE,IAAI,MAAM,0DAAsB,EAAE,IAAI,MAAM,qDAAiB,EAAE,IAAI;AACxH,sBAAsB,iDAAM;AAC5B,uBAAuB,sDAAW;AAClC,aAAa,GAAG,IAAI;AACpB,sBAAsB,mDAAQ;AAC9B,aAAa;AACb,sBAAsB,iDAAM;AAC5B;AACA,aAAa,GAAG,IAAI,IAAI;AACxB,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,iDAAM;AACxB,SAAS;AACT,kBAAkB,iDAAM;AACxB,SAAS;AACT,kBAAkB,iDAAM;AACxB,SAAS;AACT,kBAAkB,iDAAM;AACxB,SAAS;AACT,kBAAkB,iDAAM;AACxB,SAAS;AACT,kBAAkB,iDAAM;AACxB,SAAS;AACT,kBAAkB,iDAAM;AACxB,SAAS;AACT,kBAAkB,iDAAM;AACxB,SAAS;AACT,kBAAkB,iDAAM;AACxB,SAAS;AACT,kBAAkB,iDAAM;AACxB,SAAS;AACT,kBAAkB,gDAAK;AACvB;AACA,SAAS,GAAG,IAAI;;AAEhB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,yCAAO;AACpC,+BAA+B,yCAAO;AACtC;AACA;AACA;AACA;AACA,6BAA6B,uDAAY;AACzC,6BAA6B,uDAAY;AACzC,8BAA8B,uDAAY;AAC1C,gCAAgC,uDAAY;AAC5C,gCAAgC,uDAAY;AAC5C,iCAAiC,uDAAY;AAC7C,+BAA+B,uDAAY;AAC3C,iCAAiC,uDAAY;AAC7C,+BAA+B,uDAAY;AAC3C,iCAAiC,uDAAY;AAC7C;AACA;AACA,YAAY,kEAAiB;AAC7B;AACA,sBAAsB,yDAAS,kBAAkB,oEAAoB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,oBAAoB,+CAAS;AAC7B,8BAA8B,yDAAS;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,oBAAoB,+CAAS;AAC7B,8BAA8B,yDAAS;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,oBAAoB,2CAAK,CAAC,+CAAS;AACnC,8BAA8B,sDAAK,QAAQ,+CAAS;AACpD,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CE,IAAjB,kBArQoGhG,8DAqQpG;AAAA,YAA0I,CAC9HiB,yDAD8H,CAA1I;AAAA;;AAGA;AAAA,qDAxQoGjB,+DAwQpG,CAA2F8F,gBAA3F,EAAyH,CAAC;AAC9GnhD,IAAAA,IAAI,EAAE67C,mDADwG;AAE9G3pD,IAAAA,IAAI,EAAE,CAAC;AACCujD,MAAAA,OAAO,EAAE,CACL6G,yDADK,CADV;AAICgF,MAAAA,YAAY,EAAE,CAACnD,mBAAD,EAAsBN,YAAtB,CAJf;AAKCxmD,MAAAA,OAAO,EAAE,CAAC8mD,mBAAD;AALV,KAAD;AAFwG,GAAD,CAAzH;AAAA;AAWA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;AC7ZA;AACA;;AAEA;AACA,MAAM,KAA0B;AAChC;AACA,IAAI,SAAS,IAA0C;AACvD;AACA,IAAI,iCAAO,EAAE,oCAAE,OAAO;AAAA;AAAA;AAAA,kGAAC;AACvB,IAAI,KAAK,EAGN;AACH,CAAC;AACD;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,OAAO,IAAI;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;;AAEA,sBAAsB,iBAAiB;AACvC;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,0CAA0C,SAAS;AACnD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,oCAAoC,4BAA4B;AAChE;AACA,CAAC;;;;;;;;;;;;;;;;AC/TD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA,0EAA0E;AAC1E;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B,4BAA4B;AACtD,yBAAyB,2BAA2B;AACpD;AACA,GAAG;AACH;AACA;AACA;AACA,2BAA2B,6BAA6B;AACxD,8BAA8B,gCAAgC;AAC9D,GAAG;AACH;;AAEA;AACA;AACA;AACA,8BAA8B;;AAE9B;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,yEAAyE;AAC3F;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,2BAA2B,WAAW;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,qDAAqD,gCAAgC;AACrF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,4CAA4C,uBAAuB;AACnE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,0EAA0E;AAC1E;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA,yDAAyD,6BAA6B;AACtF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;;AAEH,yDAAyD,6BAA6B;AACtF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA,qCAAqC;AACrC,uCAAuC;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,4BAA4B;;AAE5B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,4BAA4B;AAC5B,2BAA2B;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,6BAA6B,kBAAkB;AAC/C;AACA;AACA,6BAA6B,aAAa;AAC1C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,6BAA6B,kBAAkB;AAC/C;AACA;AACA,6BAA6B,aAAa;AAC1C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,0DAA0D,uCAAuC;;AAEjG,sDAAsD;AACtD,4CAA4C;AAC5C,yDAAyD,4BAA4B;AACrF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,6BAA6B,kBAAkB;AAC/C,6BAA6B,kBAAkB;AAC/C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA6B,iBAA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A8C;;;;;;;;;;;;;;;;ACrC/sW;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,cAAc;AAC7B,eAAe,GAAG;AAClB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA,mBAAmB,GAAG;AACtB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,mBAAmB,GAAG;AACtB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B,mBAAmB,GAAG;AACtB,qBAAqB;AACrB;AACA;AACA,kCAAkC;AAClC,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,gCAAgC,8BAA8B;AAC/F,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,mBAAmB;AAClC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,mBAAmB;AAClC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sDAAsD,oCAAoC;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,QAAQ;AACrB;AACA;AACA,8CAA8C,gBAAgB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,WAAW,eAAe;AAC1B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,qBAAqB;AAChC,WAAW,WAAW;AACtB,aAAa;AACb;AACA;AACA;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,WAAW,qBAAqB;AAChC,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,8CAA8C,yBAAyB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,oBAAoB;AAC/B;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA,CAAC;AACD;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,aAAa;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,aAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,0CAA0C;AAC7E;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,eAAe,wBAAwB;AACvC;AACA,eAAe,0BAA0B;AACzC;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wBAAwB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,iEAAe,KAAK,EAAC;;;;;;;;;;;;AC/5BrB;AACA;AACA;AACA;AACa;;AAEb,gBAAgB,mBAAO,CAAC,4BAAkB;;AAE1C;;AAEA;;AAEA;;AAEA;;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACa;;;AAGb;AACA,6BAA6B;AAC7B;AACA,6CAA6C,EAAE;AAC/C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA,+DAA+D;AAC/D;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;;;;;;;;;;;;;;;;;;ACzKoC;AACqC;AAClE,8BAA8B,6CAAO;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,kFAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC/B0C;AACnC,8BAA8B,mDAAU;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACpB2C;AACN;AACgB;AAC9C;AACP;AACA;AACA;AACA;AACA,CAAC,4CAA4C;AACtC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kDAAE;AACzB;AACA,uBAAuB,kEAAU;AACjC;AACA,uBAAuB,wDAAK;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACvEuD;AACJ;AACmB;AAC1B;AACV;AAC3B;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,WAAW;AAC3B,qBAAqB,gEAAY;AACjC;AACA;AACA;AACA;AACA,qCAAqC,iFAA4C;AACjF;AACA;AACA;AACA,YAAY,iFAA4C;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iFAA4C;AAC5D;AACA;AACA;AACA,gBAAgB,oEAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA,KAAK,0DAAiB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yDAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,mDAAc;AACpC;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACzGkC;AACuB;AAClD;AACP;AACA,mBAAmB;AACnB;AACA,YAAY,iFAA4C;AACxD;AACA;AACA;AACA,YAAY,sEAAe;AAC3B;AACA,KAAK;AACL;AACA;;;;;;;;;;;;;;;;;ACd0C;AACnC,8BAA8B,mDAAU;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACXoC;AACM;AACI;AACc;AACa;AACb;AACrD,4BAA4B,6CAAO;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,kFAAuB;AAC7C;AACA;AACA,2BAA2B,6DAAkB;AAC7C;AACA;AACA;AACA,+BAA+B,qEAAmB;AAClD;AACA;AACA,4CAA4C,qEAAmB;AAC/D;AACA;AACA,4BAA4B,+BAA+B;AAC3D;AACA;AACA;AACA;AACA,4BAA4B,+BAA+B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,mDAAK;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC1GO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;ACT0C;AACA;AACI;AAC2B;AACb;AACyB;AAC9E,gCAAgC,mDAAU;AACjD;AACA;AACA;AACA;AACA;AACO,sBAAsB,mDAAU;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,uEAAkB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,kFAAuB;AAC7C;AACA;AACA,oBAAoB,YAAY;AAChC;AACA;AACA,4BAA4B,SAAS;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,kFAAuB;AAC7C;AACA;AACA;AACA;AACA,gBAAgB,YAAY;AAC5B;AACA;AACA,wBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,kFAAuB;AAC7C;AACA;AACA,gBAAgB,YAAY;AAC5B;AACA;AACA,wBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,kFAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,kFAAuB;AAC7C;AACA;AACA;AACA,mBAAmB,6DAAkB;AACrC;AACA;AACA;AACA,mBAAmB,6DAAkB;AACrC;AACA;AACA;AACA,uBAAuB,qEAAmB;AAC1C;AACA;AACA;AACA,+BAA+B,mDAAU;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA,mBAAmB,6DAAkB;AACrC;AACA;AACA;;;;;;;;;;;;;;;;;AC9I8C;AACvC,kCAAkC,uDAAY;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACxB+C;AACK;AACN;AACuC;AACnD;AACuB;AAClD,yBAAyB,uDAAY;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,4CAAa;AAChD;AACA;AACA;AACA,uCAAuC,4CAAa;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,uEAAkB,MAAM;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,mBAAmB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,YAAY,4DAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,4CAAa;AAChD;AACA,oBAAoB,4DAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oBAAoB;AACxC,iBAAiB,iFAA4C;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oBAAoB;AACxC,oBAAoB,wCAAwC,EAAE,2CAAM;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,sEAAe;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,sEAAe;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oBAAoB;AACxC;AACA;AACA,qBAAqB,iFAA4C;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iFAA4C;AAC5D;AACA;AACA;AACA,gBAAgB,sEAAe;AAC/B;AACA;AACA;AACA;AACA,aAAa,iFAA4C;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iFAA4C;AAC5D;AACA;AACA;AACA;AACA;AACA,gBAAgB,sEAAe;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,oBAAoB;AACpC;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AC5NyC;AACE;AACI;AACkB;AAC1D;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,mEAAmE;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,iCAAiC;AACjE;AACA;AACA;AACA;AACA,YAAY,4DAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,0EAAmB;AACzD;AACA;AACA,YAAY,sDAAO;AACnB;AACA;AACA;AACA;AACA,oBAAoB,wDAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA,yCAAyC,0EAAmB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,0EAAmB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,mBAAmB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,oEAAoE,0EAAmB;AACvF;;;;;;;;;;;;;;;;ACvIA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;;;;;;;;;;;;;;;;;;;;;;;AChB0C;AACA;AACO;AAC1C,oCAAoC,mDAAU;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,qCAAqC,mDAAU;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,oCAAoC,mDAAU;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,qCAAqC,mDAAU;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,0BAA0B,mDAAU;AACpC;AACA;AACA;AACA;AACA,uBAAuB,8DAAW;AAClC;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;AC5E+C;AACJ;AACA;AACI;AACyB;AACjE,oCAAoC,mDAAU;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,uDAAY;AAC5D;AACA;AACA;AACA;AACA,6BAA6B,6DAAkB;AAC/C;AACA;AACA;AACA;AACA;AACA,eAAe,6DAAmB;AAClC;AACA;AACO;AACP;AACA;AACA,oBAAoB,aAAa;AACjC,qBAAqB,0BAA0B;AAC/C,oBAAoB,6BAA6B;AACjD,uBAAuB,6BAA6B;AACpD,sBAAsB,oCAAoC;AAC1D,uBAAuB,qDAAqD;AAC5E,sBAAsB,oCAAoC;AAC1D,mBAAmB,iCAAiC;AACpD,oBAAoB;AACpB;AACA,CAAC;AACD,oCAAoC,uDAAiB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,mDAAU;AAC3C;AACA;AACA;AACA;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,aAAa;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;AC/HkD;AACR;AACW;AACS;AACtB;AACxC;AACO;AACP;AACA;AACA,QAAQ,8DAAW;AACnB;AACA;AACA;AACA;AACA;AACA,oCAAoC,sDAAO;AAC3C;AACA;AACA,WAAW,qDAAS;AACpB;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO,sCAAsC,6DAAe;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,SAAS;AACrC;AACA,yBAAyB,0EAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACvF0B;AACyB;AAC5C;AACP,WAAW,+DAAS,GAAG,uCAAE;AACzB;;;;;;;;;;;;;;;;;;;ACJ2C;AACb;AACE;AACzB;AACP,eAAe,mDAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,2CAAI,UAAU,6CAAK;AAClD;AACA,KAAK;AACL;;;;;;;;;;;;;;;;;;AChB2C;AACpC,kBAAkB,mDAAU;AAC5B;AACP;AACA;AACA;AACA,eAAe,mDAAU;AACzB;;;;;;;;;;;;;;;;;;;;;ACP2C;AACD;AACH;AACK;AACd;AACvB;AACP;AACA;AACA,YAAY,sDAAO;AACnB;AACA;AACA,YAAY,wDAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,sDAAO;AAClD,oDAAoD,mDAAG;AACvD;AACA;AACA;AACA;AACA,eAAe,mDAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,SAAS;AACjC,2BAA2B,2CAAI;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,qGAAqG;AACrG;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;AACL;;;;;;;;;;;;;;;;;;;AC3D2C;AACO;AACC;AAC5C;AACP;AACA,6BAA6B,mDAAU;AACvC;AACA;AACA,mBAAmB,mDAAU,CAAC,8DAAW;AACzC;AACA;AACA,eAAe,+DAAS;AACxB;AACA;;;;;;;;;;;;;;;;;;;ACb2C;AACiB;AACD;AACpD;AACP;AACA,mBAAmB,mDAAU,CAAC,wEAAgB;AAC9C;AACA;AACA,eAAe,uEAAa;AAC5B;AACA;;;;;;;;;;;;;;;;;;;;ACV2C;AACD;AACM;AACT;AACvC;AACO;AACP,QAAQ,4DAAU;AAClB;AACA;AACA;AACA;AACA,0DAA0D,mDAAG,SAAS,sDAAO;AAC7E;AACA,eAAe,mDAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AC5D2C;AACO;AACD;AACT;AACjC;AACP;AACA;AACA;AACA,QAAQ,8DAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oFAAoF,mDAAU;AAC9F;AACA;AACA,WAAW,6DAAQ,aAAa,qDAAS;AACzC;;;;;;;;;;;;;;;;;;;ACrBkD;AACV;AACmB;AACpD;AACP;AACA,QAAQ,8DAAW;AACnB;AACA,eAAe,uEAAa;AAC5B;AACA;AACA,eAAe,qDAAS;AACxB;AACA;;;;;;;;;;;;;;;;;ACZ2C;AACpC;AACP;AACA,mBAAmB,mDAAU;AAC7B;AACA;AACA,mBAAmB,mDAAU,iDAAiD,mBAAmB;AACjG;AACA;AACA,oBAAoB,mBAAmB;AACvC;AACA;;;;;;;;;;;;;;;;;;;;ACX2C;AACA;AACG;AACI;AAC3C;AACP;AACA,QAAQ,0DAAS;AACjB;AACA;AACA,aAAa,8DAAW;AACxB;AACA;AACA,SAAS,8DAAW;AACpB,oBAAoB,mDAAK;AACzB;AACA,eAAe,mDAAU;AACzB,oBAAoB,0DAAS;AAC7B;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA,YAAY,4BAA4B;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACnCiG;AAC1F;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,kEAAqB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA,sCAAsC,+DAAc,eAAe,kEAAqB;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,6BAA6B;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC5D2C;AACX;AACY;AACrC,yCAAyC,mDAAK;AACrD,WAAW,6CAAK,OAAO,wDAAK;AAC5B;;;;;;;;;;;;;;;;;ACLiG;AAC1F;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,kEAAqB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,kEAAqB;AAC7D;AACA,sCAAsC,+DAAc;AACpD;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACzCsC;AAC/B;AACP,WAAW,mDAAQ;AACnB;;;;;;;;;;;;;;;;;ACHsC;AAC/B;AACP,WAAW,mDAAQ;AACnB;;;;;;;;;;;;;;;;;;ACH2C;AACA;AACpC,2CAA2C,mDAAK;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,mDAAU;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,YAAY;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACrD2C;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,mDAAU;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC5B2C;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,mDAAU;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,cAAc;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,UAAU;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACpD2C;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,mDAAU;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACnC2C;AACI;AACxC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,mDAAU;AAC1C;AACA;AACA,qBAAqB,uDAAY;AACjC;AACA;;;;;;;;;;;;;;;;;;;;;;AClBgD;AACd;AACJ;AACoB;AACJ;AACF;AACrC;AACP;AACA,+CAA+C,+CAAM,sCAAsC,oDAAQ,EAAE,2CAAI,uBAAuB,+DAAc,iBAAiB,2DAAY,WAAW,wDAAU;AAChM;;;;;;;;;;;;;;;;;;;;;;ACTgD;AACd;AACI;AACQ;AACI;AACN;AACrC;AACP;AACA,+CAA+C,+CAAM,sCAAsC,oDAAQ,EAAE,mDAAQ,uBAAuB,+DAAc,iBAAiB,2DAAY,WAAW,wDAAU;AACpM;;;;;;;;;;;;;;;;;;ACT2C;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mDAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACpC2C;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,mDAAU;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACpBsC;AACM;AACrC;AACP,WAAW,mDAAQ,CAAC,oDAAQ;AAC5B;;;;;;;;;;;;;;;;;;;;;;ACJ4B;AACc;AACuD;AAC1F;AACP;AACA,0DAA0D,sDAAI,qBAAqB,yCAAG;AACtF;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,iCAAiC,kEAAqB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,kEAAqB;AACzD;AACA;AACA,kCAAkC,+DAAc;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;;;;;;;;;;;;;;;;;;AClF+E;AAC/E;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,8FAA+B;AACjF;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,gBAAgB,WAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACjC2C;AACI;AACxC;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,kCAAkC,mDAAU;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,4BAA4B;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,kEAAuB;AACpD;AACA;AACA,6BAA6B,mEAAwB;AACrD;AACA;AACA;AACA,6BAA6B,sEAA2B;AACxD;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AChD2C;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,mDAAU;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC3B4B;AACrB;AACP;AACA;AACA;AACA;AACA,uBAAuB,yCAAG;AAC1B;AACA;AACA;AACA;AACA,wBAAwB,YAAY;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACvB2C;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,mDAAU;AAC3C;AACA;AACA;AACA;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,aAAa;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AClD2C;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,mDAAU;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACxDwC;AACF;AACD;AACrC;AACA,eAAe,6CAAO;AACtB;AACO;AACP,uBAAuB,mDAAQ,GAAG,qDAAS;AAC3C;;;;;;;;;;;;;;;;;ACRiD;AAC1C;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iHAAiH;AAChJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,yDAAa;AACvC;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;;;;;;;;;;;;;;;;;AC7D8C;AACI;AAC3C;AACP;AACA,QAAQ,8DAAW;AACnB;AACA,2BAA2B,0DAAM;AACjC;AACA;AACA,2BAA2B,0DAAM;AACjC;AACA;;;;;;;;;;;;;;;;;;;ACX4B;AACc;AACuD;AAC1F;AACP;AACA,2DAA2D,sDAAI,qBAAqB,yCAAG;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,kEAAqB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,kEAAqB;AACzD;AACA;AACA,iCAAiC,+DAAc;AAC/C;AACA;AACA;AACA;AACA;AACA,gBAAgB,oBAAoB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACnE2C;AAC+B;AAC9B;AACrC;AACP;AACA;AACA,mBAAmB,wDAAK;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,kFAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,mDAAU;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACzC2C;AAC+B;AAC9B;AACrC;AACP;AACA;AACA,mBAAmB,wDAAK;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,kFAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,mDAAU;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,WAAW;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACxDiG;AAC1F;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,+DAAc,oBAAoB,kEAAqB;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,kEAAqB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC7B2C;AACP;AACY;AACzC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mDAAU;AACtC;AACA;AACA,wBAAwB,4CAAI;AAC5B,yBAAyB,4CAAI;AAC7B,4BAA4B,4CAAI;AAChC,kCAAkC,4CAAI;AACtC,wCAAwC,4CAAI;AAC5C,YAAY,4DAAU;AACtB;AACA;AACA;AACA;AACA;AACA,mDAAmD,4CAAI;AACvD,qDAAqD,4CAAI;AACzD,2DAA2D,4CAAI;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACnEgD;AACL;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,mDAAU;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wDAAU;AACzB;;;;;;;;;;;;;;;;;;AC3C2C;AACI;AACxC;AACP,eAAe,mDAAU;AACzB,wBAAwB,uDAAY;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;;;;;;;;;;;;;;;;;;;AClB2C;AACI;AACkB;AAC1D;AACP;AACA;AACA;AACA,eAAe,mDAAU;AACzB,wBAAwB,uDAAY;AACpC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,6BAA6B,sDAAe;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA,KAAK;AACL;;;;;;;;;;;;;;;;;;;AC3C2C;AACI;AACwB;AAChE;AACP,eAAe,mDAAU;AACzB,wBAAwB,uDAAY;AACpC;AACA,qCAAqC,0DAAiB;AACtD;AACA,8BAA8B,4DAA4D;AAC1F,6BAA6B,2DAA2D;AACxF,6BAA6B,2DAA2D;AACxF,aAAa;AACb,SAAS;AACT;AACA,KAAK;AACL;;;;;;;;;;;;;;;;;;AChB2C;AACI;AACxC;AACP,eAAe,mDAAU;AACzB,wBAAwB,uDAAY;AACpC;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA,SAAS;AACT;AACA,KAAK;AACL;;;;;;;;;;;;;;;;;;;;;;;;ACf0D;AACN;AACJ;AACM;AACY;AACpB;AACI;AACF;AACzC;AACP;AACA,YAAY,8EAAmB;AAC/B,mBAAmB,uEAAkB;AACrC;AACA,iBAAiB,0DAAS;AAC1B,mBAAmB,iEAAe;AAClC;AACA,iBAAiB,8DAAW;AAC5B,mBAAmB,6DAAa;AAChC;AACA,iBAAiB,4DAAU;AAC3B,mBAAmB,mEAAgB;AACnC;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACxB+C;AACxC,qBAAqB,uDAAY;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACR4C;AACrC,mCAAmC,qDAAW;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACxBkD;AAC3C,sCAAsC,2DAAc;AAC3D;AACA;AACA;AACA,gBAAgB,UAAU;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACvB8C;AACF;AACrC,yBAAyB,qDAAW;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,mEAAsB;AACnF;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,qEAAwB;AACpC;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACzBkD;AAC3C,4BAA4B,2DAAc;AACjD;AACA;AACA;AACA,gBAAgB,UAAU;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACvBkC;AAC3B,0BAA0B,2CAAM;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC9EyC;AAClC,6BAA6B,iDAAS;AAC7C,uCAAuC,qDAAa;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,UAAU;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC5C4C;AACrC,0BAA0B,qDAAW;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC3BkD;AAC3C,6BAA6B,2DAAc;AAClD;;;;;;;;;;;;;;;;;;;ACF8D;AACM;AAC7D,oCAAoC,6EAAuB,CAAC,uEAAoB;AAChF;;;;;;;;;;;;;;;;;;;ACHmC;AACM;AACzC,0BAA0B,yDAAa,CAAC,mDAAU;AAClD;;;;;;;;;;;;;;;;;;;ACHqC;AACM;AAC3C,2BAA2B,2DAAc,CAAC,qDAAW;AACrD;;;;;;;;;;;;;;;;;;;ACHqC;AACM;AAC3C,2BAA2B,2DAAc,CAAC,qDAAW;AACrD;;;;;;;;;;;;;;;;;;ACHA;AACP;AACA;AACA;AACA;AACA;AACO;AACA;;;;;;;;;;;;;;;;ACPA;;;;;;;;;;;;;;;;;ACAA;AACP;AACA;AACO;;;;;;;;;;;;;;;;ACHP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACM;;;;;;;;;;;;;;;;ACVP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACM;;;;;;;;;;;;;;;;;ACVP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACO;AACP;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACM;;;;;;;;;;;;;;;;ACVP;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B,EAAE,0BAA0B,MAAM,IAAI,eAAe,gBAAgB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACM;;;;;;;;;;;;;;;;;ACboC;AACpC;AACP;AACA,gBAAgB,iCAAiC;AACjD;AACA;AACA;AACA,uDAAuD,mDAAU;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACfO;AACP,uBAAuB,YAAY;AACnC;;;;;;;;;;;;;;;;ACFO;AACP;AACA;;;;;;;;;;;;;;;;ACFO;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;ACAA;AACP;AACA;;;;;;;;;;;;;;;;;ACFuE;AAChE;AACP,iCAAiC,0DAAiB;AAClD;;;;;;;;;;;;;;;;;ACHiE;AAC1D;AACP,iCAAiC,sDAAe;AAChD;;;;;;;;;;;;;;;;;ACHoC;AAC7B;AACP,YAAY,iDAAO;AACnB;;;;;;;;;;;;;;;;ACHO;AACP;AACA;;;;;;;;;;;;;;;;;ACF2C;AACpC;AACP,oCAAoC,mDAAU;AAC9C;;;;;;;;;;;;;;;;ACHO;AACP;AACA;;;;;;;;;;;;;;;;ACFO;AACP;AACA;;;;;;;;;;;;;;;;ACFO;;;;;;;;;;;;;;;;;;ACA+B;AAC/B;AACP;AACA;AACO;AACP;AACA,eAAe,+CAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;ACdsD;AACI;AACE;AACI;AACpB;AACJ;AACF;AAC2B;AACM;AAChE;AACP,kCAAkC,0DAAiB;AACnD,eAAe,6EAAqB;AACpC;AACA,aAAa,yDAAW;AACxB,eAAe,mEAAgB;AAC/B;AACA,aAAa,qDAAS;AACtB,eAAe,uEAAkB;AACjC;AACA,uCAAuC,sDAAe;AACtD,eAAe,yEAAmB;AAClC;AACA;AACA,sBAAsB,mDAAQ,qCAAqC,OAAO;AAC1E,oCAAoC,OAAO;AAC3C;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC5BO;AACP,wCAAwC,+BAA+B;AACvE;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACLiE;AAC1D;AACP,8BAA8B,sDAAe;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;;;;;;;;;;;;;;;;AC7BuE;AAChE;AACP,oBAAoB,0DAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACToD;AAC7C;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,oBAAoB,6DAAe;AACnC;AACA;;;;;;;;;;;;;;;;;;;ACVqD;AACT;AACD;AACpC,kGAAkG,6DAAe;AACxH;AACA;AACA;AACA,0BAA0B,mDAAU;AACpC;AACA;AACA,WAAW,yDAAW;AACtB;;;;;;;;;;;;;;;;;;;ACX2C;AACiC;AACvB;AAC9C;AACP;AACA,sCAAsC,mDAAU;AAChD;AACA;AACA,2BAA2B,8DAAkB;AAC7C,kCAAkC,8DAAkB;AACpD;AACA;AACA;AACA,mBAAmB,mDAAU,CAAC,4CAAa;AAC3C;AACA,eAAe,mDAAU;AACzB;;;;;;;;;;;AChBA,eAAe,KAAiD,oBAAoB,CAAuH,CAAC,iBAAiB,mBAAmB,cAAc,4BAA4B,YAAY,UAAU,iBAAiB,gEAAgE,SAAS,+BAA+B,kBAAkB,aAAa,cAAc,0BAA0B,WAAW,sCAAsC,SAAS,EAAE,WAAW,yCAAyC,6BAA6B,qBAAqB,EAAE,WAAW,+CAA+C,6BAA6B,qBAAqB,EAAE,WAAW,sDAAsD,6BAA6B,qBAAqB,EAAE,eAAe,aAAa,sCAAsC,SAAS,iDAAiD,eAAe,aAAa,cAAc,sRAAsR,6BAA6B,kFAAkF,cAAc,8CAA8C,WAAW,KAAK,wFAAwF,yBAAyB,EAAE,gBAAgB,uDAAuD,aAAa,4DAA4D,aAAa,mJAAmJ,+DAA+D,4BAA4B,YAAY,yBAAyB,aAAa,gCAAgC,aAAa,kEAAkE,uBAAuB,iCAAiC,IAAI,KAAK,WAAW,gCAAgC,MAAM,gBAAgB,KAAK,mEAAmE,WAAW,cAAc,KAAK,mDAAmD,iBAAiB,KAAK,qDAAqD,sCAAsC,SAAS,cAAc,cAAc,iBAAiB,aAAa,aAAa,sLAAsL,sBAAsB,sGAAsG,sCAAsC,4DAA4D,2VAA2V,eAAe,gBAAgB,IAAI,qBAAqB,8BAA8B,uCAAuC,OAAO,wBAAwB,QAAQ,KAAK,KAAK,gBAAgB,UAAU,kBAAkB,+BAA+B,aAAa,cAAc,IAAI,KAAK,WAAW,UAAU,mBAAmB,WAAW,EAAE,mCAAmC,kBAAkB,KAAK,WAAW,iBAAiB,qCAAqC,8BAA8B,IAAI,KAAK,WAAW,kCAAkC,eAAe,IAAI,OAAO,kCAAkC,UAAU,WAAW,KAAK,2BAA2B,MAAM,KAAK,cAAc,mBAAmB,WAAW,oBAAoB,6BAA6B,OAAO,uBAAuB,sBAAsB,sCAAsC,SAAS,EAAE,8EAA8E,gBAAgB,aAAa,qGAAqG,YAAY,4BAA4B,iBAAiB,aAAa,aAAa,0IAA0I,8DAA8D,sCAAsC,uUAAuU,yBAAyB,+BAA+B,WAAW,cAAc,2DAA2D,cAAc,8CAA8C,cAAc,uDAAuD,cAAc,sCAAsC,cAAc,sBAAsB,sBAAsB,yBAAyB,OAAO,mCAAmC,sCAAsC,SAAS,qGAAqG,uBAAuB,iBAAiB,aAAa,cAAc,0BAA0B,WAAW,cAAc,OAAO,0DAA0D,OAAO,2BAA2B,oOAAoO,oEAAoE,oGAAoG,sBAAsB,uEAAuE,wFAAwF,6DAA6D,UAAU,kEAAkE,gBAAgB,uEAAuE,8CAA8C,SAAS,OAAO,mHAAmH,2GAA2G,aAAa,WAAW,eAAe,oBAAoB,wBAAwB,QAAQ,GAAG,mCAAmC,+LAA+L,iCAAiC,uFAAuF,gBAAgB,4CAA4C,kCAAkC,gCAAgC,cAAc,8BAA8B,sCAAsC,iCAAiC,sIAAsI,sCAAsC,SAAS,EAAE,iCAAiC,YAAY,mBAAmB,KAAK,mBAAmB,sEAAsE,SAAS,2EAA2E,gBAAgB,aAAa,qGAAqG,YAAY,0NAA0N,GAAG;;;;;;;;;;;ACAvyQ;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,WAAW,4CAA4C,eAAe;AACxI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,0BAA0B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,WAAW,GAAG,YAAY,4BAA4B,QAAQ,sBAAsB,WAAW,GAAG,+CAA+C,SAAS,YAAY;AACzM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,kBAAkB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,QAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,yBAAyB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6HAA6H,wBAAwB,oCAAoC;AACzL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF,qEAAqE;AACtJ;AACA;AACA,gCAAgC,iBAAiB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,mDAAmD;AAC5F;AACA;AACA;AACA;AACA;AACA,4BAA4B,mCAAmC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,wEAAwE,eAAe;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,qBAAqB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,4BAA4B;AACxE,2CAA2C,iCAAiC;AAC5E,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6FAA6F;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,sBAAsB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,mBAAmB;AACnD;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qDAAqD,cAAc,eAAe;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,0BAA0B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,4BAA4B;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,0BAA0B;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,0BAA0B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,iBAAiB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,wBAAwB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,wBAAwB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,kBAAkB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,WAAW,GAAG,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,qDAAqD;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,yBAAyB;AAC7C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mBAAmB;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4EAA4E;AACxF;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,oBAAoB,4BAA4B;AAChD;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,sBAAsB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,yCAAyC;AAC9G;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;AC/uFD,mBAAO,CAAC,wCAA6B;AACrC,mBAAO,CAAC,4CAAiC;AACzC,mBAAO,CAAC,sCAA2B;AACnC,mBAAO,CAAC,sCAA2B;AACnC,mBAAO,CAAC,0CAA+B;AACvC,mBAAO,CAAC,+CAAoC;AAC5C,mBAAO,CAAC,yCAA8B;AACtC,mBAAO,CAAC,wCAA6B;AACrC,mBAAO,CAAC,0CAA+B;AACvC,mBAAO,CAAC,wCAA6B;AACrC,mBAAO,CAAC,8CAAmC;AAC3C,mBAAO,CAAC,6CAAkC;AAC1C,mBAAO,CAAC,mDAAwC;AAChD,mBAAO,CAAC,wCAA6B;AACrC,mBAAO,CAAC,4CAAiC;AACzC,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AAC,qCAA0B;AACnD,wBAAwB,mBAAO,CAAC,8CAAmC;AACnE,cAAc,mBAAO,CAAC,iCAAsB;AAC5C,qBAAqB,mBAAO,CAAC,yCAA8B;AAC3D,6BAA6B,mBAAO,CAAC,mDAAwC;AAC7E,iBAAiB,mBAAO,CAAC,qCAA0B;AACnD,kBAAkB,mBAAO,CAAC,qCAA0B;AACpD,cAAc,0EAAiD;AAC/D,0BAA0B,mBAAO,CAAC,wCAA6B;;AAE/D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,yEAAyE,gCAAgC;AACzG,KAAK;;AAEL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,OAAO;AACvC;AACA;AACA;;AAEA;AACA,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,OAAO;AACP,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,UAAU,UAAU,aAAa,mCAAmC;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA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rE,gCAAgC,mBAAO,CAAC,uDAA4C;AACpF,wCAAwC,mBAAO,CAAC,gEAAqD;AACrG,mBAAmB,mBAAO,CAAC,8CAAmC;AAC9D,UAAU,mBAAO,CAAC,4BAAkB;AACpC,eAAe,mBAAO,CAAC,iCAAuB;;AAE9C;AACA;AACA;;AAEA;AACA,iCAAiC;AACjC;AACA,0BAA0B;AAC1B,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA8C,YAAY;AAC1D;AACA;AACA;AACA;AACA,QAAQ;AACR;;AAEA,QAAQ,4CAA4C;AACpD;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxFA,sBAAsB,mBAAO,CAAC,kDAAuC;AACrE,aAAa,mBAAO,CAAC,gCAAqB;AAC1C,eAAe,mBAAO,CAAC,mCAAwB;AAC/C,kCAAkC,mBAAO,CAAC,wDAA6C;AACvF,aAAa,mBAAO,CAAC,yCAA+B;AACpD,aAAa,mBAAO,CAAC,sCAA2B;AAChD,gBAAgB,mBAAO,CAAC,oCAAyB;AACjD,iBAAiB,mBAAO,CAAC,qCAA0B;;AAEnD;AACA;AACA;AACA;;AAEA;AACA,uCAAuC;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACrEA,sBAAsB,mBAAO,CAAC,2CAAgC;AAC9D,gBAAgB,mBAAO,CAAC,mC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Ac,mBAAO,CAAC,iCAAsB;;AAE5C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;;;;;;;;;;AChDA;;;;;;;;;;;ACAA,eAAe,mBAAO,CAAC,mCAAwB;;AAE/C;AACA;AACA;AACA;AACA;;;;;;;;;;;ACNA,YAAY,mBAAO,CAAC,+BAAoB;AACxC,iBAAiB,mBAAO,CAAC,qCAA0B;AACnD,aAAa,mBAAO,CAAC,yCAA+B;AACpD,kBAAkB,mBAAO,CAAC,qCAA0B;AACpD,iCAAiC,0EAAkD;AACnF,oBAAoB,mBAAO,CAAC,wCAA6B;AACzD,0BAA0B,mBAAO,CAAC,wCAA6B;;AAE/D;AACA;AACA;AACA;;AAEA;AACA,sCAAsC,aAAa,cAAc,UAAU;AAC3E,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,iCAAiC;AACtF;AACA;AACA;AACA,sCAAsC,sBAAsB;AAC5D;AACA;AACA;AACA,4DAA4D,iBAAiB;AAC7E;AACA,MAAM;AACN,IAAI,gBAAgB;AACpB;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;AChDD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;;;;;;;;;;ACdF,WAAW,mBAAO,CAAC,kCAAwB;;AAE3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AC3BA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;ACNA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACPA;AACA;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,aAAa,mBAAO,CAAC,sCAA4B;AACjD,uBAAuB,mEAA0C;AACjE,0BAA0B,mBAAO,CAAC,oDAAyC;AAC3E,sBAAsB,mBAAO,CAAC,gDAAqC;;AAEnE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,0BAA0B;AAC9C;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,kBAAkB,mBAAmB;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpHa;AACb,eAAe,mBAAO,CAAC,mCAAwB;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACjBA,WAAW,mBAAO,CAAC,uCAA4B;AAC/C,aAAa,mBAAO,CAAC,yCAA+B;AACpD,oBAAoB,mBAAO,CAAC,gDAAqC;AACjE,kBAAkB,mBAAO,CAAC,sCAA2B;;AAErD;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACXA,YAAY,mBAAO,CAAC,+BAAoB;AACxC,aAAa,mBAAO,CAAC,gCAAqB;;AAE1C;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;;;;;;;;;;AC7BA,YAAY,mBAAO,CAAC,+BAAoB;AACxC,aAAa,mBAAO,CAAC,gCAAqB;;AAE1C;AACA;;AAEA;AACA;AACA;AAC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A;AACA,CAAC;AACD;AACA,CAAC;;AAED;;AAEA;AACA;AACA,IAAI,+CAA+C;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;AClGY;AACb,QAAQ,mBAAO,CAAC,8BAAqB;AACrC,kBAAkB,mBAAO,CAAC,+CAAoC;AAC9D,0BAA0B,mBAAO,CAAC,gDAAqC;AACvE,sBAAsB,mBAAO,CAAC,2CAAgC;AAC9D,cAAc,mBAAO,CAAC,uCAA4B;AAClD,YAAY,mBAAO,CAAC,+BAAoB;;AAExC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,kBAAkB;AAClB,CAAC;;AAED;AACA;AACA,IAAI,+CAA+C;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA,CAAC;;;;;;;;;;;;AClIY;AACb,QAAQ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AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4FAA4F;AAC5F;AACA,MAAM;AACN;AACA,oDAAoD,gDAAgD;AACpG,MAAM;AACN,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E,iCAAiC;AAChH;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,sFAAsF,cAAc;AACpG;AACA;AACA;;AAEA,IAAI,2FAA2F;AAC/F;AACA,CAAC;;AAED;AACA;AACA,CAAC;;AAED,IAAI,oDAAoD;AACxD,2BAA2B,oBAAoB;AAC/C,2BAA2B;AAC3B,CAAC;;AAED,IAAI,0EAA0E;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,IAAI,sDAAsD;AAC1D;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;AC3PA;AACA;AACa;AACb,QAAQ,mBAAO,CAAC,8BAAqB;AACrC,kBAAkB,mBAAO,CAAC,qCAA0B;AACpD,aAAa,mBAAO,CAAC,gCAAqB;AAC1C,kBAAkB,mBAAO,CAAC,+CAAoC;AAC9D,aAAa,mBAAO,CAAC,yCAA+B;AACpD,iBAAiB,mBAAO,CAAC,qCAA0B;AACnD,oBAAoB,mBAAO,CAAC,gDAAqC;AACjE,eAAe,mBAAO,CAAC,mCAAwB;AAC/C,qBAAqB,yEAAgD;AACrE,gCAAgC,mBAAO,CAAC,qDAA0C;;AAElF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,MAAM,+CAA+C;AACrD;AACA,GAAG;AACH;;;;;;;;;;;AC1DA,QAAQ,mBAAO,CAAC,8BAAqB;AACrC,iBAAiB,mBAAO,CAAC,qCAA2B;AACpD,aAAa,mBAAO,CAAC,yCAA+B;AACpD,eAAe,mBAAO,CAAC,mCAAwB;AAC/C,aAAa,mBAAO,CAAC,gCAAqB;AAC1C,6BAA6B,mBAAO,CAAC,mDAAwC;;AAE7E;AACA;;AAEA;AACA;AACA,IAAI,+DAA+D;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;ACrBD,4BAA4B,mBAAO,CAAC,iDAAuC;;AAE3E;AACA;AACA;;;;;;;;;;;ACJA,4BAA4B,mBAAO,CAAC,iDAAuC;;AAE3E;AACA;AACA;;;;;;;;;;;ACJA,4BAA4B,mBAAO,CAAC,iDAAuC;;AAE3E;AACA;AACA;;;;;;;;;;;ACJA;AACA,mBAAO,CAAC,6CAAkC;AAC1C,mBAAO,CAAC,qCAA0B;AAClC,mBAAO,CAAC,yCAA8B;AACtC,mBAAO,CAAC,wCAA8B;AACtC,mBAAO,CAAC,0DAA+C;;;;;;;;;;;ACLvD,QAAQ,mBAAO,CAAC,8BAAqB;AACrC,aAAa,mBAAO,CAAC,yCAA+B;AACpD,eAAe,mBAAO,CAAC,mCAAwB;AAC/C,kBAAkB,mBAAO,CAAC,uCAA4B;AACtD,aAAa,mBAAO,CAAC,gCAAqB;AAC1C,6BAA6B,mBAAO,CAAC,mDAAwC;;AAE7E;;AAEA;AACA;AACA,IAAI,+DAA+D;AACnE;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;AChBD,4BAA4B,mBAAO,CAAC,iDAAuC;;AAE3E;AACA;AACA;;;;;;;;;;;ACJA,4BAA4B,mBAAO,CAAC,iDAAuC;;AAE3E;AACA;AACA;;;;;;;;;;;ACJA,4BAA4B,mBAAO,CAAC,iDAAuC;;AAE3E;AACA;AACA;;;;;;;;;;;ACJA,4BAA4B,mBAAO,CAAC,iDAAuC;;AAE3E;AACA;AACA;;;;;;;;;;;ACJA,4BAA4B,mBAAO,CAAC,iDAAuC;;AAE3E;AACA;AACA;;;;;;;;;;;ACJA,4BAA4B,mBAAO,CAAC,iDAAuC;;AAE3E;AACA;AACA;;;;;;;;;;;ACJA,4BAA4B,mBAAO,CAAC,iDAAuC;AAC3E,8BAA8B,mBAAO,CAAC,mDAAyC;;AAE/E;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;ACTA,iBAAiB,mBAAO,CAAC,qCAA2B;AACpD,4BAA4B,mBAAO,CAAC,iDAAuC;AAC3E,qBAAqB,mBAAO,CAAC,2CAAgC;;AAE7D;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;ACVA,4BAA4B,mBAAO,CAAC,iDAAuC;;AAE3E;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB,sCAAsC,kBAAkB;AACnF,0BAA0B;AAC1B;AACA;AACA;AACO;AACP;AACA,oBAAoB;AACpB;AACA;AACA;AACO;AACP;AACA,iDAAiD,OAAO;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,6DAA6D,cAAc;AAC3E;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,6CAA6C,QAAQ;AACrD;AACA;AACA;AACO;AACP,oCAAoC;AACpC;AACA;AACO;AACP;AACA;AACA;AACO;AACP,4BAA4B,+DAA+D,iBAAiB;AAC5G;AACA,oCAAoC,MAAM,+BAA+B,YAAY;AACrF,mCAAmC,MAAM,mCAAmC,YAAY;AACxF,gCAAgC;AAChC;AACA,KAAK;AACL;AACA;AACO;AACP,cAAc,6BAA6B,0BAA0B,cAAc,qBAAqB;AACxG,iBAAiB,oDAAoD,qEAAqE,cAAc;AACxJ,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,mCAAmC,SAAS;AAC5C,mCAAmC,WAAW,UAAU;AACxD,0CAA0C,cAAc;AACxD;AACA,8GAA8G,OAAO;AACrH,iFAAiF,iBAAiB;AAClG,yDAAyD,gBAAgB,QAAQ;AACjF,+CAA+C,gBAAgB,gBAAgB;AAC/E;AACA,kCAAkC;AAClC;AACA;AACA,UAAU,YAAY,aAAa,SAAS,UAAU;AACtD,oCAAoC,SAAS;AAC7C;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACO;AACP,6BAA6B,sBAAsB;AACnD;AACA;AACA;AACA;AACO;AACP,kDAAkD,QAAQ;AAC1D,yCAAyC,QAAQ;AACjD,yDAAyD,QAAQ;AACjE;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA,iBAAiB,uFAAuF,cAAc;AACtH,uBAAuB,gCAAgC,qCAAqC,2CAA2C;AACvI,4BAA4B,MAAM,iBAAiB,YAAY;AAC/D,uBAAuB;AACvB,8BAA8B;AAC9B,6BAA6B;AAC7B,4BAA4B;AAC5B;AACA;AACO;AACP;AACA,iBAAiB,6CAA6C,UAAU,sDAAsD,cAAc;AAC5I,0BAA0B,6BAA6B,oBAAoB,gDAAgD,kBAAkB;AAC7I;AACA;AACO;AACP;AACA;AACA,2GAA2G,uFAAuF,cAAc;AAChN,uBAAuB,8BAA8B,gDAAgD,wDAAwD;AAC7J,6CAA6C,sCAAsC,UAAU,mBAAmB,IAAI;AACpH;AACA;AACO;AACP,iCAAiC,uCAAuC,YAAY,KAAK,OAAO;AAChG;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,6CAA6C;AAC7C;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB,sCAAsC,kBAAkB;AACnF,0BAA0B;AAC1B;AACA;AACA;AACO;AACP;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACO;AACP;AACA,iDAAiD,OAAO;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,6DAA6D,cAAc;AAC3E;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,6CAA6C,QAAQ;AACrD;AACA;AACA;AACO;AACP,oCAAoC;AACpC;AACA;AACO;AACP;AACA;AACA;AACO;AACP,4BAA4B,+DAA+D,iBAAiB;AAC5G;AACA,oCAAoC,MAAM,+BAA+B,YAAY;AACrF,mCAAmC,MAAM,mCAAmC,YAAY;AACxF,gCAAgC;AAChC;AACA,KAAK;AACL;AACA;AACO;AACP,cAAc,6BAA6B,0BAA0B,cAAc,qBAAqB;AACxG,iBAAiB,oDAAoD,qEAAqE,cAAc;AACxJ,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,mCAAmC,SAAS;AAC5C,mCAAmC,WAAW,UAAU;AACxD,0CAA0C,cAAc;AACxD;AACA,8GAA8G,OAAO;AACrH,iFAAiF,iBAAiB;AAClG,yDAAyD,gBAAgB,QAAQ;AACjF,+CAA+C,gBAAgB,gBAAgB;AAC/E;AACA,kCAAkC;AAClC;AACA;AACA,UAAU,YAAY,aAAa,SAAS,UAAU;AACtD,oCAAoC,SAAS;AAC7C;AACA;AACA;AACO;AACP;AACA;AACA;AACA,iBAAiB,oCAAoC;AACrD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACO;AACP,6BAA6B,sBAAsB;AACnD;AACA;AACA;AACA;AACA;AACO;AACP,kDAAkD,QAAQ;AAC1D,yCAAyC,QAAQ;AACjD,yDAAyD,QAAQ;AACjE;AACA;AACA;AACA;AACO;AACP,6EAA6E,OAAO;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA,iBAAiB,uFAAuF,cAAc;AACtH,uBAAuB,gCAAgC,qCAAqC,2CAA2C;AACvI,4BAA4B,MAAM,iBAAiB,YAAY;AAC/D,uBAAuB;AACvB,8BAA8B;AAC9B,6BAA6B;AAC7B,4BAA4B;AAC5B;AACA;AACO;AACP;AACA,iBAAiB,6CAA6C,UAAU,sDAAsD,cAAc;AAC5I,0BAA0B,6BAA6B,oBAAoB,gDAAgD,kBAAkB;AAC7I;AACA;AACO;AACP;AACA;AACA,2GAA2G,uFAAuF,cAAc;AAChN,uBAAuB,8BAA8B,gDAAgD,wDAAwD;AAC7J,6CAA6C,sCAAsC,UAAU,mBAAmB,IAAI;AACpH;AACA;AACO;AACP,iCAAiC,uCAAuC,YAAY,KAAK,OAAO;AAChG;AACA;AACA;AACA;AACA,0CAA0C,4BAA4B;AACtE,CAAC;AACD;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,6CAA6C;AAC7C;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvPA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,kBAAkB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,UAAU;AAC3B,+BAA+B,gBAAgB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yFAAyF;AACzF,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,wBAAwB;AACnC;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,+BAA+B;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC,aAAa,mBAAmB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,qBAAqB;AAChD,2BAA2B,gBAAgB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,YAAY;AACzB,2BAA2B,YAAY;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,+BAA+B;AACxD;AACA;AACA,sCAAsC,+BAA+B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,kCAAkC;AAC7C;AACA;AACA,WAAW,uBAAuB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,WAAW;AACtB,yBAAyB,aAAa;AACtC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,mCAAmC;AAChD,aAAa,sCAAsC;AACnD,aAAa,wCAAwC;AACrD,aAAa,qCAAqC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,wBAAwB;AACrC,aAAa,yBAAyB;AACtC,aAAa,2BAA2B;AACxC,aAAa,0BAA0B;AACvC;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE,WAAW;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,YAAY;AAChC,qCAAqC,YAAY;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iCAAiC;AACrD,oBAAoB,qCAAqC;AACzD,oBAAoB,iCAAiC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,aAAa,QAAQ,GAAG;AACrC,iBAAiB,OAAO;AACxB,aAAa,aAAa,MAAM,EAAE;AAClC;AACA,OAAO,UAAU,mCAAmC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,UAAU;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,gBAAgB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,YAAY;AAC1C,oCAAoC,YAAY;AAChD;AACA;AACA,4CAA4C,YAAY;AACxD,kDAAkD,YAAY;AAC9D;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,qDAAqD;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,YAAY;AAC/C;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA,mCAAmC,YAAY;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,+BAA+B;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEyQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/rCzQ;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAM0D,aAAa,GAAG,OAAOC,SAAP,KAAqB,WAArB,IAAoC,CAAC,CAACA,SAA5D;AACA,MAAMC,UAAU,GAAG,OAAnB;;AACA,SAASC,kBAAT,CAA4BC,GAA5B,EAAiC;AAC7B,SAAO,IAAIL,2DAAJ,CAAkB;AAAK;AAAvB,IAAmDC,aAAa,IAAK,8BAA6BI,GAAI,eAAtG,CAAP;AACH;;AACD,SAASC,iBAAT,GAA6B;AACzB,SAAO,IAAIN,2DAAJ,CAAkB;AAAK;AAAvB,IAAk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AG;AACJ,SAAKutD,IAAL,CAAUvtD,KAAV;AACH;;AAnBuB;AAsB5B;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAM0tD,yBAAyB,GAAG,CAAlC;AACA,MAAMC,WAAW,GAAG,QAApB;AACA,MAAMC,iBAAiB,GAAG,IAAIz8C,MAAJ,CAAWw8C,WAAX,EAAwB,GAAxB,CAA1B;AACA,MAAME,WAAW,GAAG,QAApB;AACA,MAAMC,iBAAiB,GAAG,IAAI38C,MAAJ,CAAW08C,WAAX,EAAwB,GAAxB,CAA1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASE,uBAAT,CAAiC1kD,MAAjC,EAAyC2kD,WAAzC,EAAsD/E,GAAtD,EAA2DgF,cAA3D,EAA2EC,cAA3E,EAA2FC,cAAc,GAAG,EAA5G,EAAgHC,WAAW,GAAG,EAA9H,EAAkIxiE,OAAlI,EAA2IyiE,eAA3I,EAA4J1R,MAAM,GAAG,EAArK,EAAyK;AACrK,SAAO,IAAI2R,+BAAJ,GAAsCC,cAAtC,CAAqDllD,MAArD,EAA6D2kD,WAA7D,EAA0E/E,GAA1E,EAA+EgF,cAA/E,EAA+FC,cAA/F,EAA+GC,cAA/G,EAA+HC,WAA/H,EAA4IxiE,OAA5I,EAAqJyiE,eAArJ,EAAsK1R,MAAtK,CAAP;AACH;;AACD,MAAM2R,+BAAN,CAAsC;AAClCC,EAAAA,cAAc,CAACllD,MAAD,EAAS2kD,WAAT,EAAsB/E,GAAtB,EAA2BgF,c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AI,EAAE07C,gDAAKA;AADgB,KAAD,CAJ2D;AAMrF6yC,IAAAA,gCAAgC,EAAE,CAAC;AACnCvuF,MAAAA,IAAI,EAAE07C,gDAAKA;AADwB,KAAD;AANmD,GAHrG;AAAA;AAaA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;;;AACA,MAAMszC,cAAN,CAAqB;AACjBtzF,EAAAA,WAAW,CAACuzF,SAAD,EAAYC,OAAZ,EAAqB94F,KAArB,EAA4BmR,KAA5B,EAAmC;AAC1C,SAAK0nF,SAAL,GAAiBA,SAAjB;AACA,SAAKC,OAAL,GAAeA,OAAf;AACA,SAAK94F,KAAL,GAAaA,KAAb;AACA,SAAKmR,KAAL,GAAaA,KAAb;AACH;;AACQ,MAAL8yC,KAAK,GAAG;AACR,WAAO,KAAKjkD,KAAL,KAAe,CAAtB;AACH;;AACO,MAAJg/B,IAAI,GAAG;AACP,WAAO,KAAKh/B,KAAL,KAAe,KAAKmR,KAAL,GAAa,CAAnC;AACH;;AACO,MAAJ4nF,IAAI,GAAG;AACP,WAAO,KAAK/4F,KAAL,GAAa,CAAb,KAAmB,CAA1B;AACH;;AACM,MAAHg5F,GAAG,GAAG;AACN,WAAO,CAAC,KAAKD,IAAb;AACH;;AAlBgB;AAoBrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMxuC,OAAN,C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A;AAAA,qDApmIoGr7C,+DAomIpG,CAA4Fq7C,aAA5F,EAAuH,CAAC;AAC5G12F,IAAAA,IAAI,EAAEu7C,+CADsG;AAE5GrpD,IAAAA,IAAI,EAAE,CAAC;AAAEyC,MAAAA,IAAI,EAAE;AAAR,KAAD;AAFsG,GAAD,CAAvH;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;;;AACA,MAAMgiG,0BAA0B,GAAG,IAAI5jB,yDAAJ,CAAmB,4BAAnB,CAAnC,EACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAM6jB,QAAN,CAAe;AACXl7F,EAAAA,WAAW,CAAC0+E,MAAD,EAASyc,eAAT,EAA0B;AACjC,SAAKzc,MAAL,GAAcA,MAAd;AACA,SAAKyc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AsBjD;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASssG,OAAT,CAAiBpuG,OAAjB,EAA0By1D,IAA1B,EAAgC;AAC5B,SAAO;AACHA,IAAAA,IADG;AAEHo0C,IAAAA,OAAO,EAAE7pG,OAAO,CAAC6pG,OAFd;AAGH93E,IAAAA,OAAO,EAAE/xB,OAAO,CAAC+xB,OAHd;AAIH3rB,IAAAA,OAAO,EAAEpG,OAAO,CAACoG,OAJd;AAKHgzD,IAAAA,MAAM,EAAEp5D,OAAO,CAACo5D,MALb;AAMH2zC,IAAAA,cAAc,EAAE/sG,OAAO,CAAC+sG,cANrB;AAOHE,IAAAA,YAAY,EAAEjtG,OAAO,CAACitG,YAPnB;AAQHD,IAAAA,eAAe,EAAEhtG,OAAO,CAACgtG;AARtB,GAAP;AAUH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMqB,UAAN,CAAiB;AACb7lG,EAAAA,WAAW,CAAC8lG,OAAD,EAAU;AACjB,SAAKA,OAAL,GAAeA,OAAf;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACIC,EAAAA,OAAO,CAACpnD,KAAD,EAAQm8B,GAAR,EAAatjF,OAAO,GAAG,EAAvB,EAA2B;AAC9B,QAAI2T,GAAJ,CAD8B,CAE9B;;AACA,QAAIwzC,KAAK,YAAYylD,WAArB,EAAkC;AAC9B;AACA;AACAj5F,MAAAA,GAAG,GAAGwzC,KAAN;AACH,KAJD,MAKK;AACD;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjuEA;AACA;AACA;AACA;AACA;;AAE2E;AACpC;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,qBAAqB;AACvC;AACA;AACA,kBAAkB,WAAW;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,yCAAyC;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,eAAe;AAC1C,0BAA0B,SAAS,EAAE,8BAA8B;AACnE;AACA,0BAA0B,aAAa,iBAAiB,4BAA4B,GAAG,SAAS;AAChG;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,kBAAkB,IAAI,MAAM;AAC7E,sGAAsG,MAAM,EAAE,QAAQ;AACtH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,0BAA0B;AACnG;AACA,0DAA0D,wBAAwB;AAClF;AACA;AACA;AACA,kDAAkD,aAAa;AAC/D,6EAA6E,0BAA0B,OAAO,gBAAgB;AAC9H;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,IAAI;AAC5C,mDAAmD,UAAU,EAAE,YAAY,EAAE,QAAQ;AACrF;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF,gBAAgB;AACnG;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,QAAQ,UAAU,MAAM;AAC7E;AACA;AACA;AACA;AACA;AACA,8CAA8C,6BAA6B,UAAU,sBAAsB;AAC3G;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,SAAS;AAC1E,0GAA0G,SAAS;AACnH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,+BAA+B;AAC5E,4CAA4C,8BAA8B;AAC1E;AACA,mDAAmD,yCAAyC;AAC5F,iDAAiD,uCAAuC;;AAExF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kCAAkC;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,cAAc;AAC3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0DAA0D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oDAAoD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,iBAAiB;AAC3E;AACA;AACA,QAAQ,4CAA4C;AACpD;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,+BAA+B,IAAI,oCAAoC;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,+BAA+B,IAAI,qCAAqC;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kDAAkD;;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,8BAA8B;AAC3E,4CAA4C,8BAA8B;AAC1E,6CAA6C,+BAA+B;AAC5E,4CAA4C,8BAA8B;AAC1E,gDAAgD,8BAA8B;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,2CAA2C;;AAE1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,UAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,UAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,iBAAiB;AACjD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,OAAO,2CAA2C,WAAW;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,OAAO,KAAK,OAAO,IAAI,MAAM;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,iBAAiB;AACjD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,qBAAqB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,+BAA+B;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,mBAAmB;AACjC;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,oCAAoC;AAC9E,kFAAkF;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kDAAkD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,gBAAgB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA,cAAc,gBAAgB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,gBAAgB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mCAAmC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,gBAAgB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,SAAS;AAC1E;AACA;AACA;AACA,gBAAgB,8FAA8F;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,qBAAqB;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA,6BAA6B,SAAS;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,mCAAmC,YAAY,gCAAgC;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sFAAsF,0BAA0B;AAChH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,QAAQ;AACR;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,cAAc;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,WAAW;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,WAAW;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,WAAW;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,0EAA0E;;AAElJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,iCAAiC,WAAW;AAC5C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kCAAkC;AAC1C,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,MAAM,mCAAmC;AACzC,MAAM;AACN;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF,sBAAsB,8HAA8H;AACrO;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,sBAAsB,8DAA8D;AAC/J;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,sBAAsB,4HAA4H;AAC7N;AACA;AACA;AACA;AACA;AACA;AACA,sFAAsF,6DAA6D;;AAEnJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sCAAsC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8CAA8C;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,aAAa;AACjE,6BAA6B,cAAc,GAAG;AAC9C,uBAAuB;AACvB;AACA,8BAA8B,cAAc;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E;AAC/E;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,kBAAkB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,cAAc;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,UAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA,sEAAsE,GAAG;AACzE;AACA;AACA;AACA;AACA,gFAAgF,GAAG;AACnF;AACA;AACA;AACA;AACA,yFAAyF,GAAG,6BAA6B,GAAG;AAC5H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA,iEAAiE;AACjE;AACA;AACA,uCAAuC,KAAK,sBAAsB,KAAK;AACvE,mBAAmB,KAAK,gBAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,mDAAmD;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gHAAgH,OAAO;AACvH;;AAEA,2DAA2D,OAAO;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,kBAAkB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,gBAAgB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,EAAE,kBAAkB;AACxC;AACA,cAAc,kBAAkB,EAAE,iCAAiC,GAAG,QAAQ,KAAK,+BAA+B;AAClH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,IAAI,EAAE;AACN,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,2CAA2C;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,KAAK,UAAU,YAAY;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4BAA4B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,OAAO;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA,gBAAgB;AAChB;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uIAAuI;AACvI;AACA;AACA;AACA;AACA;AACA,6DAA6D,KAAK;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yFAAyF,eAAe;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA,+EAA+E;AAC/E,KAAK;AACL;AACA,8CAA8C;AAC9C,KAAK;AACL,4BAA4B;AAC5B,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0CAA0C;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,kCAAkC;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,mCAAmC;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,iCAAiC;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,yCAAyC;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;AACA,8EAA8E,eAAe;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,SAAS;AAC7E;AACA;AACA;AACA;AACA,6EAA6E,cAAc;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,KAAK;AAChE,2BAA2B,cAAc;AACzC,qBAAqB,KAAK;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,KAAK;AACjE,2BAA2B,cAAc;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,uBAAuB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,6BAA6B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6BAA6B;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,uBAAuB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6BAA6B;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,SAAS,aAAa,uEAAuE;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,gDAAgD;AAClE,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,KAAK;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gHAAgH,YAAY;AAC5H,WAAW,0BAA0B;AACrC,WAAW,0BAA0B;AACrC;AACA;AACA;AACA,sCAAsC,SAAS;AAC/C,yHAAyH,MAAM,KAAK,SAAS,qBAAqB,UAAU;AAC5K;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,mBAAmB;AACvC;AACA,uBAAuB,eAAe,EAAE,UAAU;AAClD,uBAAuB,4DAA4D,EAAE,UAAU;AAC/F;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kDAAkD;;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uFAAuF;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,yBAAyB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,qBAAqB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,yBAAyB;AACjD;AACA;AACA;AACA;AACA;AACA,oCAAoC,mBAAmB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E,gBAAgB;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,uBAAuB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kCAAkC;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,uBAAuB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,iBAAiB;AACvD;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,yBAAyB;;AAE/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,gBAAgB;AAC/D,4CAA4C,eAAe,IAAI,mBAAmB;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,MAAM,eAAe;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,iCAAiC;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,qCAAqC;AACnF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,QAAQ;AACR,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,UAAU;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,UAAU;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,sBAAsB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,iBAAiB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,aAAa;AACzC,uBAAuB,qDAAqD;AAC5E;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,wBAAwB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,4CAA4C,6BAA6B;AACzE;AACA;AACA;AACA,0CAA0C,wBAAwB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,uBAAuB,GAAG,uBAAuB,GAAG,uBAAuB,GAAG,uBAAuB,GAAG,uBAAuB,GAAG,uBAAuB,GAAG,uBAAuB,GAAG,uBAAuB;AAC3N;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,+BAA+B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,sBAAsB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA;AACA,kCAAkC,MAAM,GAAG,yBAAyB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,iBAAiB,wBAAwB,WAAW;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,SAAS,wCAAwC,QAAQ;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,0BAA0B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,0BAA0B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,gBAAgB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,YAAY;AAChF,0EAA0E,qBAAqB;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA,oGAAoG,iBAAiB;AACrH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,yBAAyB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF,KAAK;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,yBAAyB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,qBAAqB;AAC1E,8CAA8C,uBAAuB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,qBAAqB;AAC1E;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,qBAAqB;AAC1E,8CAA8C,uBAAuB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,4BAA4B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,oBAAoB,mCAAmC;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,kBAAkB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sFAAsF;AACtF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E,iBAAiB;AAC3F;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,kBAAkB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,qCAAqC;AACrE,4BAA4B,sBAAsB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uFAAuF;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wFAAwF,kBAAkB;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mHAAmH,iBAAiB,KAAK,gBAAgB;AACzJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,UAAU;AAC9C;AACA;AACA;AACA,oCAAoC,MAAM;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,cAAc;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,cAAc;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,2CAA2C;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,oDAAoD;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,oCAAoC;AACjE;AACA;AACA;AACA;AACA,gHAAgH;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,sCAAsC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE,oCAAoC,oCAAoC,6BAA6B;AAC5K;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,qBAAqB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iBAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,mBAAmB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,mBAAmB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,IAAI;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,IAAI,GAAG,IAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,IAAI,GAAG,IAAI,GAAG,IAAI;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,oDAAoD;AAC7G,4FAA4F,UAAU;AACtG;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,oDAAoD;AAC7G,sFAAsF,UAAU;AAChG;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,2CAA2C,mDAAmD;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,eAAe;AAC3E,IAAI,gBAAgB,iBAAiB,gBAAgB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,MAAM,GAAG,6BAA6B;AACxE,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,wEAAwE;AAC9E,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,6BAA6B;AACpF,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,0BAA0B,kCAAkC,MAAM,GAAG,6BAA6B;AACpH,KAAK;AACL;AACA;AACA,qCAAqC,gBAAgB,0BAA0B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6FAA6F,SAAS;AACtG;AACA;AACA;AACA;AACA,gDAAgD,gBAAgB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,kBAAkB;AAC/E;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,QAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,OAAO;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,qDAAqD;AAC5D,OAAO;AACP;AACA;AACA;AACA;AACA,2EAA2E,WAAW,EAAE,UAAU;AAClG;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,yBAAyB;AAChF;AACA;AACA;AACA;AACA;AACA,gCAAgC,0BAA0B;AAC1D;AACA;AACA;AACA,0CAA0C,0BAA0B;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iBAAiB;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,uCAAuC;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,yBAAyB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,uCAAuC;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,UAAU;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,gCAAgC;AACpD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,cAAc;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,oBAAoB,KAAK;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,QAAQ;AACtC,iCAAiC,QAAQ;AACzC;AACA,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,yBAAyB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iBAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,cAAc,sBAAsB,mCAAmC;AACtH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4BAA4B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,IAAI;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,IAAI;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,IAAI,GAAG,IAAI;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,IAAI,GAAG,IAAI,GAAG,IAAI;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,eAAe;AACzC;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,cAAc,KAAK;AACtC,sCAAsC;AACtC;AACA,mBAAmB,cAAc,KAAK;AACtC,sCAAsC;AACtC;AACA,mBAAmB,cAAc,KAAK;AACtC,sCAAsC;AACtC;AACA,mBAAmB,cAAc,KAAK;AACtC,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,cAAc,KAAK;AACtC,sCAAsC;AACtC;AACA,mBAAmB,cAAc,KAAK;AACtC,sCAAsC;AACtC;AACA,mBAAmB,cAAc,KAAK;AACtC,sCAAsC;AACtC;AACA,mBAAmB,cAAc,KAAK;AACtC,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,cAAc,yBAAyB,cAAc;AAC5E;AACA;AACA;AACA;AACA,uBAAuB,cAAc,yBAAyB,cAAc;AAC5E;AACA;AACA;AACA,uBAAuB,cAAc,yBAAyB,cAAc;AAC5E;AACA;AACA;AACA,uBAAuB,cAAc,yBAAyB,cAAc;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,QAAQ;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,QAAQ;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,QAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,QAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB,kBAAkB;AAClB,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,OAAO;AAC3D;AACA,yBAAyB,UAAU;AACnC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,QAAQ;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,mDAAmD;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,kBAAkB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,WAAW;AAC7C;AACA;AACA,kCAAkC,WAAW;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,IAAI;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,IAAI;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,IAAI,GAAG,IAAI;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,IAAI,GAAG,IAAI,GAAG,IAAI;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,IAAI;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,IAAI,GAAG,IAAI;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,IAAI,GAAG,IAAI,GAAG,IAAI;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,IAAI;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,MAAM,QAAQ,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,MAAM,QAAQ,MAAM,QAAQ,IAAI;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,MAAM,QAAQ,MAAM,QAAQ,MAAM,QAAQ,IAAI;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB,gBAAgB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,MAAM,QAAQ,MAAM,QAAQ,MAAM,QAAQ,MAAM,QAAQ,IAAI;AAClF;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB,gBAAgB,gBAAgB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,MAAM,QAAQ,MAAM,QAAQ,MAAM,QAAQ,MAAM,QAAQ;AAC9E,uBAAuB,IAAI;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,gBAAgB,gBAAgB,gBAAgB,gBAAgB;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,MAAM,QAAQ,MAAM,QAAQ,MAAM,QAAQ,MAAM,QAAQ,MAAM,QAAQ;AAC5F,uBAAuB,IAAI;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,gBAAgB,gBAAgB,gBAAgB,gBAAgB;AACtF,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,MAAM,QAAQ,MAAM,QAAQ,MAAM,QAAQ,MAAM,QAAQ,MAAM,QAAQ;AAC5F,uBAAuB,MAAM,QAAQ,IAAI;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,gBAAgB,gBAAgB,gBAAgB,gBAAgB;AACtF,SAAS,gBAAgB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,MAAM,QAAQ,MAAM,QAAQ,MAAM,QAAQ,MAAM,QAAQ,MAAM,QAAQ;AACxF,mBAAmB,MAAM,QAAQ,MAAM,QAAQ,MAAM,QAAQ,IAAI;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB,gBAAgB,gBAAgB,gBAAgB;AACvF,UAAU,gBAAgB,gBAAgB,gBAAgB;AAC1D;AACA;AACA;AACA;AACA,gCAAgC,oBAAoB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,IAAI;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,IAAI,GAAG,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,IAAI,GAAG,IAAI,GAAG,IAAI;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,cAAc;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uvBAAuvB,EAAE,GAAG,EAAE,QAAQ,GAAG,MAAM,EAAE,oBAAoB,2HAA2H;;AAEh6B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,OAAO;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0CAA0C;AAC3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4CAA4C;AAC7C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mCAAmC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,QAAQ;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,0BAA0B;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,2BAA2B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0IAA0I,OAAO;AACjJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oFAAoF,aAAa;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E,QAAQ;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4FAA4F,OAAO;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,0BAA0B;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,sBAAsB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,0BAA0B;AAC9C;AACA;AACA;AACA;AACA;AACA,4BAA4B,MAAM,eAAe,2CAA2C,GAAG,qBAAqB,EAAE;AACtH;AACA,mDAAmD,MAAM,GAAG;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,IAAI;AACrC;AACA;AACA;AACA,mDAAmD,eAAe;AAClE,iCAAiC,IAAI,8BAA8B,SAAS,KAAK,MAAM;AACvF;AACA,wCAAwC,IAAI;AAC5C;AACA,wCAAwC,IAAI;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,sBAAsB;AACtD;AACA;AACA;AACA;AACA,qFAAqF;AACrF;AACA;AACA;AACA,mCAAmC,iBAAiB,IAAI,EAAE,uBAAuB;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,OAAO,kCAAkC,QAAQ;AAClF;AACA,iCAAiC,IAAI,8BAA8B,uBAAuB,MAAM,uBAAuB;AACvH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,QAAQ,8BAA8B,KAAK;AAC3E;AACA;AACA;AACA;AACA,gCAAgC,QAAQ,8BAA8B,KAAK;AAC3E;AACA;AACA;AACA,gCAAgC,QAAQ,+BAA+B,MAAM;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,wBAAwB;AAC5C;AACA;AACA;AACA,uCAAuC,eAAe;AACtD;AACA;AACA;AACA,0CAA0C,gBAAgB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,uBAAuB,EAAE,YAAY;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E,QAAQ;AACtF;AACA,wJAAwJ,MAAM,GAAG,0BAA0B;AAC3L;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,8HAA8H,GAAG;AACjI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kGAAkG,QAAQ;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C,qCAAqC;AACrC,oCAAoC;AACpC,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA,oBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,OAAO,IAAI,WAAW,EAAE,OAAO;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA,uHAAuH,QAAQ;AAC/H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,iBAAiB,EAAE,OAAO;AACpE,iDAAiD,OAAO,aAAa,iBAAiB,EAAE,OAAO;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,mBAAmB;AACvC;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA,sCAAsC,SAAS;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,sBAAsB,mBAAmB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,8CAA8C,KAAK;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,oBAAoB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,eAAe,aAAa,SAAS;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yFAAyF,eAAe;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,qCAAqC,aAAa;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,6EAA6E,QAAQ;AACrF;AACA;AACA;AACA;AACA,4BAA4B,yBAAyB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,MAAM,EAAE,kBAAkB,EAAE,IAAI;AACrF,KAAK;AACL;AACA,uEAAuE;AACvE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,OAAO,YAAY,IAAI;AAC5F;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,MAAM,GAAG,MAAM;AACvB;AACA;AACA,SAAS,MAAM,GAAG,MAAM,SAAS,MAAM,GAAG,MAAM;AAChD;AACA;AACA;AACA,SAAS,MAAM,EAAE,MAAM,QAAQ,MAAM,EAAE,MAAM;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,iBAAiB,KAAK,eAAe;AACvD;AACA;AACA;AACA;AACA;AACA,QAAQ,MAAM,GAAG,MAAM;AACvB;AACA;AACA,SAAS,MAAM,GAAG,MAAM,SAAS,MAAM,GAAG,MAAM;AAChD;AACA;AACA;AACA,SAAS,MAAM,EAAE,MAAM,QAAQ,MAAM,EAAE,MAAM;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,iBAAiB,wBAAwB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,2BAA2B;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,qBAAqB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,kBAAkB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,6CAA6C;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,eAAe;AACtD;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qDAAqD;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,GAAG;AAC7D;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,sCAAsC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,uCAAuC;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uCAAuC;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,+CAA+C;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,kCAAkC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iBAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,oCAAoC;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,uBAAuB;AAC/E;AACA;AACA,gFAAgF;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE;AACrE;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,IAAI,IAAI,iBAAiB,KAAK,qBAAqB;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,wBAAwB;AAC5E;AACA;AACA,cAAc,wCAAwC;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,QAAQ;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,yBAAyB;AACzE,uEAAuE,KAAK,sBAAsB,UAAU;AAC5G;AACA;AACA;AACA;AACA;AACA,wCAAwC,+BAA+B;AACvE;AACA;AACA;AACA;AACA,8BAA8B,8BAA8B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,+BAA+B;AACvE;AACA;AACA;AACA;AACA,8BAA8B,8BAA8B;AAC5D,8BAA8B,8BAA8B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,+BAA+B;AACvE;AACA;AACA;AACA;AACA,8BAA8B,8BAA8B;AAC5D,8BAA8B,8BAA8B;AAC5D,8BAA8B,8BAA8B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,+BAA+B;AACvE;AACA;AACA;AACA;AACA,8BAA8B,8BAA8B;AAC5D,8BAA8B,8BAA8B;AAC5D,8BAA8B,8BAA8B;AAC5D,8BAA8B,8BAA8B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,+BAA+B;AACvE;AACA;AACA;AACA;AACA,gDAAgD,+BAA+B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,yCAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,oDAAoD;AAC3F,sCAAsC,8CAAY;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB,GAAG,sBAAsB,OAAO;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,IAAI;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,mBAAmB;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF,MAAM;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,0BAA0B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,yBAAyB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,yBAAyB;AACjD;AACA;AACA;AACA;AACA,wBAAwB,yBAAyB;AACjD;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,yBAAyB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,sBAAsB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qHAAqH,gBAAgB;AACrI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0BAA0B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0BAA0B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,kCAAkC;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,2BAA2B;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,QAAQ;AACzD,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,8BAA8B;AACtE;AACA,qDAAqD,8DAA8D;AACnH,gFAAgF,gBAAgB;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,qDAAqD,8DAA8D;AACnH,gFAAgF,gBAAgB;AAChG;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,8DAA8D;AACnH;AACA,sEAAsE,gBAAgB;AACtF;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,gBAAgB,4BAA4B,qBAAqB;AAClH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,wBAAwB,4BAA4B,8BAA8B;AAC/H;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,yBAAyB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,MAAM,EAAE,yBAAyB,OAAO,+BAA+B;AACnH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,yBAAyB,4CAA4C,YAAY,MAAM,WAAW;AACtI,8CAA8C,yBAAyB,kCAAkC,YAAY,MAAM,WAAW;AACtI,oFAAoF,yBAAyB,+BAA+B,YAAY,MAAM,WAAW;AACzK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,yBAAyB;AAC9D;AACA;AACA;AACA;AACA;AACA,2BAA2B,yBAAyB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,UAAU,4BAA4B,qBAAqB;AAChH;AACA;AACA,gDAAgD,UAAU,4BAA4B,qBAAqB;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yCAAyC,mBAAmB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,yDAAyD;AAC9G;AACA,iDAAiD,UAAU;AAC3D;AACA,sDAAsD,qBAAqB;AAC3E;AACA;AACA,oDAAoD,mCAAmC;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,UAAU;AAC/E,2DAA2D,wCAAwC,wYAAwY;AAC3e;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE;AACvE,qDAAqD,mDAAmD;AACxG;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kCAAkC,KAAK;AACvC,yCAAyC,mDAAmD;AAC5F;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,mDAAmD;AACxG,gFAAgF,UAAU;AAC1F;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,8DAA8D;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qFAAqF,MAAM;AAC3F,gCAAgC,wBAAwB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,6DAA6D;AAClH,gFAAgF,cAAc;AAC9F;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,qDAAqD,6DAA6D;AAClH;AACA,kEAAkE,cAAc;AAChF;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,sBAAsB,kDAAkD;AAC5H;AACA;AACA;AACA;AACA,2DAA2D,YAAY;AACvE;AACA;AACA;AACA;AACA,qEAAqE,qBAAqB;AAC1F;AACA;AACA;AACA;AACA,uEAAuE,qBAAqB;AAC5F;AACA;AACA;AACA;AACA,8EAA8E,kBAAkB;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,6BAA6B;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,0BAA0B;AACtC;AACA;AACA;AACA,oDAAoD,UAAU;AAC9D;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E,iBAAiB;;AAEhG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,KAAK;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,uBAAuB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,0BAA0B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,kCAAkC;AACjF,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE;AACzE,iEAAiE,uFAAuF;AACxJ;AACA;AACA;AACA,qBAAqB,oBAAoB;AACzC,SAAS;AACT,kBAAkB;AAClB;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB,GAAG;AACxB,KAAK;AACL,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,6DAA6D;AACjE;AACA;AACA;AACA,aAAa,gBAAgB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,cAAc,cAAc,EAAE,cAAc,EAAE,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C,mDAAmD,+DAA+D;AAClH;AACA;AACA;AACA,qBAAqB,wBAAwB;AAC7C,SAAS;AACT,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,YAAY;AACxB,YAAY,yBAAyB;AACrC,YAAY,YAAY;AACxB;AACA;AACA,kBAAkB,uCAAuC;AACzD,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,yBAAyB;AACrC,YAAY,YAAY;AACxB;AACA;AACA,kBAAkB,iDAAiD;AACnE,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,eAAe;AAC3B,YAAY,yBAAyB;AACrC,YAAY,YAAY;AACxB;AACA;AACA;AACA;AACA;AACA,kBAAkB,+CAA+C;AACjE,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,mBAAmB;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,sBAAsB;AAClC,YAAY,yBAAyB;AACrC,YAAY,YAAY;AACxB;AACA;AACA,kBAAkB,+CAA+C;AACjE,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6BAA6B;AACzC,YAAY,yBAAyB;AACrC,YAAY,YAAY;AACxB;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gEAAgE;;AAEjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,uBAAuB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,0BAA0B;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,gBAAgB,2BAA2B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C,oDAAoD,6DAA6D;AACjH;AACA;AACA;AACA,qBAAqB,oBAAoB;AACzC,SAAS;AACT,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,0BAA0B;AACxE,qCAAqC,WAAW;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,mBAAmB;AAC9B,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,UAAU;AAChC,oDAAoD,QAAQ;AAC5D;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,+BAA+B;AACnE,UAAU;AACV,QAAQ;AACR;AACA;AACA;AACA;AACA,wCAAwC,cAAc;AACtD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,oHAAoH;AACtI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,yBAAyB;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,yBAAyB;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,0BAA0B;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,YAAY;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,IAAI;AACvB;AACA;AACA;AACA,uDAAuD;AACvD,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,sBAAsB,WAAW;AAC9C;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,uBAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,+BAA+B,sDAAsD;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,uDAAuD,+CAA+C;AACtG;AACA;AACA;AACA,SAAS,iBAAiB,UAAU,cAAc,IAAI;AACtD,CAAC;AACD;AACA,yBAAyB,mBAAmB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE;AACrE,+DAA+D,uFAAuF;AACtJ;AACA;AACA;AACA,qBAAqB,wBAAwB;AAC7C,SAAS,iBAAiB,YAAY;AACtC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,sBAAsB;AAClC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,+CAA+C,8BAA8B;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,KAAK;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,+CAA+C;AAC7D,cAAc,wEAAwE;AACtF;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,4CAA4C;AAC7F,6BAA6B,mCAAmC;AAChE;AACA;AACA;AACA;AACA;AACA,qDAAqD,kFAAkF;AACvI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,2CAA2C;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,eAAe;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,uDAAuD,uEAAuE;AAC9H;AACA;AACA;AACA,qBAAqB,wBAAwB;AAC7C,SAAS,iBAAiB,UAAU,gBAAgB,IAAI;AACxD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT,sCAAsC,4CAAU;AAChD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,6BAA6B,4CAAU;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,YAAY,2CAAO,kCAAkC,qDAAK;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D,0DAA0D,yEAAyE;AACnI;AACA;AACA;AACA,qBAAqB,oBAAoB;AACzC,SAAS,iBAAiB,UAAU,cAAc,IAAI,gBAAgB,IAAI,oBAAoB,IAAI,6BAA6B,IAAI;AACnI,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,QAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,IAAI;AAC9C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E;AAC5E;AACA;AACA;AACA;AACA;AACA,qEAAqE;AACrE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,uCAAuC,MAAM;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,cAAc;AAC9D,uDAAuD,QAAQ;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,uBAAuB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,YAAY;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,8BAA8B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,iBAAiB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,4BAA4B;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,iBAAiB;AAC7D;AACA;AACA;AACA;AACA;AACA,2CAA2C,iBAAiB;AAC5D;AACA;AACA;AACA;AACA;AACA,uCAAuC,iBAAiB;AACxD;AACA;AACA;AACA;AACA;AACA,0CAA0C,iBAAiB;AAC3D;AACA;AACA;AACA;AACA;AACA,iDAAiD,iBAAiB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,sBAAsB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,qBAAqB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,iBAAiB;AAChF;AACA;AACA,+CAA+C,iBAAiB;AAChE;AACA;AACA;AACA,2CAA2C,iBAAiB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,4BAA4B;AAC1D;AACA,oCAAoC,4BAA4B;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,iBAAiB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6BAA6B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,gBAAgB;AACvE;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,6BAA6B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,iBAAiB;AACtD;AACA;AACA;AACA;AACA;AACA,6CAA6C,iBAAiB;AAC9D;AACA;AACA;AACA;AACA;AACA,yCAAyC,iBAAiB;AAC1D;AACA;AACA;AACA;AACA;AACA,2CAA2C,iBAAiB;AAC5D;AACA;AACA;AACA;AACA;AACA,0CAA0C,iBAAiB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,eAAe;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,iBAAiB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,iBAAiB;AAClE;AACA;AACA;AACA;AACA,6CAA6C,iBAAiB;AAC9D;AACA;AACA,+CAA+C,gBAAgB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,6BAA6B;AACvD,kBAAkB,uBAAuB;AACzC,QAAQ,uBAAuB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,sBAAsB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,SAAS,aAAa,kCAAkC;AACnH;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,oFAAoF;AACjI;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,6BAA6B;AACvD,kBAAkB,uBAAuB;AACzC,QAAQ,uBAAuB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,sBAAsB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,GAAG;AAC1D;AACA;AACA;AACA;AACA;AACA,6CAA6C,oFAAoF;;AAEjI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE;AACjE,0DAA0D,yBAAyB;AACnF,0DAA0D;AAC1D;AACA;AACA;AACA,SAAS,iBAAiB,UAAU,sBAAsB,IAAI;AAC9D,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,uEAAuE;AAChH,yEAAyE,eAAe;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,uEAAuE;AAChH,yEAAyE,eAAe;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,uEAAuE,eAAe;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,wEAAwE;AACjH,0EAA0E,eAAe;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,sEAAsE;AAC/G,wEAAwE,eAAe;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,sEAAsE;AAC/G,wEAAwE,eAAe;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,kEAAkE;AAC3G,oEAAoE,eAAe;AACnF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E;AAC3E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAE2nQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACto4B3nQ;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMsL,wBAAN,CAA+B;AAC3BnsG,EAAAA,WAAW,CAAC6wF,SAAD,EAAYub,WAAZ,EAAyB;AAChC,SAAKvb,SAAL,GAAiBA,SAAjB;AACA,SAAKub,WAAL,GAAmBA,WAAnB;AACA;AACR;AACA;AACA;AACA;;AACQ,SAAKC,QAAL,GAAiB7iF,CAAD,IAAO,CAAG,CAA1B;AACA;AACR;AACA;AACA;;;AACQ,SAAK8iF,SAAL,GAAiB,MAAM,CAAG,CAA1B;AACH;AACD;AACJ;AACA;AACA;AACA;;;AACIC,EAAAA,WAAW,CAAC1nG,GAA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D,MAAAA,IAAI,EAAEiG,SAAR;AAAmB+wE,MAAAA,UAAU,EAAE,CAAC;AACzEh3E,QAAAA,IAAI,EAAEkzE,mDAAQA;AAD2D,OAAD,EAEzE;AACClzE,QAAAA,IAAI,EAAEizE,iDADP;AAEC/gF,QAAAA,IAAI,EAAE,CAAC62G,uBAAD;AAFP,OAFyE;AAA/B,KAAlD,CAAP;AAMH,GAtBL;AAAA;AAwBA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASO,iBAAT,CAA2BrtG,KAA3B,EAAkC;AAC9B;AACA,SAAOA,KAAK,IAAI,IAAT,IAAiBA,KAAK,CAAChK,MAAN,KAAiB,CAAzC;AACH;;AACD,SAASs3G,cAAT,CAAwBttG,KAAxB,EAA+B;AAC3B;AACA,SAAOA,KAAK,IAAI,IAAT,IAAiB,OAAOA,KAAK,CAAChK,MAAb,KAAwB,QAAhD;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMu3G,aAAa,GAAG,IAAIz2B,yDAAJ,CAAmB,cAAnB,CAAtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAM02B,mBAAmB,GAAG,IAAI12B,yDAAJ,CAAmB,mBAAnB,CAA5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAM22B,YAAY,GAAG,oMAArB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMC,UAAN,CAAiB;AACb;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACc,SAAHnhF,GAAG,CAACA,GAAD,EAAM;AACZ,WAAOohF,YAAY,CAACphF,GAAD,CAAnB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACc,SAAHF,GAAG,CAACA,GAAD,EAAM;AACZ,WAAOuhF,YAAY,CAACvhF,GAAD,CAAnB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACmB,SAARwhF,QAAQ,CAACC,OAAD,EAAU;AACrB,WAAOC,iBAAiB,CAACD,OAAD,CAAxB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACuB,SAAZE,YAAY,CAACF,OAAD,EAAU;AACzB,WAAOG,qBAAqB,CAACH,OAAD,CAA5B;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACgB,SAALI,KAAK,CAACJ,OAAD,EAAU;AAClB,WAAOK,cAAc,CAACL,OAAD,CAArB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACoB,SAATM,SAAS,CAACA,SAAD,EAAY;AACxB,WAAOC,kBAAkB,CAACD,SAAD,CAAzB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACoB,SAATv1E,SAAS,CAACA,SAAD,EAAY;AACxB,WAAOy1E,kBAAkB,CAACz1E,SAAD,CAAzB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACkB,SAAPkC,OAAO,CAACA,OAAD,EAAU;AACpB,WAAOwzE,gBAAgB,CAACxzE,OAAD,CAAvB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;AACwB,SAAbyzE,aAAa,CAACV,OAAD,EAAU;AAC1B,WAAOU,aAAa,CAACV,OAAD,CAApB;AACH;;AACa,SAAPW,OAAO,CAACC,UAAD,EAAa;AACvB,WAAOD,OAAO,CAACC,UAAD,CAAd;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACuB,SAAZC,YAAY,CAACD,UAAD,EAAa;AAC5B,WAAOC,YAAY,CAACD,UAAD,CAAnB;AACH;;AAlRY;AAoRjB;AACA;AACA;AACA;;;AACA,SAASf,YAAT,CAAsBphF,GAAtB,EAA2B;AACvB,SAAQuhF,OAAD,IAAa;AAChB,QAAIT,iBAAiB,CAACS,OAAO,CAAC9tG,KAAT,CAAjB,IAAoCqtG,iBAAiB,CAAC9gF,GAAD,CAAzD,EAAgE;AAC5D,aAAO,IAAP,CAD4D,CAC/C;AAChB;;AACD,UAAMvsB,KAAK,GAAGzG,UAAU,CAACu0G,OAAO,CAAC9tG,KAAT,CAAxB,CAJgB,CAKhB;AACA;;AACA,WAAO,CAAC0T,KAAK,CAAC1T,KAAD,CAAN,IAAiBA,KAAK,GAAGusB,GAAzB,GAA+B;AAAE,aAAO;AAAE,eAAOA,GAAT;AAAc,kBAAUuh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ACrB,QAAIzB,YAAY,CAACyB,IAAD,CAAZ,IAAsBA,IAAI,CAACpE,QAAL,IAAiB,IAA3C,EAAiD;AAC7C,WAAK8D,SAAL,GAAiBM,IAAI,CAACpE,QAAtB;AACH;AACJ;AACD;AACJ;AACA;AACA;AACA;;;AACI8E,EAAAA,kBAAkB,CAACT,QAAD,EAAW;AACzB,UAAMkC,WAAW,GAAG,KAAKlK,OAAL,IAAgB,KAAKA,OAAL,CAAahB,KAAjD;AACA,WAAO,CAACgJ,QAAD,IAAa,CAAC,CAACkC,WAAf,IAA8B,CAAC,KAAKlK,OAAL,CAAa6J,iBAAb,EAAtC;AACH;;AAtvBiB;AAwvBtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMlD,WAAN,SAA0BQ,eAA1B,CAA0C;AACtC;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIx5G,EAAAA,WAAW,CAACq8G,SAAS,GAAG,IAAb,EAAmB3D,eAAnB,EAAoC5G,cAApC,EAAoD;AAC3D,UAAM2G,cAAc,CAACC,eAAD,CAApB,EAAuCG,mBAAmB,CAAC/G,cAAD,EAAiB4G,eAAjB,CAA1D;AACA;AACR;AACA;AACA;AACA;AACA;;AACQ,SAAKzxE,YAAL,GAAoB,IAApB;AACA;;AACA,SAAKu1E,SAAL,GAAiB,EAA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yC,KAAK40D,QAArD;AACH;;AA9VmC;AAgWxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAM+tD,SAAN,SAAwBM,eAAxB,CAAwC;AACpC;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIx5G,EAAAA,WAAW,CAACu4G,QAAD,EAAWG,eAAX,EAA4B5G,cAA5B,EAA4C;AACnD,UAAM2G,cAAc,CAACC,eAAD,CAApB,EAAuCG,mBAAmB,CAAC/G,cAAD,EAAiB4G,eAAjB,CAA1D;AACA,SAAKH,QAAL,GAAgBA,QAAhB;;AACA,SAAKwD,gBAAL;;AACA,SAAKO,kBAAL,CAAwB5D,eAAxB;;AACA,SAAKoE,cAAL;;AACA,SAAKrH,sBAAL,CAA4B;AACxB4E,MAAAA,QAAQ,EAAE,IADc;AAExB;AACA;AACA;AACA;AACAO,MAAAA,SAAS,EAAE,CAAC,CAAC,KAAK9I;AANM,KAA5B;AAQH;AACD;AACJ;AACA;AACA;AACA;;;AACIz7D,EAAAA,EAAE,CAAC37C,KAAD,EAAQ;AACN,WAAO,KAAK69G,QAAL,CAAc79G,KAAd,CAAP;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACIe,EAAAA,IAAI,CAAC4yG,OAAD,EAAU72G,OAAO,GAAG,EAApB,EAAwB;AACxB,SAAK+gH,QAAL,CAAc98G,IAAd,CAAmB4yG,OAAnB;;AACA,SAAKsP,gBAAL,CAAsBtP,OAAtB;;AACA,SAAKoH,sBAAL,CAA4B;AAAEmF,MAAAA,SAAS,EAAEpjH,OAAO,CAACojH;AAArB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IAAI,EAAEizE,iDADP;AAEC/gF,QAAAA,IAAI,EAAE,CAACu3G,mBAAD;AAFP,OAJkC;AAA/B,KAXX,CAAP;AAmBH,GAvBL,EAuBuB;AAAE90G,IAAAA,IAAI,EAAE,CAAC;AAChBqL,MAAAA,IAAI,EAAE07C,gDADU;AAEhBxpD,MAAAA,IAAI,EAAE,CAAC,cAAD;AAFU,KAAD;AAAR,GAvBvB;AAAA;AA4BA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMipH,oBAAoB,GAAG;AACzBpU,EAAAA,OAAO,EAAE+G,SADgB;AAEzB3G,EAAAA,WAAW,EAAEI,yDAAU,CAAC,MAAM6T,OAAP;AAFE,CAA7B;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMxY,eAAe,GAAG,CAAC,MAAMnsG,OAAO,CAACC,OAAR,CAAgB,IAAhB,CAAP,GAAxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAM0kH,OAAN,SAAsBtN,SAAtB,CAAgC;AAC5BpyG,EAAAA,WAAW,CAACy5B,MAAD,EAASw1E,UAAT,EAAqBqG,eAArB,EAAsCkC,cAAtC,EAAsDmI,kBAAtD,EAA0E;AACjF;AACA,SAAKA,kBAAL,GAA0BA,kBAA1B;AACA,SAAKtR,OAAL,GAAe,IAAI2K,WAAJ,EAAf;AACA;;AACA,SAAK4G,WAAL,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A7H,EAAoJ;AAAE36H,MAAAA,IAAI,EAAEiG;AAAR,KAApJ,CAAP;AAAkL,GAF5N;AAAA;;AAGA,SAASq6I,gBAAT,CAA0BlZ,QAA1B,EAAoC;AAChC,OAAK,IAAI7uI,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG6uI,QAAQ,CAACn1I,MAA7B,EAAqCsG,CAAC,EAAtC,EAA0C;AACtC,UAAMswI,GAAG,GAAGzB,QAAQ,CAAC7uI,CAAD,CAApB;;AACA,QAAIswI,GAAG,IAAI,IAAX,EAAiB;AACb,YAAM,IAAIrwI,KAAJ,CAAW,+BAA8BqwI,GAAI,qBAAoBtwI,CAAE,EAAnE,CAAN;AACH;AACJ;AACJ;;AACD,SAASulJ,4BAAT,CAAsCplI,MAAtC,EAA8C;AAC1C,SAAOA,MAAM,KAAK,YAAlB;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAM0oI,UAAN,CAAiB;AACb1lJ,EAAAA,WAAW,CAAC2lJ,MAAD,EAASvkB,KAAT,EAAgBwkB,iBAAhB,EAAmCt4C,QAAnC,EAA6C1O,EAA7C,EAAiD;AACxD,SAAK+mD,MAAL,GAAcA,MAAd;AACA,SAAKvkB,KAAL,GAAaA,KAAb;AACA,SAAKwkB,iBAAL,GAAyBA,iBAAzB;AACA,SAAKt4C,QAAL,GAAgBA,QAAhB;AACA,SAAK1O,EAAL,GAA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BiB;;AAE5C;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA,qBAAqB,2DAAW;AAChC;;AAEA,iEAAe,aAAa,EAAC;;;;;;;;;;;;;;;;;;;;;;AChBW;AACG;AACR;AACE;AACD;AACS;;AAE7C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA,cAAc,uDAAO;AACrB,wBAAwB,2DAAW;AACnC,mCAAmC,wDAAQ;AAC3C,8CAA8C,4DAAY;AAC1D;AACA,6BAA6B,yDAAS;AACtC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,uDAAO;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,aAAa,EAAC;;;;;;;;;;;;;;;;AChD7B;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,UAAU;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,QAAQ,EAAC;;;;;;;;;;;;;;;;ACpBxB;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,SAAS,EAAC;;;;;;;;;;;;;;;;ACnBzB;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,UAAU;AACrB,WAAW,GAAG;AACd,WAAW,SAAS;AACpB;AACA,aAAa,GAAG;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,WAAW,EAAC;;;;;;;;;;;;;;;;ACzB3B;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,UAAU;AACrB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAE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3B;AACA;AACA;AACA;AACA,cAAc,2DAAW;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,WAAW,EAAC;;;;;;;;;;;;;;;;AC7D3B;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA,iEAAe,SAAS,EAAC;;;;;;;;;;;;;;;;;;;;ACXgB;AACH;AACD;AACC;;AAEtC;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA,OAAO,wDAAQ,WAAW,wDAAQ;AAClC;AACA;AACA,gBAAgB,0DAAU;AAC1B,sBAAsB,wDAAQ;AAC9B;;AAEA,iEAAe,YAAY,EAAC;;;;;;;;;;;;;;;;;;;AC9Cc;AACL;AACQ;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA,SAAS,4DAAY;AACrB,IAAI,wDAAQ,mCAAmC,0DAAU;AACzD;;AAEA,iEAAe,gBAAgB,EAAC;;;;;;;;;;;;;;;;;;;;;AC3DY;AACgB;AACvB;AACF;AACE;;AAErC;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,oDAAQ;AACnB;AACA;AACA,WAAW,uDAAO;AAClB,QAAQ,mEAAmB;AAC3B,QAAQ,2DAAW;AACnB;AACA,SAAS,wDAAQ;AACjB;;AAEA,iEAAe,YAAY,EAAC;;;;;;;;;;;;;;;;;;AC9BgB;AACF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gEAAgB;AACxC;AACA;;AAEA,iEAAe,eAAe,EAAC;;;;;;;;;;;;;;;;ACf/B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY,SAAS;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,WAAW,EAAC;;;;;;;;;;;;;;;;ACtC3B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY,SAAS;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,gBAAgB,EAAC;;;;;;;;;;;;;;;;ACxChC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,SAAS,EAAC;;;;;;;;;;;;;;;;;;ACnBmB;AACQ;;AAEpD;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,OAAO;AAClB,WAAW,QAAQ,UAAU;AAC7B,WAAW,UAAU;AACrB,aAAa,QAAQ;AACrB;AACA;AACA;AACA,wBAAwB;;AAExB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM,+DAAe;AACrB,MAAM;AACN,MAAM,2DAAW;AACjB;AACA;AACA;AACA;;AAEA,iEAAe,UAAU,EAAC;;;;;;;;;;;;;;;;;ACvCI;;AAE9B;AACA,iBAAiB,sEAA0B;;AAE3C,iEAAe,UAAU,EAAC;;;;;;;;;;;;;;;;ACL1B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,YAAY,EAAC;;;;;;;;;;;;;;;;;;ACpBU;AACY;;AAElD;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,aAAa,UAAU;AACvB;AACA;AACA,SAAS,wDAAQ;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,8DAAc;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA,iEAAe,cAAc,EAAC;;;;;;;;;;;;;;;;;ACpCa;;AAE3C;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,SAAS;AACpB,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,2DAAW;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,cAAc,EAAC;;;;;;;;;;;;;;;;AC/B9B;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,aAAa,EAAC;;;;;;;;;;;;;;;;;;ACxBa;AACZ;;AAE9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB,WAAW,GAAG;AACd,aAAa,UAAU;AACvB;AACA;AACA;AACA,aAAa,0DAAU;;AAEvB;AACA,+BAA+B,gDAAI;AACnC;AACA;AACA;AACA;;AAEA,iEAAe,UAAU,EAAC;;;;;;;;;;;;;;;;;;AC3BgB;AACL;;AAErC;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,0DAAU;AAChC;;AAEA;AACA;AACA,WAAW,wDAAQ;AACnB;AACA;;AAEA,iEAAe,UAAU,EAAC;;;;;;;;;;;;;;;;;;;;;;;ACpCM;AACU;AACI;AACE;AACR;AACU;AACpB;;AAE9B;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,UAAU;AACvB;AACA;AACA,aAAa,0DAAU;;AAEvB;AACA;AACA;AACA;AACA,sBAAsB,yDAAS;;AAE/B;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAc;;AAEtB;AACA;AACA,aAAa,6DAAa;AAC1B,uBAAuB,wDAAY;AACnC;AACA;AACA,+BAA+B,gDAAI;AACnC,WAAW,qDAAK;AAChB;AACA;AACA;;AAEA,iEAAe,WAAW,EAAC;;;;;;;;;;;;;;;;;;;AC7CmB;AACH;AACd;;AAE7B;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA,SAAS,2DAAW;AACpB,qBAAqB,4DAAY;AACjC,mBAAmB,oDAAI;AACvB,kCAAkC;AAClC;AACA;AACA;AACA;AACA;;AAEA,iEAAe,UAAU,EAAC;;;;;;;;;;;;;;;;;;;;;;ACxBsB;AACV;AACF;AACQ;AACT;AACO;;AAE1C;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,UAAU;AACvB;AACA;AACA,SAAS,wDAAQ;AACjB;AACA;AACA,iBAAiB,wEAA4B;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,2DAAW;AAC3C,0BAA0B,yDAAa;AACvC;AACA;AACA;AACA;AACA;;AAEA,qBAAqB,2DAAW;AAChC,yCAAyC,uDAAO;;AAEhD,kBAAkB,0DAAU;AAC5B;AACA;AACA;AACA,0BAA0B,2DAAW;AACrC,QAAQ;AACR,uCAAuC,0DAAU;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yCAAyC,uDAAO;AAChD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA,iEAAe,UAAU,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;AC7EkB;AACU;AACR;AACJ;AACM;AACR;AACJ;AACc;AACpB;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,iBAAiB;AAC5B,WAAW,QAAQ;AACnB,WAAW,GAAG;AACd,WAAW,OAAO;AAClB;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,0DAAU;;AAE/C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wBAAwB,yDAAS;AACjC,yBAAyB,4DAAY;AACrC;AACA;AACA,aAAa,2DAAW;AACxB;AACA;AACA,aAAa,gEAAgB;AAC7B;AACA;AACA;AACA,uBAAuB,8DAAc;AACrC,aAAa,6DAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,uDAAO;AACpB,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,yBAAyB,gDAAI;AAC7B,mBAAmB,0DAAU;AAC7B;AACA;AACA;AACA;AACA;;AAEA,iEAAe,YAAY,EAAC;;;;;;;;;;;;;;;;;;;AC3FI;AACU;AACZ;;AAE9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB,WAAW,GAAG;AACd,WAAW,OAAO;AAClB;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA,aAAa,0DAAU;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,gDAAI;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,qDAAK;AAChB;AACA;AACA;;AAEA,iEAAe,aAAa,EAAC;;;;;;;;;;;;;;;;;;;AC1Ca;AACN;AACgB;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB,WAAW,UAAU;AACrB,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,OAAO;AAClB;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,0DAAU;AAChB,IAAI,uDAAO;AACX;AACA;AACA,SAAS,+DAAe;AACxB;;AAEA,iEAAe,aAAa,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;ACvDe;AACF;AACE;AACE;AACE;AACZ;AACI;AACJ;AACgB;AACb;;AAEvC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,iBAAiB;AAC5B,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,yDAAS;AACrD,wCAAwC,yDAAS;AACjD;;AAEA;AACA;AACA;;AAEA;AACA;AACA,qCAAqC,uDAAO;;AAE5C;AACA;AACA;AACA;;AAEA;AACA,IAAI,yDAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,0DAAU;AAC3B,IAAI;AACJ,aAAa,2DAAW;AACxB,IAAI;AACJ,aAAa,6DAAa;AAC1B,IAAI;AACJ,aAAa,8DAAkB;AAC/B;AACA,sBAAsB,uDAAW,GAAG,mDAAO;AAC3C,SAAS,+DAAe;AACxB;;AAEA,iEAAe,UAAU,EAAC;;;;;;;;;;;;;;;;;ACzGc;;AAExC;AACA;AACA,eAAe,yDAAS;AACxB,WAAW,QAAQ;AACnB;AACA,IAAI;AACJ,CAAC;;AAED,iEAAe,cAAc,EAAC;;;;;;;;;;;;;;;;;;;ACVQ;AACE;AACF;;AAEtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,UAAU;AACrB,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,oDAAQ;;AAE9D;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,yDAAS;AACpB,iBAAiB,wDAAQ;AACzB;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,WAAW,EAAC;;;;;;;;;;;;;;;;;;;;;;ACnFO;AACQ;AACjB;AACmB;AACF;AACA;;AAE1C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kBAAkB,kDAAM,GAAG,4DAAgB;AAC3C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,UAAU;AACrB,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,sDAAU,cAAc,sDAAU;AAC3D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,kDAAE;;AAEf;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAoB,sDAAU;;AAE9B;AACA;AACA,4BAA4B,sDAAU;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;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A;AACA;AACA,GAAG;AACH;AACA;;AAEA,iEAAe,UAAU,EAAC;;;;;;;;;;;;;;;;ACjB1B;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,GAAG;AACd,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;ACnBJ;;AAEnC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,aAAa,UAAU;AACvB;AACA;AACA,eAAe,uDAAO;AACtB;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA,iEAAe,aAAa,EAAC;;;;;;;;;;;;;;;;;;;ACzBe;AACU;AACJ;;AAElD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,2DAAW;AACpC,yBAAyB,8DAAc;AACvC;AACA;AACA;AACA;AACA;AACA,yBAAyB,gEAAgB;AACzC,yBAAyB,8DAAc;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iEAAe,SAAS,EAAC;;;;;;;;;;;;;;;;;ACzFW;;AAEpC;AACA,cAAc,mDAAO,QAAQ,mDAAO;;AAEpC,iEAAe,OAAO,EAAC;;;;;;;;;;;;;;;;;ACLiB;;AAExC;AACA,mBAAmB,yDAAS;;AAE5B,iEAAe,YAAY,EAAC;;;;;;;;;;;;;;;;;ACLQ;;AAEpC;AACA,iBAAiB,uDAAO;;AAExB,iEAAe,UAAU,EAAC;;;;;;;;;;;;;;;;ACL1B;AACA;AACA;AACA;AAC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H;AACA;;AAEA,iEAAe,iBAAiB,EAAC;;;;;;;;;;;;;;;;;;;AC7CW;AACI;AACR;;AAExC;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,QAAQ;AACrB;AACA;AACA,yBAAyB,uDAAW;AACpC;AACA;AACA,mBAAmB,yDAAa;AAChC,uBAAuB,yDAAS;AAChC;AACA;AACA;AACA;;AAEA,iEAAe,YAAY,EAAC;;;;;;;;;;;;;;;;;;;;ACtBY;AACI;AACJ;AACL;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS,yDAAS,CAAC,uDAAO,UAAU,yDAAS,mBAAmB,2DAAW;AAC3E;;AAEA,iEAAe,MAAM,EAAC;;;;;;;;;;;;;;;;AC1CtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,UAAU;AACvB;AACA;AACA,yCAAyC,QAAQ;AACjD;AACA;AACA,YAAY,QAAQ,IAAI,QAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,QAAQ,EAAC;;;;;;;;;;;;;;;;ACzBxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA,kBAAkB;AAClB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,EAAE,EAAC;;;;;;;;;;;;;;;;;;;;ACpC0B;AACF;AACI;AACX;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,UAAU;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,OAAO,6CAA6C;AACpD,OAAO;AACP;AACA;AACA,iCAAiC,mBAAmB;AACpD;AACA;AACA;AACA,qBAAqB,2BAA2B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,WAAW;AAC5C;AACA;AACA;AACA,aAAa,uDAAO,eAAe,uDAAW,GAAG,sDAAU;AAC3D,0BAA0B,4DAAY;AACtC;;AAEA,iEAAe,MAAM,EAAC;;;;;;;;;;;;;;;;;;ACnDoB;AACH;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB,aAAa,GAAG;AAChB;AACA;AACA;AACA,OAAO,8CAA8C;AACrD,OAAO,+CAA+C;AACtD,OAAO;AACP;AACA;AACA,+BAA+B,oBAAoB;AACnD;AACA;AACA;AACA,mBAAmB,0BAA0B;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,0DAAU,CAAC,qDAAS;;AAE/B,iEAAe,IAAI,EAAC;;;;;;;;;;;;;;;;;;;ACzC4B;AACF;AACP;;AAEvC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB,aAAa,QAAQ;AACrB;AACA;AACA;AACA,OAAO,oCAAoC;AAC3C,OAAO,oCAAoC;AAC3C,OAAO;AACP;AACA;AACA,oCAAoC,4BAA4B;AAChE;AACA;AACA;AACA,wBAAwB,iCAAiC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,yDAAS;AAC/C;AACA;AACA;AACA,SAAS,6DAAa,QAAQ,4DAAY;AAC1C;;AAEA,iEAAe,SAAS,EAAC;;;;;;;;;;;;;;;;;ACtDmB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,2DAAW;AAC7B;;AAEA,iEAAe,OAAO,EAAC;;;;;;;;;;;;;;;;;ACrBmB;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,0BAA0B;AACrC,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,0DAAU;;AAErB,iEAAe,IAAI,EAAC;;;;;;;;;;;;;;;;;;;;AC1BoB;AACF;AACQ;AACX;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,UAAU;AACrB,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA,IAAI;AACJ;AACA;AACA;AACA,aAAa,uDAAO,eAAe,qDAAS,GAAG,oDAAQ;AACvD,0BAA0B,4DAAY;AACtC;;AAEA,iEAAe,OAAO,EAAC;;;;;;;;;;;;;;;;;ACxCa;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,cAAc;AACzB,WAAW,GAAG;AACd,aAAa,GAAG;AAChB;AACA;AACA,kBAAkB,QAAQ,OAAO,UAAU;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,uDAAO;AACnD;AACA;;AAEA,iEAAe,GAAG,EAAC;;;;;;;;;;;;;;;;;;AChCqB;AACJ;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,cAAc;AACzB,aAAa,SAAS;AACtB;AACA;AACA,2BAA2B,gBAAgB,QAAQ,GAAG;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,uDAAO,eAAe,qDAAS;AAC1D;;AAEA,iEAAe,KAAK,EAAC;;;;;;;;;;;;;;;;ACjCrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,GAAG;AAChB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,QAAQ,EAAC;;;;;;;;;;;;;;;;;;ACpB4B;AACP;;AAE7C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA,8BAA8B,mBAAmB;AACjD;AACA;AACA;AACA;AACA;AACA,kBAAkB,+DAAe,cAAc,mBAAmB,MAAM,2DAAe;AACvF,SAAS,4DAAY;AACrB;AACA;;AAEA,iEAAe,WAAW,EAAC;;;;;;;;;;;;;;;;ACnC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,OAAO,EAAC;;;;;;;;;;;;;;;;;;ACzBkB;AACJ;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,wDAAQ,mBAAmB,0DAAU;AAC/D;;AAEA,iEAAe,WAAW,EAAC;;;;;;;;;;;;;;;;;;AChCgB;AACE;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,4DAAY,WAAW,2DAAW;AAC3C;;AAEA,iEAAe,iBAAiB,EAAC;;;;;;;;;;;;;;;;;;AChCH;AACS;;AAEvC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,6BAA6B,uDAAW;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,qDAAS;;AAE1C,iEAAe,QAAQ,EAAC;;;;;;;;;;;;;;;;;ACrCoB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA,kBAAkB;AAClB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,2DAAW;AACpB;;AAEA,iEAAe,OAAO,EAAC;;;;;;;;;;;;;;;;;;AClCvB;AACA;AAEA;;AACA,IAAIxsoB,QAAQ,GAAG,wBAAf;AAAA,IACIK,OAAO,GAAG,mBADd;AAAA,IAEIC,MAAM,GAAG,4BAFb;AAAA,IAGIM,QAAQ,GAAG,gBAHf;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAAS0c,UAAT,CAAoBz3B,KAApB,EAA2B;AACzB,MAAI,CAACsuB,wDAAQ,CAACtuB,KAAD,CAAb,EAAsB;AACpB,WAAO,KAAP;AACD,GAHwB,CAIzB;AACA;;;AACA,MAAIi1B,GAAG,GAAG+C,0DAAU,CAACh4B,KAAD,CAApB;AACA,SAAOi1B,GAAG,IAAIza,OAAP,IAAkBya,GAAG,IAAIxa,MAAzB,IAAmCwa,GAAG,IAAI9a,QAA1C,IAAsD8a,GAAG,IAAIla,QAApE;AACD;;AAED,iEAAe0c,UAAf;;;;;;;;;;;;;;;ACpCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,QAAQ,EAAC;;;;;;;;;;;;;;;;AClCxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,QAAQ,EAAC;;;;;;;;;;;;;;;;AC9BxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,YAAY,EAAC;;;;;;;;;;;;;;;;;;;AC5Bc;AACI;AACD;;AAE7C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,4DAAY,WAAW,0DAAU;AACxC;AACA;AACA,cAAc,4DAAY;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,aAAa,EAAC;;;;;;;;;;;;;;;;;;AC7Da;AACG;;AAE7C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,4DAAY,WAAW,0DAAU;AACtC;;AAEA,iEAAe,QAAQ,EAAC;;;;;;;;;;;;;;;;;;;AC5B8B;AACd;AACF;;AAEtC;AACA,uBAAuB,oDAAQ,IAAI,iEAAqB;;AAExD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,yDAAS,qBAAqB,4DAAgB;;AAEpF,iEAAe,YAAY,EAAC;;;;;;;;;;;;;;;;;;;AC1BoB;AACV;AACK;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,2DAAW,WAAW,6DAAa,WAAW,wDAAQ;AAC/D;;AAEA,iEAAe,IAAI,EAAC;;;;;;;;;;;;;;;;;;;ACpC4B;AACN;AACC;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,2DAAW,WAAW,6DAAa,iBAAiB,0DAAU;AACvE;;AAEA,iEAAe,MAAM,EAAC;;;;;;;;;;;;;;;;AC/BtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,GAAG;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,IAAI,EAAC;;;;;;;;;;;;;;;;;;;;ACnBkB;AACQ;AACV;AACD;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,UAAU;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B;AACA;AACA;AACA,OAAO,kBAAkB;AACzB,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uDAAO,eAAe,oDAAQ,GAAG,mDAAO;AACrD,0BAA0B,4DAAY;AACtC;;AAEA,iEAAe,GAAG,EAAC;;;;;;;;;;;;;;;;;ACpDmB;;AAEtC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,UAAU;AACrB,aAAa,UAAU;AACvB;AACA;AACA,kBAAkB;AAClB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,oDAAQ;AACjD;AACA;;AAEA;AACA,gBAAgB,oDAAQ;;AAExB,iEAAe,OAAO,EAAC;;;;;;;;;;;;;;;;;;ACxEiB;AACU;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,WAAW;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA,aAAa,QAAQ,IAAI,QAAQ;AACjC;AACA;AACA;AACA,aAAa,QAAQ,IAAI,QAAQ;AACjC;AACA;AACA;AACA,WAAW,QAAQ,gBAAgB,IAAI,gBAAgB;AACvD;AACA,YAAY,8DAAc;AAC1B,EAAE,yDAAS;AACX,CAAC;;AAED,iEAAe,KAAK,EAAC;;;;;;;;;;;;;;;;;;;ACtCyB;AACZ;AACG;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,GAAG;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,4DAAY,QAAQ,oDAAQ,EAAE,kDAAM;AAC1C;AACA;;AAEA,iEAAe,GAAG,EAAC;;;;;;;;;;;;;;;;AC5BnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,IAAI,EAAC;;;;;;;;;;;;;;;;;;;;AChBkB;AACI;AACF;AACU;;AAElD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,MAAM;AACjB,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,wDAAQ;AACtB,gBAAgB,8DAAc,WAAW,yDAAS;AAClD,SAAS,0DAAU;AACnB,CAAC;;AAED;AACA;;AAEA,iEAAe,OAAO,EAAC;;;;;;;;;;;;;;;;;;;;ACjDuB;AACQ;AACtB;AACA;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB,aAAa,UAAU;AACvB;AACA;AACA;AACA,OAAO,OAAO,UAAU;AACxB,OAAO,OAAO;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,qDAAK,SAAS,4DAAY,CAAC,qDAAK,UAAU,gEAAgB;AACnE;;AAEA,iEAAe,QAAQ,EAAC;;;;;;;;;;;;;;;;;;;;;AC/BoB;AACN;AACQ;AACJ;AACP;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,UAAU;AACrB,WAAW,GAAG;AACd,aAAa,GAAG;AAChB;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,cAAc,wBAAwB;AACtC;AACA;AACA,IAAI,IAAI;AACR,WAAW,8BAA8B;AACzC;AACA;AACA,aAAa,uDAAO,eAAe,uDAAW,GAAG,sDAAU;AAC3D;;AAEA,0BAA0B,4DAAY,uCAAuC,oDAAQ;AACrF;;AAEA,iEAAe,MAAM,EAAC;;;;;;;;;;;;;;;;;;AClDwB;AACJ;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,UAAU;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc,4DAAY;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,0DAAU;AACZ;AACA;;AAEA,iEAAe,MAAM,EAAC;;;;;;;;;;;;;;;;ACpDtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,SAAS,EAAC;;;;;;;;;;;;;;;;ACtBzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,SAAS,EAAC;;;;;;;;;;;;;;;;;ACjBY;;AAErC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,wDAAQ;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,QAAQ,EAAC;;;;;;;;;;;;;;;;;ACzCa;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wDAAQ;AACvB;;AAEA;AACA;;AAEA,iEAAe,SAAS,EAAC;;;;;;;;;;;;;;;;;;;ACnCa;AACD;AACA;;AAErC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,wDAAQ;AACd;AACA;AACA,MAAM,wDAAQ;AACd;AACA,YAAY,wDAAQ;AACpB;AACA;AACA;AACA;AACA,UAAU,wDAAQ;AAClB;AACA;AACA;AACA;AACA;;AAEA,iEAAe,QAAQ,EAAC;;;;;;;;;;;;;;;;;;AC/DkB;AACT;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,WAAW;AACX;AACA,cAAc,QAAQ;AACtB,WAAW;AACX;AACA;AACA,SAAS,0DAAU,QAAQ,sDAAM;AACjC;;AAEA,iEAAe,aAAa,EAAC;;;;;;;;;;;;;;;;;AC/BiB;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,4DAAY;AAC1C;;AAEA,iEAAe,QAAQ,EAAC;;;;;;;;;;;;;;;;;;;;;;AC3BoB;AACI;AACN;AACP;AACU;AACC;;AAE9C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,4DAAY,YAAY,uDAAO,8BAA8B,uDAAW;AAC9E,yBAAyB,yDAAa;AACtC;AACA;AACA;AACA,aAAa,4DAAY;AACzB;AACA;AACA,aAAa,yDAAa;AAC1B;;AAEA;AACA,mBAAmB,gEAAoB;AACvC;;AAEA,iEAAe,MAAM,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClJe;AACA;AACA;AACR;AACe;AACa;AACnB;AAed;AAC2B;AACjB;AAC8D;AACrB;AAU5C;AACc;AAMxB;AACmB;;AAExC;AACA;;AAEA;AACA,aAAa,yDAAO,kCAAkC,UAAU;AAChE;;AAEA;AACA;AACA;AACA,kBAAkB,sEAAe;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mCAAmC;AAC3D;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,2DAAY;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,0DAAW;AACxC;AACA;AACA,KAAK;AACL,kBAAkB,+DAAmB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,cAAc,2DAAY;;AAE1B;;AAEA;AACA;AACA;AACA;AACA;;AAEA,WAAW;AACX;;AAEA;AACA;AACA;AACA,UAAU,gBAAgB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,IAAI;AACJ;AACA,UAAU,yDAAO,6BAA6B,KAAK,uBAAuB,OAAO;AACjF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM,iEAAgB,CAAC,8DAAa;AACpC;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO,uDAAQ;;AAEf;AACA;AACA,SAAS,uDAAQ;AACjB;AACA,SAAS,uDAAQ;AACjB,IAAI;AACJ,SAAS,uDAAQ;AACjB,SAAS,uDAAQ;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,uDAAQ;AAClB;AACA;AACA,SAAS,uDAAQ;AACjB;AACA;AACA;AACA,IAAI;AACJ,SAAS,uDAAQ;AACjB;;AAEA;AACA,SAAS,uDAAQ;;AAEjB;AACA;AACA,WAAW,uDAAQ;AACnB;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA,WAAW,uDAAQ;AACnB;AACA,WAAW,uDAAQ;AACnB,MAAM;AACN;AACA,WAAW,uDAAQ;AACnB;AACA,WAAW,uDAAQ;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,6BAA6B,yDAAgB;;AAE7C;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,gEAAa,YAAY,gEAAoB;AAC5D,UAAU,kEAAiB;AAC3B,YAAY,wDAAY;;AAExB;;AAEA;AACA,OAAO,0DAAW;AAClB;AACA,UAAU,0DAAW;AACrB;AACA;AACA;;AAEA,oBAAoB,8EAAuB,SAAS,yEAAkB;AACtE;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA,wBAAwB,kBAAkB;AAC1C;;AAEA;AACA,gBAAgB,0DAAW;AAC3B;AACA,UAAU,sDAAO;AACjB;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,UAAU;AACV,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oGAAoG,qBAAqB,GAAG,mBAAmB,uBAAuB,0BAA0B,oDAAoD,uBAAuB,GAAG,wBAAwB,OAAO,2BAA2B,kDAAkD,0BAA0B,4CAA4C,0BAA0B;AAC1d,8IAA8I,wBAAwB,YAAY,oBAAoB,GAAG,qBAAqB;AAC9N,IAAI,mBAAmB,GAAG,oBAAoB,GAAG,sBAAsB,GAAG,sBAAsB,GAAG,4BAA4B;AAC/H,mEAAmE,wBAAwB,GAAG,0BAA0B,OAAO,wBAAwB;AACvJ,gCAAgC,uBAAuB,KAAK,gCAAgC;AAC5F,8EAA8E,mBAAmB,GAAG,2BAA2B,GAAG,uBAAuB,GAAG,yBAAyB,GAAG,oBAAoB,GAAG,qBAAqB,GAAG,qBAAqB,GAAG,uBAAuB,GAAG,qBAAqB,OAAO,uBAAuB;AAC5U,4EAA4E,0BAA0B,GAAG,kCAAkC,GAAG,sBAAsB,GAAG,qBAAqB,GAAG,sBAAsB,GAAG,wBAAwB,GAAG,yBAAyB,GAAG,wBAAwB,GAAG,8BAA8B,GAAG,wBAAwB,GAAG,yBAAyB,KAAK,wBAAwB;AAC5Z;AACA;AACA;AACe;AACf;AACA;AACA;AACA;AACA,gCAAgC,gEAAoB;;AAEpD;AACA;AACA,qCAAqC,yDAAO;AAC5C;AACA;AACA;AACA;AACA,cAAc,0DAAW,cAAc,wDAAY;;AAEnD;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA,6CAA6C,yDAAO;AACpD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,8DAAa;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,0BAA0B;AAC1B;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;AACA,+BAA+B,0BAA0B;AACzD;AACA;AACA,4CAA4C,cAAc;AAC1D;AACA,+CAA+C,aAAa;AAC5D;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,qBAAqB,qDAAqD;AAC1E;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,cAAc;AAC/D;AACA,0DAA0D,cAAc;AACxE,cAAc;AACd;AACA;AACA;AACA;;AAEA,gBAAgB,6EAA2B;AAC3C,qBAAqB,qDAAqD;AAC1E;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,QAAQ;AACrB,aAAa,aAAa;AAC1B,cAAc;AACd;AACA,sCAAsC;AACtC,eAAe,qDAAM;AACrB;AACA;AACA;;AAEA,sBAAsB,gEAAa,eAAe,gEAAoB;AACtE;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,kEAAiB;AAC5B,KAAK;AACL;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,aAAa;AAC1B,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,cAAc;AACd;AACA,8CAA8C;AAC9C,SAAS,uDAAQ;AACjB,gBAAgB,6DAAoB;AACpC,iEAAiE,qBAAqB,aAAa,aAAa;AAChH;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA,cAAc,gEAAa,eAAe,gEAAoB;AAC9D,aAAa,kEAAiB;AAC9B,OAAO;AACP;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,aAAa;AAC1B,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,cAAc;AACd;AACA,0CAA0C;AAC1C,SAAS,uDAAQ;AACjB,gBAAgB,6DAAoB;AACpC,MAAM;AACN;AACA;AACA,cAAc,gEAAa,eAAe,gEAAoB;AAC9D,aAAa,kEAAiB;AAC9B,OAAO;AACP;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,aAAa;AAC1B,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,oCAAoC,8BAA8B;AAClE,oCAAoC,YAAY;AAChD,oCAAoC,iCAAiC;AACrE,oCAAoC,iCAAiC,IAAI,aAAa;AACtF,oCAAoC,iCAAiC,IAAI,eAAe;AACxF,oCAAoC,iCAAiC,IAAI,0BAA0B;AACnG,oCAAoC,2CAA2C;AAC/E,cAAc;AACd;AACA,kCAAkC;AAClC;AACA,sBAAsB,gEAAa,YAAY,gEAAoB;AACnE;AACA;AACA;;AAEA,kBAAkB,wDAAY;AAC9B,sBAAsB,0DAAW;AACjC;AACA;AACA,mBAAmB,8DAAe;AAClC,yBAAyB,0DAAW;AACpC,4BAA4B,0DAAW;AACvC,0BAA0B,0DAAW,uBAAuB,0DAAW;AACvE;AACA;AACA,YAAY,kEAAiB;;AAE7B;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,sEAA6B;AAC7C;AACA;AACA;;AAEA;AACA,gBAAgB,sEAA6B;AAC7C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sEAAe;AAC9B,MAAM;AACN;AACA;AACA,eAAe,yEAAkB;AACjC,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,0DAAW;AACtB;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA,UAAU,yEAAkB;AAC5B;AACA,UAAU,4EAAqB;AAC/B,UAAU,8EAAuB;AACjC,sCAAsC,yEAAkB;;AAExD;AACA;AACA;;AAEA;AACA;AACA,UAAU,sEAAe;AACzB;AACA,UAAU,yEAAkB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA,+CAA+C,oBAAoB,gBAAgB,aAAa;AAChG;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;AACA;AACA,iEAAiE,cAAc;AAC/E,2DAA2D,YAAY;AACvE;AACA,cAAc;AACd;AACA,gCAAgC;AAChC,+BAA+B,mEAAY;AAC3C;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;AACA;AACA;AACA,cAAc;AACd;AACA,oCAAoC;AACpC,+BAA+B,uEAAgB;AAC/C;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;AACA;AACA;AACA,cAAc;AACd;AACA,iCAAiC;AACjC,+BAA+B,oEAAa;AAC5C;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,cAAc;AACd;AACA,wCAAwC;AACxC,QAAQ,0DAAW,UAAU,0DAAW;AACxC,gBAAgB,6DAAoB;AACpC;;AAEA,YAAY,wCAAwC;AACpD,oBAAoB,gEAAe;AACnC;AACA;AACA;AACA,OAAO;AACP,oDAAoD,sEAAe;AACnE;AACA;AACA,MAAM;AACN,mEAAmE,IAAI;AACvE;AACA;;AAEA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA,gFAAgF,eAAe;AAC/F,4DAA4D,6BAA6B;AACzF;AACA,cAAc;AACd;AACA,gCAAgC;AAChC,+BAA+B,+DAAQ;AACvC;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,cAAc;AACd;AACA;AACA;AACA,gBAAgB,6DAAoB;AACpC;;AAEA,sCAAsC,yDAAO,gBAAgB,yDAAO;;AAEpE,QAAQ,mEAAuB;AAC/B,gBAAgB,6DAAoB;AACpC,MAAM;AACN,4BAA4B,SAAS;AACrC;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,cAAc;AACd;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,uDAAuD;AACvD,qDAAqD;AACrD,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,0BAA0B,yEAAkB;AAC5C;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,0BAA0B,uDAAW,YAAY,kBAAkB;AACnE;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,0BAA0B,uDAAW,WAAW,kBAAkB;AAClE;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,0BAA0B,yDAAa,YAAY,kBAAkB;AACrE;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,0BAA0B,yDAAa,WAAW,kBAAkB;AACpE;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,iCAAiC,kBAAkB;AACnD,iCAAiC,UAAU;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,WAAW,yDAAU;AACrB;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AAC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B,aAAa,QAAQ;AACrB,mCAAmC,qBAAqB;AACxD,mCAAmC,kDAAkD,cAAc,uBAAuB;AAC1H,mCAAmC,qBAAqB,cAAc,iBAAiB;AACvF,mCAAmC,qBAAqB,cAAc,qBAAqB;AAC3F,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB;AACA;AACA,qCAAqC,sBAAsB;AAC3D,qCAAqC,oBAAoB;AACzD,cAAc;AACd;AACA,cAAc,uEAAuE,IAAI;AACzF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB;AACA;AACA,kDAAkD,sBAAsB;AACxE,kDAAkD,mBAAmB;AACrE,cAAc;AACd;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA,cAAc,kBAAkB,EAAE,qBAAqB;AACvD;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA,gEAAgE;AAChE,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AA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mBAAmB;AAC/E;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3qE2F;AAC/C;AACJ;AACF;AACqC;AAQnD;AACa;;AAErC;;AAEA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,aAAa,6DAA6D;AAC1E,eAAe,sCAAsC;AACrD,eAAe,oBAAoB;AACnC,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,oCAAoC,oCAAoC,GAAG;AAC3E;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS,0DAAW;AACpB;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,GAAG;AACH;;AAEA;AACA,4VAA4V,0BAA0B,qBAAqB;AAC3Y;AACA;AACA;AACA,6CAA6C,0BAA0B,GAAG,0BAA0B,MAAM,uBAAuB;AACjI,8BAA8B,qBAAqB,GAAG,sBAAsB,GAAG,qBAAqB,GAAG,oBAAoB,GAAG,qBAAqB,GAAG,uBAAuB,GAAG,uBAAuB,GAAG,6BAA6B;AACvO,6BAA6B,uBAAuB,KAAK,gCAAgC;AACzF,qEAAqE,oBAAoB,GAAG,qBAAqB,GAAG,yBAAyB,GAAG,mBAAmB,GAAG,2BAA2B,GAAG,uBAAuB,O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A;AACA,6BAA6B,sEAAsE;AACnG;AACA,OAAO;AACP;;AAEA;AACA,uBAAuB,iEAAiE;AACxF;AACA;;AAEA;AACA;AACA,oCAAoC,+BAA+B,oBAAoB;AACvF,cAAc;AACd;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA,oCAAoC,uBAAuB;AAC3D,oCAAoC,wBAAwB;AAC5D,oCAAoC,WAAW;AAC/C,oCAAoC,YAAY;AAChD,oCAAoC,iBAAiB;AACrD,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,sDAAO;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,QAAQ;AACrB,oCAAoC,WAAW;AAC/C,oCAAoC,WAAW,cAAc,4BAA4B;AACzF,oCAAoC,WAAW,cAAc,uBAAuB;AACpF,oCAAoC,WAAW,cAAc,qBAAqB;AAClF,oCAAoC,WAAW,cAAc,iBAAiB;AAC9E,cAAc;AACd;AACA,qBAAqB;AACrB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA,+DAA+D;AAC/D,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,wBAAwB;AACrC,cAAc;AACd;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU,6DAAc,mBAAmB,6DAAc;AACzD;AACA;AACA;;AAEA,yBAAyB,gBAAgB;AACzC;;AAEA;AACA;AACA,aAAa,wBAAwB;AACrC,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,UAAU;AACvB,oCAAoC,uBAAuB,8BAA8B;AACzF,oCAAoC,uBAAuB,sDAAsD;AACjH,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,kBAAkB,uDAAQ;AAC1B;AACA,yBAAyB,gBAAgB;AACzC;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,mCAAmC,kBAAkB;AACrD,mCAAmC,kBAAkB;AACrD,mCAAmC,kBAAkB;AACrD,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,wBAAwB,aAAa;AACrC,wBAAwB,uBAAuB;AAC/C,cAAc;AACd;AACA;AACA;;AAEA,oBAAoB,mBAAmB,8DAAe;AACtD,yBAAyB,eAAe;AACxC;;AAEA;AACA;AACA,gCAAgC,iBAAiB;AACjD,cAAc;AACd;AACA,gBAAgB,8CAA8C,IAAI;AAClE,iCAAiC,yBAAyB;AAC1D,eAAe;;AAEf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,mCAAmC,SAAS;AAC5C,mCAAmC,SAAS;AAC5C,mCAAmC,UAAU;AAC7C,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,oCAAoC,sBAAsB,gCAAgC;AAC1F,oCAAoC,yBAAyB,gCAAgC;AAC7F,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,yBAAyB,cAAc;AACvC;;AAEA;AACA;AACA,oCAAoC,uBAAuB,uDAAuD;AAClH,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,oBAAoB;AACpB,sBAAsB;AACtB;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAY,uDAAQ;AACpB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,SAAS,uDAAQ;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yBAAyB,eAAe;AACxC;;AAEA;AACA;AACA,oCAAoC,uBAAuB,6BAA6B;AACxF,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,iBAAiB;AAC1C;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,UAAU;AACvB,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACp4BA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACO;AACP;AACA,+BAA+B,mBAAmB;AAClD;AACA;;AAEA;AACA;AACA;AACO;AACP;AACA,+BAA+B,mBAAmB;AAClD;AACA;;AAEA;AACA;AACA;AACO;AACP;AACA,+BAA+B,mBAAmB;AAClD;AACA;;AAEA;AACA;AACA;AACO;;AAEP;AACA;AACA;AACO;AACP;AACA,0BAA0B,KAAK;AAC/B;AACA;;AAEA;AACA;AACA;AACO;;AAEP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;ACpDmB;AACgB;;AAEnC;AACA;;AAEA;AACA,aAAa,mDAAO;AACpB;AACA,qBAAqB,OAAO,WAAW,aAAa,SAAS,KAAK;AAClE;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,gBAAgB,oDAAU;AAC1B;;AAEA;AACA,gBAAgB,oDAAU;AAC1B;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;;AAEO;AACP,UAAU,mBAAmB;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,yDAAe;AAChC,IAAI,sBAAsB,yDAAe;AACzC;AACA;AACA,IAAI;AACJ;AACA;;AAEA,WAAW,kCAAkC,oDAAU;AACvD;;AAEO;AACP,UAAU,gCAAgC;AAC1C;AACA,iBAAiB,oDAAU;;AAE3B;AACA;;AAEA;AACA;AACA,eAAe,oDAAU;AACzB,IAAI;AACJ;AACA,eAAe,oDAAU;AACzB,IAAI;AACJ;AACA;;AAEA,UAAU,aAAa;AACvB,WAAW,qBAAqB,oDAAU;AAC1C;;AAEO;AACP,UAAU,mBAAmB;AAC7B;AACA,WAAW,kBAAkB,oDAAU;AACvC;;AAEO;AACP,UAAU,gBAAgB;AAC1B,UAAU,aAAa;AACvB,WAAW,qBAAqB,oDAAU;AAC1C;;AAEO;AACP,oBAAoB,mDAAS;AAC7B,gBAAgB,wDAAc,oBAAoB,yDAAe;AACjE,mBAAmB,wDAAc;;AAEjC;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA,IAAI;AACJ;;AAEO;AACP,oBAAoB,mDAAS;AAC7B,mBAAmB,wDAAc,iBAAiB,oDAAU;;AAE5D;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;;AAEO;AACP,oBAAoB,mDAAS;AAC7B,iBAAiB,wDAAc;AAC/B,eAAe,wDAAc,aAAa,qDAAW;;AAErD;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA,IAAI;AACJ;;AAEO;AACP,UAAU,oCAAoC;AAC9C;AACA,MAAM,wDAAc;AACpB;AACA,kBAAkB,wDAAc;AAChC,kBAAkB,wDAAc;AAChC,uBAAuB,wDAAc;;AAErC;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA,IAAI;AACJ;;;;;;;;;;;;;;;;;AChKsC;;AAEtC;AACA,4CAA4C,qBAAqB;AACjE;AACA,oBAAoB,+DAAmB;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gCAAgC,eAAe;;AAE/C;AACA,+BAA+B,mBAAmB;AAClD;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,6BAAe,oCAAU;AACzB;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC,kBAAkB;AAClD;;AAEA;AACA;AACA;AACA;;AAEA,mBAAmB,+DAAmB;;AAEtC;AACA,WAAW,+DAAmB;AAC9B;AACA;AACA,IAAI;AACJ;AACA;AACA;;;;;;;;;;;;;;;;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEO;AACP;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEO,sBAAsB,iBAAiB;AAC9C,uBAAuB,4CAA4C,EAAE,OAAO;AAC5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1EwC;AACP;;AAEjC;AACA;AACA;;AAEA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;;AAEA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;;AAEA;;AAEA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;;AAEA;;AAEA;;AAEA;;AAEA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,4CAA4C,eAAe;AAC3D;AACA,6CAA6C,eAAe;AAC5D;AACA,yCAAyC,eAAe;AACxD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,UAAU,EAAE,SAAS,aAAa,UAAU,EAAE,QAAQ;AAC7E;;AAEO;AACP;AACA;AACA,mBAAmB,8CAAI;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,mDAAkB;AACrC;AACA,mBAAmB,iDAAgB;AACnC;AACA,mBAAmB,8DAA6B;AAChD;AACA,mBAAmB,kDAAiB;AACpC;AACA,mBAAmB,kDAAiB;AACpC;AACA,mBAAmB,oDAAmB;AACtC;AACA,mBAAmB,0DAAyB;AAC5C;AACA,mBAAmB,+DAA8B;AACjD;AACA,mBAAmB,8DAA6B;AAChD;AACA,mBAAmB,uDAAsB;AACzC;AACA,mBAAmB,6DAA4B;AAC/C;AACA,mBAAmB,kEAAiC;AACpD;AACA,mBAAmB,iEAAgC;AACnD;AACA,mBAAmB,uDAAsB;AACzC;AACA,mBAAmB,qDAAoB;AACvC;AACA,mBAAmB,sDAAqB;AACxC;AACA,mBAAmB,sDAAqB;AACxC;AACA,mBAAmB,oEAAmC;AACtD;AACA,mBAAmB,kEAAiC;AACpD;AACA,mBAAmB,kEAAiC;AACpD;AACA,mBAAmB,mEAAkC;AACrD;AACA,mBAAmB,mEAAkC;AACrD;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxOA;AACA;AACA;;AAEA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC/KwC;AACA;AACH;;AAErC;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK,mDAAkB;AACvB,MAAM,iDAAgB;AACtB,OAAO,kDAAiB;AACxB,QAAQ,kDAAiB;AACzB,KAAK,oDAAmB;AACxB,MAAM,0DAAyB;AAC/B,OAAO,+DAA8B;AACrC,QAAQ,8DAA6B;AACrC,KAAK,uDAAsB;AAC3B,MAAM,6DAA4B;AAClC,OAAO,kEAAiC;AACxC,QAAQ,iEAAgC;AACxC,KAAK,uDAAsB;AAC3B,MAAM,qDAAoB;AAC1B,OAAO,sDAAqB;AAC5B,QAAQ,sDAAqB;AAC7B,KAAK,oEAAmC;AACxC,MAAM,kEAAiC;AACvC,OAAO,mEAAkC;AACzC,QAAQ,mEAAkC;AAC1C;;AAEA;AACA;AACA;;AAEe;AACf,iCAAiC;AACjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA,wBAAwB,sCAAsC;AAC9D;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA,wBAAwB,kCAAkC;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAoB,sCAAsC;AAC1D;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD,uBAAuB;AACvE;AACA;;AAEA,8BAA8B;AAC9B,0CAA0C,uBAAuB;AACjE;AACA;;AAEA,mCAAmC;AACnC,0CAA0C,uBAAuB;AACjE;AACA;;AAEA,+BAA+B;AAC/B,0CAA0C,uBAAuB;AACjE;AACA;;AAEA;AACA;AACA;AACA,aAAa,kDAAQ;AACrB;;AAEA,mBAAmB;;AAEnB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA,YAAY,4DAA2B;AACvC,qBAAqB,mCAAmC;AACxD;AACA;AACA,YAAY,yDAAwB;AACpC,kCAAkC,gBAAgB,IAAI,+BAA+B;AACrF;AACA;AACA,YAAY,2DAA0B;AACtC;AACA,6BAA6B,kBAAkB,IAAI,gDAAgD;AACnG;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,OAAO;AACP;AACA,uBAAuB,uDAAsB,wBAAwB,aAAa;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,4CAA4C;AAC9E;AACA;AACA,kCAAkC,2CAA2C;AAC7E;AACA;AACA,kCAAkC,4CAA4C;AAC9E;AACA;AACA,+CAA+C,0CAA0C;AACzF;AACA;AACA,+CAA+C,yCAAyC;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,gBAAgB;AACnE;AACA,mDAAmD,gBAAgB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,kCAAkC;AAC3D;AACA;AACA;AACA;AACA,yBAAyB,kCAAkC;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,kBAAkB;AAC3C;AACA;AACA;AACA;AACA,yBAAyB,kBAAkB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,iBAAiB;AACpE;AACA;AACA;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,OAAO;AACP;AACA;AACA,kBAAkB,cAAc;AAChC;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACvYe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,YAAY,IAAI,iBAAiB;AACjD,MAAM;AACN;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACb2D;AACnB;AACF;AACA;AACM;;AAE5C;;AAEA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C;AAC1C,UAAU,wBAAwB,QAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA,YAAY,4BAA4B;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,0BAA0B,eAAe;AACzC;;AAEA;AACA,0BAA0B,gBAAgB;AAC1C;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,SAAS;AAC3B,eAAe,wDAAY;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,QAAQ;AAC1B,eAAe,wDAAY;AAC3B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,YAAY,6BAA6B;;AAEzC;AACA,yBAAyB;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,iDAAiD,iDAAO;AACxD,aAAa,kDAAQ;AACrB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,UAAU,cAAc,UAAU;AACpF,6BAA6B,iEAAe;AAC5C;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,2CAA2C,+DAAmB;AAC9D;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;;AAEA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB,sBAAsB,qDAAW;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN,aAAa,2DAA0B;AACvC;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;AACA;AACA;;AAEA;AACA,sCAAsC,kEAAsB;AAC5D;AACA;AACA,gDAAgD,2EAA+B;AAC/E,8CAA8C,0EAA8B;AAC5E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,sBAAsB,0CAA0C,IAAI;AACpE;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,2BAA2B,UAAU;AACrC,yBAAyB,UAAU;AACnC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yBAAyB;AACzB,wBAAwB,4BAA4B;AACpD;;AAEA,6BAA6B;AAC7B,wBAAwB,6BAA6B;AACrD;;AAEA;AACA,8CAA8C,+CAAc;AAC5D,8BAA8B,gCAAgC,IAAI,eAAe;AACjF;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,8CAA8C,iDAAgB;AAC9D;AACA,cAAc;AACd,cAAc,iBAAiB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,kDAAiB;AAC7B;AACA;AACA;AACA;AACA,yBAAyB;AACzB,gCA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A2B;AAC7C;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEA;;AAEO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;AC7UmG;AAC5D;AACmB;AACd;AACN;AACgB;AACO;;AAE7D;;AAEA;AACA,WAAW,4BAA4B,uDAAW;AAClD;;AAEA;AACA,yBAAyB,KAAK;AAC9B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,4BAA4B,sDAAY;AACnD;;AAEA;AACA,WAAW;AACX;;AAEA;AACA,iCAAiC;AACjC;;AAEA;AACA,cAAc,sDAAU;AACxB,UAAU,sDAAU,QAAQ,EAAE;AAC9B,YAAY,sDAAU,QAAQ,EAAE;AAChC,WAAW,sDAAU,QAAQ,EAAE;AAC/B,UAAU,sDAAU,QAAQ,EAAE;AAC9B,eAAe,sDAAU,QAAQ,IAAI;AACrC,iBAAiB,sDAAU,QAAQ,IAAI;AACvC,eAAe,sDAAU,QAAQ,IAAI;AACrC,gBAAgB,sDAAU,QAAQ,IAAI;AACtC,gBAAgB,sDAAU,QAAQ,IAAI;AACtC,gBAAgB,sDAAU,QAAQ,IAAI;AACtC,wBAAwB,qEAAqE;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,oDAAc;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,oDAAc;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,gBAAgB,QAAQ,WAAW;AAC9E;AACA,2CAA2C,gBAAgB,IAAI,WAAW;AAC1E;AACA;AACA;AACA,mCAAmC,MAAM;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA,UAAU,cAAc;;AAExB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,2DAA2D,EAAE,GAAG,SAAS;AACzE,cAAc,GAAG;AACjB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU,wDAAc;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,uBAAuB;AACvB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO,qDAAW;AAClB,WAAW,iEAAe;AAC1B;;AAEA,OAAO,qDAAW;AAClB;AACA,iBAAiB,iEAAe;AAChC;AACA;AACA;;AAEA,OAAO,qDAAW;AAClB;AACA;;AAEA,OAAO,qDAAW;AAClB;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA,OAAO,qDAAW;AAClB,gBAAgB,qDAAW;AAC3B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG,IAAI;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA,yBAAyB,+DAAmB;AAC5C;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,qBAAqB,4EAAgC;;AAErD;AACA;AACA;;AAEA,oBAAoB,4DAAgB;AACpC;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEO;AACP,mCAAmC,iEAAqB;AACxD;AACA;;AAEA;AACA,aAAa;AACb,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,wDAAc,kBAAkB,wDAAc;AACtD,gBAAgB,qEAA6B;AAC7C;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEO;AACP,UAAU,8CAA8C;AACxD;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChbA;AACA;AACA;AACA;AACA;;AAEoD;;AAEpD;AACA;AACA;;AAEA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;AAEA;;AAEO;AACP;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA,GAAG;AACH;;AAEO;AACP;AACA;AACA;AACA,GAAG,IAAI;AACP;;AAEO;AACP;AACA;;AAEA;;AAEO;AACP;AACA;;AAEA;AACO;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEO;AACP;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yEAAyE;AACzE;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA,IAAI;AACJ;;AAEA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;;AAEA;AACO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEO;AACP;AACA;AACA,cAAc,4DAAoB,uBAAuB,MAAM;AAC/D;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,KAAK,EAAE,mBAAmB,GAAG,qBAAqB;AAClE;AACA,gBAAgB,KAAK,EAAE,MAAM,EAAE,kBAAkB,QAAQ,OAAO;AAChE;AACA,gBAAgB,KAAK,EAAE,mBAAmB,EAAE,qBAAqB;AACjE;AACA,2CAA2C,QAAQ;AACnD;AACA;;AAEO;AACP;AACA;;AAEO;AACP,eAAe,MAAM,sBAAsB,MAAM,oBAAoB,MAAM;;;;;;;;;;;;;;;;;;;;;AChR3E;AACA;AACA;;AAE8B;AACc;AACc;AACR;;AAEU;;AAErD;AACP;AACA,MAAM,qDAAW;AACjB;AACA,IAAI,0BAA0B,gDAAI;AAClC;AACA,IAAI,SAAS,kDAAQ;AACrB;AACA;AACA,4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B,OAAO,0BAA0B;AAC7O;AACe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,cAAc;AACd;AACA;AACA;AACA,gBAAgB,4DAAoB;AACpC;;AAEA,sCAAsC,wDAAO,gBAAgB,wDAAO;;AAEpE,QAAQ,mEAAuB;AAC/B,gBAAgB,4DAAoB;AACpC,MAAM;AACN,4BAA4B,SAAS;AACrC;AACA;;AAEA;AACA;AACA,aAAa,sBAAsB;AACnC,aAAa,sBAAsB;AACnC,cAAc;AACd;AACA;AACA,uBAAuB,8DAAgB;AACvC,iBAAiB,8DAAgB;;AAEjC;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA,aAAa,sBAAsB;AACnC,aAAa,wBAAwB;AACrC,cAAc;AACd;AACA;AACA,gBAAgB,qEAAyB;AACzC,WAAW,8DAAgB;AAC3B;AACA;;AAEA;AACA;AACA,aAAa,sBAAsB;AACnC,aAAa,wBAAwB;AACrC,cAAc;AACd;AACA;AACA,gBAAgB,qEAAyB;AACzC,WAAW,8DAAgB;AAC3B;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ,0BAA0B,wBAAwB,gBAAgB;AACvF;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAgB;AAChC;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA,cAAc,4DAAgB;AAC9B;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oBAAoB,4DAAgB;AACpC;AACA;AACA;AACA,QAAQ;AACR,oBAAoB,4DAAgB;AACpC;AACA;AACA;AACA;AACA;AACA,wDAAwD,KAAK;AAC7D;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,uBAAuB;AACpC;AACA,aAAa,QAAQ;AACrB,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,UAAU;AACvB,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,UAAU;AACvB,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,UAAU;AACvB,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,UAAU;AACvB,aAAa,UAAU;AACvB,cAAc;AACd;AACA,QAAQ,aAAa,IAAI;AACzB;AACA;AACA;;AAEA;AACA;AACA,aAAa,aAAa;AAC1B,cAAc;AACd;AACA;AACA;AACA;AACA,aAAa,0DAAgB;AAC7B;AACA;AACA;AACA,UAAU,IAAI;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa,wBAAwB;AACrC,cAAc;AACd;AACA;AACA,gBAAgB,qEAAyB;;AAEzC;AACA;AACA;;AAEA,UAAU,IAAI;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,UAAU;AACvB,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,UAAU;AACvB,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,UAAU;AACvB,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,UAAU;AACvB,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,UAAU;AACvB,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,UAAU;AACvB,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,UAAU;AACvB,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,sBAAsB;AAChC,UAAU,sBAAsB;AAChC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,aAAa;AAC1B,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,eAAe,gBAAgB,IAAI,eAAe;AAClD;;AAEA;AACA;AACA;AACA,aAAa,QAAQ,4BAA4B;AACjD,cAAc;AACd;AACA;AACA;AACA,cAAc,mBAAmB,GAAG,mBAAmB;AACvD;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,cAAc,mBAAmB,GAAG,mBAAmB;AACvD;;AAEA;AACA;AACA;AACA;AACA,aAAa,QAAQ,4BAA4B;AACjD,cAAc;AACd;AACA;AACA;AACA,cAAc,uBAAuB,GAAG,uBAAuB;AAC/D;;AAEA;AACA;AACA,aAAa,QAAQ,iFAAiF,yBAAyB;AAC/H,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,cAAc;AACd;AACA,yBAAyB,oBAAoB,IAAI;AACjD;AACA,cAAc,4BAA4B,EAAE,UAAU,EAAE,4BAA4B;AACpF;;AAEA;AACA;AACA,aAAa,iBAAiB;AAC9B,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,8EAA8E;AAC9E,oFAAoF;AACpF,kGAAkG;AAClG,6GAA6G;AAC7G,uFAAuF;AACvF,cAAc;AACd;AACA;AACA;AACA,aAAa,4DAAgB;AAC7B;AACA;AACA;;AAEA;AACA;AACA,aAAa,UAAU;AACvB,cAAc;AACd;AACA,wFAAwF,UAAU;AAClG;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9lBqC;AACA;AACA;AACR;AACA;AAC4B;AACd;AACM;AACF;AACV;;AAErC;;AAcE;;;;;;;;;;;;;;;;;;;;ACzB6C;AACJ;AACL;;AAEa;;AAEnD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACe;AACf;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,WAAW,gEAAa,cAAc,qEAAmB;AACzD;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA,IAAI,kEAAiB;AACrB,IAAI,qEAAmB;AACvB;AACA;;;;;;;;;;;;;;;;;AC9HkD;;AAElD;AACA;AACA;AACe;AACf;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,cAAc,2DAAmB;AACjC;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,cAAc,2DAAmB;AACjC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,cAAc,2DAAmB;AACjC;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,cAAc;AACd;AACA;AACA,cAAc,2DAAmB;AACjC;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;AACA,cAAc;AACd;AACA;AACA,cAAc,2DAAmB;AACjC;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,cAAc;AACd;AACA;AACA,cAAc,2DAAmB;AACjC;;AAEA;AACA;AACA;AACA,aAAa,MAAM;AACnB,cAAc;AACd;AACA;AACA,cAAc,2DAAmB;AACjC;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,cAAc,2DAAmB;AACjC;AACA;;;;;;;;;;;;;;;;;;AC1FyF;AAC3D;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,sBAAsB;AACxC,YAAY,cAAc;AAC1B;;AAEA;AACA;AACA,MAAM,UAAU,0DAAW;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB;AAChB;AACe,uBAAuB,gDAAI;AAC1C;AACA,aAAa,QAAQ;AACrB,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA,qJAAqJ;AACrJ,aAAa,QAAQ;AACrB;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,gBAAgB;AACzD;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,gBAAgB;AACnC,WAAW,4DAAa;AACxB;;AAEA;AACA;AACA,WAAW,2DAAY;AACvB;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,2DAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC5L6D;AAC/B;;AAE9B;;AAEA;AACA;AACA,gBAAgB;AAChB;AACe,8BAA8B,gDAAI;AACjD;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,wCAAwC,IAAI,SAAS,EAAE;AACvD;AACA,mCAAmC,2DAAY;AAC/C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,4CAA4C,2DAAY,uBAAuB;AAC/E;;AAEA;AACA;AACA;AACA,MAAM;AACN,uBAAuB,2DAAY,wBAAwB;AAC3D;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,2DAAY;AACvB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACrG8B;;AAE9B;AACA;AACA,gBAAgB;AAChB;AACe,0BAA0B,gDAAI;AAC7C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACpD8D;AAChC;;AAE9B;;AAEA;AACA;AACA,gBAAgB;AAChB;AACe,yBAAyB,gDAAI;AAC5C;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,gBAAgB;AACnC,WAAW,4DAAa;AACxB;;AAEA;AACA;AACA,WAAW,2DAAY;AACvB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5DA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,UAAU;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB,cAAc;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0LAA0L,IAAI;AAC9L;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,YAAY;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,YAAY;AACpC;AACA,kDAAkD,+BAA+B;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB;AACrB,uBAAuB;AACvB,mBAAmB,EAAE,GAAG;AACxB,mBAAmB,EAAE,GAAG;AACxB,wBAAwB,EAAE,GAAG;AAC7B,2BAA2B;AAC3B,+BAA+B;AAC/B,mCAAmC;AACnC,sBAAsB,IAAI,GAAG;AAC7B,sBAAsB,IAAI,GAAG;AAC7B,2BAA2B,IAAI,GAAG;AAClC,6BAA6B;AAC7B,gCAAgC;AAChC,0CAA0C;AAC1C,oDAAoD;AACpD,sCAAsC,IAAI,KAAK;AAC/C;AACA;AACA,yBAAyB,MAAM,2DAA2D,MAAM,mBAAmB,MAAM,qBAAqB,MAAM,EAAE,IAAI;AAC1J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,mBAAmB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kCAAkC;AACrD;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,EAAE;AAClD,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,OAAO;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,IAAI;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,QAAQ;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA,0DAA0D,QAAQ;AAClE,2DAA2D,aAAa;AACxE;AACA;AACA,4BAA4B,4BAA4B,IAAI,iCAAiC;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA,4DAA4D,kDAAkD;AAC9G,6DAA6D,uDAAuD;AACpH,2DAA2D,qDAAqD;AAChH;AACA;AACA,4BAA4B,8BAA8B,IAAI,mCAAmC,IAAI,iCAAiC;AACtI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA,oBAAoB,QAAQ;AAC5B;AACA;AACA,4CAA4C,sBAAsB;AAClE;AACA,kDAAkD,qBAAqB;AACvE,uDAAuD,sBAAsB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA,8CAA8C,sBAAsB;AACpE;AACA;AACA,oDAAoD,qBAAqB;AACzE,yDAAyD,sBAAsB;AAC/E,uDAAuD,oBAAoB;AAC3E;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,0CAA0C,8CAA8C;AACxF;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA,0EAA0E;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,eAAe;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,mBAAmB;AAC5C;AACA;AACA;AACA,mDAAmD,MAAM;AACzD;AACA;AACA,sBAAsB,mBAAmB;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kBAAkB,GAAG,EAAE,IAAI;AAC3B,KAAK;AACL;AACA;AACA;AACA;AACA,kBAAkB,GAAG,EAAE,IAAI,EAAE,IAAI;AACjC,KAAK;AACL;AACA;AACA;AACA,kBAAkB,GAAG,EAAE,IAAI;AAC3B,KAAK;AACL;AACA;AACA;AACA;AACA,kBAAkB,GAAG,EAAE,IAAI,EAAE,IAAI;AACjC,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,MAAM;AACN;AACA,mEAAmE,KAAK;AACxE,wEAAwE,KAAK;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,cAAc;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC,IAAI;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,MAAM;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,uBAAuB;AAC7E;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yCAAyC,EAAE,IAAI,EAAE;AACjD,sCAAsC,EAAE,IAAI,EAAE;AAC9C;AACA;AACA,6BAA6B,EAAE;AAC/B,uBAAuB,EAAE;AACzB,yBAAyB,EAAE;AAC3B,uBAAuB,EAAE;AACzB,qBAAqB,EAAE,IAAI,EAAE;AAC7B,oBAAoB,EAAE;AACtB,2BAA2B,GAAG;AAC9B,qBAAqB,EAAE;AACvB;AACA,uBAAuB,EAAE,IAAI,EAAE;AAC/B,sBAAsB,EAAE,IAAI,EAAE;AAC9B,oBAAoB,EAAE;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,IAAI,0DAA0D,IAAI,qEAAqE,EAAE;AACrM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,OAAO;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,OAAO;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mCAAmC,OAAO;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE,IAAI;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,+BAA+B;AAC/C;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,mBAAmB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,sBAAsB;AACtC;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAiC,SAAS,gBAAgB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,iBAAiB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,eAAe,IAAI;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,kDAAkD,mCAAmC;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,yEAAyE,CAAE;AAC3E,SAAS;AACT;AACA,yEAAyE,CAAE;AAC3E,SAAS;AACT;AACA,yEAAyE,CAAE;AAC3E,SAAS;AACT;AACA,yEAAyE,CAAE;AAC3E,SAAS;AACT;AACA,8FAA8F,CAAE;AAChG,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,0CAA0C,IAAI,IAAI,IAAI;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,KAAK;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAE8zB;;;;;;;;;;;;;;;;;;;;;;ACttO9zB;AACA;AACA;AACA;;AAEA,MAAMuvnB,cAAN,CAAqB;AAGrB;AACA;AACA;AACA;;;AACA,MAAMC,UAAN,CAAiB;AACbxnpB,EAAAA,WAAW,EACX;AACA+tE,EAAAA,KAFW,EAEJgnB,OAFI,EAGX;AACAk7C,EAAAA,YAJW,EAIG;AACV,SAAKliE,KAAL,GAAaA,KAAb;AACA,SAAKgnB,OAAL,GAAeA,OAAf;AACA,SAAKk7C,YAAL,GAAoBA,YAApB;AACH;;AATY,EAYjB;;;AACA,MAAMw3gB,eAAN,CAAsB;AAClB;AACJ;AACA;AACA;AACA;AACIznpB,EAAAA,WAAW,CAACsyF,iBAAD,EAAoBzB,SAApB,EAA+Bub,WAA/B,EAA4CoV,SAA5C,EAAuDkmiB,yBAAvD,EAAkFC,OAAlF,EAA2FC,eAA3F,EAA4GC,WAA5G,EAAyH;AAChI,SAAKv1jB,iBAAL,GAAyBA,iBAAzB;AACA,SAAKzB,SAAL,GAAiBA,SAAjB;AACA,SAAKub,WAAL,GAAmBA,WAAnB;AACA,SAAKoV,SAAL,GAAiBA,SAAjB;AACA,SAAKkmiB,yBAAL,GAAiCA,yBAAjC;AACA,SAAKC,OAAL,GAAeA,OAAf;AACA,SAAKC,eAAL,GAAuBA,eAAvB;AACA,SAAKC,WAAL,GAAmBA,WAAnB;AACA,SAAKC,YAAL,GAAoB,IAAIrwkB,uDAAJ,EAApB;AACA,SA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MAAAA,QAAQ,EAAE+gjB,aADP;AAEH9gjB,MAAAA,SAAS,EAAE,CAACq/iB,kFAAD,EAAyBE,yEAAzB;AAFR,KAAP;AAIH;;AANe;;AAQpBuB,aAAa,CAAClqmB,IAAd;AAAA,mBAA0GkqmB,aAA1G;AAAA;;AACAA,aAAa,CAACxmmB,IAAd,kBAlagG/F,8DAkahG;AAAA,QAA2GusmB;AAA3G;AACAA,aAAa,CAACvmmB,IAAd,kBAnagGhG,8DAmahG;AAAA,YAAoI,CAACiB,yDAAD,CAApI;AAAA;;AACA;AAAA,qDApagGjB,+DAoahG,CAA2FusmB,aAA3F,EAAsH,CAAC;AAC3G5npB,IAAAA,IAAI,EAAE67C,mDADqG;AAE3G3pD,IAAAA,IAAI,EAAE,CAAC;AACCujD,MAAAA,OAAO,EAAE,CAAC6G,yDAAD,CADV;AAECgF,MAAAA,YAAY,EAAE,CAAC62mB,gBAAD,EAAmBolB,yBAAnB,CAFf;AAGClmrB,MAAAA,OAAO,EAAE,CAAC8gqB,gBAAD,CAHV;AAICqF,MAAAA,eAAe,EAAE,CAAC+f,yBAAD;AAJlB,KAAD;AAFqG,GAAD,CAAtH;AAAA;AAUA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxc0C;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC,8BAA8B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;AACA,8BAA8B,6BAA6B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,2BAA2B,YAAY;AACvC;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS,wDAAS;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEwO;;;;;;;;;;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MAAAA,QAAQ,EAAE,YAAZ;AAA0BtL,MAAAA,QAAQ,EAAG;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAzImB;AAyIZ2L,MAAAA,UAAU,EAAE,CACKjF,4DAAO,CAAC,kBAAD,EAAqB,CACxB9oD,0DAAK,CAAC,gBAAD,EAAmB+oD,0DAAK,CAAC;AAC1Bh4B,QAAAA,SAAS,EAAE,sBADe;AAE1B08B,QAAAA,OAAO,EAAE;AAFiB,OAAD,CAAxB,CADmB,EAKxBzE,+DAAU,CAAC,iBAAD,EAAoB,CAC1BD,0DAAK,CAAC;AAAE0E,QAAAA,OAAO,EAAE,CAAX;AAAc18B,QAAAA,SAAS,EAAE;AAAzB,OAAD,CADqB,EAE1Bk4B,4DAAO,CAAC,0BAAD,EAA6BF,0DAAK,CAAC;AAAE0E,QAAAA,OAAO,EAAE,CAAX;AAAc18B,QAAAA,SAAS,EAAE;AAAzB,OAAD,CAAlC,CAFmB,CAApB,CALc,EASxBi4B,+DAAU,CAAC,iBAAD,EAAoB,CAC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5G3pD,IAAAA,IAAI,EAAE,CAAC;AACCujD,MAAAA,OAAO,EAAE,CAAC6G,yDAAD,EAAe83oB,wDAAf,EAA6BT,qDAA7B,EAA2CU,wDAA3C,CADV;AAECh9rB,MAAAA,OAAO,EAAE,CAAC6msB,QAAD,EAAW9J,wDAAX,EAAyBT,qDAAzB,CAFV;AAGCryoB,MAAAA,YAAY,EAAE,CAAC48oB,QAAD;AAHf,KAAD;AAFsG,GAAD,CAAvH;AAAA;AASA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACpvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,2DAA2D;AACpH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,2DAA2D;AACpH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA,wBAAwB,mCAAmC;AAC3D;AACA;AACA;AACA;AACA;AACA,4BAA4B,mCAAmC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEqD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7gBrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAkB+F7ipB,IAAAA,4DAMnF;AANmFA,IAAAA,oDAM3D;AAN2DA,IAAAA,0DAMzC;;;;mBANyCA;AAAAA,IAAAA,uDAM3D;AAN2DA,IAAAA,+DAM3D;;;;;;AAN2DA,IAAAA,gEAOnF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAPmFA,IAAAA,qEAy1B/E;AAz1B+EA,IAAAA,oDAy1BnC;AAz1BmCA,IAAAA,mEAy1BjB;;;;mBAz1BiBA;AAAAA,IAAAA,uDAy1BnC;AAz1BmCA,IAAAA,+DAy1BnC;;;;;;AAz1BmCA,IAAAA,gEA01B/E;;;;;;;;;;;;;AA11B+EA,IAAAA,4DAw1BnF;AAx1BmFA,IAAAA,wDAy1B/E;AAz1B+EA,IAAAA,wDA01B/E;AA11B+EA,IAAAA,0DA21Bn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A6B,UAAU;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,SAAS;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,gBAAgB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iBAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO,EAAE,OAAO;AAC9B;;AAEA;AACA;AACA;AACA,iFAAiF;AACjF;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEsE","sources":["./node_modules/@angular/cdk/__ivy_ngcc__/fesm2015/bidi.js","./node_modules/@angular/cdk/__ivy_ngcc__/fesm2015/collections.js","./node_modules/@angular/cdk/__ivy_ngcc__/fesm2015/platform.js","./node_modules/@angular/cdk/__ivy_ngcc__/fesm2015/scrolling.js","./node_modules/@angular/cdk/fesm2015/coercion.js","./node_modules/@angularclass/hmr/dist/helpers.js","./node_modules/@popperjs/core/lib/createPopper.js","./node_modules/@popperjs/core/lib/dom-utils/contains.js","./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","./node_modules/@popperjs/core/lib/dom-utils/getWindow.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/instanceOf.js","./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","./node_modules/@popperjs/core/lib/enums.js","./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","./node_modules/@popperjs/core/lib/modifiers/arrow.js","./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","./node_modules/@popperjs/core/lib/modifiers/flip.js","./node_modules/@popperjs/core/lib/modifiers/hide.js","./node_modules/@popperjs/core/lib/modifiers/index.js","./node_modules/@popperjs/core/lib/modifiers/offset.js","./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","./node_modules/@popperjs/core/lib/popper-lite.js","./node_modules/@popperjs/core/lib/popper.js","./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","./node_modules/@popperjs/core/lib/utils/computeOffsets.js","./node_modules/@popperjs/core/lib/utils/debounce.js","./node_modules/@popperjs/core/lib/utils/detectOverflow.js","./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","./node_modules/@popperjs/core/lib/utils/format.js","./node_modules/@popperjs/core/lib/utils/getAltAxis.js","./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","./node_modules/@popperjs/core/lib/utils/getVariation.js","./node_modules/@popperjs/core/lib/utils/math.js","./node_modules/@popperjs/core/lib/utils/mergeByName.js","./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","./node_modules/@popperjs/core/lib/utils/orderModifiers.js","./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","./node_modules/@popperjs/core/lib/utils/uniqueBy.js","./node_modules/@popperjs/core/lib/utils/userAgent.js","./node_modules/@popperjs/core/lib/utils/validateModifiers.js","./node_modules/@popperjs/core/lib/utils/within.js","./node_modules/abp-ng2-module/__ivy_ngcc__/fesm2015/abp-ng2-module.js","./node_modules/angular2-counto/__ivy_ngcc__/index.js","./node_modules/angular2-counto/__ivy_ngcc__/src/counto.directive.js","./node_modules/angular2-counto/__ivy_ngcc__/src/counto.module.js","./node_modules/angular2-text-mask/__ivy_ngcc__/dist/angular2TextMask.js","./node_modules/just-compare/index.esm.js","./node_modules/localforage/dist/localforage.js","./node_modules/lodash/lodash.js","./node_modules/ng2-file-upload/__ivy_ngcc__/fesm2015/ng2-file-upload.js","./node_modules/ngx-image-cropper/__ivy_ngcc__/fesm2015/ngx-image-cropper.js","./node_modules/ngx-perfect-scrollbar/__ivy_ngcc__/fesm2015/ngx-perfect-scrollbar.js","./node_modules/ngx-spinner/fesm2015/ngx-spinner.js","./node_modules/object-path/index.js","./node_modules/perfect-scrollbar/dist/perfect-scrollbar.esm.js","./node_modules/push.js/bin/push.min.js","./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","./node_modules/rtl-detect/index.js","./node_modules/rtl-detect/lib/rtl-detect.js","./node_modules/rxjs/_esm2015/internal/BehaviorSubject.js","./node_modules/rxjs/_esm2015/internal/InnerSubscriber.js","./node_modules/rxjs/_esm2015/internal/Notification.js","./node_modules/rxjs/_esm2015/internal/Observable.js","./node_modules/rxjs/_esm2015/internal/Observer.js","./node_modules/rxjs/_esm2015/internal/OuterSubscriber.js","./node_modules/rxjs/_esm2015/internal/ReplaySubject.js","./node_modules/rxjs/_esm2015/internal/Scheduler.js","./node_modules/rxjs/_esm2015/internal/Subject.js","./node_modules/rxjs/_esm2015/internal/SubjectSubscription.js","./node_modules/rxjs/_esm2015/internal/Subscriber.js","./node_modules/rxjs/_esm2015/internal/Subscription.js","./node_modules/rxjs/_esm2015/internal/config.js","./node_modules/rxjs/_esm2015/internal/innerSubscribe.js","./node_modules/rxjs/_esm2015/internal/observable/ConnectableObservable.js","./node_modules/rxjs/_esm2015/internal/observable/combineLatest.js","./node_modules/rxjs/_esm2015/internal/observable/concat.js","./node_modules/rxjs/_esm2015/internal/observable/defer.js","./node_modules/rxjs/_esm2015/internal/observable/empty.js","./node_modules/rxjs/_esm2015/internal/observable/forkJoin.js","./node_modules/rxjs/_esm2015/internal/observable/from.js","./node_modules/rxjs/_esm2015/internal/observable/fromArray.js","./node_modules/rxjs/_esm2015/internal/observable/fromEvent.js","./node_modules/rxjs/_esm2015/internal/observable/merge.js","./node_modules/rxjs/_esm2015/internal/observable/of.js","./node_modules/rxjs/_esm2015/internal/observable/throwError.js","./node_modules/rxjs/_esm2015/internal/observable/timer.js","./node_modules/rxjs/_esm2015/internal/operators/audit.js","./node_modules/rxjs/_esm2015/internal/operators/auditTime.js","./node_modules/rxjs/_esm2015/internal/operators/catchError.js","./node_modules/rxjs/_esm2015/internal/operators/concatAll.js","./node_modules/rxjs/_esm2015/internal/operators/concatMap.js","./node_modules/rxjs/_esm2015/internal/operators/debounceTime.js","./node_modules/rxjs/_esm2015/internal/operators/defaultIfEmpty.js","./node_modules/rxjs/_esm2015/internal/operators/distinctUntilChanged.js","./node_modules/rxjs/_esm2015/internal/operators/filter.js","./node_modules/rxjs/_esm2015/internal/operators/finalize.js","./node_modules/rxjs/_esm2015/internal/operators/first.js","./node_modules/rxjs/_esm2015/internal/operators/last.js","./node_modules/rxjs/_esm2015/internal/operators/map.js","./node_modules/rxjs/_esm2015/internal/operators/mapTo.js","./node_modules/rxjs/_esm2015/internal/operators/mergeAll.js","./node_modules/rxjs/_esm2015/internal/operators/mergeMap.js","./node_modules/rxjs/_esm2015/internal/operators/multicast.js","./node_modules/rxjs/_esm2015/internal/operators/observeOn.js","./node_modules/rxjs/_esm2015/internal/operators/pairwise.js","./node_modules/rxjs/_esm2015/internal/operators/pluck.js","./node_modules/rxjs/_esm2015/internal/operators/refCount.js","./node_modules/rxjs/_esm2015/internal/operators/scan.js","./node_modules/rxjs/_esm2015/internal/operators/share.js","./node_modules/rxjs/_esm2015/internal/operators/shareReplay.js","./node_modules/rxjs/_esm2015/internal/operators/startWith.js","./node_modules/rxjs/_esm2015/internal/operators/switchMap.js","./node_modules/rxjs/_esm2015/internal/operators/take.js","./node_modules/rxjs/_esm2015/internal/operators/takeLast.js","./node_modules/rxjs/_esm2015/internal/operators/takeUntil.js","./node_modules/rxjs/_esm2015/internal/operators/tap.js","./node_modules/rxjs/_esm2015/internal/operators/throwIfEmpty.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleArray.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleIterable.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleObservable.js","./node_modules/rxjs/_esm2015/internal/scheduled/schedulePromise.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduled.js","./node_modules/rxjs/_esm2015/internal/scheduler/Action.js","./node_modules/rxjs/_esm2015/internal/scheduler/AnimationFrameAction.js","./node_modules/rxjs/_esm2015/internal/scheduler/AnimationFrameScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsapAction.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsapScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsyncAction.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsyncScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/QueueAction.js","./node_modules/rxjs/_esm2015/internal/scheduler/QueueScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/animationFrame.js","./node_modules/rxjs/_esm2015/internal/scheduler/asap.js","./node_modules/rxjs/_esm2015/internal/scheduler/async.js","./node_modules/rxjs/_esm2015/internal/scheduler/queue.js","./node_modules/rxjs/_esm2015/internal/symbol/iterator.js","./node_modules/rxjs/_esm2015/internal/symbol/observable.js","./node_modules/rxjs/_esm2015/internal/symbol/rxSubscriber.js","./node_modules/rxjs/_esm2015/internal/util/ArgumentOutOfRangeError.js","./node_modules/rxjs/_esm2015/internal/util/EmptyError.js","./node_modules/rxjs/_esm2015/internal/util/Immediate.js","./node_modules/rxjs/_esm2015/internal/util/ObjectUnsubscribedError.js","./node_modules/rxjs/_esm2015/internal/util/UnsubscriptionError.js","./node_modules/rxjs/_esm2015/internal/util/canReportError.js","./node_modules/rxjs/_esm2015/internal/util/hostReportError.js","./node_modules/rxjs/_esm2015/internal/util/identity.js","./node_modules/rxjs/_esm2015/internal/util/isArray.js","./node_modules/rxjs/_esm2015/internal/util/isArrayLike.js","./node_modules/rxjs/_esm2015/internal/util/isFunction.js","./node_modules/rxjs/_esm2015/internal/util/isInteropObservable.js","./node_modules/rxjs/_esm2015/internal/util/isIterable.js","./node_modules/rxjs/_esm2015/internal/util/isNumeric.js","./node_modules/rxjs/_esm2015/internal/util/isObject.js","./node_modules/rxjs/_esm2015/internal/util/isObservable.js","./node_modules/rxjs/_esm2015/internal/util/isPromise.js","./node_modules/rxjs/_esm2015/internal/util/isScheduler.js","./node_modules/rxjs/_esm2015/internal/util/noop.js","./node_modules/rxjs/_esm2015/internal/util/pipe.js","./node_modules/rxjs/_esm2015/internal/util/subscribeTo.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToArray.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToIterable.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToObservable.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToPromise.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToResult.js","./node_modules/rxjs/_esm2015/internal/util/toSubscriber.js","./node_modules/text-mask-core/dist/textMaskCore.js","./node_modules/zone.js/fesm2015/zone.js","./node_modules/core-js/es/array/index.js","./node_modules/core-js/es/date/index.js","./node_modules/core-js/es/function/index.js","./node_modules/core-js/es/map/index.js","./node_modules/core-js/es/math/index.js","./node_modules/core-js/es/number/index.js","./node_modules/core-js/es/object/index.js","./node_modules/core-js/es/parse-float.js","./node_modules/core-js/es/parse-int.js","./node_modules/core-js/es/reflect/index.js","./node_modules/core-js/es/regexp/index.js","./node_modules/core-js/es/set/index.js","./node_modules/core-js/es/string/index.js","./node_modules/core-js/es/symbol/index.js","./node_modules/core-js/internals/a-callable.js","./node_modules/core-js/internals/a-constructor.js","./node_modules/core-js/internals/a-possible-prototype.js","./node_modules/core-js/internals/add-to-unscopables.js","./node_modules/core-js/internals/advance-string-index.js","./node_modules/core-js/internals/an-instance.js","./node_modules/core-js/internals/an-object.js","./node_modules/core-js/internals/array-buffer-non-extensible.js","./node_modules/core-js/internals/array-copy-within.js","./node_modules/core-js/internals/array-fill.js","./node_modules/core-js/internals/array-for-each.js","./node_modules/core-js/internals/array-from.js","./node_modules/core-js/internals/array-includes.js","./node_modules/core-js/internals/array-iteration-from-last.js","./node_modules/core-js/internals/array-iteration.js","./node_modules/core-js/internals/array-last-index-of.js","./node_modules/core-js/internals/array-method-has-species-support.js","./node_modules/core-js/internals/array-method-is-strict.js","./node_modules/core-js/internals/array-reduce.js","./node_modules/core-js/internals/array-set-length.js","./node_modules/core-js/internals/array-slice-simple.js","./node_modules/core-js/internals/array-slice.js","./node_modules/core-js/internals/array-sort.js","./node_modules/core-js/internals/array-species-constructor.js","./node_modules/core-js/internals/array-species-create.js","./node_modules/core-js/internals/call-with-safe-iteration-closing.js","./node_modules/core-js/internals/check-correctness-of-iteration.js","./node_modules/core-js/internals/classof-raw.js","./node_modules/core-js/internals/classof.js","./node_modules/core-js/internals/collection-strong.js","./node_modules/core-js/internals/collection.js","./node_modules/core-js/internals/copy-constructor-properties.js","./node_modules/core-js/internals/correct-is-regexp-logic.js","./node_modules/core-js/internals/correct-prototype-getter.js","./node_modules/core-js/internals/create-html.js","./node_modules/core-js/internals/create-iter-result-object.js","./node_modules/core-js/internals/create-non-enumerable-property.js","./node_modules/core-js/internals/create-property-descriptor.js","./node_modules/core-js/internals/create-property.js","./node_modules/core-js/internals/date-to-iso-string.js","./node_modules/core-js/internals/date-to-primitive.js","./node_modules/core-js/internals/define-built-in-accessor.js","./node_modules/core-js/internals/define-built-in.js","./node_modules/core-js/internals/define-built-ins.js","./node_modules/core-js/internals/define-global-property.js","./node_modules/core-js/internals/delete-property-or-throw.js","./node_modules/core-js/internals/descriptors.js","./node_modules/core-js/internals/document-all.js","./node_modules/core-js/internals/document-create-element.js","./node_modules/core-js/internals/does-not-exceed-safe-integer.js","./node_modules/core-js/internals/engine-ff-version.js","./node_modules/core-js/internals/engine-is-ie-or-edge.js","./node_modules/core-js/internals/engine-is-node.js","./node_modules/core-js/internals/engine-user-agent.js","./node_modules/core-js/internals/engine-v8-version.js","./node_modules/core-js/internals/engine-webkit-version.js","./node_modules/core-js/internals/enum-bug-keys.js","./node_modules/core-js/internals/export.js","./node_modules/core-js/internals/fails.js","./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","./node_modules/core-js/internals/flatten-into-array.js","./node_modules/core-js/internals/freezing.js","./node_modules/core-js/internals/function-apply.js","./node_modules/core-js/internals/function-bind-context.js","./node_modules/core-js/internals/function-bind-native.js","./node_modules/core-js/internals/function-bind.js","./node_modules/core-js/internals/function-call.js","./node_modules/core-js/internals/function-name.js","./node_modules/core-js/internals/function-uncurry-this-raw.js","./node_modules/core-js/internals/function-uncurry-this.js","./node_modules/core-js/internals/get-built-in.js","./node_modules/core-js/internals/get-iterator-method.js","./node_modules/core-js/internals/get-iterator.js","./node_modules/core-js/internals/get-method.js","./node_modules/core-js/internals/get-substitution.js","./node_modules/core-js/internals/global.js","./node_modules/core-js/internals/has-own-property.js","./node_modules/core-js/internals/hidden-keys.js","./node_modules/core-js/internals/html.js","./node_modules/core-js/internals/ie8-dom-define.js","./node_modules/core-js/internals/indexed-object.js","./node_modules/core-js/internals/inherit-if-required.js","./node_modules/core-js/internals/inspect-source.js","./node_modules/core-js/internals/internal-metadata.js","./node_modules/core-js/internals/internal-state.js","./node_modules/core-js/internals/is-array-iterator-method.js","./node_modules/core-js/internals/is-array.js","./node_modules/core-js/internals/is-callable.js","./node_modules/core-js/internals/is-constructor.js","./node_modules/core-js/internals/is-data-descriptor.js","./node_modules/core-js/internals/is-forced.js","./node_modules/core-js/internals/is-integral-number.js","./node_modules/core-js/internals/is-null-or-undefined.js","./node_modules/core-js/internals/is-object.js","./node_modules/core-js/internals/is-pure.js","./node_modules/core-js/internals/is-regexp.js","./node_modules/core-js/internals/is-symbol.js","./node_modules/core-js/internals/iterate.js","./node_modules/core-js/internals/iterator-close.js","./node_modules/core-js/internals/iterator-create-constructor.js","./node_modules/core-js/internals/iterator-define.js","./node_modules/core-js/internals/iterators-core.js","./node_modules/core-js/internals/iterators.js","./node_modules/core-js/internals/length-of-array-like.js","./node_modules/core-js/internals/make-built-in.js","./node_modules/core-js/internals/math-expm1.js","./node_modules/core-js/internals/math-fround.js","./node_modules/core-js/internals/math-log10.js","./node_modules/core-js/internals/math-log1p.js","./node_modules/core-js/internals/math-sign.js","./node_modules/core-js/internals/math-trunc.js","./node_modules/core-js/internals/not-a-regexp.js","./node_modules/core-js/internals/number-is-finite.js","./node_modules/core-js/internals/number-parse-float.js","./node_modules/core-js/internals/number-parse-int.js","./node_modules/core-js/internals/object-assign.js","./node_modules/core-js/internals/object-create.js","./node_modules/core-js/internals/object-define-properties.js","./node_modules/core-js/internals/object-define-property.js","./node_modules/core-js/internals/object-get-own-property-descriptor.js","./node_modules/core-js/internals/object-get-own-property-names-external.js","./node_modules/core-js/internals/object-get-own-property-names.js","./node_modules/core-js/internals/object-get-own-property-symbols.js","./node_modules/core-js/internals/object-get-prototype-of.js","./node_modules/core-js/internals/object-is-extensible.js","./node_modules/core-js/internals/object-is-prototype-of.js","./node_modules/core-js/internals/object-keys-internal.js","./node_modules/core-js/internals/object-keys.js","./node_modules/core-js/internals/object-property-is-enumerable.js","./node_modules/core-js/internals/object-prototype-accessors-forced.js","./node_modules/core-js/internals/object-set-prototype-of.js","./node_modules/core-js/internals/object-to-array.js","./node_modules/core-js/internals/object-to-string.js","./node_modules/core-js/internals/ordinary-to-primitive.js","./node_modules/core-js/internals/own-keys.js","./node_modules/core-js/internals/path.js","./node_modules/core-js/internals/proxy-accessor.js","./node_modules/core-js/internals/regexp-exec-abstract.js","./node_modules/core-js/internals/regexp-exec.js","./node_modules/core-js/internals/regexp-flags.js","./node_modules/core-js/internals/regexp-get-flags.js","./node_modules/core-js/internals/regexp-sticky-helpers.js","./node_modules/core-js/internals/regexp-unsupported-dot-all.js","./node_modules/core-js/internals/regexp-unsupported-ncg.js","./node_modules/core-js/internals/require-object-coercible.js","./node_modules/core-js/internals/same-value.js","./node_modules/core-js/internals/set-species.js","./node_modules/core-js/internals/set-to-string-tag.js","./node_modules/core-js/internals/shared-key.js","./node_modules/core-js/internals/shared-store.js","./node_modules/core-js/internals/shared.js","./node_modules/core-js/internals/species-constructor.js","./node_modules/core-js/internals/string-html-forced.js","./node_modules/core-js/internals/string-multibyte.js","./node_modules/core-js/internals/string-pad-webkit-bug.js","./node_modules/core-js/internals/string-pad.js","./node_modules/core-js/internals/string-repeat.js","./node_modules/core-js/internals/string-trim-end.js","./node_modules/core-js/internals/string-trim-forced.js","./node_modules/core-js/internals/string-trim-start.js","./node_modules/core-js/internals/string-trim.js","./node_modules/core-js/internals/symbol-constructor-detection.js","./node_modules/core-js/internals/symbol-define-to-primitive.js","./node_modules/core-js/internals/symbol-registry-detection.js","./node_modules/core-js/internals/this-number-value.js","./node_modules/core-js/internals/to-absolute-index.js","./node_modules/core-js/internals/to-indexed-object.js","./node_modules/core-js/internals/to-integer-or-infinity.js","./node_modules/core-js/internals/to-length.js","./node_modules/core-js/internals/to-object.js","./node_modules/core-js/internals/to-primitive.js","./node_modules/core-js/internals/to-property-key.js","./node_modules/core-js/internals/to-string-tag-support.js","./node_modules/core-js/internals/to-string.js","./node_modules/core-js/internals/try-to-string.js","./node_modules/core-js/internals/uid.js","./node_modules/core-js/internals/use-symbol-as-uid.js","./node_modules/core-js/internals/v8-prototype-define-bug.js","./node_modules/core-js/internals/weak-map-basic-detection.js","./node_modules/core-js/internals/well-known-symbol-define.js","./node_modules/core-js/internals/well-known-symbol-wrapped.js","./node_modules/core-js/internals/well-known-symbol.js","./node_modules/core-js/internals/whitespaces.js","./node_modules/core-js/modules/es.array.at.js","./node_modules/core-js/modules/es.array.concat.js","./node_modules/core-js/modules/es.array.copy-within.js","./node_modules/core-js/modules/es.array.every.js","./node_modules/core-js/modules/es.array.fill.js","./node_modules/core-js/modules/es.array.filter.js","./node_modules/core-js/modules/es.array.find-index.js","./node_modules/core-js/modules/es.array.find-last-index.js","./node_modules/core-js/modules/es.array.find-last.js","./node_modules/core-js/modules/es.array.find.js","./node_modules/core-js/modules/es.array.flat-map.js","./node_modules/core-js/modules/es.array.flat.js","./node_modules/core-js/modules/es.array.for-each.js","./node_modules/core-js/modules/es.array.from.js","./node_modules/core-js/modules/es.array.includes.js","./node_modules/core-js/modules/es.array.index-of.js","./node_modules/core-js/modules/es.array.is-array.js","./node_modules/core-js/modules/es.array.iterator.js","./node_modules/core-js/modules/es.array.join.js","./node_modules/core-js/modules/es.array.last-index-of.js","./node_modules/core-js/modules/es.array.map.js","./node_modules/core-js/modules/es.array.of.js","./node_modules/core-js/modules/es.array.push.js","./node_modules/core-js/modules/es.array.reduce-right.js","./node_modules/core-js/modules/es.array.reduce.js","./node_modules/core-js/modules/es.array.reverse.js","./node_modules/core-js/modules/es.array.slice.js","./node_modules/core-js/modules/es.array.some.js","./node_modules/core-js/modules/es.array.sort.js","./node_modules/core-js/modules/es.array.species.js","./node_modules/core-js/modules/es.array.splice.js","./node_modules/core-js/modules/es.array.unscopables.flat-map.js","./node_modules/core-js/modules/es.array.unscopables.flat.js","./node_modules/core-js/modules/es.array.unshift.js","./node_modules/core-js/modules/es.date.get-year.js","./node_modules/core-js/modules/es.date.now.js","./node_modules/core-js/modules/es.date.set-year.js","./node_modules/core-js/modules/es.date.to-gmt-string.js","./node_modules/core-js/modules/es.date.to-iso-string.js","./node_modules/core-js/modules/es.date.to-json.js","./node_modules/core-js/modules/es.date.to-primitive.js","./node_modules/core-js/modules/es.date.to-string.js","./node_modules/core-js/modules/es.function.bind.js","./node_modules/core-js/modules/es.function.has-instance.js","./node_modules/core-js/modules/es.function.name.js","./node_modules/core-js/modules/es.json.stringify.js","./node_modules/core-js/modules/es.json.to-string-tag.js","./node_modules/core-js/modules/es.map.constructor.js","./node_modules/core-js/modules/es.map.js","./node_modules/core-js/modules/es.math.acosh.js","./node_modules/core-js/modules/es.math.asinh.js","./node_modules/core-js/modules/es.math.atanh.js","./node_modules/core-js/modules/es.math.cbrt.js","./node_modules/core-js/modules/es.math.clz32.js","./node_modules/core-js/modules/es.math.cosh.js","./node_modules/core-js/modules/es.math.expm1.js","./node_modules/core-js/modules/es.math.fround.js","./node_modules/core-js/modules/es.math.hypot.js","./node_modules/core-js/modules/es.math.imul.js","./node_modules/core-js/modules/es.math.log10.js","./node_modules/core-js/modules/es.math.log1p.js","./node_modules/core-js/modules/es.math.log2.js","./node_modules/core-js/modules/es.math.sign.js","./node_modules/core-js/modules/es.math.sinh.js","./node_modules/core-js/modules/es.math.tanh.js","./node_modules/core-js/modules/es.math.to-string-tag.js","./node_modules/core-js/modules/es.math.trunc.js","./node_modules/core-js/modules/es.number.constructor.js","./node_modules/core-js/modules/es.number.epsilon.js","./node_modules/core-js/modules/es.number.is-finite.js","./node_modules/core-js/modules/es.number.is-integer.js","./node_modules/core-js/modules/es.number.is-nan.js","./node_modules/core-js/modules/es.number.is-safe-integer.js","./node_modules/core-js/modules/es.number.max-safe-integer.js","./node_modules/core-js/modules/es.number.min-safe-integer.js","./node_modules/core-js/modules/es.number.parse-float.js","./node_modules/core-js/modules/es.number.parse-int.js","./node_modules/core-js/modules/es.number.to-exponential.js","./node_modules/core-js/modules/es.number.to-fixed.js","./node_modules/core-js/modules/es.number.to-precision.js","./node_modules/core-js/modules/es.object.assign.js","./node_modules/core-js/modules/es.object.create.js","./node_modules/core-js/modules/es.object.define-getter.js","./node_modules/core-js/modules/es.object.define-properties.js","./node_modules/core-js/modules/es.object.define-property.js","./node_modules/core-js/modules/es.object.define-setter.js","./node_modules/core-js/modules/es.object.entries.js","./node_modules/core-js/modules/es.object.freeze.js","./node_modules/core-js/modules/es.object.from-entries.js","./node_modules/core-js/modules/es.object.get-own-property-descriptor.js","./node_modules/core-js/modules/es.object.get-own-property-descriptors.js","./node_modules/core-js/modules/es.object.get-own-property-names.js","./node_modules/core-js/modules/es.object.get-own-property-symbols.js","./node_modules/core-js/modules/es.object.get-prototype-of.js","./node_modules/core-js/modules/es.object.has-own.js","./node_modules/core-js/modules/es.object.is-extensible.js","./node_modules/core-js/modules/es.object.is-frozen.js","./node_modules/core-js/modules/es.object.is-sealed.js","./node_modules/core-js/modules/es.object.is.js","./node_modules/core-js/modules/es.object.keys.js","./node_modules/core-js/modules/es.object.lookup-getter.js","./node_modules/core-js/modules/es.object.lookup-setter.js","./node_modules/core-js/modules/es.object.prevent-extensions.js","./node_modules/core-js/modules/es.object.proto.js","./node_modules/core-js/modules/es.object.seal.js","./node_modules/core-js/modules/es.object.set-prototype-of.js","./node_modules/core-js/modules/es.object.to-string.js","./node_modules/core-js/modules/es.object.values.js","./node_modules/core-js/modules/es.parse-float.js","./node_modules/core-js/modules/es.parse-int.js","./node_modules/core-js/modules/es.reflect.apply.js","./node_modules/core-js/modules/es.reflect.construct.js","./node_modules/core-js/modules/es.reflect.define-property.js","./node_modules/core-js/modules/es.reflect.delete-property.js","./node_modules/core-js/modules/es.reflect.get-own-property-descriptor.js","./node_modules/core-js/modules/es.reflect.get-prototype-of.js","./node_modules/core-js/modules/es.reflect.get.js","./node_modules/core-js/modules/es.reflect.has.js","./node_modules/core-js/modules/es.reflect.is-extensible.js","./node_modules/core-js/modules/es.reflect.own-keys.js","./node_modules/core-js/modules/es.reflect.prevent-extensions.js","./node_modules/core-js/modules/es.reflect.set-prototype-of.js","./node_modules/core-js/modules/es.reflect.set.js","./node_modules/core-js/modules/es.reflect.to-string-tag.js","./node_modules/core-js/modules/es.regexp.constructor.js","./node_modules/core-js/modules/es.regexp.dot-all.js","./node_modules/core-js/modules/es.regexp.exec.js","./node_modules/core-js/modules/es.regexp.flags.js","./node_modules/core-js/modules/es.regexp.sticky.js","./node_modules/core-js/modules/es.regexp.test.js","./node_modules/core-js/modules/es.regexp.to-string.js","./node_modules/core-js/modules/es.set.constructor.js","./node_modules/core-js/modules/es.set.js","./node_modules/core-js/modules/es.string.anchor.js","./node_modules/core-js/modules/es.string.at-alternative.js","./node_modules/core-js/modules/es.string.big.js","./node_modules/core-js/modules/es.string.blink.js","./node_modules/core-js/modules/es.string.bold.js","./node_modules/core-js/modules/es.string.code-point-at.js","./node_modules/core-js/modules/es.string.ends-with.js","./node_modules/core-js/modules/es.string.fixed.js","./node_modules/core-js/modules/es.string.fontcolor.js","./node_modules/core-js/modules/es.string.fontsize.js","./node_modules/core-js/modules/es.string.from-code-point.js","./node_modules/core-js/modules/es.string.includes.js","./node_modules/core-js/modules/es.string.italics.js","./node_modules/core-js/modules/es.string.iterator.js","./node_modules/core-js/modules/es.string.link.js","./node_modules/core-js/modules/es.string.match-all.js","./node_modules/core-js/modules/es.string.match.js","./node_modules/core-js/modules/es.string.pad-end.js","./node_modules/core-js/modules/es.string.pad-start.js","./node_modules/core-js/modules/es.string.raw.js","./node_modules/core-js/modules/es.string.repeat.js","./node_modules/core-js/modules/es.string.replace-all.js","./node_modules/core-js/modules/es.string.replace.js","./node_modules/core-js/modules/es.string.search.js","./node_modules/core-js/modules/es.string.small.js","./node_modules/core-js/modules/es.string.split.js","./node_modules/core-js/modules/es.string.starts-with.js","./node_modules/core-js/modules/es.string.strike.js","./node_modules/core-js/modules/es.string.sub.js","./node_modules/core-js/modules/es.string.substr.js","./node_modules/core-js/modules/es.string.sup.js","./node_modules/core-js/modules/es.string.trim-end.js","./node_modules/core-js/modules/es.string.trim-left.js","./node_modules/core-js/modules/es.string.trim-right.js","./node_modules/core-js/modules/es.string.trim-start.js","./node_modules/core-js/modules/es.string.trim.js","./node_modules/core-js/modules/es.symbol.async-iterator.js","./node_modules/core-js/modules/es.symbol.constructor.js","./node_modules/core-js/modules/es.symbol.description.js","./node_modules/core-js/modules/es.symbol.for.js","./node_modules/core-js/modules/es.symbol.has-instance.js","./node_modules/core-js/modules/es.symbol.is-concat-spreadable.js","./node_modules/core-js/modules/es.symbol.iterator.js","./node_modules/core-js/modules/es.symbol.js","./node_modules/core-js/modules/es.symbol.key-for.js","./node_modules/core-js/modules/es.symbol.match-all.js","./node_modules/core-js/modules/es.symbol.match.js","./node_modules/core-js/modules/es.symbol.replace.js","./node_modules/core-js/modules/es.symbol.search.js","./node_modules/core-js/modules/es.symbol.species.js","./node_modules/core-js/modules/es.symbol.split.js","./node_modules/core-js/modules/es.symbol.to-primitive.js","./node_modules/core-js/modules/es.symbol.to-string-tag.js","./node_modules/core-js/modules/es.symbol.unscopables.js","./node_modules/ngx-image-cropper/node_modules/tslib/tslib.es6.js","./node_modules/tslib/tslib.es6.js","./node_modules/@angular/animations/fesm2015/animations.mjs","./node_modules/@angular/animations/fesm2015/browser.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/animations.mjs","./node_modules/@angular/platform-browser/fesm2015/platform-browser.mjs","./node_modules/@angular/router/fesm2015/router.mjs","./node_modules/ag-grid-community/dist/ag-grid-community.auto.esm.mjs","./node_modules/ag-grid-enterprise/dist/ag-grid-enterprise.auto.esm.mjs","./node_modules/lodash-es/_DataView.js","./node_modules/lodash-es/_Hash.js","./node_modules/lodash-es/_LazyWrapper.js","./node_modules/lodash-es/_ListCache.js","./node_modules/lodash-es/_LodashWrapper.js","./node_modules/lodash-es/_Map.js","./node_modules/lodash-es/_MapCache.js","./node_modules/lodash-es/_Promise.js","./node_modules/lodash-es/_Set.js","./node_modules/lodash-es/_SetCache.js","./node_modules/lodash-es/_Stack.js","./node_modules/lodash-es/_Symbol.js","./node_modules/lodash-es/_Uint8Array.js","./node_modules/lodash-es/_WeakMap.js","./node_modules/lodash-es/_apply.js","./node_modules/lodash-es/_arrayEach.js","./node_modules/lodash-es/_arrayFilter.js","./node_modules/lodash-es/_arrayIncludes.js","./node_modules/lodash-es/_arrayLikeKeys.js","./node_modules/lodash-es/_arrayMap.js","./node_modules/lodash-es/_arrayPush.js","./node_modules/lodash-es/_arrayReduce.js","./node_modules/lodash-es/_arraySome.js","./node_modules/lodash-es/_assignMergeValue.js","./node_modules/lodash-es/_assignValue.js","./node_modules/lodash-es/_assocIndexOf.js","./node_modules/lodash-es/_baseAssignValue.js","./node_modules/lodash-es/_baseCreate.js","./node_modules/lodash-es/_baseEach.js","./node_modules/lodash-es/_baseExtremum.js","./node_modules/lodash-es/_baseFilter.js","./node_modules/lodash-es/_baseFindIndex.js","./node_modules/lodash-es/_baseFlatten.js","./node_modules/lodash-es/_baseFor.js","./node_modules/lodash-es/_baseForOwn.js","./node_modules/lodash-es/_baseGet.js","./node_modules/lodash-es/_baseGetAllKeys.js","./node_modules/lodash-es/_baseGetTag.js","./node_modules/lodash-es/_baseHasIn.js","./node_modules/lodash-es/_baseIndexOf.js","./node_modules/lodash-es/_baseIsArguments.js","./node_modules/lodash-es/_baseIsEqual.js","./node_modules/lodash-es/_baseIsEqualDeep.js","./node_modules/lodash-es/_baseIsMatch.js","./node_modules/lodash-es/_baseIsNaN.js","./node_modules/lodash-es/_baseIsNative.js","./node_modules/lodash-es/_baseIsTypedArray.js","./node_modules/lodash-es/_baseIteratee.js","./node_modules/lodash-es/_baseKeys.js","./node_modules/lodash-es/_baseKeysIn.js","./node_modules/lodash-es/_baseLodash.js","./node_modules/lodash-es/_baseLt.js","./node_modules/lodash-es/_baseMap.js","./node_modules/lodash-es/_baseMatches.js","./node_modules/lodash-es/_baseMatchesProperty.js","./node_modules/lodash-es/_baseMerge.js","./node_modules/lodash-es/_baseMergeDeep.js","./node_modules/lodash-es/_baseProperty.js","./node_modules/lodash-es/_basePropertyDeep.js","./node_modules/lodash-es/_basePullAt.js","./node_modules/lodash-es/_baseReduce.js","./node_modules/lodash-es/_baseRest.js","./node_modules/lodash-es/_baseSetData.js","./node_modules/lodash-es/_baseSetToString.js","./node_modules/lodash-es/_baseSlice.js","./node_modules/lodash-es/_baseTimes.js","./node_modules/lodash-es/_baseToString.js","./node_modules/lodash-es/_baseTrim.js","./node_modules/lodash-es/_baseUnary.js","./node_modules/lodash-es/_baseUnset.js","./node_modules/lodash-es/_cacheHas.js","./node_modules/lodash-es/_castFunction.js","./node_modules/lodash-es/_castPath.js","./node_modules/lodash-es/_cloneArrayBuffer.js","./node_modules/lodash-es/_cloneBuffer.js","./node_modules/lodash-es/_cloneTypedArray.js","./node_modules/lodash-es/_composeArgs.js","./node_modules/lodash-es/_composeArgsRight.js","./node_modules/lodash-es/_copyArray.js","./node_modules/lodash-es/_copyObject.js","./node_modules/lodash-es/_coreJsData.js","./node_modules/lodash-es/_countHolders.js","./node_modules/lodash-es/_createAssigner.js","./node_modules/lodash-es/_createBaseEach.js","./node_modules/lodash-es/_createBaseFor.js","./node_modules/lodash-es/_createBind.js","./node_modules/lodash-es/_createCtor.js","./node_modules/lodash-es/_createCurry.js","./node_modules/lodash-es/_createFind.js","./node_modules/lodash-es/_createFlow.js","./node_modules/lodash-es/_createHybrid.js","./node_modules/lodash-es/_createPartial.js","./node_modules/lodash-es/_createRecurry.js","./node_modules/lodash-es/_createWrap.js","./node_modules/lodash-es/_defineProperty.js","./node_modules/lodash-es/_equalArrays.js","./node_modules/lodash-es/_equalByTag.js","./node_modules/lodash-es/_equalObjects.js","./node_modules/lodash-es/_flatRest.js","./node_modules/lodash-es/_freeGlobal.js","./node_modules/lodash-es/_getAllKeys.js","./node_modules/lodash-es/_getData.js","./node_modules/lodash-es/_getFuncName.js","./node_modules/lodash-es/_getHolder.js","./node_modules/lodash-es/_getMapData.js","./node_modules/lodash-es/_getMatchData.js","./node_modules/lodash-es/_getNative.js","./node_modules/lodash-es/_getPrototype.js","./node_modules/lodash-es/_getRawTag.js","./node_modules/lodash-es/_getSymbols.js","./node_modules/lodash-es/_getTag.js","./node_modules/lodash-es/_getValue.js","./node_modules/lodash-es/_getWrapDetails.js","./node_modules/lodash-es/_hasPath.js","./node_modules/lodash-es/_hashClear.js","./node_modules/lodash-es/_hashDelete.js","./node_modules/lodash-es/_hashGet.js","./node_modules/lodash-es/_hashHas.js","./node_modules/lodash-es/_hashSet.js","./node_modules/lodash-es/_initCloneObject.js","./node_modules/lodash-es/_insertWrapDetails.js","./node_modules/lodash-es/_isFlattenable.js","./node_modules/lodash-es/_isIndex.js","./node_modules/lodash-es/_isIterateeCall.js","./node_modules/lodash-es/_isKey.js","./node_modules/lodash-es/_isKeyable.js","./node_modules/lodash-es/_isLaziable.js","./node_modules/lodash-es/_isMasked.js","./node_modules/lodash-es/_isPrototype.js","./node_modules/lodash-es/_isStrictComparable.js","./node_modules/lodash-es/_listCacheClear.js","./node_modules/lodash-es/_listCacheDelete.js","./node_modules/lodash-es/_listCacheGet.js","./node_modules/lodash-es/_listCacheHas.js","./node_modules/lodash-es/_listCacheSet.js","./node_modules/lodash-es/_mapCacheClear.js","./node_modules/lodash-es/_mapCacheDelete.js","./node_modules/lodash-es/_mapCacheGet.js","./node_modules/lodash-es/_mapCacheHas.js","./node_modules/lodash-es/_mapCacheSet.js","./node_modules/lodash-es/_mapToArray.js","./node_modules/lodash-es/_matchesStrictComparable.js","./node_modules/lodash-es/_memoizeCapped.js","./node_modules/lodash-es/_mergeData.js","./node_modules/lodash-es/_metaMap.js","./node_modules/lodash-es/_nativeCreate.js","./node_modules/lodash-es/_nativeKeys.js","./node_modules/lodash-es/_nativeKeysIn.js","./node_modules/lodash-es/_nodeUtil.js","./node_modules/lodash-es/_objectToString.js","./node_modules/lodash-es/_overArg.js","./node_modules/lodash-es/_overRest.js","./node_modules/lodash-es/_parent.js","./node_modules/lodash-es/_realNames.js","./node_modules/lodash-es/_reorder.js","./node_modules/lodash-es/_replaceHolders.js","./node_modules/lodash-es/_root.js","./node_modules/lodash-es/_safeGet.js","./node_modules/lodash-es/_setCacheAdd.js","./node_modules/lodash-es/_setCacheHas.js","./node_modules/lodash-es/_setData.js","./node_modules/lodash-es/_setToArray.js","./node_modules/lodash-es/_setToString.js","./node_modules/lodash-es/_setWrapToString.js","./node_modules/lodash-es/_shortOut.js","./node_modules/lodash-es/_stackClear.js","./node_modules/lodash-es/_stackDelete.js","./node_modules/lodash-es/_stackGet.js","./node_modules/lodash-es/_stackHas.js","./node_modules/lodash-es/_stackSet.js","./node_modules/lodash-es/_strictIndexOf.js","./node_modules/lodash-es/_stringToPath.js","./node_modules/lodash-es/_toKey.js","./node_modules/lodash-es/_toSource.js","./node_modules/lodash-es/_trimmedEndIndex.js","./node_modules/lodash-es/_updateWrapDetails.js","./node_modules/lodash-es/_wrapperClone.js","./node_modules/lodash-es/concat.js","./node_modules/lodash-es/constant.js","./node_modules/lodash-es/eq.js","./node_modules/lodash-es/filter.js","./node_modules/lodash-es/find.js","./node_modules/lodash-es/findIndex.js","./node_modules/lodash-es/flatten.js","./node_modules/lodash-es/flow.js","./node_modules/lodash-es/forEach.js","./node_modules/lodash-es/get.js","./node_modules/lodash-es/hasIn.js","./node_modules/lodash-es/identity.js","./node_modules/lodash-es/isArguments.js","./node_modules/lodash-es/isArray.js","./node_modules/lodash-es/isArrayLike.js","./node_modules/lodash-es/isArrayLikeObject.js","./node_modules/lodash-es/isBuffer.js","./node_modules/lodash-es/isEqual.js","./node_modules/lodash-es/isFunction.js","./node_modules/lodash-es/isLength.js","./node_modules/lodash-es/isObject.js","./node_modules/lodash-es/isObjectLike.js","./node_modules/lodash-es/isPlainObject.js","./node_modules/lodash-es/isSymbol.js","./node_modules/lodash-es/isTypedArray.js","./node_modules/lodash-es/keys.js","./node_modules/lodash-es/keysIn.js","./node_modules/lodash-es/last.js","./node_modules/lodash-es/map.js","./node_modules/lodash-es/memoize.js","./node_modules/lodash-es/merge.js","./node_modules/lodash-es/min.js","./node_modules/lodash-es/noop.js","./node_modules/lodash-es/partial.js","./node_modules/lodash-es/property.js","./node_modules/lodash-es/reduce.js","./node_modules/lodash-es/remove.js","./node_modules/lodash-es/stubArray.js","./node_modules/lodash-es/stubFalse.js","./node_modules/lodash-es/toFinite.js","./node_modules/lodash-es/toInteger.js","./node_modules/lodash-es/toNumber.js","./node_modules/lodash-es/toPlainObject.js","./node_modules/lodash-es/toString.js","./node_modules/lodash-es/wrapperLodash.js","./node_modules/luxon/src/datetime.js","./node_modules/luxon/src/duration.js","./node_modules/luxon/src/errors.js","./node_modules/luxon/src/impl/conversions.js","./node_modules/luxon/src/impl/diff.js","./node_modules/luxon/src/impl/digits.js","./node_modules/luxon/src/impl/english.js","./node_modules/luxon/src/impl/formats.js","./node_modules/luxon/src/impl/formatter.js","./node_modules/luxon/src/impl/invalid.js","./node_modules/luxon/src/impl/locale.js","./node_modules/luxon/src/impl/regexParser.js","./node_modules/luxon/src/impl/tokenParser.js","./node_modules/luxon/src/impl/util.js","./node_modules/luxon/src/impl/zoneUtil.js","./node_modules/luxon/src/info.js","./node_modules/luxon/src/interval.js","./node_modules/luxon/src/luxon.js","./node_modules/luxon/src/settings.js","./node_modules/luxon/src/zone.js","./node_modules/luxon/src/zones/IANAZone.js","./node_modules/luxon/src/zones/fixedOffsetZone.js","./node_modules/luxon/src/zones/invalidZone.js","./node_modules/luxon/src/zones/systemZone.js","./node_modules/ngx-bootstrap/chronos/fesm2015/ngx-bootstrap-chronos.mjs","./node_modules/ngx-bootstrap/component-loader/fesm2015/ngx-bootstrap-component-loader.mjs","./node_modules/ngx-bootstrap/datepicker/fesm2015/ngx-bootstrap-datepicker.mjs","./node_modules/ngx-bootstrap/dropdown/fesm2015/ngx-bootstrap-dropdown.mjs","./node_modules/ngx-bootstrap/focus-trap/fesm2015/ngx-bootstrap-focus-trap.mjs","./node_modules/ngx-bootstrap/mini-ngrx/fesm2015/ngx-bootstrap-mini-ngrx.mjs","./node_modules/ngx-bootstrap/modal/fesm2015/ngx-bootstrap-modal.mjs","./node_modules/ngx-bootstrap/popover/fesm2015/ngx-bootstrap-popover.mjs","./node_modules/ngx-bootstrap/positioning/fesm2015/ngx-bootstrap-positioning.mjs","./node_modules/ngx-bootstrap/tabs/fesm2015/ngx-bootstrap-tabs.mjs","./node_modules/ngx-bootstrap/timepicker/fesm2015/ngx-bootstrap-timepicker.mjs","./node_modules/ngx-bootstrap/tooltip/fesm2015/ngx-bootstrap-tooltip.mjs","./node_modules/ngx-bootstrap/utils/fesm2015/ngx-bootstrap-utils.mjs","./node_modules/primeng/fesm2015/primeng-api.mjs","./node_modules/primeng/fesm2015/primeng-autocomplete.mjs","./node_modules/primeng/fesm2015/primeng-button.mjs","./node_modules/primeng/fesm2015/primeng-calendar.mjs","./node_modules/primeng/fesm2015/primeng-dom.mjs","./node_modules/primeng/fesm2015/primeng-dropdown.mjs","./node_modules/primeng/fesm2015/primeng-fileupload.mjs","./node_modules/primeng/fesm2015/primeng-inputnumber.mjs","./node_modules/primeng/fesm2015/primeng-inputtext.mjs","./node_modules/primeng/fesm2015/primeng-messages.mjs","./node_modules/primeng/fesm2015/primeng-paginator.mjs","./node_modules/primeng/fesm2015/primeng-progressbar.mjs","./node_modules/primeng/fesm2015/primeng-ripple.mjs","./node_modules/primeng/fesm2015/primeng-selectbutton.mjs","./node_modules/primeng/fesm2015/primeng-table.mjs","./node_modules/primeng/fesm2015/primeng-tooltip.mjs","./node_modules/primeng/fesm2015/primeng-tristatecheckbox.mjs","./node_modules/primeng/fesm2015/primeng-utils.mjs"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { InjectionToken, inject, EventEmitter, Injectable, Optional, Inject, Directive, Output, Input, NgModule } from '@angular/core';\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 */\n/**\n * Injection token used to inject the document into Directionality.\n * This is used so that the value can be faked in tests.\n *\n * We can't use the real document in tests because changing the real `dir` causes geometry-based\n * tests in Safari to fail.\n *\n * We also can't re-provide the DOCUMENT token from platform-brower because the unit tests\n * themselves use things like `querySelector` in test code.\n *\n * This token is defined in a separate file from Directionality as a workaround for\n * https://github.com/angular/angular/issues/22559\n *\n * @docs-private\n */\nimport * as ɵngcc0 from '@angular/core';\nconst DIR_DOCUMENT = new InjectionToken('cdk-dir-doc', {\n providedIn: 'root',\n factory: DIR_DOCUMENT_FACTORY,\n});\n/** @docs-private */\nfunction DIR_DOCUMENT_FACTORY() {\n return inject(DOCUMENT);\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 * The directionality (LTR / RTL) context for the application (or a subtree of it).\n * Exposes the current direction and a stream of direction changes.\n */\nclass Directionality {\n constructor(_document) {\n /** The current 'ltr' or 'rtl' value. */\n this.value = 'ltr';\n /** Stream that emits whenever the 'ltr' / 'rtl' state changes. */\n this.change = new EventEmitter();\n if (_document) {\n // TODO: handle 'auto' value -\n // We still need to account for dir=\"auto\".\n // It looks like HTMLElemenet.dir is also \"auto\" when that's set to the attribute,\n // but getComputedStyle return either \"ltr\" or \"rtl\". avoiding getComputedStyle for now\n const bodyDir = _document.body ? _document.body.dir : null;\n const htmlDir = _document.documentElement ? _document.documentElement.dir : null;\n const value = bodyDir || htmlDir;\n this.value = (value === 'ltr' || value === 'rtl') ? value : 'ltr';\n }\n }\n ngOnDestroy() {\n this.change.complete();\n }\n}\nDirectionality.ɵfac = function Directionality_Factory(t) { return new (t || Directionality)(ɵngcc0.ɵɵinject(DIR_DOCUMENT, 8)); };\nDirectionality.ɵprov = i0.ɵɵdefineInjectable({ factory: function Directionality_Factory() { return new Directionality(i0.ɵɵinject(DIR_DOCUMENT, 8)); }, token: Directionality, providedIn: \"root\" });\nDirectionality.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DIR_DOCUMENT,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(Directionality, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DIR_DOCUMENT]\n }] }]; }, null); })();\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 * Directive to listen for changes of direction of part of the DOM.\n *\n * Provides itself as Directionality such that descendant directives only need to ever inject\n * Directionality to get the closest direction.\n */\nclass Dir {\n constructor() {\n /** Normalized direction that accounts for invalid/unsupported values. */\n this._dir = 'ltr';\n /** Whether the `value` has been set to its initial value. */\n this._isInitialized = false;\n /** Event emitted when the direction changes. */\n this.change = new EventEmitter();\n }\n /** @docs-private */\n get dir() { return this._dir; }\n set dir(value) {\n const old = this._dir;\n const normalizedValue = value ? value.toLowerCase() : value;\n this._rawDir = value;\n this._dir = (normalizedValue === 'ltr' || normalizedValue === 'rtl') ? normalizedValue : 'ltr';\n if (old !== this._dir && this._isInitialized) {\n this.change.emit(this._dir);\n }\n }\n /** Current layout direction of the element. */\n get value() { return this.dir; }\n /** Initialize once default value has been set. */\n ngAfterContentInit() {\n this._isInitialized = true;\n }\n ngOnDestroy() {\n this.change.complete();\n }\n}\nDir.ɵfac = function Dir_Factory(t) { return new (t || Dir)(); };\nDir.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: Dir, selectors: [[\"\", \"dir\", \"\"]], hostVars: 1, hostBindings: function Dir_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx._rawDir);\n } }, inputs: { dir: \"dir\" }, outputs: { change: \"dirChange\" }, exportAs: [\"dir\"], features: [ɵngcc0.ɵɵProvidersFeature([{ provide: Directionality, useExisting: Dir }])] });\nDir.propDecorators = {\n change: [{ type: Output, args: ['dirChange',] }],\n dir: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(Dir, [{\n type: Directive,\n args: [{\n selector: '[dir]',\n providers: [{ provide: Directionality, useExisting: Dir }],\n host: { '[attr.dir]': '_rawDir' },\n exportAs: 'dir'\n }]\n }], function () { return []; }, { change: [{\n type: Output,\n args: ['dirChange']\n }], dir: [{\n type: Input\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 BidiModule {\n}\nBidiModule.ɵfac = function BidiModule_Factory(t) { return new (t || BidiModule)(); };\nBidiModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: BidiModule });\nBidiModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BidiModule, [{\n type: NgModule,\n args: [{\n exports: [Dir],\n declarations: [Dir]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(BidiModule, { declarations: [Dir], exports: [Dir] }); })();\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 { BidiModule, DIR_DOCUMENT, Dir, Directionality, DIR_DOCUMENT_FACTORY as ɵangular_material_src_cdk_bidi_bidi_a };\n\n","import { isObservable, of, Subject } from 'rxjs';\nimport * as i0 from '@angular/core';\nimport { Injectable, InjectionToken } 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 */\nimport * as ɵngcc0 from '@angular/core';\nclass DataSource {\n}\n/** Checks whether an object is a data source. */\nfunction isDataSource(value) {\n // Check if the value is a DataSource by observing if it has a connect function. Cannot\n // be checked as an `instanceof DataSource` since people could create their own sources\n // that match the interface, but don't extend DataSource.\n return value && typeof value.connect === 'function';\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/** DataSource wrapper for a native array. */\nclass ArrayDataSource extends DataSource {\n constructor(_data) {\n super();\n this._data = _data;\n }\n connect() {\n return isObservable(this._data) ? this._data : of(this._data);\n }\n disconnect() { }\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 * A repeater that destroys views when they are removed from a\n * {@link ViewContainerRef}. When new items are inserted into the container,\n * the repeater will always construct a new embedded view for each item.\n *\n * @template T The type for the embedded view's $implicit property.\n * @template R The type for the item in each IterableDiffer change record.\n * @template C The type for the context passed to each embedded view.\n */\nclass _DisposeViewRepeaterStrategy {\n applyChanges(changes, viewContainerRef, itemContextFactory, itemValueResolver, itemViewChanged) {\n changes.forEachOperation((record, adjustedPreviousIndex, currentIndex) => {\n let view;\n let operation;\n if (record.previousIndex == null) {\n const insertContext = itemContextFactory(record, adjustedPreviousIndex, currentIndex);\n view = viewContainerRef.createEmbeddedView(insertContext.templateRef, insertContext.context, insertContext.index);\n operation = 1 /* INSERTED */;\n }\n else if (currentIndex == null) {\n viewContainerRef.remove(adjustedPreviousIndex);\n operation = 3 /* REMOVED */;\n }\n else {\n view = viewContainerRef.get(adjustedPreviousIndex);\n viewContainerRef.move(view, currentIndex);\n operation = 2 /* MOVED */;\n }\n if (itemViewChanged) {\n itemViewChanged({\n context: view === null || view === void 0 ? void 0 : view.context,\n operation,\n record,\n });\n }\n });\n }\n detach() {\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 * A repeater that caches views when they are removed from a\n * {@link ViewContainerRef}. When new items are inserted into the container,\n * the repeater will reuse one of the cached views instead of creating a new\n * embedded view. Recycling cached views reduces the quantity of expensive DOM\n * inserts.\n *\n * @template T The type for the embedded view's $implicit property.\n * @template R The type for the item in each IterableDiffer change record.\n * @template C The type for the context passed to each embedded view.\n */\nclass _RecycleViewRepeaterStrategy {\n constructor() {\n /**\n * The size of the cache used to store unused views.\n * Setting the cache size to `0` will disable caching. Defaults to 20 views.\n */\n this.viewCacheSize = 20;\n /**\n * View cache that stores embedded view instances that have been previously stamped out,\n * but don't are not currently rendered. The view repeater will reuse these views rather than\n * creating brand new ones.\n *\n * TODO(michaeljamesparsons) Investigate whether using a linked list would improve performance.\n */\n this._viewCache = [];\n }\n /** Apply changes to the DOM. */\n applyChanges(changes, viewContainerRef, itemContextFactory, itemValueResolver, itemViewChanged) {\n // Rearrange the views to put them in the right location.\n changes.forEachOperation((record, adjustedPreviousIndex, currentIndex) => {\n let view;\n let operation;\n if (record.previousIndex == null) { // Item added.\n const viewArgsFactory = () => itemContextFactory(record, adjustedPreviousIndex, currentIndex);\n view = this._insertView(viewArgsFactory, currentIndex, viewContainerRef, itemValueResolver(record));\n operation = view ? 1 /* INSERTED */ : 0 /* REPLACED */;\n }\n else if (currentIndex == null) { // Item removed.\n this._detachAndCacheView(adjustedPreviousIndex, viewContainerRef);\n operation = 3 /* REMOVED */;\n }\n else { // Item moved.\n view = this._moveView(adjustedPreviousIndex, currentIndex, viewContainerRef, itemValueResolver(record));\n operation = 2 /* MOVED */;\n }\n if (itemViewChanged) {\n itemViewChanged({\n context: view === null || view === void 0 ? void 0 : view.context,\n operation,\n record,\n });\n }\n });\n }\n detach() {\n for (const view of this._viewCache) {\n view.destroy();\n }\n this._viewCache = [];\n }\n /**\n * Inserts a view for a new item, either from the cache or by creating a new\n * one. Returns `undefined` if the item was inserted into a cached view.\n */\n _insertView(viewArgsFactory, currentIndex, viewContainerRef, value) {\n const cachedView = this._insertViewFromCache(currentIndex, viewContainerRef);\n if (cachedView) {\n cachedView.context.$implicit = value;\n return undefined;\n }\n const viewArgs = viewArgsFactory();\n return viewContainerRef.createEmbeddedView(viewArgs.templateRef, viewArgs.context, viewArgs.index);\n }\n /** Detaches the view at the given index and inserts into the view cache. */\n _detachAndCacheView(index, viewContainerRef) {\n const detachedView = viewContainerRef.detach(index);\n this._maybeCacheView(detachedView, viewContainerRef);\n }\n /** Moves view at the previous index to the current index. */\n _moveView(adjustedPreviousIndex, currentIndex, viewContainerRef, value) {\n const view = viewContainerRef.get(adjustedPreviousIndex);\n viewContainerRef.move(view, currentIndex);\n view.context.$implicit = value;\n return view;\n }\n /**\n * Cache the given detached view. If the cache is full, the view will be\n * destroyed.\n */\n _maybeCacheView(view, viewContainerRef) {\n if (this._viewCache.length < this.viewCacheSize) {\n this._viewCache.push(view);\n }\n else {\n const index = viewContainerRef.indexOf(view);\n // The host component could remove views from the container outside of\n // the view repeater. It's unlikely this will occur, but just in case,\n // destroy the view on its own, otherwise destroy it through the\n // container to ensure that all the references are removed.\n if (index === -1) {\n view.destroy();\n }\n else {\n viewContainerRef.remove(index);\n }\n }\n }\n /** Inserts a recycled view from the cache at the given index. */\n _insertViewFromCache(index, viewContainerRef) {\n const cachedView = this._viewCache.pop();\n if (cachedView) {\n viewContainerRef.insert(cachedView, index);\n }\n return cachedView || null;\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 * Class to be used to power selecting one or more options from a list.\n */\nclass SelectionModel {\n constructor(_multiple = false, initiallySelectedValues, _emitChanges = true) {\n this._multiple = _multiple;\n this._emitChanges = _emitChanges;\n /** Currently-selected values. */\n this._selection = new Set();\n /** Keeps track of the deselected options that haven't been emitted by the change event. */\n this._deselectedToEmit = [];\n /** Keeps track of the selected options that haven't been emitted by the change event. */\n this._selectedToEmit = [];\n /** Event emitted when the value has changed. */\n this.changed = new Subject();\n if (initiallySelectedValues && initiallySelectedValues.length) {\n if (_multiple) {\n initiallySelectedValues.forEach(value => this._markSelected(value));\n }\n else {\n this._markSelected(initiallySelectedValues[0]);\n }\n // Clear the array in order to avoid firing the change event for preselected values.\n this._selectedToEmit.length = 0;\n }\n }\n /** Selected values. */\n get selected() {\n if (!this._selected) {\n this._selected = Array.from(this._selection.values());\n }\n return this._selected;\n }\n /**\n * Selects a value or an array of values.\n */\n select(...values) {\n this._verifyValueAssignment(values);\n values.forEach(value => this._markSelected(value));\n this._emitChangeEvent();\n }\n /**\n * Deselects a value or an array of values.\n */\n deselect(...values) {\n this._verifyValueAssignment(values);\n values.forEach(value => this._unmarkSelected(value));\n this._emitChangeEvent();\n }\n /**\n * Toggles a value between selected and deselected.\n */\n toggle(value) {\n this.isSelected(value) ? this.deselect(value) : this.select(value);\n }\n /**\n * Clears all of the selected values.\n */\n clear() {\n this._unmarkAll();\n this._emitChangeEvent();\n }\n /**\n * Determines whether a value is selected.\n */\n isSelected(value) {\n return this._selection.has(value);\n }\n /**\n * Determines whether the model does not have a value.\n */\n isEmpty() {\n return this._selection.size === 0;\n }\n /**\n * Determines whether the model has a value.\n */\n hasValue() {\n return !this.isEmpty();\n }\n /**\n * Sorts the selected values based on a predicate function.\n */\n sort(predicate) {\n if (this._multiple && this.selected) {\n this._selected.sort(predicate);\n }\n }\n /**\n * Gets whether multiple values can be selected.\n */\n isMultipleSelection() {\n return this._multiple;\n }\n /** Emits a change event and clears the records of selected and deselected values. */\n _emitChangeEvent() {\n // Clear the selected values so they can be re-cached.\n this._selected = null;\n if (this._selectedToEmit.length || this._deselectedToEmit.length) {\n this.changed.next({\n source: this,\n added: this._selectedToEmit,\n removed: this._deselectedToEmit\n });\n this._deselectedToEmit = [];\n this._selectedToEmit = [];\n }\n }\n /** Selects a value. */\n _markSelected(value) {\n if (!this.isSelected(value)) {\n if (!this._multiple) {\n this._unmarkAll();\n }\n this._selection.add(value);\n if (this._emitChanges) {\n this._selectedToEmit.push(value);\n }\n }\n }\n /** Deselects a value. */\n _unmarkSelected(value) {\n if (this.isSelected(value)) {\n this._selection.delete(value);\n if (this._emitChanges) {\n this._deselectedToEmit.push(value);\n }\n }\n }\n /** Clears out the selected values. */\n _unmarkAll() {\n if (!this.isEmpty()) {\n this._selection.forEach(value => this._unmarkSelected(value));\n }\n }\n /**\n * Verifies the value assignment and throws an error if the specified value array is\n * including multiple values while the selection model is not supporting multiple values.\n */\n _verifyValueAssignment(values) {\n if (values.length > 1 && !this._multiple && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMultipleValuesInSingleSelectionError();\n }\n }\n}\n/**\n * Returns an error that reports that multiple values are passed into a selection model\n * with a single value.\n * @docs-private\n */\nfunction getMultipleValuesInSingleSelectionError() {\n return Error('Cannot pass multiple values into SelectionModel with single-value mode.');\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 * Class to coordinate unique selection based on name.\n * Intended to be consumed as an Angular service.\n * This service is needed because native radio change events are only fired on the item currently\n * being selected, and we still need to uncheck the previous selection.\n *\n * This service does not *store* any IDs and names because they may change at any time, so it is\n * less error-prone if they are simply passed through when the events occur.\n */\nclass UniqueSelectionDispatcher {\n constructor() {\n this._listeners = [];\n }\n /**\n * Notify other items that selection for the given name has been set.\n * @param id ID of the item.\n * @param name Name of the item.\n */\n notify(id, name) {\n for (let listener of this._listeners) {\n listener(id, name);\n }\n }\n /**\n * Listen for future changes to item selection.\n * @return Function used to deregister listener\n */\n listen(listener) {\n this._listeners.push(listener);\n return () => {\n this._listeners = this._listeners.filter((registered) => {\n return listener !== registered;\n });\n };\n }\n ngOnDestroy() {\n this._listeners = [];\n }\n}\nUniqueSelectionDispatcher.ɵfac = function UniqueSelectionDispatcher_Factory(t) { return new (t || UniqueSelectionDispatcher)(); };\nUniqueSelectionDispatcher.ɵprov = i0.ɵɵdefineInjectable({ factory: function UniqueSelectionDispatcher_Factory() { return new UniqueSelectionDispatcher(); }, token: UniqueSelectionDispatcher, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(UniqueSelectionDispatcher, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\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 * Injection token for {@link _ViewRepeater}. This token is for use by Angular Material only.\n * @docs-private\n */\nconst _VIEW_REPEATER_STRATEGY = new InjectionToken('_ViewRepeater');\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 { ArrayDataSource, DataSource, SelectionModel, UniqueSelectionDispatcher, _DisposeViewRepeaterStrategy, _RecycleViewRepeaterStrategy, _VIEW_REPEATER_STRATEGY, getMultipleValuesInSingleSelectionError, isDataSource };\n\n","import * as i0 from '@angular/core';\nimport { Injectable, Inject, PLATFORM_ID, NgModule } from '@angular/core';\nimport { isPlatformBrowser } 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 */\n// Whether the current platform supports the V8 Break Iterator. The V8 check\n// is necessary to detect all Blink based browsers.\nimport * as ɵngcc0 from '@angular/core';\nlet hasV8BreakIterator;\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/components/issues/15687\ntry {\n hasV8BreakIterator = (typeof Intl !== 'undefined' && Intl.v8BreakIterator);\n}\ncatch (_a) {\n hasV8BreakIterator = false;\n}\n/**\n * Service to detect the current platform by comparing the userAgent strings and\n * checking browser-specific global properties.\n */\nclass Platform {\n constructor(_platformId) {\n this._platformId = _platformId;\n // We want to use the Angular platform check because if the Document is shimmed\n // without the navigator, the following checks will fail. This is preferred because\n // sometimes the Document may be shimmed without the user's knowledge or intention\n /** Whether the Angular application is being rendered in the browser. */\n this.isBrowser = this._platformId ?\n isPlatformBrowser(this._platformId) : typeof document === 'object' && !!document;\n /** Whether the current browser is Microsoft Edge. */\n this.EDGE = this.isBrowser && /(edge)/i.test(navigator.userAgent);\n /** Whether the current rendering engine is Microsoft Trident. */\n this.TRIDENT = this.isBrowser && /(msie|trident)/i.test(navigator.userAgent);\n // EdgeHTML and Trident mock Blink specific things and need to be excluded from this check.\n /** Whether the current rendering engine is Blink. */\n this.BLINK = this.isBrowser && (!!(window.chrome || hasV8BreakIterator) &&\n typeof CSS !== 'undefined' && !this.EDGE && !this.TRIDENT);\n // Webkit is part of the userAgent in EdgeHTML, Blink and Trident. Therefore we need to\n // ensure that Webkit runs standalone and is not used as another engine's base.\n /** Whether the current rendering engine is WebKit. */\n this.WEBKIT = this.isBrowser &&\n /AppleWebKit/i.test(navigator.userAgent) && !this.BLINK && !this.EDGE && !this.TRIDENT;\n /** Whether the current platform is Apple iOS. */\n this.IOS = this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) &&\n !('MSStream' in window);\n // It's difficult to detect the plain Gecko engine, because most of the browsers identify\n // them self as Gecko-like browsers and modify the userAgent's according to that.\n // Since we only cover one explicit Firefox case, we can simply check for Firefox\n // instead of having an unstable check for Gecko.\n /** Whether the current browser is Firefox. */\n this.FIREFOX = this.isBrowser && /(firefox|minefield)/i.test(navigator.userAgent);\n /** Whether the current platform is Android. */\n // Trident on mobile adds the android platform to the userAgent to trick detections.\n this.ANDROID = this.isBrowser && /android/i.test(navigator.userAgent) && !this.TRIDENT;\n // Safari browsers will include the Safari keyword in their userAgent. Some browsers may fake\n // this and just place the Safari keyword in the userAgent. To be more safe about Safari every\n // Safari browser should also use Webkit as its layout engine.\n /** Whether the current browser is Safari. */\n this.SAFARI = this.isBrowser && /safari/i.test(navigator.userAgent) && this.WEBKIT;\n }\n}\nPlatform.ɵfac = function Platform_Factory(t) { return new (t || Platform)(ɵngcc0.ɵɵinject(PLATFORM_ID)); };\nPlatform.ɵprov = i0.ɵɵdefineInjectable({ factory: function Platform_Factory() { return new Platform(i0.ɵɵinject(i0.PLATFORM_ID)); }, token: Platform, providedIn: \"root\" });\nPlatform.ctorParameters = () => [\n { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(Platform, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, null); })();\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 PlatformModule {\n}\nPlatformModule.ɵfac = function PlatformModule_Factory(t) { return new (t || PlatformModule)(); };\nPlatformModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: PlatformModule });\nPlatformModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PlatformModule, [{\n type: NgModule,\n args: [{}]\n }], null, null); })();\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/** Cached result Set of input types support by the current browser. */\nlet supportedInputTypes;\n/** Types of `` that *might* be supported. */\nconst candidateInputTypes = [\n // `color` must come first. Chrome 56 shows a warning if we change the type to `color` after\n // first changing it to something else:\n // The specified value \"\" does not conform to the required format.\n // The format is \"#rrggbb\" where rr, gg, bb are two-digit hexadecimal numbers.\n 'color',\n 'button',\n 'checkbox',\n 'date',\n 'datetime-local',\n 'email',\n 'file',\n 'hidden',\n 'image',\n 'month',\n 'number',\n 'password',\n 'radio',\n 'range',\n 'reset',\n 'search',\n 'submit',\n 'tel',\n 'text',\n 'time',\n 'url',\n 'week',\n];\n/** @returns The input types supported by this browser. */\nfunction getSupportedInputTypes() {\n // Result is cached.\n if (supportedInputTypes) {\n return supportedInputTypes;\n }\n // We can't check if an input type is not supported until we're on the browser, so say that\n // everything is supported when not on the browser. We don't use `Platform` here since it's\n // just a helper function and can't inject it.\n if (typeof document !== 'object' || !document) {\n supportedInputTypes = new Set(candidateInputTypes);\n return supportedInputTypes;\n }\n let featureTestInput = document.createElement('input');\n supportedInputTypes = new Set(candidateInputTypes.filter(value => {\n featureTestInput.setAttribute('type', value);\n return featureTestInput.type === value;\n }));\n return supportedInputTypes;\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/** Cached result of whether the user's browser supports passive event listeners. */\nlet supportsPassiveEvents;\n/**\n * Checks whether the user's browser supports passive event listeners.\n * See: https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n */\nfunction supportsPassiveEventListeners() {\n if (supportsPassiveEvents == null && typeof window !== 'undefined') {\n try {\n window.addEventListener('test', null, Object.defineProperty({}, 'passive', {\n get: () => supportsPassiveEvents = true\n }));\n }\n finally {\n supportsPassiveEvents = supportsPassiveEvents || false;\n }\n }\n return supportsPassiveEvents;\n}\n/**\n * Normalizes an `AddEventListener` object to something that can be passed\n * to `addEventListener` on any browser, no matter whether it supports the\n * `options` parameter.\n * @param options Object to be normalized.\n */\nfunction normalizePassiveListenerOptions(options) {\n return supportsPassiveEventListeners() ? options : !!options.capture;\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/** Cached result of the way the browser handles the horizontal scroll axis in RTL mode. */\nlet rtlScrollAxisType;\n/** Cached result of the check that indicates whether the browser supports scroll behaviors. */\nlet scrollBehaviorSupported;\n/** Check whether the browser supports scroll behaviors. */\nfunction supportsScrollBehavior() {\n if (scrollBehaviorSupported == null) {\n // If we're not in the browser, it can't be supported. Also check for `Element`, because\n // some projects stub out the global `document` during SSR which can throw us off.\n if (typeof document !== 'object' || !document || typeof Element !== 'function' || !Element) {\n scrollBehaviorSupported = false;\n return scrollBehaviorSupported;\n }\n // If the element can have a `scrollBehavior` style, we can be sure that it's supported.\n if ('scrollBehavior' in document.documentElement.style) {\n scrollBehaviorSupported = true;\n }\n else {\n // At this point we have 3 possibilities: `scrollTo` isn't supported at all, it's\n // supported but it doesn't handle scroll behavior, or it has been polyfilled.\n const scrollToFunction = Element.prototype.scrollTo;\n if (scrollToFunction) {\n // We can detect if the function has been polyfilled by calling `toString` on it. Native\n // functions are obfuscated using `[native code]`, whereas if it was overwritten we'd get\n // the actual function source. Via https://davidwalsh.name/detect-native-function. Consider\n // polyfilled functions as supporting scroll behavior.\n scrollBehaviorSupported = !/\\{\\s*\\[native code\\]\\s*\\}/.test(scrollToFunction.toString());\n }\n else {\n scrollBehaviorSupported = false;\n }\n }\n }\n return scrollBehaviorSupported;\n}\n/**\n * Checks the type of RTL scroll axis used by this browser. As of time of writing, Chrome is NORMAL,\n * Firefox & Safari are NEGATED, and IE & Edge are INVERTED.\n */\nfunction getRtlScrollAxisType() {\n // We can't check unless we're on the browser. Just assume 'normal' if we're not.\n if (typeof document !== 'object' || !document) {\n return 0 /* NORMAL */;\n }\n if (rtlScrollAxisType == null) {\n // Create a 1px wide scrolling container and a 2px wide content element.\n const scrollContainer = document.createElement('div');\n const containerStyle = scrollContainer.style;\n scrollContainer.dir = 'rtl';\n containerStyle.width = '1px';\n containerStyle.overflow = 'auto';\n containerStyle.visibility = 'hidden';\n containerStyle.pointerEvents = 'none';\n containerStyle.position = 'absolute';\n const content = document.createElement('div');\n const contentStyle = content.style;\n contentStyle.width = '2px';\n contentStyle.height = '1px';\n scrollContainer.appendChild(content);\n document.body.appendChild(scrollContainer);\n rtlScrollAxisType = 0 /* NORMAL */;\n // The viewport starts scrolled all the way to the right in RTL mode. If we are in a NORMAL\n // browser this would mean that the scrollLeft should be 1. If it's zero instead we know we're\n // dealing with one of the other two types of browsers.\n if (scrollContainer.scrollLeft === 0) {\n // In a NEGATED browser the scrollLeft is always somewhere in [-maxScrollAmount, 0]. For an\n // INVERTED browser it is always somewhere in [0, maxScrollAmount]. We can determine which by\n // setting to the scrollLeft to 1. This is past the max for a NEGATED browser, so it will\n // return 0 when we read it again.\n scrollContainer.scrollLeft = 1;\n rtlScrollAxisType =\n scrollContainer.scrollLeft === 0 ? 1 /* NEGATED */ : 2 /* INVERTED */;\n }\n scrollContainer.parentNode.removeChild(scrollContainer);\n }\n return rtlScrollAxisType;\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 */\nlet shadowDomIsSupported;\n/** Checks whether the user's browser support Shadow DOM. */\nfunction _supportsShadowDom() {\n if (shadowDomIsSupported == null) {\n const head = typeof document !== 'undefined' ? document.head : null;\n shadowDomIsSupported = !!(head && (head.createShadowRoot || head.attachShadow));\n }\n return shadowDomIsSupported;\n}\n/** Gets the shadow root of an element, if supported and the element is inside the Shadow DOM. */\nfunction _getShadowRoot(element) {\n if (_supportsShadowDom()) {\n const rootNode = element.getRootNode ? element.getRootNode() : null;\n // Note that this should be caught by `_supportsShadowDom`, but some\n // teams have been able to hit this code path on unsupported browsers.\n if (typeof ShadowRoot !== 'undefined' && ShadowRoot && rootNode instanceof ShadowRoot) {\n return rootNode;\n }\n }\n return null;\n}\n/**\n * Gets the currently-focused element on the page while\n * also piercing through Shadow DOM boundaries.\n */\nfunction _getFocusedElementPierceShadowDom() {\n let activeElement = typeof document !== 'undefined' && document ?\n document.activeElement : null;\n while (activeElement && activeElement.shadowRoot) {\n const newActiveElement = activeElement.shadowRoot.activeElement;\n if (newActiveElement === activeElement) {\n break;\n }\n else {\n activeElement = newActiveElement;\n }\n }\n return activeElement;\n}\n/** Gets the target of an event while accounting for Shadow DOM. */\nfunction _getEventTarget(event) {\n // If an event is bound outside the Shadow DOM, the `event.target` will\n // point to the shadow root so we have to use `composedPath` instead.\n return (event.composedPath ? event.composedPath()[0] : event.target);\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/** Gets whether the code is currently running in a test environment. */\nfunction _isTestEnvironment() {\n // We can't use `declare const` because it causes conflicts inside Google with the real typings\n // for these symbols and we can't read them off the global object, because they don't appear to\n // be attached there for some runners like Jest.\n // (see: https://github.com/angular/components/issues/23365#issuecomment-938146643)\n return (\n // @ts-ignore\n (typeof __karma__ !== 'undefined' && !!__karma__) ||\n // @ts-ignore\n (typeof jasmine !== 'undefined' && !!jasmine) ||\n // @ts-ignore\n (typeof jest !== 'undefined' && !!jest) ||\n // @ts-ignore\n (typeof Mocha !== 'undefined' && !!Mocha));\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 { Platform, PlatformModule, _getEventTarget, _getFocusedElementPierceShadowDom, _getShadowRoot, _isTestEnvironment, _supportsShadowDom, getRtlScrollAxisType, getSupportedInputTypes, normalizePassiveListenerOptions, supportsPassiveEventListeners, supportsScrollBehavior };\n\n","import { coerceNumberProperty, coerceElement, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Directive, forwardRef, Input, Injectable, NgZone, Optional, Inject, ElementRef, Component, ViewEncapsulation, ChangeDetectionStrategy, ChangeDetectorRef, Output, ViewChild, ViewContainerRef, TemplateRef, IterableDiffers, SkipSelf, NgModule } from '@angular/core';\nimport { Subject, of, Observable, fromEvent, animationFrameScheduler, asapScheduler, Subscription, isObservable } from 'rxjs';\nimport { distinctUntilChanged, auditTime, filter, takeUntil, startWith, pairwise, switchMap, shareReplay } from 'rxjs/operators';\nimport * as i1 from '@angular/cdk/platform';\nimport { Platform, getRtlScrollAxisType, supportsScrollBehavior, PlatformModule } from '@angular/cdk/platform';\nimport * as i2 from '@angular/common';\nimport { DOCUMENT } from '@angular/common';\nimport { Directionality, BidiModule } from '@angular/cdk/bidi';\nimport { isDataSource, ArrayDataSource, _VIEW_REPEATER_STRATEGY, _RecycleViewRepeaterStrategy } from '@angular/cdk/collections';\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/** The injection token used to specify the virtual scrolling strategy. */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/cdk/platform';\nimport * as ɵngcc2 from '@angular/cdk/bidi';\nimport * as ɵngcc3 from '@angular/cdk/collections';\n\nconst _c0 = [\"contentWrapper\"];\nconst _c1 = [\"*\"];\nconst VIRTUAL_SCROLL_STRATEGY = new InjectionToken('VIRTUAL_SCROLL_STRATEGY');\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/** Virtual scrolling strategy for lists with items of known fixed size. */\nclass FixedSizeVirtualScrollStrategy {\n /**\n * @param itemSize The size of the items in the virtually scrolling list.\n * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more\n * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more.\n */\n constructor(itemSize, minBufferPx, maxBufferPx) {\n this._scrolledIndexChange = new Subject();\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n this.scrolledIndexChange = this._scrolledIndexChange.pipe(distinctUntilChanged());\n /** The attached viewport. */\n this._viewport = null;\n this._itemSize = itemSize;\n this._minBufferPx = minBufferPx;\n this._maxBufferPx = maxBufferPx;\n }\n /**\n * Attaches this scroll strategy to a viewport.\n * @param viewport The viewport to attach this strategy to.\n */\n attach(viewport) {\n this._viewport = viewport;\n this._updateTotalContentSize();\n this._updateRenderedRange();\n }\n /** Detaches this scroll strategy from the currently attached viewport. */\n detach() {\n this._scrolledIndexChange.complete();\n this._viewport = null;\n }\n /**\n * Update the item size and buffer size.\n * @param itemSize The size of the items in the virtually scrolling list.\n * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more\n * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more.\n */\n updateItemAndBufferSize(itemSize, minBufferPx, maxBufferPx) {\n if (maxBufferPx < minBufferPx && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('CDK virtual scroll: maxBufferPx must be greater than or equal to minBufferPx');\n }\n this._itemSize = itemSize;\n this._minBufferPx = minBufferPx;\n this._maxBufferPx = maxBufferPx;\n this._updateTotalContentSize();\n this._updateRenderedRange();\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onContentScrolled() {\n this._updateRenderedRange();\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onDataLengthChanged() {\n this._updateTotalContentSize();\n this._updateRenderedRange();\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onContentRendered() { }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onRenderedOffsetChanged() { }\n /**\n * Scroll to the offset for the given index.\n * @param index The index of the element to scroll to.\n * @param behavior The ScrollBehavior to use when scrolling.\n */\n scrollToIndex(index, behavior) {\n if (this._viewport) {\n this._viewport.scrollToOffset(index * this._itemSize, behavior);\n }\n }\n /** Update the viewport's total content size. */\n _updateTotalContentSize() {\n if (!this._viewport) {\n return;\n }\n this._viewport.setTotalContentSize(this._viewport.getDataLength() * this._itemSize);\n }\n /** Update the viewport's rendered range. */\n _updateRenderedRange() {\n if (!this._viewport) {\n return;\n }\n const renderedRange = this._viewport.getRenderedRange();\n const newRange = { start: renderedRange.start, end: renderedRange.end };\n const viewportSize = this._viewport.getViewportSize();\n const dataLength = this._viewport.getDataLength();\n let scrollOffset = this._viewport.measureScrollOffset();\n // Prevent NaN as result when dividing by zero.\n let firstVisibleIndex = (this._itemSize > 0) ? scrollOffset / this._itemSize : 0;\n // If user scrolls to the bottom of the list and data changes to a smaller list\n if (newRange.end > dataLength) {\n // We have to recalculate the first visible index based on new data length and viewport size.\n const maxVisibleItems = Math.ceil(viewportSize / this._itemSize);\n const newVisibleIndex = Math.max(0, Math.min(firstVisibleIndex, dataLength - maxVisibleItems));\n // If first visible index changed we must update scroll offset to handle start/end buffers\n // Current range must also be adjusted to cover the new position (bottom of new list).\n if (firstVisibleIndex != newVisibleIndex) {\n firstVisibleIndex = newVisibleIndex;\n scrollOffset = newVisibleIndex * this._itemSize;\n newRange.start = Math.floor(firstVisibleIndex);\n }\n newRange.end = Math.max(0, Math.min(dataLength, newRange.start + maxVisibleItems));\n }\n const startBuffer = scrollOffset - newRange.start * this._itemSize;\n if (startBuffer < this._minBufferPx && newRange.start != 0) {\n const expandStart = Math.ceil((this._maxBufferPx - startBuffer) / this._itemSize);\n newRange.start = Math.max(0, newRange.start - expandStart);\n newRange.end = Math.min(dataLength, Math.ceil(firstVisibleIndex + (viewportSize + this._minBufferPx) / this._itemSize));\n }\n else {\n const endBuffer = newRange.end * this._itemSize - (scrollOffset + viewportSize);\n if (endBuffer < this._minBufferPx && newRange.end != dataLength) {\n const expandEnd = Math.ceil((this._maxBufferPx - endBuffer) / this._itemSize);\n if (expandEnd > 0) {\n newRange.end = Math.min(dataLength, newRange.end + expandEnd);\n newRange.start = Math.max(0, Math.floor(firstVisibleIndex - this._minBufferPx / this._itemSize));\n }\n }\n }\n this._viewport.setRenderedRange(newRange);\n this._viewport.setRenderedContentOffset(this._itemSize * newRange.start);\n this._scrolledIndexChange.next(Math.floor(firstVisibleIndex));\n }\n}\n/**\n * Provider factory for `FixedSizeVirtualScrollStrategy` that simply extracts the already created\n * `FixedSizeVirtualScrollStrategy` from the given directive.\n * @param fixedSizeDir The instance of `CdkFixedSizeVirtualScroll` to extract the\n * `FixedSizeVirtualScrollStrategy` from.\n */\nfunction _fixedSizeVirtualScrollStrategyFactory(fixedSizeDir) {\n return fixedSizeDir._scrollStrategy;\n}\n/** A virtual scroll strategy that supports fixed-size items. */\nclass CdkFixedSizeVirtualScroll {\n constructor() {\n this._itemSize = 20;\n this._minBufferPx = 100;\n this._maxBufferPx = 200;\n /** The scroll strategy used by this directive. */\n this._scrollStrategy = new FixedSizeVirtualScrollStrategy(this.itemSize, this.minBufferPx, this.maxBufferPx);\n }\n /** The size of the items in the list (in pixels). */\n get itemSize() { return this._itemSize; }\n set itemSize(value) { this._itemSize = coerceNumberProperty(value); }\n /**\n * The minimum amount of buffer rendered beyond the viewport (in pixels).\n * If the amount of buffer dips below this number, more items will be rendered. Defaults to 100px.\n */\n get minBufferPx() { return this._minBufferPx; }\n set minBufferPx(value) { this._minBufferPx = coerceNumberProperty(value); }\n /**\n * The number of pixels worth of buffer to render for when rendering new items. Defaults to 200px.\n */\n get maxBufferPx() { return this._maxBufferPx; }\n set maxBufferPx(value) { this._maxBufferPx = coerceNumberProperty(value); }\n ngOnChanges() {\n this._scrollStrategy.updateItemAndBufferSize(this.itemSize, this.minBufferPx, this.maxBufferPx);\n }\n}\nCdkFixedSizeVirtualScroll.ɵfac = function CdkFixedSizeVirtualScroll_Factory(t) { return new (t || CdkFixedSizeVirtualScroll)(); };\nCdkFixedSizeVirtualScroll.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CdkFixedSizeVirtualScroll, selectors: [[\"cdk-virtual-scroll-viewport\", \"itemSize\", \"\"]], inputs: { itemSize: \"itemSize\", minBufferPx: \"minBufferPx\", maxBufferPx: \"maxBufferPx\" }, features: [ɵngcc0.ɵɵProvidersFeature([{\n provide: VIRTUAL_SCROLL_STRATEGY,\n useFactory: _fixedSizeVirtualScrollStrategyFactory,\n deps: [forwardRef(() => CdkFixedSizeVirtualScroll)]\n }]), ɵngcc0.ɵɵNgOnChangesFeature] });\nCdkFixedSizeVirtualScroll.propDecorators = {\n itemSize: [{ type: Input }],\n minBufferPx: [{ type: Input }],\n maxBufferPx: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkFixedSizeVirtualScroll, [{\n type: Directive,\n args: [{\n selector: 'cdk-virtual-scroll-viewport[itemSize]',\n providers: [{\n provide: VIRTUAL_SCROLL_STRATEGY,\n useFactory: _fixedSizeVirtualScrollStrategyFactory,\n deps: [forwardRef(() => CdkFixedSizeVirtualScroll)]\n }]\n }]\n }], function () { return []; }, { itemSize: [{\n type: Input\n }], minBufferPx: [{\n type: Input\n }], maxBufferPx: [{\n type: Input\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/** Time in ms to throttle the scrolling events by default. */\nconst DEFAULT_SCROLL_TIME = 20;\n/**\n * Service contained all registered Scrollable references and emits an event when any one of the\n * Scrollable references emit a scrolled event.\n */\nclass ScrollDispatcher {\n constructor(_ngZone, _platform, document) {\n this._ngZone = _ngZone;\n this._platform = _platform;\n /** Subject for notifying that a registered scrollable reference element has been scrolled. */\n this._scrolled = new Subject();\n /** Keeps track of the global `scroll` and `resize` subscriptions. */\n this._globalSubscription = null;\n /** Keeps track of the amount of subscriptions to `scrolled`. Used for cleaning up afterwards. */\n this._scrolledCount = 0;\n /**\n * Map of all the scrollable references that are registered with the service and their\n * scroll event subscriptions.\n */\n this.scrollContainers = new Map();\n this._document = document;\n }\n /**\n * Registers a scrollable instance with the service and listens for its scrolled events. When the\n * scrollable is scrolled, the service emits the event to its scrolled observable.\n * @param scrollable Scrollable instance to be registered.\n */\n register(scrollable) {\n if (!this.scrollContainers.has(scrollable)) {\n this.scrollContainers.set(scrollable, scrollable.elementScrolled()\n .subscribe(() => this._scrolled.next(scrollable)));\n }\n }\n /**\n * Deregisters a Scrollable reference and unsubscribes from its scroll event observable.\n * @param scrollable Scrollable instance to be deregistered.\n */\n deregister(scrollable) {\n const scrollableReference = this.scrollContainers.get(scrollable);\n if (scrollableReference) {\n scrollableReference.unsubscribe();\n this.scrollContainers.delete(scrollable);\n }\n }\n /**\n * Returns an observable that emits an event whenever any of the registered Scrollable\n * references (or window, document, or body) fire a scrolled event. Can provide a time in ms\n * to override the default \"throttle\" time.\n *\n * **Note:** in order to avoid hitting change detection for every scroll event,\n * all of the events emitted from this stream will be run outside the Angular zone.\n * If you need to update any data bindings as a result of a scroll event, you have\n * to run the callback using `NgZone.run`.\n */\n scrolled(auditTimeInMs = DEFAULT_SCROLL_TIME) {\n if (!this._platform.isBrowser) {\n return of();\n }\n return new Observable((observer) => {\n if (!this._globalSubscription) {\n this._addGlobalListener();\n }\n // In the case of a 0ms delay, use an observable without auditTime\n // since it does add a perceptible delay in processing overhead.\n const subscription = auditTimeInMs > 0 ?\n this._scrolled.pipe(auditTime(auditTimeInMs)).subscribe(observer) :\n this._scrolled.subscribe(observer);\n this._scrolledCount++;\n return () => {\n subscription.unsubscribe();\n this._scrolledCount--;\n if (!this._scrolledCount) {\n this._removeGlobalListener();\n }\n };\n });\n }\n ngOnDestroy() {\n this._removeGlobalListener();\n this.scrollContainers.forEach((_, container) => this.deregister(container));\n this._scrolled.complete();\n }\n /**\n * Returns an observable that emits whenever any of the\n * scrollable ancestors of an element are scrolled.\n * @param elementOrElementRef Element whose ancestors to listen for.\n * @param auditTimeInMs Time to throttle the scroll events.\n */\n ancestorScrolled(elementOrElementRef, auditTimeInMs) {\n const ancestors = this.getAncestorScrollContainers(elementOrElementRef);\n return this.scrolled(auditTimeInMs).pipe(filter(target => {\n return !target || ancestors.indexOf(target) > -1;\n }));\n }\n /** Returns all registered Scrollables that contain the provided element. */\n getAncestorScrollContainers(elementOrElementRef) {\n const scrollingContainers = [];\n this.scrollContainers.forEach((_subscription, scrollable) => {\n if (this._scrollableContainsElement(scrollable, elementOrElementRef)) {\n scrollingContainers.push(scrollable);\n }\n });\n return scrollingContainers;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n return this._document.defaultView || window;\n }\n /** Returns true if the element is contained within the provided Scrollable. */\n _scrollableContainsElement(scrollable, elementOrElementRef) {\n let element = coerceElement(elementOrElementRef);\n let scrollableElement = scrollable.getElementRef().nativeElement;\n // Traverse through the element parents until we reach null, checking if any of the elements\n // are the scrollable's element.\n do {\n if (element == scrollableElement) {\n return true;\n }\n } while (element = element.parentElement);\n return false;\n }\n /** Sets up the global scroll listeners. */\n _addGlobalListener() {\n this._globalSubscription = this._ngZone.runOutsideAngular(() => {\n const window = this._getWindow();\n return fromEvent(window.document, 'scroll').subscribe(() => this._scrolled.next());\n });\n }\n /** Cleans up the global scroll listener. */\n _removeGlobalListener() {\n if (this._globalSubscription) {\n this._globalSubscription.unsubscribe();\n this._globalSubscription = null;\n }\n }\n}\nScrollDispatcher.ɵfac = function ScrollDispatcher_Factory(t) { return new (t || ScrollDispatcher)(ɵngcc0.ɵɵinject(ɵngcc0.NgZone), ɵngcc0.ɵɵinject(ɵngcc1.Platform), ɵngcc0.ɵɵinject(DOCUMENT, 8)); };\nScrollDispatcher.ɵprov = i0.ɵɵdefineInjectable({ factory: function ScrollDispatcher_Factory() { return new ScrollDispatcher(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i1.Platform), i0.ɵɵinject(i2.DOCUMENT, 8)); }, token: ScrollDispatcher, providedIn: \"root\" });\nScrollDispatcher.ctorParameters = () => [\n { type: NgZone },\n { type: Platform },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ScrollDispatcher, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: ɵngcc0.NgZone }, { type: ɵngcc1.Platform }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, null); })();\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 * Sends an event when the directive's element is scrolled. Registers itself with the\n * ScrollDispatcher service to include itself as part of its collection of scrolling events that it\n * can be listened to through the service.\n */\nclass CdkScrollable {\n constructor(elementRef, scrollDispatcher, ngZone, dir) {\n this.elementRef = elementRef;\n this.scrollDispatcher = scrollDispatcher;\n this.ngZone = ngZone;\n this.dir = dir;\n this._destroyed = new Subject();\n this._elementScrolled = new Observable((observer) => this.ngZone.runOutsideAngular(() => fromEvent(this.elementRef.nativeElement, 'scroll').pipe(takeUntil(this._destroyed))\n .subscribe(observer)));\n }\n ngOnInit() {\n this.scrollDispatcher.register(this);\n }\n ngOnDestroy() {\n this.scrollDispatcher.deregister(this);\n this._destroyed.next();\n this._destroyed.complete();\n }\n /** Returns observable that emits when a scroll event is fired on the host element. */\n elementScrolled() {\n return this._elementScrolled;\n }\n /** Gets the ElementRef for the viewport. */\n getElementRef() {\n return this.elementRef;\n }\n /**\n * Scrolls to the specified offsets. This is a normalized version of the browser's native scrollTo\n * method, since browsers are not consistent about what scrollLeft means in RTL. For this method\n * left and right always refer to the left and right side of the scrolling container irrespective\n * of the layout direction. start and end refer to left and right in an LTR context and vice-versa\n * in an RTL context.\n * @param options specified the offsets to scroll to.\n */\n scrollTo(options) {\n const el = this.elementRef.nativeElement;\n const isRtl = this.dir && this.dir.value == 'rtl';\n // Rewrite start & end offsets as right or left offsets.\n if (options.left == null) {\n options.left = isRtl ? options.end : options.start;\n }\n if (options.right == null) {\n options.right = isRtl ? options.start : options.end;\n }\n // Rewrite the bottom offset as a top offset.\n if (options.bottom != null) {\n options.top =\n el.scrollHeight - el.clientHeight - options.bottom;\n }\n // Rewrite the right offset as a left offset.\n if (isRtl && getRtlScrollAxisType() != 0 /* NORMAL */) {\n if (options.left != null) {\n options.right =\n el.scrollWidth - el.clientWidth - options.left;\n }\n if (getRtlScrollAxisType() == 2 /* INVERTED */) {\n options.left = options.right;\n }\n else if (getRtlScrollAxisType() == 1 /* NEGATED */) {\n options.left = options.right ? -options.right : options.right;\n }\n }\n else {\n if (options.right != null) {\n options.left =\n el.scrollWidth - el.clientWidth - options.right;\n }\n }\n this._applyScrollToOptions(options);\n }\n _applyScrollToOptions(options) {\n const el = this.elementRef.nativeElement;\n if (supportsScrollBehavior()) {\n el.scrollTo(options);\n }\n else {\n if (options.top != null) {\n el.scrollTop = options.top;\n }\n if (options.left != null) {\n el.scrollLeft = options.left;\n }\n }\n }\n /**\n * Measures the scroll offset relative to the specified edge of the viewport. This method can be\n * used instead of directly checking scrollLeft or scrollTop, since browsers are not consistent\n * about what scrollLeft means in RTL. The values returned by this method are normalized such that\n * left and right always refer to the left and right side of the scrolling container irrespective\n * of the layout direction. start and end refer to left and right in an LTR context and vice-versa\n * in an RTL context.\n * @param from The edge to measure from.\n */\n measureScrollOffset(from) {\n const LEFT = 'left';\n const RIGHT = 'right';\n const el = this.elementRef.nativeElement;\n if (from == 'top') {\n return el.scrollTop;\n }\n if (from == 'bottom') {\n return el.scrollHeight - el.clientHeight - el.scrollTop;\n }\n // Rewrite start & end as left or right offsets.\n const isRtl = this.dir && this.dir.value == 'rtl';\n if (from == 'start') {\n from = isRtl ? RIGHT : LEFT;\n }\n else if (from == 'end') {\n from = isRtl ? LEFT : RIGHT;\n }\n if (isRtl && getRtlScrollAxisType() == 2 /* INVERTED */) {\n // For INVERTED, scrollLeft is (scrollWidth - clientWidth) when scrolled all the way left and\n // 0 when scrolled all the way right.\n if (from == LEFT) {\n return el.scrollWidth - el.clientWidth - el.scrollLeft;\n }\n else {\n return el.scrollLeft;\n }\n }\n else if (isRtl && getRtlScrollAxisType() == 1 /* NEGATED */) {\n // For NEGATED, scrollLeft is -(scrollWidth - clientWidth) when scrolled all the way left and\n // 0 when scrolled all the way right.\n if (from == LEFT) {\n return el.scrollLeft + el.scrollWidth - el.clientWidth;\n }\n else {\n return -el.scrollLeft;\n }\n }\n else {\n // For NORMAL, as well as non-RTL contexts, scrollLeft is 0 when scrolled all the way left and\n // (scrollWidth - clientWidth) when scrolled all the way right.\n if (from == LEFT) {\n return el.scrollLeft;\n }\n else {\n return el.scrollWidth - el.clientWidth - el.scrollLeft;\n }\n }\n }\n}\nCdkScrollable.ɵfac = function CdkScrollable_Factory(t) { return new (t || CdkScrollable)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ScrollDispatcher), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.Directionality, 8)); };\nCdkScrollable.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CdkScrollable, selectors: [[\"\", \"cdk-scrollable\", \"\"], [\"\", \"cdkScrollable\", \"\"]] });\nCdkScrollable.ctorParameters = () => [\n { type: ElementRef },\n { type: ScrollDispatcher },\n { type: NgZone },\n { type: Directionality, decorators: [{ type: Optional }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkScrollable, [{\n type: Directive,\n args: [{\n selector: '[cdk-scrollable], [cdkScrollable]'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ScrollDispatcher }, { type: ɵngcc0.NgZone }, { type: ɵngcc2.Directionality, decorators: [{\n type: Optional\n }] }]; }, null); })();\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/** Time in ms to throttle the resize events by default. */\nconst DEFAULT_RESIZE_TIME = 20;\n/**\n * Simple utility for getting the bounds of the browser viewport.\n * @docs-private\n */\nclass ViewportRuler {\n constructor(_platform, ngZone, document) {\n this._platform = _platform;\n /** Stream of viewport change events. */\n this._change = new Subject();\n /** Event listener that will be used to handle the viewport change events. */\n this._changeListener = (event) => {\n this._change.next(event);\n };\n this._document = document;\n ngZone.runOutsideAngular(() => {\n if (_platform.isBrowser) {\n const window = this._getWindow();\n // Note that bind the events ourselves, rather than going through something like RxJS's\n // `fromEvent` so that we can ensure that they're bound outside of the NgZone.\n window.addEventListener('resize', this._changeListener);\n window.addEventListener('orientationchange', this._changeListener);\n }\n // Clear the cached position so that the viewport is re-measured next time it is required.\n // We don't need to keep track of the subscription, because it is completed on destroy.\n this.change().subscribe(() => this._viewportSize = null);\n });\n }\n ngOnDestroy() {\n if (this._platform.isBrowser) {\n const window = this._getWindow();\n window.removeEventListener('resize', this._changeListener);\n window.removeEventListener('orientationchange', this._changeListener);\n }\n this._change.complete();\n }\n /** Returns the viewport's width and height. */\n getViewportSize() {\n if (!this._viewportSize) {\n this._updateViewportSize();\n }\n const output = { width: this._viewportSize.width, height: this._viewportSize.height };\n // If we're not on a browser, don't cache the size since it'll be mocked out anyway.\n if (!this._platform.isBrowser) {\n this._viewportSize = null;\n }\n return output;\n }\n /** Gets a ClientRect for the viewport's bounds. */\n getViewportRect() {\n // Use the document element's bounding rect rather than the window scroll properties\n // (e.g. pageYOffset, scrollY) due to in issue in Chrome and IE where window scroll\n // properties and client coordinates (boundingClientRect, clientX/Y, etc.) are in different\n // conceptual viewports. Under most circumstances these viewports are equivalent, but they\n // can disagree when the page is pinch-zoomed (on devices that support touch).\n // See https://bugs.chromium.org/p/chromium/issues/detail?id=489206#c4\n // We use the documentElement instead of the body because, by default (without a css reset)\n // browsers typically give the document body an 8px margin, which is not included in\n // getBoundingClientRect().\n const scrollPosition = this.getViewportScrollPosition();\n const { width, height } = this.getViewportSize();\n return {\n top: scrollPosition.top,\n left: scrollPosition.left,\n bottom: scrollPosition.top + height,\n right: scrollPosition.left + width,\n height,\n width,\n };\n }\n /** Gets the (top, left) scroll position of the viewport. */\n getViewportScrollPosition() {\n // While we can get a reference to the fake document\n // during SSR, it doesn't have getBoundingClientRect.\n if (!this._platform.isBrowser) {\n return { top: 0, left: 0 };\n }\n // The top-left-corner of the viewport is determined by the scroll position of the document\n // body, normally just (scrollLeft, scrollTop). However, Chrome and Firefox disagree about\n // whether `document.body` or `document.documentElement` is the scrolled element, so reading\n // `scrollTop` and `scrollLeft` is inconsistent. However, using the bounding rect of\n // `document.documentElement` works consistently, where the `top` and `left` values will\n // equal negative the scroll position.\n const document = this._document;\n const window = this._getWindow();\n const documentElement = document.documentElement;\n const documentRect = documentElement.getBoundingClientRect();\n const top = -documentRect.top || document.body.scrollTop || window.scrollY ||\n documentElement.scrollTop || 0;\n const left = -documentRect.left || document.body.scrollLeft || window.scrollX ||\n documentElement.scrollLeft || 0;\n return { top, left };\n }\n /**\n * Returns a stream that emits whenever the size of the viewport changes.\n * This stream emits outside of the Angular zone.\n * @param throttleTime Time in milliseconds to throttle the stream.\n */\n change(throttleTime = DEFAULT_RESIZE_TIME) {\n return throttleTime > 0 ? this._change.pipe(auditTime(throttleTime)) : this._change;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n return this._document.defaultView || window;\n }\n /** Updates the cached viewport size. */\n _updateViewportSize() {\n const window = this._getWindow();\n this._viewportSize = this._platform.isBrowser ?\n { width: window.innerWidth, height: window.innerHeight } :\n { width: 0, height: 0 };\n }\n}\nViewportRuler.ɵfac = function ViewportRuler_Factory(t) { return new (t || ViewportRuler)(ɵngcc0.ɵɵinject(ɵngcc1.Platform), ɵngcc0.ɵɵinject(ɵngcc0.NgZone), ɵngcc0.ɵɵinject(DOCUMENT, 8)); };\nViewportRuler.ɵprov = i0.ɵɵdefineInjectable({ factory: function ViewportRuler_Factory() { return new ViewportRuler(i0.ɵɵinject(i1.Platform), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i2.DOCUMENT, 8)); }, token: ViewportRuler, providedIn: \"root\" });\nViewportRuler.ctorParameters = () => [\n { type: Platform },\n { type: NgZone },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ViewportRuler, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: ɵngcc1.Platform }, { type: ɵngcc0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, null); })();\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/** Checks if the given ranges are equal. */\nfunction rangesEqual(r1, r2) {\n return r1.start == r2.start && r1.end == r2.end;\n}\n/**\n * Scheduler to be used for scroll events. Needs to fall back to\n * something that doesn't rely on requestAnimationFrame on environments\n * that don't support it (e.g. server-side rendering).\n */\nconst SCROLL_SCHEDULER = typeof requestAnimationFrame !== 'undefined' ? animationFrameScheduler : asapScheduler;\n/** A viewport that virtualizes its scrolling with the help of `CdkVirtualForOf`. */\nclass CdkVirtualScrollViewport extends CdkScrollable {\n constructor(elementRef, _changeDetectorRef, ngZone, _scrollStrategy, dir, scrollDispatcher, viewportRuler) {\n super(elementRef, scrollDispatcher, ngZone, dir);\n this.elementRef = elementRef;\n this._changeDetectorRef = _changeDetectorRef;\n this._scrollStrategy = _scrollStrategy;\n /** Emits when the viewport is detached from a CdkVirtualForOf. */\n this._detachedSubject = new Subject();\n /** Emits when the rendered range changes. */\n this._renderedRangeSubject = new Subject();\n this._orientation = 'vertical';\n this._appendOnly = false;\n // Note: we don't use the typical EventEmitter here because we need to subscribe to the scroll\n // strategy lazily (i.e. only if the user is actually listening to the events). We do this because\n // depending on how the strategy calculates the scrolled index, it may come at a cost to\n // performance.\n /** Emits when the index of the first element visible in the viewport changes. */\n this.scrolledIndexChange = new Observable((observer) => this._scrollStrategy.scrolledIndexChange.subscribe(index => Promise.resolve().then(() => this.ngZone.run(() => observer.next(index)))));\n /** A stream that emits whenever the rendered range changes. */\n this.renderedRangeStream = this._renderedRangeSubject;\n /**\n * The total size of all content (in pixels), including content that is not currently rendered.\n */\n this._totalContentSize = 0;\n /** A string representing the `style.width` property value to be used for the spacer element. */\n this._totalContentWidth = '';\n /** A string representing the `style.height` property value to be used for the spacer element. */\n this._totalContentHeight = '';\n /** The currently rendered range of indices. */\n this._renderedRange = { start: 0, end: 0 };\n /** The length of the data bound to this viewport (in number of items). */\n this._dataLength = 0;\n /** The size of the viewport (in pixels). */\n this._viewportSize = 0;\n /** The last rendered content offset that was set. */\n this._renderedContentOffset = 0;\n /**\n * Whether the last rendered content offset was to the end of the content (and therefore needs to\n * be rewritten as an offset to the start of the content).\n */\n this._renderedContentOffsetNeedsRewrite = false;\n /** Whether there is a pending change detection cycle. */\n this._isChangeDetectionPending = false;\n /** A list of functions to run after the next change detection cycle. */\n this._runAfterChangeDetection = [];\n /** Subscription to changes in the viewport size. */\n this._viewportChanges = Subscription.EMPTY;\n if (!_scrollStrategy && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Error: cdk-virtual-scroll-viewport requires the \"itemSize\" property to be set.');\n }\n this._viewportChanges = viewportRuler.change().subscribe(() => {\n this.checkViewportSize();\n });\n }\n /** The direction the viewport scrolls. */\n get orientation() {\n return this._orientation;\n }\n set orientation(orientation) {\n if (this._orientation !== orientation) {\n this._orientation = orientation;\n this._calculateSpacerSize();\n }\n }\n /**\n * Whether rendered items should persist in the DOM after scrolling out of view. By default, items\n * will be removed.\n */\n get appendOnly() {\n return this._appendOnly;\n }\n set appendOnly(value) {\n this._appendOnly = coerceBooleanProperty(value);\n }\n ngOnInit() {\n super.ngOnInit();\n // It's still too early to measure the viewport at this point. Deferring with a promise allows\n // the Viewport to be rendered with the correct size before we measure. We run this outside the\n // zone to avoid causing more change detection cycles. We handle the change detection loop\n // ourselves instead.\n this.ngZone.runOutsideAngular(() => Promise.resolve().then(() => {\n this._measureViewportSize();\n this._scrollStrategy.attach(this);\n this.elementScrolled()\n .pipe(\n // Start off with a fake scroll event so we properly detect our initial position.\n startWith(null), \n // Collect multiple events into one until the next animation frame. This way if\n // there are multiple scroll events in the same frame we only need to recheck\n // our layout once.\n auditTime(0, SCROLL_SCHEDULER))\n .subscribe(() => this._scrollStrategy.onContentScrolled());\n this._markChangeDetectionNeeded();\n }));\n }\n ngOnDestroy() {\n this.detach();\n this._scrollStrategy.detach();\n // Complete all subjects\n this._renderedRangeSubject.complete();\n this._detachedSubject.complete();\n this._viewportChanges.unsubscribe();\n super.ngOnDestroy();\n }\n /** Attaches a `CdkVirtualScrollRepeater` to this viewport. */\n attach(forOf) {\n if (this._forOf && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('CdkVirtualScrollViewport is already attached.');\n }\n // Subscribe to the data stream of the CdkVirtualForOf to keep track of when the data length\n // changes. Run outside the zone to avoid triggering change detection, since we're managing the\n // change detection loop ourselves.\n this.ngZone.runOutsideAngular(() => {\n this._forOf = forOf;\n this._forOf.dataStream.pipe(takeUntil(this._detachedSubject)).subscribe(data => {\n const newLength = data.length;\n if (newLength !== this._dataLength) {\n this._dataLength = newLength;\n this._scrollStrategy.onDataLengthChanged();\n }\n this._doChangeDetection();\n });\n });\n }\n /** Detaches the current `CdkVirtualForOf`. */\n detach() {\n this._forOf = null;\n this._detachedSubject.next();\n }\n /** Gets the length of the data bound to this viewport (in number of items). */\n getDataLength() {\n return this._dataLength;\n }\n /** Gets the size of the viewport (in pixels). */\n getViewportSize() {\n return this._viewportSize;\n }\n // TODO(mmalerba): This is technically out of sync with what's really rendered until a render\n // cycle happens. I'm being careful to only call it after the render cycle is complete and before\n // setting it to something else, but its error prone and should probably be split into\n // `pendingRange` and `renderedRange`, the latter reflecting whats actually in the DOM.\n /** Get the current rendered range of items. */\n getRenderedRange() {\n return this._renderedRange;\n }\n /**\n * Sets the total size of all content (in pixels), including content that is not currently\n * rendered.\n */\n setTotalContentSize(size) {\n if (this._totalContentSize !== size) {\n this._totalContentSize = size;\n this._calculateSpacerSize();\n this._markChangeDetectionNeeded();\n }\n }\n /** Sets the currently rendered range of indices. */\n setRenderedRange(range) {\n if (!rangesEqual(this._renderedRange, range)) {\n if (this.appendOnly) {\n range = { start: 0, end: Math.max(this._renderedRange.end, range.end) };\n }\n this._renderedRangeSubject.next(this._renderedRange = range);\n this._markChangeDetectionNeeded(() => this._scrollStrategy.onContentRendered());\n }\n }\n /**\n * Gets the offset from the start of the viewport to the start of the rendered data (in pixels).\n */\n getOffsetToRenderedContentStart() {\n return this._renderedContentOffsetNeedsRewrite ? null : this._renderedContentOffset;\n }\n /**\n * Sets the offset from the start of the viewport to either the start or end of the rendered data\n * (in pixels).\n */\n setRenderedContentOffset(offset, to = 'to-start') {\n // For a horizontal viewport in a right-to-left language we need to translate along the x-axis\n // in the negative direction.\n const isRtl = this.dir && this.dir.value == 'rtl';\n const isHorizontal = this.orientation == 'horizontal';\n const axis = isHorizontal ? 'X' : 'Y';\n const axisDirection = isHorizontal && isRtl ? -1 : 1;\n let transform = `translate${axis}(${Number(axisDirection * offset)}px)`;\n this._renderedContentOffset = offset;\n if (to === 'to-end') {\n transform += ` translate${axis}(-100%)`;\n // The viewport should rewrite this as a `to-start` offset on the next render cycle. Otherwise\n // elements will appear to expand in the wrong direction (e.g. `mat-expansion-panel` would\n // expand upward).\n this._renderedContentOffsetNeedsRewrite = true;\n }\n if (this._renderedContentTransform != transform) {\n // We know this value is safe because we parse `offset` with `Number()` before passing it\n // into the string.\n this._renderedContentTransform = transform;\n this._markChangeDetectionNeeded(() => {\n if (this._renderedContentOffsetNeedsRewrite) {\n this._renderedContentOffset -= this.measureRenderedContentSize();\n this._renderedContentOffsetNeedsRewrite = false;\n this.setRenderedContentOffset(this._renderedContentOffset);\n }\n else {\n this._scrollStrategy.onRenderedOffsetChanged();\n }\n });\n }\n }\n /**\n * Scrolls to the given offset from the start of the viewport. Please note that this is not always\n * the same as setting `scrollTop` or `scrollLeft`. In a horizontal viewport with right-to-left\n * direction, this would be the equivalent of setting a fictional `scrollRight` property.\n * @param offset The offset to scroll to.\n * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\n */\n scrollToOffset(offset, behavior = 'auto') {\n const options = { behavior };\n if (this.orientation === 'horizontal') {\n options.start = offset;\n }\n else {\n options.top = offset;\n }\n this.scrollTo(options);\n }\n /**\n * Scrolls to the offset for the given index.\n * @param index The index of the element to scroll to.\n * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\n */\n scrollToIndex(index, behavior = 'auto') {\n this._scrollStrategy.scrollToIndex(index, behavior);\n }\n /**\n * Gets the current scroll offset from the start of the viewport (in pixels).\n * @param from The edge to measure the offset from. Defaults to 'top' in vertical mode and 'start'\n * in horizontal mode.\n */\n measureScrollOffset(from) {\n return from ?\n super.measureScrollOffset(from) :\n super.measureScrollOffset(this.orientation === 'horizontal' ? 'start' : 'top');\n }\n /** Measure the combined size of all of the rendered items. */\n measureRenderedContentSize() {\n const contentEl = this._contentWrapper.nativeElement;\n return this.orientation === 'horizontal' ? contentEl.offsetWidth : contentEl.offsetHeight;\n }\n /**\n * Measure the total combined size of the given range. Throws if the range includes items that are\n * not rendered.\n */\n measureRangeSize(range) {\n if (!this._forOf) {\n return 0;\n }\n return this._forOf.measureRangeSize(range, this.orientation);\n }\n /** Update the viewport dimensions and re-render. */\n checkViewportSize() {\n // TODO: Cleanup later when add logic for handling content resize\n this._measureViewportSize();\n this._scrollStrategy.onDataLengthChanged();\n }\n /** Measure the viewport size. */\n _measureViewportSize() {\n const viewportEl = this.elementRef.nativeElement;\n this._viewportSize = this.orientation === 'horizontal' ?\n viewportEl.clientWidth : viewportEl.clientHeight;\n }\n /** Queue up change detection to run. */\n _markChangeDetectionNeeded(runAfter) {\n if (runAfter) {\n this._runAfterChangeDetection.push(runAfter);\n }\n // Use a Promise to batch together calls to `_doChangeDetection`. This way if we set a bunch of\n // properties sequentially we only have to run `_doChangeDetection` once at the end.\n if (!this._isChangeDetectionPending) {\n this._isChangeDetectionPending = true;\n this.ngZone.runOutsideAngular(() => Promise.resolve().then(() => {\n this._doChangeDetection();\n }));\n }\n }\n /** Run change detection. */\n _doChangeDetection() {\n this._isChangeDetectionPending = false;\n // Apply the content transform. The transform can't be set via an Angular binding because\n // bypassSecurityTrustStyle is banned in Google. However the value is safe, it's composed of\n // string literals, a variable that can only be 'X' or 'Y', and user input that is run through\n // the `Number` function first to coerce it to a numeric value.\n this._contentWrapper.nativeElement.style.transform = this._renderedContentTransform;\n // Apply changes to Angular bindings. Note: We must call `markForCheck` to run change detection\n // from the root, since the repeated items are content projected in. Calling `detectChanges`\n // instead does not properly check the projected content.\n this.ngZone.run(() => this._changeDetectorRef.markForCheck());\n const runAfterChangeDetection = this._runAfterChangeDetection;\n this._runAfterChangeDetection = [];\n for (const fn of runAfterChangeDetection) {\n fn();\n }\n }\n /** Calculates the `style.width` and `style.height` for the spacer element. */\n _calculateSpacerSize() {\n this._totalContentHeight =\n this.orientation === 'horizontal' ? '' : `${this._totalContentSize}px`;\n this._totalContentWidth =\n this.orientation === 'horizontal' ? `${this._totalContentSize}px` : '';\n }\n}\nCdkVirtualScrollViewport.ɵfac = function CdkVirtualScrollViewport_Factory(t) { return new (t || CdkVirtualScrollViewport)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(VIRTUAL_SCROLL_STRATEGY, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.Directionality, 8), ɵngcc0.ɵɵdirectiveInject(ScrollDispatcher), ɵngcc0.ɵɵdirectiveInject(ViewportRuler)); };\nCdkVirtualScrollViewport.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CdkVirtualScrollViewport, selectors: [[\"cdk-virtual-scroll-viewport\"]], viewQuery: function CdkVirtualScrollViewport_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._contentWrapper = _t.first);\n } }, hostAttrs: [1, \"cdk-virtual-scroll-viewport\"], hostVars: 4, hostBindings: function CdkVirtualScrollViewport_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"cdk-virtual-scroll-orientation-horizontal\", ctx.orientation === \"horizontal\")(\"cdk-virtual-scroll-orientation-vertical\", ctx.orientation !== \"horizontal\");\n } }, inputs: { orientation: \"orientation\", appendOnly: \"appendOnly\" }, outputs: { scrolledIndexChange: \"scrolledIndexChange\" }, features: [ɵngcc0.ɵɵProvidersFeature([{\n provide: CdkScrollable,\n useExisting: CdkVirtualScrollViewport\n }]), ɵngcc0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c1, decls: 4, vars: 4, consts: [[1, \"cdk-virtual-scroll-content-wrapper\"], [\"contentWrapper\", \"\"], [1, \"cdk-virtual-scroll-spacer\"]], template: function CdkVirtualScrollViewport_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementStart(0, \"div\", 0, 1);\n ɵngcc0.ɵɵprojection(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(3, \"div\", 2);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵstyleProp(\"width\", ctx._totalContentWidth)(\"height\", ctx._totalContentHeight);\n } }, styles: [\"cdk-virtual-scroll-viewport{display:block;position:relative;overflow:auto;contain:strict;transform:translateZ(0);will-change:scroll-position;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{position:absolute;top:0;left:0;height:1px;width:1px;transform-origin:0 0}[dir=rtl] .cdk-virtual-scroll-spacer{right:0;left:auto;transform-origin:100% 0}\\n\"], encapsulation: 2, changeDetection: 0 });\nCdkVirtualScrollViewport.ctorParameters = () => [\n { type: ElementRef },\n { type: ChangeDetectorRef },\n { type: NgZone },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [VIRTUAL_SCROLL_STRATEGY,] }] },\n { type: Directionality, decorators: [{ type: Optional }] },\n { type: ScrollDispatcher },\n { type: ViewportRuler }\n];\nCdkVirtualScrollViewport.propDecorators = {\n orientation: [{ type: Input }],\n appendOnly: [{ type: Input }],\n scrolledIndexChange: [{ type: Output }],\n _contentWrapper: [{ type: ViewChild, args: ['contentWrapper', { static: true },] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkVirtualScrollViewport, [{\n type: Component,\n args: [{\n selector: 'cdk-virtual-scroll-viewport',\n template: \"\\n
\\n \\n
\\n\\n
\\n\",\n host: {\n 'class': 'cdk-virtual-scroll-viewport',\n '[class.cdk-virtual-scroll-orientation-horizontal]': 'orientation === \"horizontal\"',\n '[class.cdk-virtual-scroll-orientation-vertical]': 'orientation !== \"horizontal\"'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{\n provide: CdkScrollable,\n useExisting: CdkVirtualScrollViewport\n }],\n styles: [\"cdk-virtual-scroll-viewport{display:block;position:relative;overflow:auto;contain:strict;transform:translateZ(0);will-change:scroll-position;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{position:absolute;top:0;left:0;height:1px;width:1px;transform-origin:0 0}[dir=rtl] .cdk-virtual-scroll-spacer{right:0;left:auto;transform-origin:100% 0}\\n\"]\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [VIRTUAL_SCROLL_STRATEGY]\n }] }, { type: ɵngcc2.Directionality, decorators: [{\n type: Optional\n }] }, { type: ScrollDispatcher }, { type: ViewportRuler }]; }, { scrolledIndexChange: [{\n type: Output\n }], orientation: [{\n type: Input\n }], appendOnly: [{\n type: Input\n }], _contentWrapper: [{\n type: ViewChild,\n args: ['contentWrapper', { static: true }]\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/** Helper to extract the offset of a DOM Node in a certain direction. */\nfunction getOffset(orientation, direction, node) {\n const el = node;\n if (!el.getBoundingClientRect) {\n return 0;\n }\n const rect = el.getBoundingClientRect();\n if (orientation === 'horizontal') {\n return direction === 'start' ? rect.left : rect.right;\n }\n return direction === 'start' ? rect.top : rect.bottom;\n}\n/**\n * A directive similar to `ngForOf` to be used for rendering data inside a virtual scrolling\n * container.\n */\nclass CdkVirtualForOf {\n constructor(\n /** The view container to add items to. */\n _viewContainerRef, \n /** The template to use when stamping out new items. */\n _template, \n /** The set of available differs. */\n _differs, \n /** The strategy used to render items in the virtual scroll viewport. */\n _viewRepeater, \n /** The virtual scrolling viewport that these items are being rendered in. */\n _viewport, ngZone) {\n this._viewContainerRef = _viewContainerRef;\n this._template = _template;\n this._differs = _differs;\n this._viewRepeater = _viewRepeater;\n this._viewport = _viewport;\n /** Emits when the rendered view of the data changes. */\n this.viewChange = new Subject();\n /** Subject that emits when a new DataSource instance is given. */\n this._dataSourceChanges = new Subject();\n /** Emits whenever the data in the current DataSource changes. */\n this.dataStream = this._dataSourceChanges\n .pipe(\n // Start off with null `DataSource`.\n startWith(null), \n // Bundle up the previous and current data sources so we can work with both.\n pairwise(), \n // Use `_changeDataSource` to disconnect from the previous data source and connect to the\n // new one, passing back a stream of data changes which we run through `switchMap` to give\n // us a data stream that emits the latest data from whatever the current `DataSource` is.\n switchMap(([prev, cur]) => this._changeDataSource(prev, cur)), \n // Replay the last emitted data when someone subscribes.\n shareReplay(1));\n /** The differ used to calculate changes to the data. */\n this._differ = null;\n /** Whether the rendered data should be updated during the next ngDoCheck cycle. */\n this._needsUpdate = false;\n this._destroyed = new Subject();\n this.dataStream.subscribe(data => {\n this._data = data;\n this._onRenderedDataChange();\n });\n this._viewport.renderedRangeStream.pipe(takeUntil(this._destroyed)).subscribe(range => {\n this._renderedRange = range;\n ngZone.run(() => this.viewChange.next(this._renderedRange));\n this._onRenderedDataChange();\n });\n this._viewport.attach(this);\n }\n /** The DataSource to display. */\n get cdkVirtualForOf() {\n return this._cdkVirtualForOf;\n }\n set cdkVirtualForOf(value) {\n this._cdkVirtualForOf = value;\n if (isDataSource(value)) {\n this._dataSourceChanges.next(value);\n }\n else {\n // If value is an an NgIterable, convert it to an array.\n this._dataSourceChanges.next(new ArrayDataSource(isObservable(value) ? value : Array.from(value || [])));\n }\n }\n /**\n * The `TrackByFunction` to use for tracking changes. The `TrackByFunction` takes the index and\n * the item and produces a value to be used as the item's identity when tracking changes.\n */\n get cdkVirtualForTrackBy() {\n return this._cdkVirtualForTrackBy;\n }\n set cdkVirtualForTrackBy(fn) {\n this._needsUpdate = true;\n this._cdkVirtualForTrackBy = fn ?\n (index, item) => fn(index + (this._renderedRange ? this._renderedRange.start : 0), item) :\n undefined;\n }\n /** The template used to stamp out new elements. */\n set cdkVirtualForTemplate(value) {\n if (value) {\n this._needsUpdate = true;\n this._template = value;\n }\n }\n /**\n * The size of the cache used to store templates that are not being used for re-use later.\n * Setting the cache size to `0` will disable caching. Defaults to 20 templates.\n */\n get cdkVirtualForTemplateCacheSize() {\n return this._viewRepeater.viewCacheSize;\n }\n set cdkVirtualForTemplateCacheSize(size) {\n this._viewRepeater.viewCacheSize = coerceNumberProperty(size);\n }\n /**\n * Measures the combined size (width for horizontal orientation, height for vertical) of all items\n * in the specified range. Throws an error if the range includes items that are not currently\n * rendered.\n */\n measureRangeSize(range, orientation) {\n if (range.start >= range.end) {\n return 0;\n }\n if ((range.start < this._renderedRange.start || range.end > this._renderedRange.end) &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Error: attempted to measure an item that isn't rendered.`);\n }\n // The index into the list of rendered views for the first item in the range.\n const renderedStartIndex = range.start - this._renderedRange.start;\n // The length of the range we're measuring.\n const rangeLen = range.end - range.start;\n // Loop over all the views, find the first and land node and compute the size by subtracting\n // the top of the first node from the bottom of the last one.\n let firstNode;\n let lastNode;\n // Find the first node by starting from the beginning and going forwards.\n for (let i = 0; i < rangeLen; i++) {\n const view = this._viewContainerRef.get(i + renderedStartIndex);\n if (view && view.rootNodes.length) {\n firstNode = lastNode = view.rootNodes[0];\n break;\n }\n }\n // Find the last node by starting from the end and going backwards.\n for (let i = rangeLen - 1; i > -1; i--) {\n const view = this._viewContainerRef.get(i + renderedStartIndex);\n if (view && view.rootNodes.length) {\n lastNode = view.rootNodes[view.rootNodes.length - 1];\n break;\n }\n }\n return firstNode && lastNode ?\n getOffset(orientation, 'end', lastNode) - getOffset(orientation, 'start', firstNode) : 0;\n }\n ngDoCheck() {\n if (this._differ && this._needsUpdate) {\n // TODO(mmalerba): We should differentiate needs update due to scrolling and a new portion of\n // this list being rendered (can use simpler algorithm) vs needs update due to data actually\n // changing (need to do this diff).\n const changes = this._differ.diff(this._renderedItems);\n if (!changes) {\n this._updateContext();\n }\n else {\n this._applyChanges(changes);\n }\n this._needsUpdate = false;\n }\n }\n ngOnDestroy() {\n this._viewport.detach();\n this._dataSourceChanges.next(undefined);\n this._dataSourceChanges.complete();\n this.viewChange.complete();\n this._destroyed.next();\n this._destroyed.complete();\n this._viewRepeater.detach();\n }\n /** React to scroll state changes in the viewport. */\n _onRenderedDataChange() {\n if (!this._renderedRange) {\n return;\n }\n this._renderedItems = this._data.slice(this._renderedRange.start, this._renderedRange.end);\n if (!this._differ) {\n // Use a wrapper function for the `trackBy` so any new values are\n // picked up automatically without having to recreate the differ.\n this._differ = this._differs.find(this._renderedItems).create((index, item) => {\n return this.cdkVirtualForTrackBy ? this.cdkVirtualForTrackBy(index, item) : item;\n });\n }\n this._needsUpdate = true;\n }\n /** Swap out one `DataSource` for another. */\n _changeDataSource(oldDs, newDs) {\n if (oldDs) {\n oldDs.disconnect(this);\n }\n this._needsUpdate = true;\n return newDs ? newDs.connect(this) : of();\n }\n /** Update the `CdkVirtualForOfContext` for all views. */\n _updateContext() {\n const count = this._data.length;\n let i = this._viewContainerRef.length;\n while (i--) {\n const view = this._viewContainerRef.get(i);\n view.context.index = this._renderedRange.start + i;\n view.context.count = count;\n this._updateComputedContextProperties(view.context);\n view.detectChanges();\n }\n }\n /** Apply changes to the DOM. */\n _applyChanges(changes) {\n this._viewRepeater.applyChanges(changes, this._viewContainerRef, (record, _adjustedPreviousIndex, currentIndex) => this._getEmbeddedViewArgs(record, currentIndex), (record) => record.item);\n // Update $implicit for any items that had an identity change.\n changes.forEachIdentityChange((record) => {\n const view = this._viewContainerRef.get(record.currentIndex);\n view.context.$implicit = record.item;\n });\n // Update the context variables on all items.\n const count = this._data.length;\n let i = this._viewContainerRef.length;\n while (i--) {\n const view = this._viewContainerRef.get(i);\n view.context.index = this._renderedRange.start + i;\n view.context.count = count;\n this._updateComputedContextProperties(view.context);\n }\n }\n /** Update the computed properties on the `CdkVirtualForOfContext`. */\n _updateComputedContextProperties(context) {\n context.first = context.index === 0;\n context.last = context.index === context.count - 1;\n context.even = context.index % 2 === 0;\n context.odd = !context.even;\n }\n _getEmbeddedViewArgs(record, index) {\n // Note that it's important that we insert the item directly at the proper index,\n // rather than inserting it and the moving it in place, because if there's a directive\n // on the same node that injects the `ViewContainerRef`, Angular will insert another\n // comment node which can throw off the move when it's being repeated for all items.\n return {\n templateRef: this._template,\n context: {\n $implicit: record.item,\n // It's guaranteed that the iterable is not \"undefined\" or \"null\" because we only\n // generate views for elements if the \"cdkVirtualForOf\" iterable has elements.\n cdkVirtualForOf: this._cdkVirtualForOf,\n index: -1,\n count: -1,\n first: false,\n last: false,\n odd: false,\n even: false\n },\n index,\n };\n }\n}\nCdkVirtualForOf.ɵfac = function CdkVirtualForOf_Factory(t) { return new (t || CdkVirtualForOf)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.IterableDiffers), ɵngcc0.ɵɵdirectiveInject(_VIEW_REPEATER_STRATEGY), ɵngcc0.ɵɵdirectiveInject(CdkVirtualScrollViewport, 4), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nCdkVirtualForOf.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CdkVirtualForOf, selectors: [[\"\", \"cdkVirtualFor\", \"\", \"cdkVirtualForOf\", \"\"]], inputs: { cdkVirtualForOf: \"cdkVirtualForOf\", cdkVirtualForTrackBy: \"cdkVirtualForTrackBy\", cdkVirtualForTemplate: \"cdkVirtualForTemplate\", cdkVirtualForTemplateCacheSize: \"cdkVirtualForTemplateCacheSize\" }, features: [ɵngcc0.ɵɵProvidersFeature([\n { provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy },\n ])] });\nCdkVirtualForOf.ctorParameters = () => [\n { type: ViewContainerRef },\n { type: TemplateRef },\n { type: IterableDiffers },\n { type: _RecycleViewRepeaterStrategy, decorators: [{ type: Inject, args: [_VIEW_REPEATER_STRATEGY,] }] },\n { type: CdkVirtualScrollViewport, decorators: [{ type: SkipSelf }] },\n { type: NgZone }\n];\nCdkVirtualForOf.propDecorators = {\n cdkVirtualForOf: [{ type: Input }],\n cdkVirtualForTrackBy: [{ type: Input }],\n cdkVirtualForTemplate: [{ type: Input }],\n cdkVirtualForTemplateCacheSize: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkVirtualForOf, [{\n type: Directive,\n args: [{\n selector: '[cdkVirtualFor][cdkVirtualForOf]',\n providers: [\n { provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy },\n ]\n }]\n }], function () { return [{ type: ɵngcc0.ViewContainerRef }, { type: ɵngcc0.TemplateRef }, { type: ɵngcc0.IterableDiffers }, { type: ɵngcc3._RecycleViewRepeaterStrategy, decorators: [{\n type: Inject,\n args: [_VIEW_REPEATER_STRATEGY]\n }] }, { type: CdkVirtualScrollViewport, decorators: [{\n type: SkipSelf\n }] }, { type: ɵngcc0.NgZone }]; }, { cdkVirtualForOf: [{\n type: Input\n }], cdkVirtualForTrackBy: [{\n type: Input\n }], cdkVirtualForTemplate: [{\n type: Input\n }], cdkVirtualForTemplateCacheSize: [{\n type: Input\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 CdkScrollableModule {\n}\nCdkScrollableModule.ɵfac = function CdkScrollableModule_Factory(t) { return new (t || CdkScrollableModule)(); };\nCdkScrollableModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: CdkScrollableModule });\nCdkScrollableModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkScrollableModule, [{\n type: NgModule,\n args: [{\n exports: [CdkScrollable],\n declarations: [CdkScrollable]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(CdkScrollableModule, { declarations: [CdkScrollable], exports: [CdkScrollable] }); })();\n/**\n * @docs-primary-export\n */\nclass ScrollingModule {\n}\nScrollingModule.ɵfac = function ScrollingModule_Factory(t) { return new (t || ScrollingModule)(); };\nScrollingModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ScrollingModule });\nScrollingModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[\n BidiModule,\n PlatformModule,\n CdkScrollableModule\n ], BidiModule, CdkScrollableModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ScrollingModule, [{\n type: NgModule,\n args: [{\n imports: [\n BidiModule,\n PlatformModule,\n CdkScrollableModule\n ],\n exports: [\n BidiModule,\n CdkScrollableModule,\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n CdkVirtualScrollViewport,\n ],\n declarations: [\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n CdkVirtualScrollViewport,\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ScrollingModule, { declarations: function () { return [CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport]; }, imports: function () { return [BidiModule,\n PlatformModule, CdkScrollableModule]; }, exports: function () { return [BidiModule, CdkScrollableModule, CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport]; } }); })();\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 { CdkFixedSizeVirtualScroll, CdkScrollable, CdkScrollableModule, CdkVirtualForOf, CdkVirtualScrollViewport, DEFAULT_RESIZE_TIME, DEFAULT_SCROLL_TIME, FixedSizeVirtualScrollStrategy, ScrollDispatcher, ScrollingModule, VIRTUAL_SCROLL_STRATEGY, ViewportRuler, _fixedSizeVirtualScrollStrategyFactory };\n\n","import { ElementRef } 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 */\n/** Coerces a data-bound value (typically a string) to a boolean. */\nfunction coerceBooleanProperty(value) {\n return value != null && `${value}` !== 'false';\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 coerceNumberProperty(value, fallbackValue = 0) {\n return _isNumberValue(value) ? Number(value) : fallbackValue;\n}\n/**\n * Whether the provided value is considered a number.\n * @docs-private\n */\nfunction _isNumberValue(value) {\n // parseFloat(value) handles most of the cases we're interested in (it treats null, empty string,\n // and other non-number values as NaN, where Number just uses 0) but it considers the string\n // '123hello' to be a valid number. Therefore we also check if Number(value) is NaN.\n return !isNaN(parseFloat(value)) && !isNaN(Number(value));\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 coerceArray(value) {\n return Array.isArray(value) ? value : [value];\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/** Coerces a value to a CSS pixel value. */\nfunction coerceCssPixelValue(value) {\n if (value == null) {\n return '';\n }\n return typeof value === 'string' ? value : `${value}px`;\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 * Coerces an ElementRef or an Element into an element.\n * Useful for APIs that can accept either a ref or the native element itself.\n */\nfunction coerceElement(elementOrRef) {\n return elementOrRef instanceof ElementRef ? elementOrRef.nativeElement : elementOrRef;\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 * Coerces a value to an array of trimmed non-empty strings.\n * Any input that is not an array, `null` or `undefined` will be turned into a string\n * via `toString()` and subsequently split with the given separator.\n * `null` and `undefined` will result in an empty array.\n * This results in the following outcomes:\n * - `null` -> `[]`\n * - `[null]` -> `[\"null\"]`\n * - `[\"a\", \"b \", \" \"]` -> `[\"a\", \"b\"]`\n * - `[1, [2, 3]]` -> `[\"1\", \"2,3\"]`\n * - `[{ a: 0 }]` -> `[\"[object Object]\"]`\n * - `{ a: 0 }` -> `[\"[object\", \"Object]\"]`\n *\n * Useful for defining CSS classes or table columns.\n * @param value the value to coerce into an array of strings\n * @param separator split-separator if value isn't an array\n */\nfunction coerceStringArray(value, separator = /\\s+/) {\n const result = [];\n if (value != null) {\n const sourceValues = Array.isArray(value) ? value : `${value}`.split(separator);\n for (const sourceValue of sourceValues) {\n const trimmedString = `${sourceValue}`.trim();\n if (trimmedString) {\n result.push(trimmedString);\n }\n }\n }\n return result;\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\nexport { _isNumberValue, coerceArray, coerceBooleanProperty, coerceCssPixelValue, coerceElement, coerceNumberProperty, coerceStringArray };\n","// Hot Module Replacement\nfunction identity(val) {\n return val;\n}\nexport function bootloader(main, before, after) {\n if (typeof main === 'object') {\n const _main = main.main;\n before = main.before;\n after = main.after;\n main = _main;\n }\n before = before || identity;\n after = after || identity;\n const readyState = document.readyState;\n function __domReadyHandler() {\n document.removeEventListener('DOMContentLoaded', __domReadyHandler);\n after(main(before(readyState)));\n }\n switch (readyState) {\n case 'loading':\n document.addEventListener('DOMContentLoaded', __domReadyHandler);\n break;\n case 'interactive':\n case 'complete':\n default:\n after(main(before(readyState)));\n }\n}\n// create new host elements and remove the old elements\nexport function createNewHosts(cmps) {\n const components = Array.prototype.map.call(cmps, function (componentNode) {\n const newNode = document.createElement(componentNode.tagName);\n const parentNode = componentNode.parentNode;\n const currentDisplay = newNode.style.display;\n newNode.style.display = 'none';\n parentNode.insertBefore(newNode, componentNode);\n function removeOldHost() {\n newNode.style.display = currentDisplay;\n try {\n parentNode.removeChild(componentNode);\n }\n catch (e) { }\n }\n return removeOldHost;\n });\n return function removeOldHosts() {\n components.forEach((removeOldHost) => removeOldHost());\n };\n}\n// remove old styles\nexport function removeNgStyles() {\n const docHead = document.head;\n const _styles = docHead.querySelectorAll('style');\n const styles = Array.prototype.slice.call(_styles);\n styles\n .filter((style) => style.innerText.indexOf('_ng') !== -1)\n .map((el) => docHead.removeChild(el));\n}\n// get input values\nexport function getInputValues() {\n const _inputs = document.querySelectorAll('input');\n const inputs = Array.prototype.slice.call(_inputs);\n return inputs.map((input) => input.value);\n}\n// set input values\nexport function setInputValues(_inputs) {\n const inputs = document.querySelectorAll('input');\n if (_inputs && inputs.length === _inputs.length) {\n _inputs.forEach((value, i) => {\n const el = inputs[i];\n el.value = value;\n el.dispatchEvent(new CustomEvent('input', { detail: el.value }));\n });\n // clear array\n _inputs.length = 0;\n }\n}\n// get/set input values\nexport function createInputTransfer() {\n const _inputs = getInputValues();\n return function restoreInputValues() {\n return setInputValues(_inputs);\n };\n}\n","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref) {\n var x = _ref.x,\n y = _ref.y;\n var win = window;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","export { default as applyStyles } from \"./applyStyles.js\";\nexport { default as arrow } from \"./arrow.js\";\nexport { default as computeStyles } from \"./computeStyles.js\";\nexport { default as eventListeners } from \"./eventListeners.js\";\nexport { default as flip } from \"./flip.js\";\nexport { default as hide } from \"./hide.js\";\nexport { default as offset } from \"./offset.js\";\nexport { default as popperOffsets } from \"./popperOffsets.js\";\nexport { default as preventOverflow } from \"./preventOverflow.js\";","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n }\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","export default function format(str) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return [].concat(args).reduce(function (p, c) {\n return p.replace(/%s/, c);\n }, str);\n}","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","export default function uniqueBy(arr, fn) {\n var identifiers = new Set();\n return arr.filter(function (item) {\n var identifier = fn(item);\n\n if (!identifiers.has(identifier)) {\n identifiers.add(identifier);\n return true;\n }\n });\n}","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import format from \"./format.js\";\nimport { modifierPhases } from \"../enums.js\";\nvar INVALID_MODIFIER_ERROR = 'Popper: modifier \"%s\" provided an invalid %s property, expected %s but got %s';\nvar MISSING_DEPENDENCY_ERROR = 'Popper: modifier \"%s\" requires \"%s\", but \"%s\" modifier is not available';\nvar VALID_PROPERTIES = ['name', 'enabled', 'phase', 'fn', 'effect', 'requires', 'options'];\nexport default function validateModifiers(modifiers) {\n modifiers.forEach(function (modifier) {\n [].concat(Object.keys(modifier), VALID_PROPERTIES) // IE11-compatible replacement for `new Set(iterable)`\n .filter(function (value, index, self) {\n return self.indexOf(value) === index;\n }).forEach(function (key) {\n switch (key) {\n case 'name':\n if (typeof modifier.name !== 'string') {\n console.error(format(INVALID_MODIFIER_ERROR, String(modifier.name), '\"name\"', '\"string\"', \"\\\"\" + String(modifier.name) + \"\\\"\"));\n }\n\n break;\n\n case 'enabled':\n if (typeof modifier.enabled !== 'boolean') {\n console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"enabled\"', '\"boolean\"', \"\\\"\" + String(modifier.enabled) + \"\\\"\"));\n }\n\n break;\n\n case 'phase':\n if (modifierPhases.indexOf(modifier.phase) < 0) {\n console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"phase\"', \"either \" + modifierPhases.join(', '), \"\\\"\" + String(modifier.phase) + \"\\\"\"));\n }\n\n break;\n\n case 'fn':\n if (typeof modifier.fn !== 'function') {\n console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"fn\"', '\"function\"', \"\\\"\" + String(modifier.fn) + \"\\\"\"));\n }\n\n break;\n\n case 'effect':\n if (modifier.effect != null && typeof modifier.effect !== 'function') {\n console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"effect\"', '\"function\"', \"\\\"\" + String(modifier.fn) + \"\\\"\"));\n }\n\n break;\n\n case 'requires':\n if (modifier.requires != null && !Array.isArray(modifier.requires)) {\n console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"requires\"', '\"array\"', \"\\\"\" + String(modifier.requires) + \"\\\"\"));\n }\n\n break;\n\n case 'requiresIfExists':\n if (!Array.isArray(modifier.requiresIfExists)) {\n console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"requiresIfExists\"', '\"array\"', \"\\\"\" + String(modifier.requiresIfExists) + \"\\\"\"));\n }\n\n break;\n\n case 'options':\n case 'data':\n break;\n\n default:\n console.error(\"PopperJS: an invalid property has been provided to the \\\"\" + modifier.name + \"\\\" modifier, valid properties are \" + VALID_PROPERTIES.map(function (s) {\n return \"\\\"\" + s + \"\\\"\";\n }).join(', ') + \"; but \\\"\" + key + \"\\\" was provided.\");\n }\n\n modifier.requires && modifier.requires.forEach(function (requirement) {\n if (modifiers.find(function (mod) {\n return mod.name === requirement;\n }) == null) {\n console.error(format(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement));\n }\n });\n });\n });\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import * as i0 from '@angular/core';\nimport { NgModule, Injectable, Injector } from '@angular/core';\nimport * as i1 from '@angular/common/http';\nimport { HttpClient, HttpErrorResponse, HttpHeaders, HttpResponse } from '@angular/common/http';\nimport { Observable, BehaviorSubject, of, throwError } from 'rxjs';\nimport { catchError, switchMap, filter, take, map } from 'rxjs/operators';\n\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common/http';\nclass AbpModule {\r\n}\nAbpModule.ɵfac = function AbpModule_Factory(t) { return new (t || AbpModule)(); };\nAbpModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: AbpModule });\nAbpModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AbpModule, [{\n type: NgModule,\n args: [{\n declarations: [],\n imports: [],\n exports: []\n }]\n }], null, null); })();\n\n///\r\nclass TokenService {\r\n getToken() {\r\n return abp.auth.getToken();\r\n }\r\n getTokenCookieName() {\r\n return abp.auth.tokenCookieName;\r\n }\r\n clearToken() {\r\n abp.auth.clearToken();\r\n }\r\n setToken(authToken, expireDate) {\r\n abp.auth.setToken(authToken, expireDate);\r\n }\r\n //refresh token\r\n getRefreshToken() {\r\n return abp.auth.getRefreshToken();\r\n }\r\n getRefreshTokenCookieName() {\r\n return abp.auth.refreshTokenCookieName;\r\n }\r\n clearRefreshToken() {\r\n abp.auth.clearRefreshToken();\r\n }\r\n setRefreshToken(refreshToken, expireDate) {\r\n abp.auth.setRefreshToken(refreshToken, expireDate);\r\n }\r\n}\nTokenService.ɵfac = function TokenService_Factory(t) { return new (t || TokenService)(); };\r\nTokenService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TokenService_Factory() { return new TokenService(); }, token: TokenService, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TokenService, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null); })();\n\n///\r\nclass PermissionCheckerService {\r\n isGranted(permissionName) {\r\n return abp.auth.isGranted(permissionName);\r\n }\r\n}\nPermissionCheckerService.ɵfac = function PermissionCheckerService_Factory(t) { return new (t || PermissionCheckerService)(); };\r\nPermissionCheckerService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PermissionCheckerService_Factory() { return new PermissionCheckerService(); }, token: PermissionCheckerService, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PermissionCheckerService, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null); })();\n\n///\r\nclass FeatureCheckerService {\r\n get(featureName) {\r\n return abp.features.get(featureName);\r\n }\r\n getValue(featureName) {\r\n return abp.features.getValue(featureName);\r\n }\r\n isEnabled(featureName) {\r\n return abp.features.isEnabled(featureName);\r\n }\r\n}\nFeatureCheckerService.ɵfac = function FeatureCheckerService_Factory(t) { return new (t || FeatureCheckerService)(); };\r\nFeatureCheckerService.ɵprov = i0.ɵɵdefineInjectable({ factory: function FeatureCheckerService_Factory() { return new FeatureCheckerService(); }, token: FeatureCheckerService, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FeatureCheckerService, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null); })();\n\n///\r\nclass LocalizationService {\r\n get languages() {\r\n return abp.localization.languages;\r\n }\r\n get currentLanguage() {\r\n return abp.localization.currentLanguage;\r\n }\r\n localize(key, sourceName) {\r\n return abp.localization.localize(key, sourceName);\r\n }\r\n getSource(sourceName) {\r\n return abp.localization.getSource(sourceName);\r\n }\r\n}\nLocalizationService.ɵfac = function LocalizationService_Factory(t) { return new (t || LocalizationService)(); };\r\nLocalizationService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LocalizationService_Factory() { return new LocalizationService(); }, token: LocalizationService, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LocalizationService, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null); })();\n\n///\r\nclass LogService {\r\n debug(logObject) {\r\n abp.log.debug(logObject);\r\n }\r\n info(logObject) {\r\n abp.log.info(logObject);\r\n }\r\n warn(logObject) {\r\n abp.log.warn(logObject);\r\n }\r\n error(logObject) {\r\n abp.log.error(logObject);\r\n }\r\n fatal(logObject) {\r\n abp.log.fatal(logObject);\r\n }\r\n}\nLogService.ɵfac = function LogService_Factory(t) { return new (t || LogService)(); };\r\nLogService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LogService_Factory() { return new LogService(); }, token: LogService, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LogService, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null); })();\n\n///\r\nclass MessageService {\r\n info(message, title, options) {\r\n return abp.message.info(message, title, options);\r\n }\r\n success(message, title, options) {\r\n return abp.message.success(message, title, options);\r\n }\r\n warn(message, title, options) {\r\n return abp.message.warn(message, title, options);\r\n }\r\n error(message, title, options) {\r\n return abp.message.error(message, title, options);\r\n }\r\n confirm(message, title, callback, options) {\r\n return abp.message.confirm(message, title, callback, options);\r\n }\r\n}\nMessageService.ɵfac = function MessageService_Factory(t) { return new (t || MessageService)(); };\r\nMessageService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MessageService_Factory() { return new MessageService(); }, token: MessageService, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MessageService, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null); })();\n\n///\r\nclass AbpMultiTenancyService {\r\n get isEnabled() {\r\n return abp.multiTenancy.isEnabled;\r\n }\r\n}\nAbpMultiTenancyService.ɵfac = function AbpMultiTenancyService_Factory(t) { return new (t || AbpMultiTenancyService)(); };\r\nAbpMultiTenancyService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AbpMultiTenancyService_Factory() { return new AbpMultiTenancyService(); }, token: AbpMultiTenancyService, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AbpMultiTenancyService, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null); })();\n\n///\r\nclass NotifyService {\r\n info(message, title, options) {\r\n abp.notify.info(message, title, options);\r\n }\r\n success(message, title, options) {\r\n abp.notify.success(message, title, options);\r\n }\r\n warn(message, title, options) {\r\n abp.notify.warn(message, title, options);\r\n }\r\n error(message, title, options) {\r\n abp.notify.error(message, title, options);\r\n }\r\n}\nNotifyService.ɵfac = function NotifyService_Factory(t) { return new (t || NotifyService)(); };\r\nNotifyService.ɵprov = i0.ɵɵdefineInjectable({ factory: function NotifyService_Factory() { return new NotifyService(); }, token: NotifyService, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NotifyService, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null); })();\n\n///\r\nclass AbpSessionService {\r\n get userId() {\r\n return abp.session.userId;\r\n }\r\n get tenantId() {\r\n return abp.session.tenantId;\r\n }\r\n get impersonatorUserId() {\r\n return abp.session.impersonatorUserId;\r\n }\r\n get impersonatorTenantId() {\r\n return abp.session.impersonatorTenantId;\r\n }\r\n get multiTenancySide() {\r\n return abp.session.multiTenancySide;\r\n }\r\n}\nAbpSessionService.ɵfac = function AbpSessionService_Factory(t) { return new (t || AbpSessionService)(); };\r\nAbpSessionService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AbpSessionService_Factory() { return new AbpSessionService(); }, token: AbpSessionService, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AbpSessionService, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null); })();\n\n///\r\nclass SettingService {\r\n get(name) {\r\n return abp.setting.get(name);\r\n }\r\n getBoolean(name) {\r\n return abp.setting.getBoolean(name);\r\n }\r\n getInt(name) {\r\n return abp.setting.getInt(name);\r\n }\r\n}\nSettingService.ɵfac = function SettingService_Factory(t) { return new (t || SettingService)(); };\r\nSettingService.ɵprov = i0.ɵɵdefineInjectable({ factory: function SettingService_Factory() { return new SettingService(); }, token: SettingService, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SettingService, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null); })();\n\n///\r\nclass UtilsService {\r\n getCookieValue(key) {\r\n return abp.utils.getCookieValue(key);\r\n }\r\n setCookieValue(key, value, expireDate, path, domain, attributes) {\r\n abp.utils.setCookieValue(key, value, expireDate, path, domain, attributes);\r\n }\r\n deleteCookie(key, path) {\r\n abp.utils.deleteCookie(key, path);\r\n }\r\n}\nUtilsService.ɵfac = function UtilsService_Factory(t) { return new (t || UtilsService)(); };\r\nUtilsService.ɵprov = i0.ɵɵdefineInjectable({ factory: function UtilsService_Factory() { return new UtilsService(); }, token: UtilsService, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(UtilsService, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null); })();\n\n///\r\nclass AbpUserConfigurationService {\r\n constructor(_http) {\r\n this._http = _http;\r\n }\r\n initialize() {\r\n this._http.get('/AbpUserConfiguration/GetAll')\r\n .subscribe(result => {\r\n jQuery.extend(true, abp, JSON.parse(JSON.stringify(result)));\r\n });\r\n }\r\n}\nAbpUserConfigurationService.ɵfac = function AbpUserConfigurationService_Factory(t) { return new (t || AbpUserConfigurationService)(ɵngcc0.ɵɵinject(ɵngcc1.HttpClient)); };\r\nAbpUserConfigurationService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AbpUserConfigurationService_Factory() { return new AbpUserConfigurationService(i0.ɵɵinject(i1.HttpClient)); }, token: AbpUserConfigurationService, providedIn: \"root\" });\r\nAbpUserConfigurationService.ctorParameters = () => [\r\n { type: HttpClient }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AbpUserConfigurationService, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], function () { return [{ type: ɵngcc1.HttpClient }]; }, null); })();\n\nclass AbpHttpConfigurationService {\r\n constructor(_messageService, _logService) {\r\n this._messageService = _messageService;\r\n this._logService = _logService;\r\n this.defaultError = {\r\n message: 'An error has occurred!',\r\n details: 'Error details were not sent by server.'\r\n };\r\n this.defaultError401 = {\r\n message: 'You are not authenticated!',\r\n details: 'You should be authenticated (sign in) in order to perform this operation.'\r\n };\r\n this.defaultError403 = {\r\n message: 'You are not authorized!',\r\n details: 'You are not allowed to perform this operation.'\r\n };\r\n this.defaultError404 = {\r\n message: 'Resource not found!',\r\n details: 'The resource requested could not be found on the server.'\r\n };\r\n }\r\n logError(error) {\r\n this._logService.error(error);\r\n }\r\n showError(error) {\r\n if (error.details) {\r\n return this._messageService.error(error.details, error.message || this.defaultError.message);\r\n }\r\n else {\r\n return this._messageService.error(error.message || this.defaultError.message);\r\n }\r\n }\r\n handleTargetUrl(targetUrl) {\r\n if (!targetUrl) {\r\n location.href = '/';\r\n }\r\n else {\r\n location.href = targetUrl;\r\n }\r\n }\r\n handleUnAuthorizedRequest(messagePromise, targetUrl) {\r\n const self = this;\r\n if (messagePromise) {\r\n messagePromise.done(() => {\r\n this.handleTargetUrl(targetUrl || '/');\r\n });\r\n }\r\n else {\r\n self.handleTargetUrl(targetUrl || '/');\r\n }\r\n }\r\n handleNonAbpErrorResponse(response) {\r\n const self = this;\r\n switch (response.status) {\r\n case 401:\r\n self.handleUnAuthorizedRequest(self.showError(self.defaultError401), '/');\r\n break;\r\n case 403:\r\n self.showError(self.defaultError403);\r\n break;\r\n case 404:\r\n self.showError(self.defaultError404);\r\n break;\r\n default:\r\n self.showError(self.defaultError);\r\n break;\r\n }\r\n }\r\n handleAbpResponse(response, ajaxResponse) {\r\n var newResponse;\r\n if (ajaxResponse.success) {\r\n newResponse = response.clone({\r\n body: ajaxResponse.result\r\n });\r\n if (ajaxResponse.targetUrl) {\r\n this.handleTargetUrl(ajaxResponse.targetUrl);\r\n ;\r\n }\r\n }\r\n else {\r\n newResponse = response.clone({\r\n body: ajaxResponse.result\r\n });\r\n if (!ajaxResponse.error) {\r\n ajaxResponse.error = this.defaultError;\r\n }\r\n this.logError(ajaxResponse.error);\r\n this.showError(ajaxResponse.error);\r\n if (response.status === 401) {\r\n this.handleUnAuthorizedRequest(null, ajaxResponse.targetUrl);\r\n }\r\n }\r\n return newResponse;\r\n }\r\n getAbpAjaxResponseOrNull(response) {\r\n if (!response || !response.headers) {\r\n return null;\r\n }\r\n var contentType = response.headers.get('Content-Type');\r\n if (!contentType) {\r\n this._logService.warn('Content-Type is not sent!');\r\n return null;\r\n }\r\n if (contentType.indexOf(\"application/json\") < 0) {\r\n this._logService.warn('Content-Type is not application/json: ' + contentType);\r\n return null;\r\n }\r\n var responseObj = JSON.parse(JSON.stringify(response.body));\r\n if (!responseObj.__abp) {\r\n return null;\r\n }\r\n return responseObj;\r\n }\r\n handleResponse(response) {\r\n var ajaxResponse = this.getAbpAjaxResponseOrNull(response);\r\n if (ajaxResponse == null) {\r\n return response;\r\n }\r\n return this.handleAbpResponse(response, ajaxResponse);\r\n }\r\n blobToText(blob) {\r\n return new Observable((observer) => {\r\n if (!blob) {\r\n observer.next(\"\");\r\n observer.complete();\r\n }\r\n else {\r\n let reader = new FileReader();\r\n reader.onload = function () {\r\n observer.next(this.result);\r\n observer.complete();\r\n };\r\n reader.readAsText(blob);\r\n }\r\n });\r\n }\r\n}\nAbpHttpConfigurationService.ɵfac = function AbpHttpConfigurationService_Factory(t) { return new (t || AbpHttpConfigurationService)(ɵngcc0.ɵɵinject(MessageService), ɵngcc0.ɵɵinject(LogService)); };\r\nAbpHttpConfigurationService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AbpHttpConfigurationService_Factory() { return new AbpHttpConfigurationService(i0.ɵɵinject(MessageService), i0.ɵɵinject(LogService)); }, token: AbpHttpConfigurationService, providedIn: \"root\" });\r\nAbpHttpConfigurationService.ctorParameters = () => [\r\n { type: MessageService },\r\n { type: LogService }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AbpHttpConfigurationService, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], function () { return [{ type: MessageService }, { type: LogService }]; }, null); })();\n\nclass RefreshTokenService {\r\n}\nRefreshTokenService.ɵfac = function RefreshTokenService_Factory(t) { return new (t || RefreshTokenService)(); };\nRefreshTokenService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: RefreshTokenService, factory: RefreshTokenService.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(RefreshTokenService, [{\n type: Injectable\n }], null, null); })();\n\nclass AbpHttpInterceptor {\r\n constructor(configuration, _injector) {\r\n this._injector = _injector;\r\n this._tokenService = new TokenService();\r\n this._utilsService = new UtilsService();\r\n this._logService = new LogService();\r\n this.isRefreshing = false;\r\n this.refreshTokenSubject = new BehaviorSubject(null);\r\n this.configuration = configuration;\r\n }\r\n intercept(request, next) {\r\n var modifiedRequest = this.normalizeRequestHeaders(request);\r\n return next.handle(modifiedRequest)\r\n .pipe(catchError(error => {\r\n if (error instanceof HttpErrorResponse && error.status === 401) {\r\n return this.tryAuthWithRefreshToken(request, next, error);\r\n }\r\n else {\r\n return this.handleErrorResponse(error);\r\n }\r\n }), switchMap((event) => {\r\n return this.handleSuccessResponse(event);\r\n }));\r\n }\r\n tryGetRefreshTokenService() {\r\n var _refreshTokenService = this._injector.get(RefreshTokenService, null);\r\n if (_refreshTokenService) {\r\n return _refreshTokenService.tryAuthWithRefreshToken();\r\n }\r\n return of(false);\r\n }\r\n tryAuthWithRefreshToken(request, next, error) {\r\n if (!this.isRefreshing) {\r\n this.isRefreshing = true;\r\n this.refreshTokenSubject.next(null);\r\n return this.tryGetRefreshTokenService().pipe(switchMap((authResult) => {\r\n this.isRefreshing = false;\r\n if (authResult) {\r\n this.refreshTokenSubject.next(authResult);\r\n let modifiedRequest = this.normalizeRequestHeaders(request);\r\n return next.handle(modifiedRequest);\r\n }\r\n else {\r\n return this.handleErrorResponse(error);\r\n }\r\n }));\r\n }\r\n else {\r\n return this.refreshTokenSubject.pipe(filter(authResult => authResult != null), take(1), switchMap(authResult => {\r\n let modifiedRequest = this.normalizeRequestHeaders(request);\r\n return next.handle(modifiedRequest);\r\n }));\r\n }\r\n }\r\n normalizeRequestHeaders(request) {\r\n var modifiedHeaders = new HttpHeaders();\r\n modifiedHeaders = request.headers.set(\"Pragma\", \"no-cache\")\r\n .set(\"Cache-Control\", \"no-cache\")\r\n .set(\"Expires\", \"Sat, 01 Jan 2000 00:00:00 GMT\");\r\n modifiedHeaders = this.addXRequestedWithHeader(modifiedHeaders);\r\n modifiedHeaders = this.addAuthorizationHeaders(modifiedHeaders);\r\n modifiedHeaders = this.addAspNetCoreCultureHeader(modifiedHeaders);\r\n modifiedHeaders = this.addAcceptLanguageHeader(modifiedHeaders);\r\n modifiedHeaders = this.addTenantIdHeader(modifiedHeaders);\r\n return request.clone({\r\n headers: modifiedHeaders\r\n });\r\n }\r\n addXRequestedWithHeader(headers) {\r\n if (headers) {\r\n headers = headers.set('X-Requested-With', 'XMLHttpRequest');\r\n }\r\n return headers;\r\n }\r\n addAspNetCoreCultureHeader(headers) {\r\n let cookieLangValue = this._utilsService.getCookieValue(\"Abp.Localization.CultureName\");\r\n if (cookieLangValue && headers && !headers.has('.AspNetCore.Culture')) {\r\n headers = headers.set('.AspNetCore.Culture', cookieLangValue);\r\n }\r\n return headers;\r\n }\r\n addAcceptLanguageHeader(headers) {\r\n let cookieLangValue = this._utilsService.getCookieValue(\"Abp.Localization.CultureName\");\r\n if (cookieLangValue && headers && !headers.has('Accept-Language')) {\r\n headers = headers.set('Accept-Language', cookieLangValue);\r\n }\r\n return headers;\r\n }\r\n addTenantIdHeader(headers) {\r\n let cookieTenantIdValue = this._utilsService.getCookieValue(abp.multiTenancy.tenantIdCookieName);\r\n if (cookieTenantIdValue && headers && !headers.has(abp.multiTenancy.tenantIdCookieName)) {\r\n headers = headers.set(abp.multiTenancy.tenantIdCookieName, cookieTenantIdValue);\r\n }\r\n return headers;\r\n }\r\n addAuthorizationHeaders(headers) {\r\n let authorizationHeaders = headers ? headers.getAll('Authorization') : null;\r\n if (!authorizationHeaders) {\r\n authorizationHeaders = [];\r\n }\r\n if (!this.itemExists(authorizationHeaders, (item) => item.indexOf('Bearer ') == 0)) {\r\n let token = this._tokenService.getToken();\r\n if (headers && token) {\r\n headers = headers.set('Authorization', 'Bearer ' + token);\r\n }\r\n }\r\n return headers;\r\n }\r\n handleSuccessResponse(event) {\r\n var self = this;\r\n if (event instanceof HttpResponse) {\r\n if (event.body instanceof Blob && event.body.type && event.body.type.indexOf(\"application/json\") >= 0) {\r\n return self.configuration.blobToText(event.body).pipe(map(json => {\r\n const responseBody = json == \"null\" ? {} : JSON.parse(json);\r\n var modifiedResponse = self.configuration.handleResponse(event.clone({\r\n body: responseBody\r\n }));\r\n return modifiedResponse.clone({\r\n body: new Blob([JSON.stringify(modifiedResponse.body)], { type: 'application/json' })\r\n });\r\n }));\r\n }\r\n }\r\n return of(event);\r\n }\r\n handleErrorResponse(error) {\r\n if (!(error.error instanceof Blob)) {\r\n return throwError(error);\r\n }\r\n return this.configuration.blobToText(error.error).pipe(switchMap((json) => {\r\n const errorBody = (json == \"\" || json == \"null\") ? {} : JSON.parse(json);\r\n const errorResponse = new HttpResponse({\r\n headers: error.headers,\r\n status: error.status,\r\n body: errorBody\r\n });\r\n var ajaxResponse = this.configuration.getAbpAjaxResponseOrNull(errorResponse);\r\n if (ajaxResponse != null) {\r\n this.configuration.handleAbpResponse(errorResponse, ajaxResponse);\r\n }\r\n else {\r\n this.configuration.handleNonAbpErrorResponse(errorResponse);\r\n }\r\n return throwError(error);\r\n }));\r\n }\r\n itemExists(items, predicate) {\r\n for (let i = 0; i < items.length; i++) {\r\n if (predicate(items[i])) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n}\nAbpHttpInterceptor.ɵfac = function AbpHttpInterceptor_Factory(t) { return new (t || AbpHttpInterceptor)(ɵngcc0.ɵɵinject(AbpHttpConfigurationService), ɵngcc0.ɵɵinject(ɵngcc0.Injector)); };\nAbpHttpInterceptor.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: AbpHttpInterceptor, factory: AbpHttpInterceptor.ɵfac });\r\nAbpHttpInterceptor.ctorParameters = () => [\r\n { type: AbpHttpConfigurationService },\r\n { type: Injector }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AbpHttpInterceptor, [{\n type: Injectable\n }], function () { return [{ type: AbpHttpConfigurationService }, { type: ɵngcc0.Injector }]; }, null); })();\n\n/*\r\n * Public API Surface of abp-ng2-module\r\n */\n\n/**\r\n * Generated bundle index. Do not edit.\r\n */\n\nexport { AbpHttpConfigurationService, AbpHttpInterceptor, AbpModule, AbpMultiTenancyService, AbpSessionService, AbpUserConfigurationService, FeatureCheckerService, LocalizationService, LogService, MessageService, NotifyService, PermissionCheckerService, RefreshTokenService, SettingService, TokenService, UtilsService };\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar counto_directive_1 = require(\"./src/counto.directive\");\nexports.CountoDirective = counto_directive_1.CountoDirective;\nvar counto_module_1 = require(\"./src/counto.module\");\nexports.CountoModule = counto_module_1.CountoModule;\nexports.default = counto_module_1.CountoModule;\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@angular/core\");\nvar ɵngcc0 = require('@angular/core');\nvar CountoDirective = /** @class */ (function () {\n function CountoDirective() {\n this.countoChange = new core_1.EventEmitter();\n this.countoEnd = new core_1.EventEmitter();\n }\n Object.defineProperty(CountoDirective.prototype, \"duration\", {\n set: function (duration) {\n this._duration = parseFloat(duration);\n this.run();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CountoDirective.prototype, \"countTo\", {\n set: function (countTo) {\n this._countTo = parseFloat(countTo);\n this.run();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CountoDirective.prototype, \"countFrom\", {\n set: function (countFrom) {\n this._countFrom = parseFloat(countFrom);\n this.run();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CountoDirective.prototype, \"step\", {\n set: function (step) {\n this._step = parseFloat(step);\n this.run();\n },\n enumerable: true,\n configurable: true\n });\n CountoDirective.prototype.run = function () {\n var _this = this;\n clearInterval(_this._timer);\n if (isNaN(_this._duration)) {\n return false;\n }\n if (isNaN(_this._step)) {\n return false;\n }\n if (isNaN(_this._countFrom)) {\n return false;\n }\n if (isNaN(_this._countTo)) {\n return false;\n }\n if (_this._step <= 0) {\n console.info('Step must be greater than 0.');\n return false;\n }\n if (_this._duration <= 0) {\n console.info('Duration must be greater than 0.');\n return false;\n }\n if (_this._step > _this._duration * 1000) {\n console.info('Step must be equal or smaller than duration.');\n return false;\n }\n var intermediate = _this._countFrom;\n var increment = Math.abs(_this._countTo - _this._countFrom) / ((_this._duration * 1000) / _this._step);\n _this.countoChange.emit(intermediate);\n _this._timer = setInterval(function () {\n if (_this._countTo < _this._countFrom) {\n if (intermediate <= _this._countTo) {\n clearInterval(_this._timer);\n _this.countoChange.emit(_this._countTo);\n _this.countoEnd.emit();\n }\n else {\n _this.countoChange.emit(intermediate);\n intermediate -= increment;\n }\n }\n else {\n if (intermediate >= _this._countTo) {\n clearInterval(_this._timer);\n _this.countoChange.emit(_this._countTo);\n _this.countoEnd.emit();\n }\n else {\n _this.countoChange.emit(intermediate);\n intermediate += increment;\n }\n }\n }, _this._step);\n };\n /** @nocollapse */\n CountoDirective.ctorParameters = function () { return []; };\n CountoDirective.propDecorators = {\n \"countoChange\": [{ type: core_1.Output },],\n \"countoEnd\": [{ type: core_1.Output },],\n \"duration\": [{ type: core_1.Input },],\n \"countTo\": [{ type: core_1.Input },],\n \"countFrom\": [{ type: core_1.Input },],\n \"step\": [{ type: core_1.Input },],\n };\nCountoDirective.ɵfac = function CountoDirective_Factory(t) { return new (t || CountoDirective)(); };\nCountoDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CountoDirective, selectors: [[\"\", \"counto\", \"\"]], inputs: { duration: \"duration\", countTo: \"countTo\", countFrom: \"countFrom\", step: \"step\" }, outputs: { countoChange: \"countoChange\", countoEnd: \"countoEnd\" } });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CountoDirective, [{\n type: core_1.Directive,\n args: [{\n selector: '[counto]'\n }]\n }], function () { return []; }, { countoChange: [{\n type: core_1.Output\n }], countoEnd: [{\n type: core_1.Output\n }], duration: [{\n type: core_1.Input\n }], countTo: [{\n type: core_1.Input\n }], countFrom: [{\n type: core_1.Input\n }], step: [{\n type: core_1.Input\n }] }); })();\n return CountoDirective;\n}());\nexports.CountoDirective = CountoDirective;\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@angular/core\");\nvar counto_directive_1 = require(\"./counto.directive\");\nvar ɵngcc0 = require('@angular/core');\nvar ɵngcc1 = require('./counto.directive');\nvar CountoModule = /** @class */ (function () {\n function CountoModule() {\n }\n /** @nocollapse */\n CountoModule.ctorParameters = function () { return []; };\nCountoModule.ɵfac = function CountoModule_Factory(t) { return new (t || CountoModule)(); };\nCountoModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: CountoModule });\nCountoModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CountoModule, [{\n type: core_1.NgModule,\n args: [{\n declarations: [counto_directive_1.CountoDirective],\n exports: [counto_directive_1.CountoDirective]\n }]\n }], function () { return []; }, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(CountoModule, { declarations: [ɵngcc1.CountoDirective], exports: [ɵngcc1.CountoDirective] }); })();\n return CountoModule;\n}());\nexports.CountoModule = CountoModule;\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@angular/core\");\nvar forms_1 = require(\"@angular/forms\");\nvar platform_browser_1 = require(\"@angular/platform-browser\");\nvar textMaskCore_1 = require(\"text-mask-core/dist/textMaskCore\");\nvar ɵngcc0 = require('@angular/core');\nvar TextMaskConfig = /** @class */ (function () {\n function TextMaskConfig() {\n }\n return TextMaskConfig;\n}());\nexports.TextMaskConfig = TextMaskConfig;\nexports.MASKEDINPUT_VALUE_ACCESSOR = {\n provide: forms_1.NG_VALUE_ACCESSOR,\n useExisting: core_1.forwardRef(function () { return MaskedInputDirective; }),\n multi: true\n};\n/**\n * We must check whether the agent is Android because composition events\n * behave differently between iOS and Android.\n */\nfunction _isAndroid() {\n var userAgent = platform_browser_1.ɵgetDOM() ? platform_browser_1.ɵgetDOM().getUserAgent() : '';\n return /android (\\d+)/.test(userAgent.toLowerCase());\n}\nvar MaskedInputDirective = /** @class */ (function () {\n function MaskedInputDirective(_renderer, _elementRef, _compositionMode) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n this._compositionMode = _compositionMode;\n this.textMaskConfig = {\n mask: [],\n guide: true,\n placeholderChar: '_',\n pipe: undefined,\n keepCharPositions: false,\n };\n this.onChange = function (_) { };\n this.onTouched = function () { };\n /** Whether the user is creating a composition string (IME events). */\n this._composing = false;\n if (this._compositionMode == null) {\n this._compositionMode = !_isAndroid();\n }\n }\n MaskedInputDirective.prototype.ngOnChanges = function (changes) {\n this._setupMask(true);\n if (this.textMaskInputElement !== undefined) {\n this.textMaskInputElement.update(this.inputElement.value);\n }\n };\n MaskedInputDirective.prototype.writeValue = function (value) {\n this._setupMask();\n // set the initial value for cases where the mask is disabled\n var normalizedValue = value == null ? '' : value;\n this._renderer.setProperty(this.inputElement, 'value', normalizedValue);\n if (this.textMaskInputElement !== undefined) {\n this.textMaskInputElement.update(value);\n }\n };\n MaskedInputDirective.prototype.registerOnChange = function (fn) { this.onChange = fn; };\n MaskedInputDirective.prototype.registerOnTouched = function (fn) { this.onTouched = fn; };\n MaskedInputDirective.prototype.setDisabledState = function (isDisabled) {\n this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled);\n };\n MaskedInputDirective.prototype._handleInput = function (value) {\n if (!this._compositionMode || (this._compositionMode && !this._composing)) {\n this._setupMask();\n if (this.textMaskInputElement !== undefined) {\n this.textMaskInputElement.update(value);\n // get the updated value\n value = this.inputElement.value;\n this.onChange(value);\n }\n }\n };\n MaskedInputDirective.prototype._setupMask = function (create) {\n if (create === void 0) { create = false; }\n if (!this.inputElement) {\n if (this._elementRef.nativeElement.tagName.toUpperCase() === 'INPUT') {\n // `textMask` directive is used directly on an input element\n this.inputElement = this._elementRef.nativeElement;\n }\n else {\n // `textMask` directive is used on an abstracted input element, `md-input-container`, etc\n this.inputElement = this._elementRef.nativeElement.getElementsByTagName('INPUT')[0];\n }\n }\n if (this.inputElement && create) {\n this.textMaskInputElement = textMaskCore_1.createTextMaskInputElement(Object.assign({ inputElement: this.inputElement }, this.textMaskConfig));\n }\n };\n MaskedInputDirective.prototype._compositionStart = function () { this._composing = true; };\n MaskedInputDirective.prototype._compositionEnd = function (value) {\n this._composing = false;\n this._compositionMode && this._handleInput(value);\n };\n /** @nocollapse */\n MaskedInputDirective.ctorParameters = function () { return [\n { type: core_1.Renderer2, },\n { type: core_1.ElementRef, },\n { type: undefined, decorators: [{ type: core_1.Optional }, { type: core_1.Inject, args: [forms_1.COMPOSITION_BUFFER_MODE,] },] },\n ]; };\n MaskedInputDirective.propDecorators = {\n 'textMaskConfig': [{ type: core_1.Input, args: ['textMask',] },],\n };\nMaskedInputDirective.ɵfac = function MaskedInputDirective_Factory(t) { return new (t || MaskedInputDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(forms_1.COMPOSITION_BUFFER_MODE, 8)); };\nMaskedInputDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: MaskedInputDirective, selectors: [[\"\", \"textMask\", \"\"]], hostBindings: function MaskedInputDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"input\", function MaskedInputDirective_input_HostBindingHandler($event) { return ctx._handleInput($event.target.value); })(\"blur\", function MaskedInputDirective_blur_HostBindingHandler() { return ctx.onTouched(); })(\"compositionstart\", function MaskedInputDirective_compositionstart_HostBindingHandler() { return ctx._compositionStart(); })(\"compositionend\", function MaskedInputDirective_compositionend_HostBindingHandler($event) { return ctx._compositionEnd($event.target.value); });\n } }, inputs: { textMaskConfig: [\"textMask\", \"textMaskConfig\"] }, exportAs: [\"textMask\"], features: [ɵngcc0.ɵɵProvidersFeature([exports.MASKEDINPUT_VALUE_ACCESSOR]), ɵngcc0.ɵɵNgOnChangesFeature] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MaskedInputDirective, [{\n type: core_1.Directive,\n args: [{\n host: {\n '(input)': '_handleInput($event.target.value)',\n '(blur)': 'onTouched()',\n '(compositionstart)': '_compositionStart()',\n '(compositionend)': '_compositionEnd($event.target.value)'\n },\n selector: '[textMask]',\n exportAs: 'textMask',\n providers: [exports.MASKEDINPUT_VALUE_ACCESSOR]\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: undefined, decorators: [{\n type: core_1.Optional\n }, {\n type: core_1.Inject,\n args: [forms_1.COMPOSITION_BUFFER_MODE]\n }] }]; }, { textMaskConfig: [{\n type: core_1.Input,\n args: ['textMask']\n }] }); })();\n return MaskedInputDirective;\n}());\nexports.MaskedInputDirective = MaskedInputDirective;\nvar TextMaskModule = /** @class */ (function () {\n function TextMaskModule() {\n }\n /** @nocollapse */\n TextMaskModule.ctorParameters = function () { return []; };\nTextMaskModule.ɵfac = function TextMaskModule_Factory(t) { return new (t || TextMaskModule)(); };\nTextMaskModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: TextMaskModule });\nTextMaskModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TextMaskModule, [{\n type: core_1.NgModule,\n args: [{\n declarations: [MaskedInputDirective],\n exports: [MaskedInputDirective]\n }]\n }], function () { return []; }, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(TextMaskModule, { declarations: [MaskedInputDirective], exports: [MaskedInputDirective] }); })();\n return TextMaskModule;\n}());\nexports.TextMaskModule = TextMaskModule;\nvar textMaskCore_2 = require(\"text-mask-core/dist/textMaskCore\");\nexports.conformToMask = textMaskCore_2.conformToMask;\n\n","var collectionCompare = compare;\n\n/*\n primitives: value1 === value2\n functions: value1.toString == value2.toString\n arrays: if length, sequence and values of properties are identical\n objects: if length, names and values of properties are identical\n compare([[1, [2, 3]], [[1, [2, 3]]); // true\n compare([[1, [2, 3], 4], [[1, [2, 3]]); // false\n compare({a: 2, b: 3}, {a: 2, b: 3}); // true\n compare({a: 2, b: 3}, {b: 3, a: 2}); // true\n compare({a: 2, b: 3, c: 4}, {a: 2, b: 3}); // false\n compare({a: 2, b: 3}, {a: 2, b: 3, c: 4}); // false\n compare([[1, [2, {a: 4}], 4], [[1, [2, {a: 4}]]); // true\n*/\n\nfunction compare(value1, value2) {\n if (value1 === value2) {\n return true;\n }\n /* eslint-disable no-self-compare */\n // if both values are NaNs return true\n if (value1 !== value1 && value2 !== value2) {\n return true;\n }\n if ({}.toString.call(value1) != {}.toString.call(value2)) {\n return false;\n }\n if (value1 !== Object(value1)) {\n // non equal primitives\n return false;\n }\n if (!value1) {\n return false;\n }\n if (Array.isArray(value1)) {\n return compareArrays(value1, value2);\n }\n if ({}.toString.call(value1) == '[object Set]') {\n return compareArrays(Array.from(value1), Array.from(value2));\n }\n if ({}.toString.call(value1) == '[object Object]') {\n return compareObjects(value1, value2);\n } else {\n return compareNativeSubtypes(value1, value2);\n }\n}\n\nfunction compareNativeSubtypes(value1, value2) {\n // e.g. Function, RegExp, Date\n return value1.toString() === value2.toString();\n}\n\nfunction compareArrays(value1, value2) {\n var len = value1.length;\n if (len != value2.length) {\n return false;\n }\n var alike = true;\n for (var i = 0; i < len; i++) {\n if (!compare(value1[i], value2[i])) {\n alike = false;\n break;\n }\n }\n return alike;\n}\n\nfunction compareObjects(value1, value2) {\n var keys1 = Object.keys(value1).sort();\n var keys2 = Object.keys(value2).sort();\n var len = keys1.length;\n if (len != keys2.length) {\n return false;\n }\n for (var i = 0; i < len; i++) {\n var key1 = keys1[i];\n var key2 = keys2[i];\n if (!(key1 == key2 && compare(value1[key1], value2[key2]))) {\n return false;\n }\n }\n return true;\n}\n\nexport {collectionCompare as default};\n","/*!\n localForage -- Offline Storage, Improved\n Version 1.10.0\n https://localforage.github.io/localForage\n (c) 2013-2017 Mozilla, Apache License 2.0\n*/\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.localforage = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw (f.code=\"MODULE_NOT_FOUND\", f)}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var scriptEl = global.document.createElement('script');\n scriptEl.onreadystatechange = function () {\n nextTick();\n\n scriptEl.onreadystatechange = null;\n scriptEl.parentNode.removeChild(scriptEl);\n scriptEl = null;\n };\n global.document.documentElement.appendChild(scriptEl);\n };\n } else {\n scheduleDrain = function () {\n setTimeout(nextTick, 0);\n };\n }\n}\n\nvar draining;\nvar queue = [];\n//named nextTick for less confusing stack traces\nfunction nextTick() {\n draining = true;\n var i, oldQueue;\n var len = queue.length;\n while (len) {\n oldQueue = queue;\n queue = [];\n i = -1;\n while (++i < len) {\n oldQueue[i]();\n }\n len = queue.length;\n }\n draining = false;\n}\n\nmodule.exports = immediate;\nfunction immediate(task) {\n if (queue.push(task) === 1 && !draining) {\n scheduleDrain();\n }\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],2:[function(_dereq_,module,exports){\n'use strict';\nvar immediate = _dereq_(1);\n\n/* istanbul ignore next */\nfunction INTERNAL() {}\n\nvar handlers = {};\n\nvar REJECTED = ['REJECTED'];\nvar FULFILLED = ['FULFILLED'];\nvar PENDING = ['PENDING'];\n\nmodule.exports = Promise;\n\nfunction Promise(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('resolver must be a function');\n }\n this.state = PENDING;\n this.queue = [];\n this.outcome = void 0;\n if (resolver !== INTERNAL) {\n safelyResolveThenable(this, resolver);\n }\n}\n\nPromise.prototype[\"catch\"] = function (onRejected) {\n return this.then(null, onRejected);\n};\nPromise.prototype.then = function (onFulfilled, onRejected) {\n if (typeof onFulfilled !== 'function' && this.state === FULFILLED ||\n typeof onRejected !== 'function' && this.state === REJECTED) {\n return this;\n }\n var promise = new this.constructor(INTERNAL);\n if (this.state !== PENDING) {\n var resolver = this.state === FULFILLED ? onFulfilled : onRejected;\n unwrap(promise, resolver, this.outcome);\n } else {\n this.queue.push(new QueueItem(promise, onFulfilled, onRejected));\n }\n\n return promise;\n};\nfunction QueueItem(promise, onFulfilled, onRejected) {\n this.promise = promise;\n if (typeof onFulfilled === 'function') {\n this.onFulfilled = onFulfilled;\n this.callFulfilled = this.otherCallFulfilled;\n }\n if (typeof onRejected === 'function') {\n this.onRejected = onRejected;\n this.callRejected = this.otherCallRejected;\n }\n}\nQueueItem.prototype.callFulfilled = function (value) {\n handlers.resolve(this.promise, value);\n};\nQueueItem.prototype.otherCallFulfilled = function (value) {\n unwrap(this.promise, this.onFulfilled, value);\n};\nQueueItem.prototype.callRejected = function (value) {\n handlers.reject(this.promise, value);\n};\nQueueItem.prototype.otherCallRejected = function (value) {\n unwrap(this.promise, this.onRejected, value);\n};\n\nfunction unwrap(promise, func, value) {\n immediate(function () {\n var returnValue;\n try {\n returnValue = func(value);\n } catch (e) {\n return handlers.reject(promise, e);\n }\n if (returnValue === promise) {\n handlers.reject(promise, new TypeError('Cannot resolve promise with itself'));\n } else {\n handlers.resolve(promise, returnValue);\n }\n });\n}\n\nhandlers.resolve = function (self, value) {\n var result = tryCatch(getThen, value);\n if (result.status === 'error') {\n return handlers.reject(self, result.value);\n }\n var thenable = result.value;\n\n if (thenable) {\n safelyResolveThenable(self, thenable);\n } else {\n self.state = FULFILLED;\n self.outcome = value;\n var i = -1;\n var len = self.queue.length;\n while (++i < len) {\n self.queue[i].callFulfilled(value);\n }\n }\n return self;\n};\nhandlers.reject = function (self, error) {\n self.state = REJECTED;\n self.outcome = error;\n var i = -1;\n var len = self.queue.length;\n while (++i < len) {\n self.queue[i].callRejected(error);\n }\n return self;\n};\n\nfunction getThen(obj) {\n // Make sure we only access the accessor once as required by the spec\n var then = obj && obj.then;\n if (obj && (typeof obj === 'object' || typeof obj === 'function') && typeof then === 'function') {\n return function appyThen() {\n then.apply(obj, arguments);\n };\n }\n}\n\nfunction safelyResolveThenable(self, thenable) {\n // Either fulfill, reject or reject with error\n var called = false;\n function onError(value) {\n if (called) {\n return;\n }\n called = true;\n handlers.reject(self, value);\n }\n\n function onSuccess(value) {\n if (called) {\n return;\n }\n called = true;\n handlers.resolve(self, value);\n }\n\n function tryToUnwrap() {\n thenable(onSuccess, onError);\n }\n\n var result = tryCatch(tryToUnwrap);\n if (result.status === 'error') {\n onError(result.value);\n }\n}\n\nfunction tryCatch(func, value) {\n var out = {};\n try {\n out.value = func(value);\n out.status = 'success';\n } catch (e) {\n out.status = 'error';\n out.value = e;\n }\n return out;\n}\n\nPromise.resolve = resolve;\nfunction resolve(value) {\n if (value instanceof this) {\n return value;\n }\n return handlers.resolve(new this(INTERNAL), value);\n}\n\nPromise.reject = reject;\nfunction reject(reason) {\n var promise = new this(INTERNAL);\n return handlers.reject(promise, reason);\n}\n\nPromise.all = all;\nfunction all(iterable) {\n var self = this;\n if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n return this.reject(new TypeError('must be an array'));\n }\n\n var len = iterable.length;\n var called = false;\n if (!len) {\n return this.resolve([]);\n }\n\n var values = new Array(len);\n var resolved = 0;\n var i = -1;\n var promise = new this(INTERNAL);\n\n while (++i < len) {\n allResolver(iterable[i], i);\n }\n return promise;\n function allResolver(value, i) {\n self.resolve(value).then(resolveFromAll, function (error) {\n if (!called) {\n called = true;\n handlers.reject(promise, error);\n }\n });\n function resolveFromAll(outValue) {\n values[i] = outValue;\n if (++resolved === len && !called) {\n called = true;\n handlers.resolve(promise, values);\n }\n }\n }\n}\n\nPromise.race = race;\nfunction race(iterable) {\n var self = this;\n if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n return this.reject(new TypeError('must be an array'));\n }\n\n var len = iterable.length;\n var called = false;\n if (!len) {\n return this.resolve([]);\n }\n\n var i = -1;\n var promise = new this(INTERNAL);\n\n while (++i < len) {\n resolver(iterable[i]);\n }\n return promise;\n function resolver(value) {\n self.resolve(value).then(function (response) {\n if (!called) {\n called = true;\n handlers.resolve(promise, response);\n }\n }, function (error) {\n if (!called) {\n called = true;\n handlers.reject(promise, error);\n }\n });\n }\n}\n\n},{\"1\":1}],3:[function(_dereq_,module,exports){\n(function (global){\n'use strict';\nif (typeof global.Promise !== 'function') {\n global.Promise = _dereq_(2);\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"2\":2}],4:[function(_dereq_,module,exports){\n'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction getIDB() {\n /* global indexedDB,webkitIndexedDB,mozIndexedDB,OIndexedDB,msIndexedDB */\n try {\n if (typeof indexedDB !== 'undefined') {\n return indexedDB;\n }\n if (typeof webkitIndexedDB !== 'undefined') {\n return webkitIndexedDB;\n }\n if (typeof mozIndexedDB !== 'undefined') {\n return mozIndexedDB;\n }\n if (typeof OIndexedDB !== 'undefined') {\n return OIndexedDB;\n }\n if (typeof msIndexedDB !== 'undefined') {\n return msIndexedDB;\n }\n } catch (e) {\n return;\n }\n}\n\nvar idb = getIDB();\n\nfunction isIndexedDBValid() {\n try {\n // Initialize IndexedDB; fall back to vendor-prefixed versions\n // if needed.\n if (!idb || !idb.open) {\n return false;\n }\n // We mimic PouchDB here;\n //\n // We test for openDatabase because IE Mobile identifies itself\n // as Safari. Oh the lulz...\n var isSafari = typeof openDatabase !== 'undefined' && /(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent) && !/BlackBerry/.test(navigator.platform);\n\n var hasFetch = typeof fetch === 'function' && fetch.toString().indexOf('[native code') !== -1;\n\n // Safari <10.1 does not meet our requirements for IDB support\n // (see: https://github.com/pouchdb/pouchdb/issues/5572).\n // Safari 10.1 shipped with fetch, we can use that to detect it.\n // Note: this creates issues with `window.fetch` polyfills and\n // overrides; see:\n // https://github.com/localForage/localForage/issues/856\n return (!isSafari || hasFetch) && typeof indexedDB !== 'undefined' &&\n // some outdated implementations of IDB that appear on Samsung\n // and HTC Android devices <4.4 are missing IDBKeyRange\n // See: https://github.com/mozilla/localForage/issues/128\n // See: https://github.com/mozilla/localForage/issues/272\n typeof IDBKeyRange !== 'undefined';\n } catch (e) {\n return false;\n }\n}\n\n// Abstracts constructing a Blob object, so it also works in older\n// browsers that don't support the native Blob constructor. (i.e.\n// old QtWebKit versions, at least).\n// Abstracts constructing a Blob object, so it also works in older\n// browsers that don't support the native Blob constructor. (i.e.\n// old QtWebKit versions, at least).\nfunction createBlob(parts, properties) {\n /* global BlobBuilder,MSBlobBuilder,MozBlobBuilder,WebKitBlobBuilder */\n parts = parts || [];\n properties = properties || {};\n try {\n return new Blob(parts, properties);\n } catch (e) {\n if (e.name !== 'TypeError') {\n throw e;\n }\n var Builder = typeof BlobBuilder !== 'undefined' ? BlobBuilder : typeof MSBlobBuilder !== 'undefined' ? MSBlobBuilder : typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder : WebKitBlobBuilder;\n var builder = new Builder();\n for (var i = 0; i < parts.length; i += 1) {\n builder.append(parts[i]);\n }\n return builder.getBlob(properties.type);\n }\n}\n\n// This is CommonJS because lie is an external dependency, so Rollup\n// can just ignore it.\nif (typeof Promise === 'undefined') {\n // In the \"nopromises\" build this will just throw if you don't have\n // a global promise object, but it would throw anyway later.\n _dereq_(3);\n}\nvar Promise$1 = Promise;\n\nfunction executeCallback(promise, callback) {\n if (callback) {\n promise.then(function (result) {\n callback(null, result);\n }, function (error) {\n callback(error);\n });\n }\n}\n\nfunction executeTwoCallbacks(promise, callback, errorCallback) {\n if (typeof callback === 'function') {\n promise.then(callback);\n }\n\n if (typeof errorCallback === 'function') {\n promise[\"catch\"](errorCallback);\n }\n}\n\nfunction normalizeKey(key) {\n // Cast the key to a string, as that's all we can set as a key.\n if (typeof key !== 'string') {\n console.warn(key + ' used as a key, but it is not a string.');\n key = String(key);\n }\n\n return key;\n}\n\nfunction getCallback() {\n if (arguments.length && typeof arguments[arguments.length - 1] === 'function') {\n return arguments[arguments.length - 1];\n }\n}\n\n// Some code originally from async_storage.js in\n// [Gaia](https://github.com/mozilla-b2g/gaia).\n\nvar DETECT_BLOB_SUPPORT_STORE = 'local-forage-detect-blob-support';\nvar supportsBlobs = void 0;\nvar dbContexts = {};\nvar toString = Object.prototype.toString;\n\n// Transaction Modes\nvar READ_ONLY = 'readonly';\nvar READ_WRITE = 'readwrite';\n\n// Transform a binary string to an array buffer, because otherwise\n// weird stuff happens when you try to work with the binary string directly.\n// It is known.\n// From http://stackoverflow.com/questions/14967647/ (continues on next line)\n// encode-decode-image-with-base64-breaks-image (2013-04-21)\nfunction _binStringToArrayBuffer(bin) {\n var length = bin.length;\n var buf = new ArrayBuffer(length);\n var arr = new Uint8Array(buf);\n for (var i = 0; i < length; i++) {\n arr[i] = bin.charCodeAt(i);\n }\n return buf;\n}\n\n//\n// Blobs are not supported in all versions of IndexedDB, notably\n// Chrome <37 and Android <5. In those versions, storing a blob will throw.\n//\n// Various other blob bugs exist in Chrome v37-42 (inclusive).\n// Detecting them is expensive and confusing to users, and Chrome 37-42\n// is at very low usage worldwide, so we do a hacky userAgent check instead.\n//\n// content-type bug: https://code.google.com/p/chromium/issues/detail?id=408120\n// 404 bug: https://code.google.com/p/chromium/issues/detail?id=447916\n// FileReader bug: https://code.google.com/p/chromium/issues/detail?id=447836\n//\n// Code borrowed from PouchDB. See:\n// https://github.com/pouchdb/pouchdb/blob/master/packages/node_modules/pouchdb-adapter-idb/src/blobSupport.js\n//\nfunction _checkBlobSupportWithoutCaching(idb) {\n return new Promise$1(function (resolve) {\n var txn = idb.transaction(DETECT_BLOB_SUPPORT_STORE, READ_WRITE);\n var blob = createBlob(['']);\n txn.objectStore(DETECT_BLOB_SUPPORT_STORE).put(blob, 'key');\n\n txn.onabort = function (e) {\n // If the transaction aborts now its due to not being able to\n // write to the database, likely due to the disk being full\n e.preventDefault();\n e.stopPropagation();\n resolve(false);\n };\n\n txn.oncomplete = function () {\n var matchedChrome = navigator.userAgent.match(/Chrome\\/(\\d+)/);\n var matchedEdge = navigator.userAgent.match(/Edge\\//);\n // MS Edge pretends to be Chrome 42:\n // https://msdn.microsoft.com/en-us/library/hh869301%28v=vs.85%29.aspx\n resolve(matchedEdge || !matchedChrome || parseInt(matchedChrome[1], 10) >= 43);\n };\n })[\"catch\"](function () {\n return false; // error, so assume unsupported\n });\n}\n\nfunction _checkBlobSupport(idb) {\n if (typeof supportsBlobs === 'boolean') {\n return Promise$1.resolve(supportsBlobs);\n }\n return _checkBlobSupportWithoutCaching(idb).then(function (value) {\n supportsBlobs = value;\n return supportsBlobs;\n });\n}\n\nfunction _deferReadiness(dbInfo) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Create a deferred object representing the current database operation.\n var deferredOperation = {};\n\n deferredOperation.promise = new Promise$1(function (resolve, reject) {\n deferredOperation.resolve = resolve;\n deferredOperation.reject = reject;\n });\n\n // Enqueue the deferred operation.\n dbContext.deferredOperations.push(deferredOperation);\n\n // Chain its promise to the database readiness.\n if (!dbContext.dbReady) {\n dbContext.dbReady = deferredOperation.promise;\n } else {\n dbContext.dbReady = dbContext.dbReady.then(function () {\n return deferredOperation.promise;\n });\n }\n}\n\nfunction _advanceReadiness(dbInfo) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Dequeue a deferred operation.\n var deferredOperation = dbContext.deferredOperations.pop();\n\n // Resolve its promise (which is part of the database readiness\n // chain of promises).\n if (deferredOperation) {\n deferredOperation.resolve();\n return deferredOperation.promise;\n }\n}\n\nfunction _rejectReadiness(dbInfo, err) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Dequeue a deferred operation.\n var deferredOperation = dbContext.deferredOperations.pop();\n\n // Reject its promise (which is part of the database readiness\n // chain of promises).\n if (deferredOperation) {\n deferredOperation.reject(err);\n return deferredOperation.promise;\n }\n}\n\nfunction _getConnection(dbInfo, upgradeNeeded) {\n return new Promise$1(function (resolve, reject) {\n dbContexts[dbInfo.name] = dbContexts[dbInfo.name] || createDbContext();\n\n if (dbInfo.db) {\n if (upgradeNeeded) {\n _deferReadiness(dbInfo);\n dbInfo.db.close();\n } else {\n return resolve(dbInfo.db);\n }\n }\n\n var dbArgs = [dbInfo.name];\n\n if (upgradeNeeded) {\n dbArgs.push(dbInfo.version);\n }\n\n var openreq = idb.open.apply(idb, dbArgs);\n\n if (upgradeNeeded) {\n openreq.onupgradeneeded = function (e) {\n var db = openreq.result;\n try {\n db.createObjectStore(dbInfo.storeName);\n if (e.oldVersion <= 1) {\n // Added when support for blob shims was added\n db.createObjectStore(DETECT_BLOB_SUPPORT_STORE);\n }\n } catch (ex) {\n if (ex.name === 'ConstraintError') {\n console.warn('The database \"' + dbInfo.name + '\"' + ' has been upgraded from version ' + e.oldVersion + ' to version ' + e.newVersion + ', but the storage \"' + dbInfo.storeName + '\" already exists.');\n } else {\n throw ex;\n }\n }\n };\n }\n\n openreq.onerror = function (e) {\n e.preventDefault();\n reject(openreq.error);\n };\n\n openreq.onsuccess = function () {\n var db = openreq.result;\n db.onversionchange = function (e) {\n // Triggered when the database is modified (e.g. adding an objectStore) or\n // deleted (even when initiated by other sessions in different tabs).\n // Closing the connection here prevents those operations from being blocked.\n // If the database is accessed again later by this instance, the connection\n // will be reopened or the database recreated as needed.\n e.target.close();\n };\n resolve(db);\n _advanceReadiness(dbInfo);\n };\n });\n}\n\nfunction _getOriginalConnection(dbInfo) {\n return _getConnection(dbInfo, false);\n}\n\nfunction _getUpgradedConnection(dbInfo) {\n return _getConnection(dbInfo, true);\n}\n\nfunction _isUpgradeNeeded(dbInfo, defaultVersion) {\n if (!dbInfo.db) {\n return true;\n }\n\n var isNewStore = !dbInfo.db.objectStoreNames.contains(dbInfo.storeName);\n var isDowngrade = dbInfo.version < dbInfo.db.version;\n var isUpgrade = dbInfo.version > dbInfo.db.version;\n\n if (isDowngrade) {\n // If the version is not the default one\n // then warn for impossible downgrade.\n if (dbInfo.version !== defaultVersion) {\n console.warn('The database \"' + dbInfo.name + '\"' + \" can't be downgraded from version \" + dbInfo.db.version + ' to version ' + dbInfo.version + '.');\n }\n // Align the versions to prevent errors.\n dbInfo.version = dbInfo.db.version;\n }\n\n if (isUpgrade || isNewStore) {\n // If the store is new then increment the version (if needed).\n // This will trigger an \"upgradeneeded\" event which is required\n // for creating a store.\n if (isNewStore) {\n var incVersion = dbInfo.db.version + 1;\n if (incVersion > dbInfo.version) {\n dbInfo.version = incVersion;\n }\n }\n\n return true;\n }\n\n return false;\n}\n\n// encode a blob for indexeddb engines that don't support blobs\nfunction _encodeBlob(blob) {\n return new Promise$1(function (resolve, reject) {\n var reader = new FileReader();\n reader.onerror = reject;\n reader.onloadend = function (e) {\n var base64 = btoa(e.target.result || '');\n resolve({\n __local_forage_encoded_blob: true,\n data: base64,\n type: blob.type\n });\n };\n reader.readAsBinaryString(blob);\n });\n}\n\n// decode an encoded blob\nfunction _decodeBlob(encodedBlob) {\n var arrayBuff = _binStringToArrayBuffer(atob(encodedBlob.data));\n return createBlob([arrayBuff], { type: encodedBlob.type });\n}\n\n// is this one of our fancy encoded blobs?\nfunction _isEncodedBlob(value) {\n return value && value.__local_forage_encoded_blob;\n}\n\n// Specialize the default `ready()` function by making it dependent\n// on the current database operations. Thus, the driver will be actually\n// ready when it's been initialized (default) *and* there are no pending\n// operations on the database (initiated by some other instances).\nfunction _fullyReady(callback) {\n var self = this;\n\n var promise = self._initReady().then(function () {\n var dbContext = dbContexts[self._dbInfo.name];\n\n if (dbContext && dbContext.dbReady) {\n return dbContext.dbReady;\n }\n });\n\n executeTwoCallbacks(promise, callback, callback);\n return promise;\n}\n\n// Try to establish a new db connection to replace the\n// current one which is broken (i.e. experiencing\n// InvalidStateError while creating a transaction).\nfunction _tryReconnect(dbInfo) {\n _deferReadiness(dbInfo);\n\n var dbContext = dbContexts[dbInfo.name];\n var forages = dbContext.forages;\n\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n if (forage._dbInfo.db) {\n forage._dbInfo.db.close();\n forage._dbInfo.db = null;\n }\n }\n dbInfo.db = null;\n\n return _getOriginalConnection(dbInfo).then(function (db) {\n dbInfo.db = db;\n if (_isUpgradeNeeded(dbInfo)) {\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n return db;\n }).then(function (db) {\n // store the latest db reference\n // in case the db was upgraded\n dbInfo.db = dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n forages[i]._dbInfo.db = db;\n }\n })[\"catch\"](function (err) {\n _rejectReadiness(dbInfo, err);\n throw err;\n });\n}\n\n// FF doesn't like Promises (micro-tasks) and IDDB store operations,\n// so we have to do it with callbacks\nfunction createTransaction(dbInfo, mode, callback, retries) {\n if (retries === undefined) {\n retries = 1;\n }\n\n try {\n var tx = dbInfo.db.transaction(dbInfo.storeName, mode);\n callback(null, tx);\n } catch (err) {\n if (retries > 0 && (!dbInfo.db || err.name === 'InvalidStateError' || err.name === 'NotFoundError')) {\n return Promise$1.resolve().then(function () {\n if (!dbInfo.db || err.name === 'NotFoundError' && !dbInfo.db.objectStoreNames.contains(dbInfo.storeName) && dbInfo.version <= dbInfo.db.version) {\n // increase the db version, to create the new ObjectStore\n if (dbInfo.db) {\n dbInfo.version = dbInfo.db.version + 1;\n }\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n }).then(function () {\n return _tryReconnect(dbInfo).then(function () {\n createTransaction(dbInfo, mode, callback, retries - 1);\n });\n })[\"catch\"](callback);\n }\n\n callback(err);\n }\n}\n\nfunction createDbContext() {\n return {\n // Running localForages sharing a database.\n forages: [],\n // Shared database.\n db: null,\n // Database readiness (promise).\n dbReady: null,\n // Deferred operations on the database.\n deferredOperations: []\n };\n}\n\n// Open the IndexedDB database (automatically creates one if one didn't\n// previously exist), using any options set in the config.\nfunction _initStorage(options) {\n var self = this;\n var dbInfo = {\n db: null\n };\n\n if (options) {\n for (var i in options) {\n dbInfo[i] = options[i];\n }\n }\n\n // Get the current context of the database;\n var dbContext = dbContexts[dbInfo.name];\n\n // ...or create a new context.\n if (!dbContext) {\n dbContext = createDbContext();\n // Register the new context in the global container.\n dbContexts[dbInfo.name] = dbContext;\n }\n\n // Register itself as a running localForage in the current context.\n dbContext.forages.push(self);\n\n // Replace the default `ready()` function with the specialized one.\n if (!self._initReady) {\n self._initReady = self.ready;\n self.ready = _fullyReady;\n }\n\n // Create an array of initialization states of the related localForages.\n var initPromises = [];\n\n function ignoreErrors() {\n // Don't handle errors here,\n // just makes sure related localForages aren't pending.\n return Promise$1.resolve();\n }\n\n for (var j = 0; j < dbContext.forages.length; j++) {\n var forage = dbContext.forages[j];\n if (forage !== self) {\n // Don't wait for itself...\n initPromises.push(forage._initReady()[\"catch\"](ignoreErrors));\n }\n }\n\n // Take a snapshot of the related localForages.\n var forages = dbContext.forages.slice(0);\n\n // Initialize the connection process only when\n // all the related localForages aren't pending.\n return Promise$1.all(initPromises).then(function () {\n dbInfo.db = dbContext.db;\n // Get the connection or open a new one without upgrade.\n return _getOriginalConnection(dbInfo);\n }).then(function (db) {\n dbInfo.db = db;\n if (_isUpgradeNeeded(dbInfo, self._defaultConfig.version)) {\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n return db;\n }).then(function (db) {\n dbInfo.db = dbContext.db = db;\n self._dbInfo = dbInfo;\n // Share the final connection amongst related localForages.\n for (var k = 0; k < forages.length; k++) {\n var forage = forages[k];\n if (forage !== self) {\n // Self is already up-to-date.\n forage._dbInfo.db = dbInfo.db;\n forage._dbInfo.version = dbInfo.version;\n }\n }\n });\n}\n\nfunction getItem(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.get(key);\n\n req.onsuccess = function () {\n var value = req.result;\n if (value === undefined) {\n value = null;\n }\n if (_isEncodedBlob(value)) {\n value = _decodeBlob(value);\n }\n resolve(value);\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Iterate over all items stored in database.\nfunction iterate(iterator, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.openCursor();\n var iterationNumber = 1;\n\n req.onsuccess = function () {\n var cursor = req.result;\n\n if (cursor) {\n var value = cursor.value;\n if (_isEncodedBlob(value)) {\n value = _decodeBlob(value);\n }\n var result = iterator(value, cursor.key, iterationNumber++);\n\n // when the iterator callback returns any\n // (non-`undefined`) value, then we stop\n // the iteration immediately\n if (result !== void 0) {\n resolve(result);\n } else {\n cursor[\"continue\"]();\n }\n } else {\n resolve();\n }\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n\n return promise;\n}\n\nfunction setItem(key, value, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n var dbInfo;\n self.ready().then(function () {\n dbInfo = self._dbInfo;\n if (toString.call(value) === '[object Blob]') {\n return _checkBlobSupport(dbInfo.db).then(function (blobSupport) {\n if (blobSupport) {\n return value;\n }\n return _encodeBlob(value);\n });\n }\n return value;\n }).then(function (value) {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n\n // The reason we don't _save_ null is because IE 10 does\n // not support saving the `null` type in IndexedDB. How\n // ironic, given the bug below!\n // See: https://github.com/mozilla/localForage/issues/161\n if (value === null) {\n value = undefined;\n }\n\n var req = store.put(value, key);\n\n transaction.oncomplete = function () {\n // Cast to undefined so the value passed to\n // callback/promise is the same as what one would get out\n // of `getItem()` later. This leads to some weirdness\n // (setItem('foo', undefined) will return `null`), but\n // it's not my fault localStorage is our baseline and that\n // it's weird.\n if (value === undefined) {\n value = null;\n }\n\n resolve(value);\n };\n transaction.onabort = transaction.onerror = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction removeItem(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n // We use a Grunt task to make this safe for IE and some\n // versions of Android (including those used by Cordova).\n // Normally IE won't like `.delete()` and will insist on\n // using `['delete']()`, but we have a build step that\n // fixes this for us now.\n var req = store[\"delete\"](key);\n transaction.oncomplete = function () {\n resolve();\n };\n\n transaction.onerror = function () {\n reject(req.error);\n };\n\n // The request will be also be aborted if we've exceeded our storage\n // space.\n transaction.onabort = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction clear(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.clear();\n\n transaction.oncomplete = function () {\n resolve();\n };\n\n transaction.onabort = transaction.onerror = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction length(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.count();\n\n req.onsuccess = function () {\n resolve(req.result);\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction key(n, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n if (n < 0) {\n resolve(null);\n\n return;\n }\n\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var advanced = false;\n var req = store.openKeyCursor();\n\n req.onsuccess = function () {\n var cursor = req.result;\n if (!cursor) {\n // this means there weren't enough keys\n resolve(null);\n\n return;\n }\n\n if (n === 0) {\n // We have the first key, return it if that's what they\n // wanted.\n resolve(cursor.key);\n } else {\n if (!advanced) {\n // Otherwise, ask the cursor to skip ahead n\n // records.\n advanced = true;\n cursor.advance(n);\n } else {\n // When we get here, we've got the nth key.\n resolve(cursor.key);\n }\n }\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.openKeyCursor();\n var keys = [];\n\n req.onsuccess = function () {\n var cursor = req.result;\n\n if (!cursor) {\n resolve(keys);\n return;\n }\n\n keys.push(cursor.key);\n cursor[\"continue\"]();\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction dropInstance(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n var currentConfig = this.config();\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n var isCurrentDb = options.name === currentConfig.name && self._dbInfo.db;\n\n var dbPromise = isCurrentDb ? Promise$1.resolve(self._dbInfo.db) : _getOriginalConnection(options).then(function (db) {\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n forages[i]._dbInfo.db = db;\n }\n return db;\n });\n\n if (!options.storeName) {\n promise = dbPromise.then(function (db) {\n _deferReadiness(options);\n\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n\n db.close();\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n forage._dbInfo.db = null;\n }\n\n var dropDBPromise = new Promise$1(function (resolve, reject) {\n var req = idb.deleteDatabase(options.name);\n\n req.onerror = function () {\n var db = req.result;\n if (db) {\n db.close();\n }\n reject(req.error);\n };\n\n req.onblocked = function () {\n // Closing all open connections in onversionchange handler should prevent this situation, but if\n // we do get here, it just means the request remains pending - eventually it will succeed or error\n console.warn('dropInstance blocked for database \"' + options.name + '\" until all open connections are closed');\n };\n\n req.onsuccess = function () {\n var db = req.result;\n if (db) {\n db.close();\n }\n resolve(db);\n };\n });\n\n return dropDBPromise.then(function (db) {\n dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n var _forage = forages[i];\n _advanceReadiness(_forage._dbInfo);\n }\n })[\"catch\"](function (err) {\n (_rejectReadiness(options, err) || Promise$1.resolve())[\"catch\"](function () {});\n throw err;\n });\n });\n } else {\n promise = dbPromise.then(function (db) {\n if (!db.objectStoreNames.contains(options.storeName)) {\n return;\n }\n\n var newVersion = db.version + 1;\n\n _deferReadiness(options);\n\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n\n db.close();\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n forage._dbInfo.db = null;\n forage._dbInfo.version = newVersion;\n }\n\n var dropObjectPromise = new Promise$1(function (resolve, reject) {\n var req = idb.open(options.name, newVersion);\n\n req.onerror = function (err) {\n var db = req.result;\n db.close();\n reject(err);\n };\n\n req.onupgradeneeded = function () {\n var db = req.result;\n db.deleteObjectStore(options.storeName);\n };\n\n req.onsuccess = function () {\n var db = req.result;\n db.close();\n resolve(db);\n };\n });\n\n return dropObjectPromise.then(function (db) {\n dbContext.db = db;\n for (var j = 0; j < forages.length; j++) {\n var _forage2 = forages[j];\n _forage2._dbInfo.db = db;\n _advanceReadiness(_forage2._dbInfo);\n }\n })[\"catch\"](function (err) {\n (_rejectReadiness(options, err) || Promise$1.resolve())[\"catch\"](function () {});\n throw err;\n });\n });\n }\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar asyncStorage = {\n _driver: 'asyncStorage',\n _initStorage: _initStorage,\n _support: isIndexedDBValid(),\n iterate: iterate,\n getItem: getItem,\n setItem: setItem,\n removeItem: removeItem,\n clear: clear,\n length: length,\n key: key,\n keys: keys,\n dropInstance: dropInstance\n};\n\nfunction isWebSQLValid() {\n return typeof openDatabase === 'function';\n}\n\n// Sadly, the best way to save binary data in WebSQL/localStorage is serializing\n// it to Base64, so this is how we store it to prevent very strange errors with less\n// verbose ways of binary <-> string data storage.\nvar BASE_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\nvar BLOB_TYPE_PREFIX = '~~local_forage_type~';\nvar BLOB_TYPE_PREFIX_REGEX = /^~~local_forage_type~([^~]+)~/;\n\nvar SERIALIZED_MARKER = '__lfsc__:';\nvar SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER.length;\n\n// OMG the serializations!\nvar TYPE_ARRAYBUFFER = 'arbf';\nvar TYPE_BLOB = 'blob';\nvar TYPE_INT8ARRAY = 'si08';\nvar TYPE_UINT8ARRAY = 'ui08';\nvar TYPE_UINT8CLAMPEDARRAY = 'uic8';\nvar TYPE_INT16ARRAY = 'si16';\nvar TYPE_INT32ARRAY = 'si32';\nvar TYPE_UINT16ARRAY = 'ur16';\nvar TYPE_UINT32ARRAY = 'ui32';\nvar TYPE_FLOAT32ARRAY = 'fl32';\nvar TYPE_FLOAT64ARRAY = 'fl64';\nvar TYPE_SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER_LENGTH + TYPE_ARRAYBUFFER.length;\n\nvar toString$1 = Object.prototype.toString;\n\nfunction stringToBuffer(serializedString) {\n // Fill the string into a ArrayBuffer.\n var bufferLength = serializedString.length * 0.75;\n var len = serializedString.length;\n var i;\n var p = 0;\n var encoded1, encoded2, encoded3, encoded4;\n\n if (serializedString[serializedString.length - 1] === '=') {\n bufferLength--;\n if (serializedString[serializedString.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n var buffer = new ArrayBuffer(bufferLength);\n var bytes = new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = BASE_CHARS.indexOf(serializedString[i]);\n encoded2 = BASE_CHARS.indexOf(serializedString[i + 1]);\n encoded3 = BASE_CHARS.indexOf(serializedString[i + 2]);\n encoded4 = BASE_CHARS.indexOf(serializedString[i + 3]);\n\n /*jslint bitwise: true */\n bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n }\n return buffer;\n}\n\n// Converts a buffer to a string to store, serialized, in the backend\n// storage library.\nfunction bufferToString(buffer) {\n // base64-arraybuffer\n var bytes = new Uint8Array(buffer);\n var base64String = '';\n var i;\n\n for (i = 0; i < bytes.length; i += 3) {\n /*jslint bitwise: true */\n base64String += BASE_CHARS[bytes[i] >> 2];\n base64String += BASE_CHARS[(bytes[i] & 3) << 4 | bytes[i + 1] >> 4];\n base64String += BASE_CHARS[(bytes[i + 1] & 15) << 2 | bytes[i + 2] >> 6];\n base64String += BASE_CHARS[bytes[i + 2] & 63];\n }\n\n if (bytes.length % 3 === 2) {\n base64String = base64String.substring(0, base64String.length - 1) + '=';\n } else if (bytes.length % 3 === 1) {\n base64String = base64String.substring(0, base64String.length - 2) + '==';\n }\n\n return base64String;\n}\n\n// Serialize a value, afterwards executing a callback (which usually\n// instructs the `setItem()` callback/promise to be executed). This is how\n// we store binary data with localStorage.\nfunction serialize(value, callback) {\n var valueType = '';\n if (value) {\n valueType = toString$1.call(value);\n }\n\n // Cannot use `value instanceof ArrayBuffer` or such here, as these\n // checks fail when running the tests using casper.js...\n //\n // TODO: See why those tests fail and use a better solution.\n if (value && (valueType === '[object ArrayBuffer]' || value.buffer && toString$1.call(value.buffer) === '[object ArrayBuffer]')) {\n // Convert binary arrays to a string and prefix the string with\n // a special marker.\n var buffer;\n var marker = SERIALIZED_MARKER;\n\n if (value instanceof ArrayBuffer) {\n buffer = value;\n marker += TYPE_ARRAYBUFFER;\n } else {\n buffer = value.buffer;\n\n if (valueType === '[object Int8Array]') {\n marker += TYPE_INT8ARRAY;\n } else if (valueType === '[object Uint8Array]') {\n marker += TYPE_UINT8ARRAY;\n } else if (valueType === '[object Uint8ClampedArray]') {\n marker += TYPE_UINT8CLAMPEDARRAY;\n } else if (valueType === '[object Int16Array]') {\n marker += TYPE_INT16ARRAY;\n } else if (valueType === '[object Uint16Array]') {\n marker += TYPE_UINT16ARRAY;\n } else if (valueType === '[object Int32Array]') {\n marker += TYPE_INT32ARRAY;\n } else if (valueType === '[object Uint32Array]') {\n marker += TYPE_UINT32ARRAY;\n } else if (valueType === '[object Float32Array]') {\n marker += TYPE_FLOAT32ARRAY;\n } else if (valueType === '[object Float64Array]') {\n marker += TYPE_FLOAT64ARRAY;\n } else {\n callback(new Error('Failed to get type for BinaryArray'));\n }\n }\n\n callback(marker + bufferToString(buffer));\n } else if (valueType === '[object Blob]') {\n // Conver the blob to a binaryArray and then to a string.\n var fileReader = new FileReader();\n\n fileReader.onload = function () {\n // Backwards-compatible prefix for the blob type.\n var str = BLOB_TYPE_PREFIX + value.type + '~' + bufferToString(this.result);\n\n callback(SERIALIZED_MARKER + TYPE_BLOB + str);\n };\n\n fileReader.readAsArrayBuffer(value);\n } else {\n try {\n callback(JSON.stringify(value));\n } catch (e) {\n console.error(\"Couldn't convert value into a JSON string: \", value);\n\n callback(null, e);\n }\n }\n}\n\n// Deserialize data we've inserted into a value column/field. We place\n// special markers into our strings to mark them as encoded; this isn't\n// as nice as a meta field, but it's the only sane thing we can do whilst\n// keeping localStorage support intact.\n//\n// Oftentimes this will just deserialize JSON content, but if we have a\n// special marker (SERIALIZED_MARKER, defined above), we will extract\n// some kind of arraybuffer/binary data/typed array out of the string.\nfunction deserialize(value) {\n // If we haven't marked this string as being specially serialized (i.e.\n // something other than serialized JSON), we can just return it and be\n // done with it.\n if (value.substring(0, SERIALIZED_MARKER_LENGTH) !== SERIALIZED_MARKER) {\n return JSON.parse(value);\n }\n\n // The following code deals with deserializing some kind of Blob or\n // TypedArray. First we separate out the type of data we're dealing\n // with from the data itself.\n var serializedString = value.substring(TYPE_SERIALIZED_MARKER_LENGTH);\n var type = value.substring(SERIALIZED_MARKER_LENGTH, TYPE_SERIALIZED_MARKER_LENGTH);\n\n var blobType;\n // Backwards-compatible blob type serialization strategy.\n // DBs created with older versions of localForage will simply not have the blob type.\n if (type === TYPE_BLOB && BLOB_TYPE_PREFIX_REGEX.test(serializedString)) {\n var matcher = serializedString.match(BLOB_TYPE_PREFIX_REGEX);\n blobType = matcher[1];\n serializedString = serializedString.substring(matcher[0].length);\n }\n var buffer = stringToBuffer(serializedString);\n\n // Return the right type based on the code/type set during\n // serialization.\n switch (type) {\n case TYPE_ARRAYBUFFER:\n return buffer;\n case TYPE_BLOB:\n return createBlob([buffer], { type: blobType });\n case TYPE_INT8ARRAY:\n return new Int8Array(buffer);\n case TYPE_UINT8ARRAY:\n return new Uint8Array(buffer);\n case TYPE_UINT8CLAMPEDARRAY:\n return new Uint8ClampedArray(buffer);\n case TYPE_INT16ARRAY:\n return new Int16Array(buffer);\n case TYPE_UINT16ARRAY:\n return new Uint16Array(buffer);\n case TYPE_INT32ARRAY:\n return new Int32Array(buffer);\n case TYPE_UINT32ARRAY:\n return new Uint32Array(buffer);\n case TYPE_FLOAT32ARRAY:\n return new Float32Array(buffer);\n case TYPE_FLOAT64ARRAY:\n return new Float64Array(buffer);\n default:\n throw new Error('Unkown type: ' + type);\n }\n}\n\nvar localforageSerializer = {\n serialize: serialize,\n deserialize: deserialize,\n stringToBuffer: stringToBuffer,\n bufferToString: bufferToString\n};\n\n/*\n * Includes code from:\n *\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n\nfunction createDbTable(t, dbInfo, callback, errorCallback) {\n t.executeSql('CREATE TABLE IF NOT EXISTS ' + dbInfo.storeName + ' ' + '(id INTEGER PRIMARY KEY, key unique, value)', [], callback, errorCallback);\n}\n\n// Open the WebSQL database (automatically creates one if one didn't\n// previously exist), using any options set in the config.\nfunction _initStorage$1(options) {\n var self = this;\n var dbInfo = {\n db: null\n };\n\n if (options) {\n for (var i in options) {\n dbInfo[i] = typeof options[i] !== 'string' ? options[i].toString() : options[i];\n }\n }\n\n var dbInfoPromise = new Promise$1(function (resolve, reject) {\n // Open the database; the openDatabase API will automatically\n // create it for us if it doesn't exist.\n try {\n dbInfo.db = openDatabase(dbInfo.name, String(dbInfo.version), dbInfo.description, dbInfo.size);\n } catch (e) {\n return reject(e);\n }\n\n // Create our key/value table if it doesn't exist.\n dbInfo.db.transaction(function (t) {\n createDbTable(t, dbInfo, function () {\n self._dbInfo = dbInfo;\n resolve();\n }, function (t, error) {\n reject(error);\n });\n }, reject);\n });\n\n dbInfo.serializer = localforageSerializer;\n return dbInfoPromise;\n}\n\nfunction tryExecuteSql(t, dbInfo, sqlStatement, args, callback, errorCallback) {\n t.executeSql(sqlStatement, args, callback, function (t, error) {\n if (error.code === error.SYNTAX_ERR) {\n t.executeSql('SELECT name FROM sqlite_master ' + \"WHERE type='table' AND name = ?\", [dbInfo.storeName], function (t, results) {\n if (!results.rows.length) {\n // if the table is missing (was deleted)\n // re-create it table and retry\n createDbTable(t, dbInfo, function () {\n t.executeSql(sqlStatement, args, callback, errorCallback);\n }, errorCallback);\n } else {\n errorCallback(t, error);\n }\n }, errorCallback);\n } else {\n errorCallback(t, error);\n }\n }, errorCallback);\n}\n\nfunction getItem$1(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT * FROM ' + dbInfo.storeName + ' WHERE key = ? LIMIT 1', [key], function (t, results) {\n var result = results.rows.length ? results.rows.item(0).value : null;\n\n // Check to see if this is serialized content we need to\n // unpack.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction iterate$1(iterator, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT * FROM ' + dbInfo.storeName, [], function (t, results) {\n var rows = results.rows;\n var length = rows.length;\n\n for (var i = 0; i < length; i++) {\n var item = rows.item(i);\n var result = item.value;\n\n // Check to see if this is serialized content\n // we need to unpack.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n result = iterator(result, item.key, i + 1);\n\n // void(0) prevents problems with redefinition\n // of `undefined`.\n if (result !== void 0) {\n resolve(result);\n return;\n }\n }\n\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction _setItem(key, value, callback, retriesLeft) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n // The localStorage API doesn't return undefined values in an\n // \"expected\" way, so undefined is always cast to null in all\n // drivers. See: https://github.com/mozilla/localForage/pull/42\n if (value === undefined) {\n value = null;\n }\n\n // Save the original value to pass to the callback.\n var originalValue = value;\n\n var dbInfo = self._dbInfo;\n dbInfo.serializer.serialize(value, function (value, error) {\n if (error) {\n reject(error);\n } else {\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'INSERT OR REPLACE INTO ' + dbInfo.storeName + ' ' + '(key, value) VALUES (?, ?)', [key, value], function () {\n resolve(originalValue);\n }, function (t, error) {\n reject(error);\n });\n }, function (sqlError) {\n // The transaction failed; check\n // to see if it's a quota error.\n if (sqlError.code === sqlError.QUOTA_ERR) {\n // We reject the callback outright for now, but\n // it's worth trying to re-run the transaction.\n // Even if the user accepts the prompt to use\n // more storage on Safari, this error will\n // be called.\n //\n // Try to re-run the transaction.\n if (retriesLeft > 0) {\n resolve(_setItem.apply(self, [key, originalValue, callback, retriesLeft - 1]));\n return;\n }\n reject(sqlError);\n }\n });\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction setItem$1(key, value, callback) {\n return _setItem.apply(this, [key, value, callback, 1]);\n}\n\nfunction removeItem$1(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'DELETE FROM ' + dbInfo.storeName + ' WHERE key = ?', [key], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Deletes every item in the table.\n// TODO: Find out if this resets the AUTO_INCREMENT number.\nfunction clear$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'DELETE FROM ' + dbInfo.storeName, [], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Does a simple `COUNT(key)` to get the number of items stored in\n// localForage.\nfunction length$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n // Ahhh, SQL makes this one soooooo easy.\n tryExecuteSql(t, dbInfo, 'SELECT COUNT(key) as c FROM ' + dbInfo.storeName, [], function (t, results) {\n var result = results.rows.item(0).c;\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Return the key located at key index X; essentially gets the key from a\n// `WHERE id = ?`. This is the most efficient way I can think to implement\n// this rarely-used (in my experience) part of the API, but it can seem\n// inconsistent, because we do `INSERT OR REPLACE INTO` on `setItem()`, so\n// the ID of each key will change every time it's updated. Perhaps a stored\n// procedure for the `setItem()` SQL would solve this problem?\n// TODO: Don't change ID on `setItem()`.\nfunction key$1(n, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT key FROM ' + dbInfo.storeName + ' WHERE id = ? LIMIT 1', [n + 1], function (t, results) {\n var result = results.rows.length ? results.rows.item(0).key : null;\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT key FROM ' + dbInfo.storeName, [], function (t, results) {\n var keys = [];\n\n for (var i = 0; i < results.rows.length; i++) {\n keys.push(results.rows.item(i).key);\n }\n\n resolve(keys);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// https://www.w3.org/TR/webdatabase/#databases\n// > There is no way to enumerate or delete the databases available for an origin from this API.\nfunction getAllStoreNames(db) {\n return new Promise$1(function (resolve, reject) {\n db.transaction(function (t) {\n t.executeSql('SELECT name FROM sqlite_master ' + \"WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'\", [], function (t, results) {\n var storeNames = [];\n\n for (var i = 0; i < results.rows.length; i++) {\n storeNames.push(results.rows.item(i).name);\n }\n\n resolve({\n db: db,\n storeNames: storeNames\n });\n }, function (t, error) {\n reject(error);\n });\n }, function (sqlError) {\n reject(sqlError);\n });\n });\n}\n\nfunction dropInstance$1(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n var currentConfig = this.config();\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n promise = new Promise$1(function (resolve) {\n var db;\n if (options.name === currentConfig.name) {\n // use the db reference of the current instance\n db = self._dbInfo.db;\n } else {\n db = openDatabase(options.name, '', '', 0);\n }\n\n if (!options.storeName) {\n // drop all database tables\n resolve(getAllStoreNames(db));\n } else {\n resolve({\n db: db,\n storeNames: [options.storeName]\n });\n }\n }).then(function (operationInfo) {\n return new Promise$1(function (resolve, reject) {\n operationInfo.db.transaction(function (t) {\n function dropTable(storeName) {\n return new Promise$1(function (resolve, reject) {\n t.executeSql('DROP TABLE IF EXISTS ' + storeName, [], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n }\n\n var operations = [];\n for (var i = 0, len = operationInfo.storeNames.length; i < len; i++) {\n operations.push(dropTable(operationInfo.storeNames[i]));\n }\n\n Promise$1.all(operations).then(function () {\n resolve();\n })[\"catch\"](function (e) {\n reject(e);\n });\n }, function (sqlError) {\n reject(sqlError);\n });\n });\n });\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar webSQLStorage = {\n _driver: 'webSQLStorage',\n _initStorage: _initStorage$1,\n _support: isWebSQLValid(),\n iterate: iterate$1,\n getItem: getItem$1,\n setItem: setItem$1,\n removeItem: removeItem$1,\n clear: clear$1,\n length: length$1,\n key: key$1,\n keys: keys$1,\n dropInstance: dropInstance$1\n};\n\nfunction isLocalStorageValid() {\n try {\n return typeof localStorage !== 'undefined' && 'setItem' in localStorage &&\n // in IE8 typeof localStorage.setItem === 'object'\n !!localStorage.setItem;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getKeyPrefix(options, defaultConfig) {\n var keyPrefix = options.name + '/';\n\n if (options.storeName !== defaultConfig.storeName) {\n keyPrefix += options.storeName + '/';\n }\n return keyPrefix;\n}\n\n// Check if localStorage throws when saving an item\nfunction checkIfLocalStorageThrows() {\n var localStorageTestKey = '_localforage_support_test';\n\n try {\n localStorage.setItem(localStorageTestKey, true);\n localStorage.removeItem(localStorageTestKey);\n\n return false;\n } catch (e) {\n return true;\n }\n}\n\n// Check if localStorage is usable and allows to save an item\n// This method checks if localStorage is usable in Safari Private Browsing\n// mode, or in any other case where the available quota for localStorage\n// is 0 and there wasn't any saved items yet.\nfunction _isLocalStorageUsable() {\n return !checkIfLocalStorageThrows() || localStorage.length > 0;\n}\n\n// Config the localStorage backend, using options set in the config.\nfunction _initStorage$2(options) {\n var self = this;\n var dbInfo = {};\n if (options) {\n for (var i in options) {\n dbInfo[i] = options[i];\n }\n }\n\n dbInfo.keyPrefix = _getKeyPrefix(options, self._defaultConfig);\n\n if (!_isLocalStorageUsable()) {\n return Promise$1.reject();\n }\n\n self._dbInfo = dbInfo;\n dbInfo.serializer = localforageSerializer;\n\n return Promise$1.resolve();\n}\n\n// Remove all keys from the datastore, effectively destroying all data in\n// the app's key/value store!\nfunction clear$2(callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var keyPrefix = self._dbInfo.keyPrefix;\n\n for (var i = localStorage.length - 1; i >= 0; i--) {\n var key = localStorage.key(i);\n\n if (key.indexOf(keyPrefix) === 0) {\n localStorage.removeItem(key);\n }\n }\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Retrieve an item from the store. Unlike the original async_storage\n// library in Gaia, we don't modify return values at all. If a key's value\n// is `undefined`, we pass that value to the callback function.\nfunction getItem$2(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var result = localStorage.getItem(dbInfo.keyPrefix + key);\n\n // If a result was found, parse it from the serialized\n // string into a JS object. If result isn't truthy, the key\n // is likely undefined and we'll pass it straight to the\n // callback.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n return result;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Iterate over all items in the store.\nfunction iterate$2(iterator, callback) {\n var self = this;\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var keyPrefix = dbInfo.keyPrefix;\n var keyPrefixLength = keyPrefix.length;\n var length = localStorage.length;\n\n // We use a dedicated iterator instead of the `i` variable below\n // so other keys we fetch in localStorage aren't counted in\n // the `iterationNumber` argument passed to the `iterate()`\n // callback.\n //\n // See: github.com/mozilla/localForage/pull/435#discussion_r38061530\n var iterationNumber = 1;\n\n for (var i = 0; i < length; i++) {\n var key = localStorage.key(i);\n if (key.indexOf(keyPrefix) !== 0) {\n continue;\n }\n var value = localStorage.getItem(key);\n\n // If a result was found, parse it from the serialized\n // string into a JS object. If result isn't truthy, the\n // key is likely undefined and we'll pass it straight\n // to the iterator.\n if (value) {\n value = dbInfo.serializer.deserialize(value);\n }\n\n value = iterator(value, key.substring(keyPrefixLength), iterationNumber++);\n\n if (value !== void 0) {\n return value;\n }\n }\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Same as localStorage's key() method, except takes a callback.\nfunction key$2(n, callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var result;\n try {\n result = localStorage.key(n);\n } catch (error) {\n result = null;\n }\n\n // Remove the prefix from the key, if a key is found.\n if (result) {\n result = result.substring(dbInfo.keyPrefix.length);\n }\n\n return result;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys$2(callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var length = localStorage.length;\n var keys = [];\n\n for (var i = 0; i < length; i++) {\n var itemKey = localStorage.key(i);\n if (itemKey.indexOf(dbInfo.keyPrefix) === 0) {\n keys.push(itemKey.substring(dbInfo.keyPrefix.length));\n }\n }\n\n return keys;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Supply the number of keys in the datastore to the callback function.\nfunction length$2(callback) {\n var self = this;\n var promise = self.keys().then(function (keys) {\n return keys.length;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Remove an item from the store, nice and simple.\nfunction removeItem$2(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n localStorage.removeItem(dbInfo.keyPrefix + key);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Set a key's value and run an optional callback once the value is set.\n// Unlike Gaia's implementation, the callback function is passed the value,\n// in case you want to operate on that value only after you're sure it\n// saved, or something like that.\nfunction setItem$2(key, value, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n // Convert undefined values to null.\n // https://github.com/mozilla/localForage/pull/42\n if (value === undefined) {\n value = null;\n }\n\n // Save the original value to pass to the callback.\n var originalValue = value;\n\n return new Promise$1(function (resolve, reject) {\n var dbInfo = self._dbInfo;\n dbInfo.serializer.serialize(value, function (value, error) {\n if (error) {\n reject(error);\n } else {\n try {\n localStorage.setItem(dbInfo.keyPrefix + key, value);\n resolve(originalValue);\n } catch (e) {\n // localStorage capacity exceeded.\n // TODO: Make this a specific error/event.\n if (e.name === 'QuotaExceededError' || e.name === 'NS_ERROR_DOM_QUOTA_REACHED') {\n reject(e);\n }\n reject(e);\n }\n }\n });\n });\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction dropInstance$2(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n var currentConfig = this.config();\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n promise = new Promise$1(function (resolve) {\n if (!options.storeName) {\n resolve(options.name + '/');\n } else {\n resolve(_getKeyPrefix(options, self._defaultConfig));\n }\n }).then(function (keyPrefix) {\n for (var i = localStorage.length - 1; i >= 0; i--) {\n var key = localStorage.key(i);\n\n if (key.indexOf(keyPrefix) === 0) {\n localStorage.removeItem(key);\n }\n }\n });\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar localStorageWrapper = {\n _driver: 'localStorageWrapper',\n _initStorage: _initStorage$2,\n _support: isLocalStorageValid(),\n iterate: iterate$2,\n getItem: getItem$2,\n setItem: setItem$2,\n removeItem: removeItem$2,\n clear: clear$2,\n length: length$2,\n key: key$2,\n keys: keys$2,\n dropInstance: dropInstance$2\n};\n\nvar sameValue = function sameValue(x, y) {\n return x === y || typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y);\n};\n\nvar includes = function includes(array, searchElement) {\n var len = array.length;\n var i = 0;\n while (i < len) {\n if (sameValue(array[i], searchElement)) {\n return true;\n }\n i++;\n }\n\n return false;\n};\n\nvar isArray = Array.isArray || function (arg) {\n return Object.prototype.toString.call(arg) === '[object Array]';\n};\n\n// Drivers are stored here when `defineDriver()` is called.\n// They are shared across all instances of localForage.\nvar DefinedDrivers = {};\n\nvar DriverSupport = {};\n\nvar DefaultDrivers = {\n INDEXEDDB: asyncStorage,\n WEBSQL: webSQLStorage,\n LOCALSTORAGE: localStorageWrapper\n};\n\nvar DefaultDriverOrder = [DefaultDrivers.INDEXEDDB._driver, DefaultDrivers.WEBSQL._driver, DefaultDrivers.LOCALSTORAGE._driver];\n\nvar OptionalDriverMethods = ['dropInstance'];\n\nvar LibraryMethods = ['clear', 'getItem', 'iterate', 'key', 'keys', 'length', 'removeItem', 'setItem'].concat(OptionalDriverMethods);\n\nvar DefaultConfig = {\n description: '',\n driver: DefaultDriverOrder.slice(),\n name: 'localforage',\n // Default DB size is _JUST UNDER_ 5MB, as it's the highest size\n // we can use without a prompt.\n size: 4980736,\n storeName: 'keyvaluepairs',\n version: 1.0\n};\n\nfunction callWhenReady(localForageInstance, libraryMethod) {\n localForageInstance[libraryMethod] = function () {\n var _args = arguments;\n return localForageInstance.ready().then(function () {\n return localForageInstance[libraryMethod].apply(localForageInstance, _args);\n });\n };\n}\n\nfunction extend() {\n for (var i = 1; i < arguments.length; i++) {\n var arg = arguments[i];\n\n if (arg) {\n for (var _key in arg) {\n if (arg.hasOwnProperty(_key)) {\n if (isArray(arg[_key])) {\n arguments[0][_key] = arg[_key].slice();\n } else {\n arguments[0][_key] = arg[_key];\n }\n }\n }\n }\n }\n\n return arguments[0];\n}\n\nvar LocalForage = function () {\n function LocalForage(options) {\n _classCallCheck(this, LocalForage);\n\n for (var driverTypeKey in DefaultDrivers) {\n if (DefaultDrivers.hasOwnProperty(driverTypeKey)) {\n var driver = DefaultDrivers[driverTypeKey];\n var driverName = driver._driver;\n this[driverTypeKey] = driverName;\n\n if (!DefinedDrivers[driverName]) {\n // we don't need to wait for the promise,\n // since the default drivers can be defined\n // in a blocking manner\n this.defineDriver(driver);\n }\n }\n }\n\n this._defaultConfig = extend({}, DefaultConfig);\n this._config = extend({}, this._defaultConfig, options);\n this._driverSet = null;\n this._initDriver = null;\n this._ready = false;\n this._dbInfo = null;\n\n this._wrapLibraryMethodsWithReady();\n this.setDriver(this._config.driver)[\"catch\"](function () {});\n }\n\n // Set any config values for localForage; can be called anytime before\n // the first API call (e.g. `getItem`, `setItem`).\n // We loop through options so we don't overwrite existing config\n // values.\n\n\n LocalForage.prototype.config = function config(options) {\n // If the options argument is an object, we use it to set values.\n // Otherwise, we return either a specified config value or all\n // config values.\n if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object') {\n // If localforage is ready and fully initialized, we can't set\n // any new configuration values. Instead, we return an error.\n if (this._ready) {\n return new Error(\"Can't call config() after localforage \" + 'has been used.');\n }\n\n for (var i in options) {\n if (i === 'storeName') {\n options[i] = options[i].replace(/\\W/g, '_');\n }\n\n if (i === 'version' && typeof options[i] !== 'number') {\n return new Error('Database version must be a number.');\n }\n\n this._config[i] = options[i];\n }\n\n // after all config options are set and\n // the driver option is used, try setting it\n if ('driver' in options && options.driver) {\n return this.setDriver(this._config.driver);\n }\n\n return true;\n } else if (typeof options === 'string') {\n return this._config[options];\n } else {\n return this._config;\n }\n };\n\n // Used to define a custom driver, shared across all instances of\n // localForage.\n\n\n LocalForage.prototype.defineDriver = function defineDriver(driverObject, callback, errorCallback) {\n var promise = new Promise$1(function (resolve, reject) {\n try {\n var driverName = driverObject._driver;\n var complianceError = new Error('Custom driver not compliant; see ' + 'https://mozilla.github.io/localForage/#definedriver');\n\n // A driver name should be defined and not overlap with the\n // library-defined, default drivers.\n if (!driverObject._driver) {\n reject(complianceError);\n return;\n }\n\n var driverMethods = LibraryMethods.concat('_initStorage');\n for (var i = 0, len = driverMethods.length; i < len; i++) {\n var driverMethodName = driverMethods[i];\n\n // when the property is there,\n // it should be a method even when optional\n var isRequired = !includes(OptionalDriverMethods, driverMethodName);\n if ((isRequired || driverObject[driverMethodName]) && typeof driverObject[driverMethodName] !== 'function') {\n reject(complianceError);\n return;\n }\n }\n\n var configureMissingMethods = function configureMissingMethods() {\n var methodNotImplementedFactory = function methodNotImplementedFactory(methodName) {\n return function () {\n var error = new Error('Method ' + methodName + ' is not implemented by the current driver');\n var promise = Promise$1.reject(error);\n executeCallback(promise, arguments[arguments.length - 1]);\n return promise;\n };\n };\n\n for (var _i = 0, _len = OptionalDriverMethods.length; _i < _len; _i++) {\n var optionalDriverMethod = OptionalDriverMethods[_i];\n if (!driverObject[optionalDriverMethod]) {\n driverObject[optionalDriverMethod] = methodNotImplementedFactory(optionalDriverMethod);\n }\n }\n };\n\n configureMissingMethods();\n\n var setDriverSupport = function setDriverSupport(support) {\n if (DefinedDrivers[driverName]) {\n console.info('Redefining LocalForage driver: ' + driverName);\n }\n DefinedDrivers[driverName] = driverObject;\n DriverSupport[driverName] = support;\n // don't use a then, so that we can define\n // drivers that have simple _support methods\n // in a blocking manner\n resolve();\n };\n\n if ('_support' in driverObject) {\n if (driverObject._support && typeof driverObject._support === 'function') {\n driverObject._support().then(setDriverSupport, reject);\n } else {\n setDriverSupport(!!driverObject._support);\n }\n } else {\n setDriverSupport(true);\n }\n } catch (e) {\n reject(e);\n }\n });\n\n executeTwoCallbacks(promise, callback, errorCallback);\n return promise;\n };\n\n LocalForage.prototype.driver = function driver() {\n return this._driver || null;\n };\n\n LocalForage.prototype.getDriver = function getDriver(driverName, callback, errorCallback) {\n var getDriverPromise = DefinedDrivers[driverName] ? Promise$1.resolve(DefinedDrivers[driverName]) : Promise$1.reject(new Error('Driver not found.'));\n\n executeTwoCallbacks(getDriverPromise, callback, errorCallback);\n return getDriverPromise;\n };\n\n LocalForage.prototype.getSerializer = function getSerializer(callback) {\n var serializerPromise = Promise$1.resolve(localforageSerializer);\n executeTwoCallbacks(serializerPromise, callback);\n return serializerPromise;\n };\n\n LocalForage.prototype.ready = function ready(callback) {\n var self = this;\n\n var promise = self._driverSet.then(function () {\n if (self._ready === null) {\n self._ready = self._initDriver();\n }\n\n return self._ready;\n });\n\n executeTwoCallbacks(promise, callback, callback);\n return promise;\n };\n\n LocalForage.prototype.setDriver = function setDriver(drivers, callback, errorCallback) {\n var self = this;\n\n if (!isArray(drivers)) {\n drivers = [drivers];\n }\n\n var supportedDrivers = this._getSupportedDrivers(drivers);\n\n function setDriverToConfig() {\n self._config.driver = self.driver();\n }\n\n function extendSelfWithDriver(driver) {\n self._extend(driver);\n setDriverToConfig();\n\n self._ready = self._initStorage(self._config);\n return self._ready;\n }\n\n function initDriver(supportedDrivers) {\n return function () {\n var currentDriverIndex = 0;\n\n function driverPromiseLoop() {\n while (currentDriverIndex < supportedDrivers.length) {\n var driverName = supportedDrivers[currentDriverIndex];\n currentDriverIndex++;\n\n self._dbInfo = null;\n self._ready = null;\n\n return self.getDriver(driverName).then(extendSelfWithDriver)[\"catch\"](driverPromiseLoop);\n }\n\n setDriverToConfig();\n var error = new Error('No available storage method found.');\n self._driverSet = Promise$1.reject(error);\n return self._driverSet;\n }\n\n return driverPromiseLoop();\n };\n }\n\n // There might be a driver initialization in progress\n // so wait for it to finish in order to avoid a possible\n // race condition to set _dbInfo\n var oldDriverSetDone = this._driverSet !== null ? this._driverSet[\"catch\"](function () {\n return Promise$1.resolve();\n }) : Promise$1.resolve();\n\n this._driverSet = oldDriverSetDone.then(function () {\n var driverName = supportedDrivers[0];\n self._dbInfo = null;\n self._ready = null;\n\n return self.getDriver(driverName).then(function (driver) {\n self._driver = driver._driver;\n setDriverToConfig();\n self._wrapLibraryMethodsWithReady();\n self._initDriver = initDriver(supportedDrivers);\n });\n })[\"catch\"](function () {\n setDriverToConfig();\n var error = new Error('No available storage method found.');\n self._driverSet = Promise$1.reject(error);\n return self._driverSet;\n });\n\n executeTwoCallbacks(this._driverSet, callback, errorCallback);\n return this._driverSet;\n };\n\n LocalForage.prototype.supports = function supports(driverName) {\n return !!DriverSupport[driverName];\n };\n\n LocalForage.prototype._extend = function _extend(libraryMethodsAndProperties) {\n extend(this, libraryMethodsAndProperties);\n };\n\n LocalForage.prototype._getSupportedDrivers = function _getSupportedDrivers(drivers) {\n var supportedDrivers = [];\n for (var i = 0, len = drivers.length; i < len; i++) {\n var driverName = drivers[i];\n if (this.supports(driverName)) {\n supportedDrivers.push(driverName);\n }\n }\n return supportedDrivers;\n };\n\n LocalForage.prototype._wrapLibraryMethodsWithReady = function _wrapLibraryMethodsWithReady() {\n // Add a stub for each driver API method that delays the call to the\n // corresponding driver method until localForage is ready. These stubs\n // will be replaced by the driver methods as soon as the driver is\n // loaded, so there is no performance impact.\n for (var i = 0, len = LibraryMethods.length; i < len; i++) {\n callWhenReady(this, LibraryMethods[i]);\n }\n };\n\n LocalForage.prototype.createInstance = function createInstance(options) {\n return new LocalForage(options);\n };\n\n return LocalForage;\n}();\n\n// The actual localForage object that we expose as a module or via a\n// global. It's extended by pulling in one of our other libraries.\n\n\nvar localforage_js = new LocalForage();\n\nmodule.exports = localforage_js;\n\n},{\"3\":3}]},{},[4])(4)\n});\n","/**\n * @license\n * Lodash \n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

' + func(text) + '

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

fred, barney, & pebbles

'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '\n \nFor more info see: https://ag-grid.com/javascript-data-grid/getting-started/#getting-started-with-ag-grid-enterprise`;\n }\n }\n else if (ModuleRegistry.moduleBased || ModuleRegistry.moduleBased === undefined) {\n let modName = (_a = Object.entries(ModuleNames).find(([k, v]) => v === moduleName)) === null || _a === void 0 ? void 0 : _a[0];\n warningMessage =\n `AG Grid: unable to use ${reason} as the ${modName} is not registered${ModuleRegistry.areGridScopedModules ? ` for gridId: ${gridId}` : ''}. Check if you have registered the module:\n \n import { ModuleRegistry } from '@ag-grid-community/core';\n import { ${modName} } from '${moduleName}';\n \n ModuleRegistry.registerModules([ ${modName} ]);\n\nFor more info see: https://www.ag-grid.com/javascript-grid/modules/`;\n }\n else {\n warningMessage =\n `AG Grid: unable to use ${reason} as package 'ag-grid-enterprise' has not been imported. Check that you have imported the package:\n \n import 'ag-grid-enterprise';\n \nFor more info see: https://www.ag-grid.com/javascript-grid/packages/`;\n }\n doOnce(() => {\n console.warn(warningMessage);\n }, warningKey);\n return false;\n }\n /** AG GRID INTERNAL - Is the given module registered, globally or individually with this grid. */\n static __isRegistered(moduleName, gridId) {\n var _a;\n return !!ModuleRegistry.globalModulesMap[moduleName] || !!((_a = ModuleRegistry.gridModulesMap[gridId]) === null || _a === void 0 ? void 0 : _a[moduleName]);\n }\n /** AG GRID INTERNAL - Get all registered modules globally / individually for this grid. */\n static __getRegisteredModules(gridId) {\n return [...values(ModuleRegistry.globalModulesMap), ...values(ModuleRegistry.gridModulesMap[gridId] || {})];\n }\n /** AG GRID INTERNAL - Get the list of modules registered individually for this grid. */\n static __getGridRegisteredModules(gridId) {\n var _a;\n return values((_a = ModuleRegistry.gridModulesMap[gridId]) !== null && _a !== void 0 ? _a : {}) || [];\n }\n /** INTERNAL */\n static __isPackageBased() {\n return !ModuleRegistry.moduleBased;\n }\n}\n// having in a map a) removes duplicates and b) allows fast lookup\nModuleRegistry.globalModulesMap = {};\nModuleRegistry.gridModulesMap = {};\nModuleRegistry.areGridScopedModules = false;\n\nclass Context {\n constructor(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 const beanInstances = this.getBeanInstances();\n this.wireBeans(beanInstances);\n this.logger.log(\">> ag-Application Context ready - component is alive\");\n }\n getBeanInstances() {\n return values(this.beanWrappers).map(beanEntry => beanEntry.beanInstance);\n }\n createBean(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 wireBeans(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 createBeans() {\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, (key, beanEntry) => {\n let constructorParamsMeta;\n if (beanEntry.bean.__agBeanMetaData && beanEntry.bean.__agBeanMetaData.autowireMethods && beanEntry.bean.__agBeanMetaData.autowireMethods.agConstructor) {\n constructorParamsMeta = beanEntry.bean.__agBeanMetaData.autowireMethods.agConstructor;\n }\n const constructorParams = this.getBeansForParameters(constructorParamsMeta, beanEntry.bean.name);\n const newInstance = new (beanEntry.bean.bind.apply(beanEntry.bean, [null, ...constructorParams]));\n beanEntry.beanInstance = newInstance;\n });\n const createdBeanNames = Object.keys(this.beanWrappers).join(', ');\n this.logger.log(`created beans: ${createdBeanNames}`);\n }\n // tslint:disable-next-line\n createBeanWrapper(BeanClass) {\n const metaData = BeanClass.__agBeanMetaData;\n if (!metaData) {\n let beanName;\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 const beanEntry = {\n bean: BeanClass,\n beanInstance: null,\n beanName: metaData.beanName\n };\n this.beanWrappers[metaData.beanName] = beanEntry;\n }\n autoWireBeans(beanInstances) {\n beanInstances.forEach(beanInstance => {\n this.forEachMetaDataInHierarchy(beanInstance, (metaData, beanName) => {\n const attributes = metaData.agClassAttributes;\n if (!attributes) {\n return;\n }\n attributes.forEach((attribute) => {\n const otherBean = this.lookupBeanInstance(beanName, attribute.beanName, attribute.optional);\n beanInstance[attribute.attributeName] = otherBean;\n });\n });\n });\n }\n methodWireBeans(beanInstances) {\n beanInstances.forEach(beanInstance => {\n this.forEachMetaDataInHierarchy(beanInstance, (metaData, beanName) => {\n iterateObject(metaData.autowireMethods, (methodName, wireParams) => {\n // skip constructor, as this is dealt with elsewhere\n if (methodName === \"agConstructor\") {\n return;\n }\n const initParams = this.getBeansForParameters(wireParams, beanName);\n beanInstance[methodName].apply(beanInstance, initParams);\n });\n });\n });\n }\n forEachMetaDataInHierarchy(beanInstance, callback) {\n let prototype = Object.getPrototypeOf(beanInstance);\n while (prototype != null) {\n const constructor = prototype.constructor;\n if (constructor.hasOwnProperty('__agBeanMetaData')) {\n const metaData = constructor.__agBeanMetaData;\n const beanName = this.getBeanName(constructor);\n callback(metaData, beanName);\n }\n prototype = Object.getPrototypeOf(prototype);\n }\n }\n getBeanName(constructor) {\n if (constructor.__agBeanMetaData && constructor.__agBeanMetaData.beanName) {\n return constructor.__agBeanMetaData.beanName;\n }\n const constructorString = constructor.toString();\n const beanName = constructorString.substring(9, constructorString.indexOf(\"(\"));\n return beanName;\n }\n getBeansForParameters(parameters, beanName) {\n const beansList = [];\n if (parameters) {\n iterateObject(parameters, (paramIndex, otherBeanName) => {\n const otherBean = this.lookupBeanInstance(beanName, otherBeanName);\n beansList[Number(paramIndex)] = otherBean;\n });\n }\n return beansList;\n }\n lookupBeanInstance(wiringBean, beanName, optional = false) {\n if (this.destroyed) {\n this.logger.log(`AG Grid: bean reference ${beanName} is used after the grid is destroyed!`);\n return null;\n }\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 const 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 callLifeCycleMethods(beanInstances, lifeCycleMethod) {\n beanInstances.forEach(beanInstance => this.callLifeCycleMethodsOnBean(beanInstance, lifeCycleMethod));\n }\n callLifeCycleMethodsOnBean(beanInstance, lifeCycleMethod, methodToIgnore) {\n // putting all methods into a map removes duplicates\n const allMethods = {};\n // dump methods from each level of the metadata hierarchy\n this.forEachMetaDataInHierarchy(beanInstance, (metaData) => {\n const methods = metaData[lifeCycleMethod];\n if (methods) {\n methods.forEach(methodName => {\n if (methodName != methodToIgnore) {\n allMethods[methodName] = true;\n }\n });\n }\n });\n const allMethodsList = Object.keys(allMethods);\n allMethodsList.forEach(methodName => beanInstance[methodName]());\n }\n getBean(name) {\n return this.lookupBeanInstance(\"getBean\", name, true);\n }\n destroy() {\n if (this.destroyed) {\n return;\n }\n this.logger.log(\">> Shutting down ag-Application Context\");\n const beanInstances = this.getBeanInstances();\n this.destroyBeans(beanInstances);\n this.contextParams.providedBeanInstances = null;\n ModuleRegistry.__unRegisterGridModules(this.contextParams.gridId);\n this.destroyed = true;\n this.logger.log(\">> ag-Application Context shut down - component is dead\");\n }\n destroyBean(bean) {\n if (!bean) {\n return;\n }\n this.destroyBeans([bean]);\n }\n destroyBeans(beans) {\n if (!beans) {\n return [];\n }\n beans.forEach(bean => {\n this.callLifeCycleMethodsOnBean(bean, 'preDestroyMethods', 'destroy');\n // call destroy() explicitly if it exists\n const beanAny = bean;\n if (typeof beanAny.destroy === 'function') {\n beanAny.destroy();\n }\n });\n return [];\n }\n isDestroyed() {\n return this.destroyed;\n }\n getGridId() {\n return this.contextParams.gridId;\n }\n}\nfunction PreConstruct(target, methodName, descriptor) {\n const props = getOrCreateProps$1(target.constructor);\n if (!props.preConstructMethods) {\n props.preConstructMethods = [];\n }\n props.preConstructMethods.push(methodName);\n}\nfunction PostConstruct(target, methodName, descriptor) {\n const props = getOrCreateProps$1(target.constructor);\n if (!props.postConstructMethods) {\n props.postConstructMethods = [];\n }\n props.postConstructMethods.push(methodName);\n}\nfunction PreDestroy(target, methodName, descriptor) {\n const props = getOrCreateProps$1(target.constructor);\n if (!props.preDestroyMethods) {\n props.preDestroyMethods = [];\n }\n props.preDestroyMethods.push(methodName);\n}\nfunction Bean(beanName) {\n return (classConstructor) => {\n const props = getOrCreateProps$1(classConstructor);\n props.beanName = beanName;\n };\n}\nfunction Autowired(name) {\n return (target, propertyKey, descriptor) => {\n autowiredFunc(target, name, false, target, propertyKey, null);\n };\n}\nfunction Optional(name) {\n return (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 const props = getOrCreateProps$1(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}\nfunction Qualifier(name) {\n return (classPrototype, methodOrAttributeName, index) => {\n const constructor = typeof classPrototype == \"function\" ? classPrototype : classPrototype.constructor;\n let props;\n if (typeof index === \"number\") {\n // it's a parameter on a method\n let methodName;\n if (methodOrAttributeName) {\n props = getOrCreateProps$1(constructor);\n methodName = methodOrAttributeName;\n }\n else {\n props = getOrCreateProps$1(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$1(target) {\n if (!target.hasOwnProperty(\"__agBeanMetaData\")) {\n target.__agBeanMetaData = {};\n }\n return target.__agBeanMetaData;\n}\n\nvar __decorate$2E = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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$a = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nlet EventService = class EventService {\n constructor() {\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 setBeans(loggerFactory, gridOptionsService, frameworkOverrides, globalEventListener = null) {\n this.frameworkOverrides = frameworkOverrides;\n this.gridOptionsService = gridOptionsService;\n if (globalEventListener) {\n const async = gridOptionsService.useAsyncEvents();\n this.addGlobalListener(globalEventListener, async);\n }\n }\n getListeners(eventType, async, autoCreateListenerCollection) {\n const listenerMap = async ? this.allAsyncListeners : this.allSyncListeners;\n let 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 noRegisteredListenersExist() {\n return this.allSyncListeners.size === 0 && this.allAsyncListeners.size === 0 &&\n this.globalSyncListeners.size === 0 && this.globalAsyncListeners.size === 0;\n }\n addEventListener(eventType, listener, async = false) {\n this.getListeners(eventType, async, true).add(listener);\n }\n removeEventListener(eventType, listener, async = false) {\n const listeners = this.getListeners(eventType, async, false);\n if (!listeners) {\n return;\n }\n listeners.delete(listener);\n if (listeners.size === 0) {\n const listenerMap = async ? this.allAsyncListeners : this.allSyncListeners;\n listenerMap.delete(eventType);\n }\n }\n addGlobalListener(listener, async = false) {\n (async ? this.globalAsyncListeners : this.globalSyncListeners).add(listener);\n }\n removeGlobalListener(listener, async = false) {\n (async ? this.globalAsyncListeners : this.globalSyncListeners).delete(listener);\n }\n dispatchEvent(event) {\n let agEvent = event;\n if (this.gridOptionsService) {\n // Apply common properties to all dispatched events if this event service has had its beans set with gridOptionsService.\n // Note there are multiple instances of EventService that are used local to components which do not set gridOptionsService.\n const { api, columnApi, context } = this.gridOptionsService;\n agEvent.api = api;\n agEvent.columnApi = columnApi;\n agEvent.context = context;\n }\n this.dispatchToListeners(agEvent, true);\n this.dispatchToListeners(agEvent, false);\n this.firedEvents[agEvent.type] = true;\n }\n dispatchEventOnce(event) {\n if (!this.firedEvents[event.type]) {\n this.dispatchEvent(event);\n }\n }\n dispatchToListeners(event, async) {\n const eventType = event.type;\n if (async && 'event' in event) {\n const browserEvent = event.event;\n if (browserEvent instanceof Event) {\n // AG-7893 - Persist composedPath() so that its result can still be accessed by the user asynchronously.\n // Within an async event handler if they call composedPath() on the event it will always return an empty [].\n event.eventPath = browserEvent.composedPath();\n }\n }\n const processEventListeners = (listeners) => listeners.forEach(listener => {\n if (async) {\n this.dispatchAsync(() => listener(event));\n }\n else {\n listener(event);\n }\n });\n // create a shallow copy to prevent listeners cyclically adding more listeners to capture this event\n const listeners = new Set(this.getListeners(eventType, async, false));\n if (listeners) {\n processEventListeners(listeners);\n }\n const globalListeners = new Set(async ? this.globalAsyncListeners : this.globalSyncListeners);\n globalListeners.forEach(listener => {\n if (async) {\n this.dispatchAsync(() => this.frameworkOverrides.dispatchEvent(eventType, () => listener(eventType, event), true));\n }\n else {\n this.frameworkOverrides.dispatchEvent(eventType, () => 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 dispatchAsync(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 flushAsyncQueue() {\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 const queueCopy = this.asyncFunctionsQueue.slice();\n this.asyncFunctionsQueue = [];\n // execute the queue\n queueCopy.forEach(func => func());\n }\n};\n__decorate$2E([\n __param$a(0, Qualifier('loggerFactory')),\n __param$a(1, Qualifier('gridOptionsService')),\n __param$a(2, Qualifier('frameworkOverrides')),\n __param$a(3, Qualifier('globalEventListener'))\n], EventService.prototype, \"setBeans\", null);\nEventService = __decorate$2E([\n Bean('eventService')\n], EventService);\n\nvar __decorate$2D = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet instanceIdSequence$4 = 0;\nfunction getNextColInstanceId() {\n return instanceIdSequence$4++;\n}\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).\nclass Column {\n constructor(colDef, userProvidedColDef, colId, primary) {\n // used by React (and possibly other frameworks) as key for rendering. also used to\n // identify old vs new columns for destroying cols when no longer used.\n this.instanceId = getNextColInstanceId();\n // The measured height of this column's header when autoHeaderHeight is enabled\n this.autoHeaderHeight = null;\n this.moving = false;\n this.menuVisible = false;\n this.filterActive = false;\n this.eventService = new EventService();\n this.tooltipEnabled = false;\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 getInstanceId() {\n return this.instanceId;\n }\n setState(colDef) {\n // sort\n if (colDef.sort !== undefined) {\n if (colDef.sort === 'asc' || colDef.sort === 'desc') {\n this.sort = colDef.sort;\n }\n }\n else {\n if (colDef.initialSort === 'asc' || colDef.initialSort === 'desc') {\n this.sort = colDef.initialSort;\n }\n }\n // sortIndex\n const sortIndex = attrToNumber(colDef.sortIndex);\n const 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 const hide = attrToBoolean(colDef.hide);\n const 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 const flex = attrToNumber(colDef.flex);\n const 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 setColDef(colDef, userProvidedColDef) {\n this.colDef = colDef;\n this.userProvidedColDef = userProvidedColDef;\n this.initMinAndMaxWidths();\n this.initDotNotation();\n this.eventService.dispatchEvent(this.createColumnEvent('colDefChanged', \"api\"));\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 getUserProvidedColDef() {\n return this.userProvidedColDef;\n }\n setParent(parent) {\n this.parent = parent;\n }\n /** Returns the parent column group, if column grouping is active. */\n getParent() {\n return this.parent;\n }\n setOriginalParent(originalParent) {\n this.originalParent = originalParent;\n }\n getOriginalParent() {\n return this.originalParent;\n }\n // this is done after constructor as it uses gridOptionsService\n initialise() {\n this.initMinAndMaxWidths();\n this.resetActualWidth('gridInitializing');\n this.initDotNotation();\n this.initTooltip();\n this.validate();\n }\n initDotNotation() {\n const suppressDotNotation = this.gridOptionsService.is('suppressFieldDotNotation');\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 initMinAndMaxWidths() {\n const colDef = this.colDef;\n this.minWidth = this.columnUtils.calculateColMinWidth(colDef);\n this.maxWidth = this.columnUtils.calculateColMaxWidth(colDef);\n }\n initTooltip() {\n this.tooltipEnabled = exists(this.colDef.tooltipField) ||\n exists(this.colDef.tooltipValueGetter) ||\n exists(this.colDef.tooltipComponent);\n }\n resetActualWidth(source = 'api') {\n const initialWidth = this.columnUtils.calculateColInitialWidth(this.colDef);\n this.setActualWidth(initialWidth, source, true);\n }\n isEmptyGroup() {\n return false;\n }\n isRowGroupDisplayed(colId) {\n if (missing(this.colDef) || missing(this.colDef.showRowGroup)) {\n return false;\n }\n const showingAllGroups = this.colDef.showRowGroup === true;\n const 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 isPrimary() {\n return this.primary;\n }\n /** Returns `true` if column filtering is allowed. */\n isFilterAllowed() {\n // filter defined means it's a string, class or true.\n // if its false, null or undefined then it's false.\n const filterDefined = !!this.colDef.filter;\n return filterDefined;\n }\n isFieldContainsDots() {\n return this.fieldContainsDots;\n }\n isTooltipEnabled() {\n return this.tooltipEnabled;\n }\n isTooltipFieldContainsDots() {\n return this.tooltipFieldContainsDots;\n }\n validate() {\n const colDefAny = this.colDef;\n function warnOnce(msg, key, obj) {\n doOnce(() => {\n if (obj) {\n console.warn(msg, obj);\n }\n else {\n doOnce(() => console.warn(msg), key);\n }\n }, key);\n }\n const usingCSRM = this.gridOptionsService.isRowModelType('clientSide');\n if (usingCSRM && !ModuleRegistry.__isRegistered(ModuleNames.RowGroupingModule, this.gridOptionsService.getGridId())) {\n const rowGroupingItems = ['enableRowGroup', 'rowGroup', 'rowGroupIndex', 'enablePivot', 'enableValue', 'pivot', 'pivotIndex', 'aggFunc'];\n const itemsUsed = rowGroupingItems.filter(x => exists(colDefAny[x]));\n if (itemsUsed.length > 0) {\n ModuleRegistry.__assertRegistered(ModuleNames.RowGroupingModule, itemsUsed.map(i => 'colDef.' + i).join(', '), this.gridOptionsService.getGridId());\n }\n }\n if (this.colDef.cellEditor === 'agRichSelect' || this.colDef.cellEditor === 'agRichSelectCellEditor') {\n ModuleRegistry.__assertRegistered(ModuleNames.RichSelectModule, this.colDef.cellEditor, this.gridOptionsService.getGridId());\n }\n if (this.gridOptionsService.isTreeData()) {\n const itemsNotAllowedWithTreeData = ['rowGroup', 'rowGroupIndex', 'pivot', 'pivotIndex'];\n const itemsUsed = itemsNotAllowedWithTreeData.filter(x => exists(colDefAny[x]));\n if (itemsUsed.length > 0) {\n warnOnce(`AG Grid: ${itemsUsed.join()} is not possible when doing tree data, your column definition should not have ${itemsUsed.join()}`, 'TreeDataCannotRowGroup');\n }\n }\n if (exists(colDefAny.menuTabs)) {\n if (Array.isArray(colDefAny.menuTabs)) {\n const communityMenuTabs = ['filterMenuTab'];\n const enterpriseMenuTabs = ['columnsMenuTab', 'generalMenuTab'];\n const itemsUsed = enterpriseMenuTabs.filter(x => colDefAny.menuTabs.includes(x));\n if (itemsUsed.length > 0) {\n ModuleRegistry.__assertRegistered(ModuleNames.MenuModule, `menuTab(s): ${itemsUsed.map(t => `'${t}'`).join()}`, this.gridOptionsService.getGridId());\n }\n colDefAny.menuTabs.forEach((tab) => {\n if (!enterpriseMenuTabs.includes(tab) && !communityMenuTabs.includes(tab)) {\n warnOnce(`AG Grid: '${tab}' is not valid for 'colDef.menuTabs'. Valid values are: ${[...communityMenuTabs, ...enterpriseMenuTabs].map(t => `'${t}'`).join()}.`, 'wrongValue_menuTabs_' + tab);\n }\n });\n }\n else {\n warnOnce(`AG Grid: The typeof 'colDef.menuTabs' should be an array not:` + typeof colDefAny.menuTabs, 'wrongType_menuTabs');\n }\n }\n if (exists(colDefAny.columnsMenuParams)) {\n ModuleRegistry.__assertRegistered(ModuleNames.MenuModule, 'columnsMenuParams', this.gridOptionsService.getGridId());\n }\n if (exists(colDefAny.columnsMenuParams)) {\n ModuleRegistry.__assertRegistered(ModuleNames.ColumnsToolPanelModule, 'columnsMenuParams', this.gridOptionsService.getGridId());\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');\n }\n if (exists(colDefAny.columnGroupShow) && colDefAny.columnGroupShow !== 'closed' && colDefAny.columnGroupShow !== 'open') {\n warnOnce(`AG Grid: '${colDefAny.columnGroupShow}' is not valid for columnGroupShow. Valid values are 'open', 'closed', undefined, null`, 'columnGroupShow_invalid');\n }\n }\n /** Add an event listener to the column. */\n addEventListener(eventType, listener) {\n this.eventService.addEventListener(eventType, listener);\n }\n /** Remove event listener from the column. */\n removeEventListener(eventType, listener) {\n this.eventService.removeEventListener(eventType, listener);\n }\n createColumnFunctionCallbackParams(rowNode) {\n return {\n node: rowNode,\n data: rowNode.data,\n column: this,\n colDef: this.colDef,\n context: this.gridOptionsService.context,\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi\n };\n }\n isSuppressNavigable(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 const params = this.createColumnFunctionCallbackParams(rowNode);\n const userFunc = this.colDef.suppressNavigable;\n return userFunc(params);\n }\n return false;\n }\n /**\n * Returns `true` if the cell for this column is editable for the given `rowNode`, otherwise `false`.\n */\n isCellEditable(rowNode) {\n // only allow editing of groups if the user has this option enabled\n if (rowNode.group && !this.gridOptionsService.is('enableGroupEdit')) {\n return false;\n }\n return this.isColumnFunc(rowNode, this.colDef.editable);\n }\n isSuppressFillHandle() {\n return !!attrToBoolean(this.colDef.suppressFillHandle);\n }\n isAutoHeight() {\n return !!attrToBoolean(this.colDef.autoHeight);\n }\n isAutoHeaderHeight() {\n return !!attrToBoolean(this.colDef.autoHeaderHeight);\n }\n isRowDrag(rowNode) {\n return this.isColumnFunc(rowNode, this.colDef.rowDrag);\n }\n isDndSource(rowNode) {\n return this.isColumnFunc(rowNode, this.colDef.dndSource);\n }\n isCellCheckboxSelection(rowNode) {\n return this.isColumnFunc(rowNode, this.colDef.checkboxSelection);\n }\n isSuppressPaste(rowNode) {\n return this.isColumnFunc(rowNode, this.colDef ? this.colDef.suppressPaste : null);\n }\n isResizable() {\n return !!attrToBoolean(this.colDef.resizable);\n }\n isColumnFunc(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 const params = this.createColumnFunctionCallbackParams(rowNode);\n const editableFunc = value;\n return editableFunc(params);\n }\n return false;\n }\n setMoving(moving, source = \"api\") {\n this.moving = moving;\n this.eventService.dispatchEvent(this.createColumnEvent('movingChanged', source));\n }\n createColumnEvent(type, source) {\n return {\n type: type,\n column: this,\n columns: [this],\n source: source,\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context\n };\n }\n isMoving() {\n return this.moving;\n }\n /** If sorting is active, returns the sort direction e.g. `'asc'` or `'desc'`. */\n getSort() {\n return this.sort;\n }\n setSort(sort, source = \"api\") {\n if (this.sort !== sort) {\n this.sort = sort;\n this.eventService.dispatchEvent(this.createColumnEvent('sortChanged', source));\n }\n this.dispatchStateUpdatedEvent('sort');\n }\n setMenuVisible(visible, source = \"api\") {\n if (this.menuVisible !== visible) {\n this.menuVisible = visible;\n this.eventService.dispatchEvent(this.createColumnEvent('menuVisibleChanged', source));\n }\n }\n isMenuVisible() {\n return this.menuVisible;\n }\n isSortAscending() {\n return this.sort === 'asc';\n }\n isSortDescending() {\n return this.sort === 'desc';\n }\n isSortNone() {\n return missing(this.sort);\n }\n isSorting() {\n return exists(this.sort);\n }\n getSortIndex() {\n return this.sortIndex;\n }\n setSortIndex(sortOrder) {\n this.sortIndex = sortOrder;\n this.dispatchStateUpdatedEvent('sortIndex');\n }\n setAggFunc(aggFunc) {\n this.aggFunc = aggFunc;\n this.dispatchStateUpdatedEvent('aggFunc');\n }\n /** If aggregation is set for the column, returns the aggregation function. */\n getAggFunc() {\n return this.aggFunc;\n }\n getLeft() {\n return this.left;\n }\n getOldLeft() {\n return this.oldLeft;\n }\n getRight() {\n return this.left + this.actualWidth;\n }\n setLeft(left, source = \"api\") {\n this.oldLeft = this.left;\n if (this.left !== left) {\n this.left = left;\n this.eventService.dispatchEvent(this.createColumnEvent('leftChanged', source));\n }\n }\n /** Returns `true` if filter is active on the column. */\n isFilterActive() {\n return this.filterActive;\n }\n // additionalEventAttributes is used by provided simple floating filter, so it can add 'floatingFilter=true' to the event\n setFilterActive(active, source = \"api\", additionalEventAttributes) {\n if (this.filterActive !== active) {\n this.filterActive = active;\n this.eventService.dispatchEvent(this.createColumnEvent('filterActiveChanged', source));\n }\n const filterChangedEvent = this.createColumnEvent('filterChanged', source);\n if (additionalEventAttributes) {\n mergeDeep(filterChangedEvent, additionalEventAttributes);\n }\n this.eventService.dispatchEvent(filterChangedEvent);\n }\n /** Returns `true` when this `Column` is hovered, otherwise `false` */\n isHovered() {\n return this.columnHoverService.isHovered(this);\n }\n setPinned(pinned) {\n if (pinned === true || pinned === 'left') {\n this.pinned = 'left';\n }\n else if (pinned === 'right') {\n this.pinned = 'right';\n }\n else {\n this.pinned = null;\n }\n this.dispatchStateUpdatedEvent('pinned');\n }\n setFirstRightPinned(firstRightPinned, source = \"api\") {\n if (this.firstRightPinned !== firstRightPinned) {\n this.firstRightPinned = firstRightPinned;\n this.eventService.dispatchEvent(this.createColumnEvent('firstRightPinnedChanged', source));\n }\n }\n setLastLeftPinned(lastLeftPinned, source = \"api\") {\n if (this.lastLeftPinned !== lastLeftPinned) {\n this.lastLeftPinned = lastLeftPinned;\n this.eventService.dispatchEvent(this.createColumnEvent('lastLeftPinnedChanged', source));\n }\n }\n isFirstRightPinned() {\n return this.firstRightPinned;\n }\n isLastLeftPinned() {\n return this.lastLeftPinned;\n }\n isPinned() {\n return this.pinned === 'left' || this.pinned === 'right';\n }\n isPinnedLeft() {\n return this.pinned === 'left';\n }\n isPinnedRight() {\n return this.pinned === 'right';\n }\n getPinned() {\n return this.pinned;\n }\n setVisible(visible, source = \"api\") {\n const newValue = visible === true;\n if (this.visible !== newValue) {\n this.visible = newValue;\n this.eventService.dispatchEvent(this.createColumnEvent('visibleChanged', source));\n }\n this.dispatchStateUpdatedEvent('hide');\n }\n isVisible() {\n return this.visible;\n }\n isSpanHeaderHeight() {\n const colDef = this.getColDef();\n return !colDef.suppressSpanHeaderHeight && !colDef.autoHeaderHeight;\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 getColDef() {\n return this.colDef;\n }\n getColumnGroupShow() {\n return this.colDef.columnGroupShow;\n }\n /**\n * Returns the unique ID for the column.\n *\n * Equivalent: `getId`, `getUniqueId` */\n getColId() {\n return this.colId;\n }\n /**\n * Returns the unique ID for the column.\n *\n * Equivalent: `getColId`, `getUniqueId` */\n getId() {\n return this.colId;\n }\n /**\n * Returns the unique ID for the column.\n *\n * Equivalent: `getColId`, `getId` */\n getUniqueId() {\n return this.colId;\n }\n getDefinition() {\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 getActualWidth() {\n return this.actualWidth;\n }\n getAutoHeaderHeight() {\n return this.autoHeaderHeight;\n }\n /** Returns true if the header height has changed */\n setAutoHeaderHeight(height) {\n const changed = height !== this.autoHeaderHeight;\n this.autoHeaderHeight = height;\n return changed;\n }\n createBaseColDefParams(rowNode) {\n const params = {\n node: rowNode,\n data: rowNode.data,\n colDef: this.colDef,\n column: this,\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context\n };\n return params;\n }\n getColSpan(rowNode) {\n if (missing(this.colDef.colSpan)) {\n return 1;\n }\n const params = this.createBaseColDefParams(rowNode);\n const colSpan = this.colDef.colSpan(params);\n // colSpan must be number equal to or greater than 1\n return Math.max(colSpan, 1);\n }\n getRowSpan(rowNode) {\n if (missing(this.colDef.rowSpan)) {\n return 1;\n }\n const params = this.createBaseColDefParams(rowNode);\n const rowSpan = this.colDef.rowSpan(params);\n // rowSpan must be number equal to or greater than 1\n return Math.max(rowSpan, 1);\n }\n setActualWidth(actualWidth, source = \"api\", 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 this.dispatchStateUpdatedEvent('width');\n }\n fireColumnWidthChangedEvent(source) {\n this.eventService.dispatchEvent(this.createColumnEvent('widthChanged', source));\n }\n isGreaterThanMax(width) {\n if (this.maxWidth != null) {\n return width > this.maxWidth;\n }\n return false;\n }\n getMinWidth() {\n return this.minWidth;\n }\n getMaxWidth() {\n return this.maxWidth;\n }\n getFlex() {\n return this.flex || 0;\n }\n // this method should only be used by the columnModel to\n // change flex when required by the applyColumnState method.\n setFlex(flex) {\n if (this.flex !== flex) {\n this.flex = flex;\n }\n this.dispatchStateUpdatedEvent('flex');\n }\n setMinimum(source = \"api\") {\n if (exists(this.minWidth)) {\n this.setActualWidth(this.minWidth, source);\n }\n }\n setRowGroupActive(rowGroup, source = \"api\") {\n if (this.rowGroupActive !== rowGroup) {\n this.rowGroupActive = rowGroup;\n this.eventService.dispatchEvent(this.createColumnEvent('columnRowGroupChanged', source));\n }\n this.dispatchStateUpdatedEvent('rowGroup');\n }\n /** Returns `true` if row group is currently active for this column. */\n isRowGroupActive() {\n return this.rowGroupActive;\n }\n setPivotActive(pivot, source = \"api\") {\n if (this.pivotActive !== pivot) {\n this.pivotActive = pivot;\n this.eventService.dispatchEvent(this.createColumnEvent('columnPivotChanged', source));\n }\n this.dispatchStateUpdatedEvent('pivot');\n }\n /** Returns `true` if pivot is currently active for this column. */\n isPivotActive() {\n return this.pivotActive;\n }\n isAnyFunctionActive() {\n return this.isPivotActive() || this.isRowGroupActive() || this.isValueActive();\n }\n isAnyFunctionAllowed() {\n return this.isAllowPivot() || this.isAllowRowGroup() || this.isAllowValue();\n }\n setValueActive(value, source = \"api\") {\n if (this.aggregationActive !== value) {\n this.aggregationActive = value;\n this.eventService.dispatchEvent(this.createColumnEvent('columnValueChanged', source));\n }\n }\n /** Returns `true` if value (aggregation) is currently active for this column. */\n isValueActive() {\n return this.aggregationActive;\n }\n isAllowPivot() {\n return this.colDef.enablePivot === true;\n }\n isAllowValue() {\n return this.colDef.enableValue === true;\n }\n isAllowRowGroup() {\n return this.colDef.enableRowGroup === true;\n }\n getMenuTabs(defaultValues) {\n let menuTabs = this.getColDef().menuTabs;\n if (menuTabs == null) {\n menuTabs = defaultValues;\n }\n return menuTabs;\n }\n dispatchStateUpdatedEvent(key) {\n this.eventService.dispatchEvent({\n type: Column.EVENT_STATE_UPDATED,\n key\n });\n }\n}\n// + renderedHeaderCell - for making header cell transparent when moving\nColumn.EVENT_MOVING_CHANGED = 'movingChanged';\n// + renderedCell - changing left position\nColumn.EVENT_LEFT_CHANGED = 'leftChanged';\n// + renderedCell - changing width\nColumn.EVENT_WIDTH_CHANGED = 'widthChanged';\n// + renderedCell - for changing pinned classes\nColumn.EVENT_LAST_LEFT_PINNED_CHANGED = 'lastLeftPinnedChanged';\nColumn.EVENT_FIRST_RIGHT_PINNED_CHANGED = 'firstRightPinnedChanged';\n// + renderedColumn - for changing visibility icon\nColumn.EVENT_VISIBLE_CHANGED = 'visibleChanged';\n// + every time the filter changes, used in the floating filters\nColumn.EVENT_FILTER_CHANGED = 'filterChanged';\n// + renderedHeaderCell - marks the header with filter icon\nColumn.EVENT_FILTER_ACTIVE_CHANGED = 'filterActiveChanged';\n// + renderedHeaderCell - marks the header with sort icon\nColumn.EVENT_SORT_CHANGED = 'sortChanged';\n// + renderedHeaderCell - marks the header with sort icon\nColumn.EVENT_COL_DEF_CHANGED = 'colDefChanged';\nColumn.EVENT_MENU_VISIBLE_CHANGED = 'menuVisibleChanged';\n// + toolpanel, for gui updates\nColumn.EVENT_ROW_GROUP_CHANGED = 'columnRowGroupChanged';\n// + toolpanel, for gui updates\nColumn.EVENT_PIVOT_CHANGED = 'columnPivotChanged';\n// + toolpanel, for gui updates\nColumn.EVENT_VALUE_CHANGED = 'columnValueChanged';\n// + dataTypeService - when waiting to infer cell data types\nColumn.EVENT_STATE_UPDATED = 'columnStateUpdated';\n__decorate$2D([\n Autowired('gridOptionsService')\n], Column.prototype, \"gridOptionsService\", void 0);\n__decorate$2D([\n Autowired('columnUtils')\n], Column.prototype, \"columnUtils\", void 0);\n__decorate$2D([\n Autowired('columnHoverService')\n], Column.prototype, \"columnHoverService\", void 0);\n__decorate$2D([\n PostConstruct\n], Column.prototype, \"initialise\", null);\n\nvar __decorate$2C = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass ProvidedColumnGroup {\n constructor(colGroupDef, groupId, padding, level) {\n this.localEventService = new EventService();\n this.expandable = false;\n // used by React (and possibly other frameworks) as key for rendering. also used to\n // identify old vs new columns for destroying cols when no longer used.\n this.instanceId = getNextColInstanceId();\n this.expandableListenerRemoveCallback = null;\n this.colGroupDef = colGroupDef;\n this.groupId = groupId;\n this.expanded = !!colGroupDef && !!colGroupDef.openByDefault;\n this.padding = padding;\n this.level = level;\n }\n destroy() {\n if (this.expandableListenerRemoveCallback) {\n this.reset(null, undefined);\n }\n }\n reset(colGroupDef, level) {\n this.colGroupDef = colGroupDef;\n this.level = level;\n this.originalParent = null;\n if (this.expandableListenerRemoveCallback) {\n this.expandableListenerRemoveCallback();\n }\n // we use ! below, as we want to set the object back to the\n // way it was when it was first created\n this.children = undefined;\n this.expandable = undefined;\n }\n getInstanceId() {\n return this.instanceId;\n }\n setOriginalParent(originalParent) {\n this.originalParent = originalParent;\n }\n getOriginalParent() {\n return this.originalParent;\n }\n getLevel() {\n return this.level;\n }\n isVisible() {\n // return true if at least one child is visible\n if (this.children) {\n return this.children.some(child => child.isVisible());\n }\n return false;\n }\n isPadding() {\n return this.padding;\n }\n setExpanded(expanded) {\n this.expanded = expanded === undefined ? false : expanded;\n const event = {\n type: ProvidedColumnGroup.EVENT_EXPANDED_CHANGED\n };\n this.localEventService.dispatchEvent(event);\n }\n isExpandable() {\n return this.expandable;\n }\n isExpanded() {\n return this.expanded;\n }\n getGroupId() {\n return this.groupId;\n }\n getId() {\n return this.getGroupId();\n }\n setChildren(children) {\n this.children = children;\n }\n getChildren() {\n return this.children;\n }\n getColGroupDef() {\n return this.colGroupDef;\n }\n getLeafColumns() {\n const result = [];\n this.addLeafColumns(result);\n return result;\n }\n addLeafColumns(leafColumns) {\n if (!this.children) {\n return;\n }\n this.children.forEach((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 getColumnGroupShow() {\n const 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 setupExpandable() {\n this.setExpandable();\n if (this.expandableListenerRemoveCallback) {\n this.expandableListenerRemoveCallback();\n }\n const listener = this.onColumnVisibilityChanged.bind(this);\n this.getLeafColumns().forEach(col => col.addEventListener('visibleChanged', listener));\n this.expandableListenerRemoveCallback = () => {\n this.getLeafColumns().forEach(col => col.removeEventListener('visibleChanged', listener));\n this.expandableListenerRemoveCallback = null;\n };\n }\n setExpandable() {\n if (this.isPadding()) {\n return;\n }\n // want to make sure the group doesn't disappear when it's open\n let atLeastOneShowingWhenOpen = false;\n // want to make sure the group doesn't disappear when it's closed\n let atLeastOneShowingWhenClosed = false;\n // want to make sure the group has something to show / hide\n let atLeastOneChangeable = false;\n const children = this.findChildrenRemovingPadding();\n for (let i = 0, j = children.length; i < j; i++) {\n const 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 const headerGroupShow = abstractColumn.getColumnGroupShow();\n if (headerGroupShow === 'open') {\n atLeastOneShowingWhenOpen = true;\n atLeastOneChangeable = true;\n }\n else if (headerGroupShow === 'closed') {\n atLeastOneShowingWhenClosed = true;\n atLeastOneChangeable = true;\n }\n else {\n atLeastOneShowingWhenOpen = true;\n atLeastOneShowingWhenClosed = true;\n }\n }\n const expandable = atLeastOneShowingWhenOpen && atLeastOneShowingWhenClosed && atLeastOneChangeable;\n if (this.expandable !== expandable) {\n this.expandable = expandable;\n const event = {\n type: ProvidedColumnGroup.EVENT_EXPANDABLE_CHANGED\n };\n this.localEventService.dispatchEvent(event);\n }\n }\n findChildrenRemovingPadding() {\n const res = [];\n const process = (items) => {\n items.forEach(item => {\n // if padding, we add this children instead of the padding\n const 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 onColumnVisibilityChanged() {\n this.setExpandable();\n }\n addEventListener(eventType, listener) {\n this.localEventService.addEventListener(eventType, listener);\n }\n removeEventListener(eventType, listener) {\n this.localEventService.removeEventListener(eventType, listener);\n }\n}\nProvidedColumnGroup.EVENT_EXPANDED_CHANGED = 'expandedChanged';\nProvidedColumnGroup.EVENT_EXPANDABLE_CHANGED = 'expandableChanged';\n__decorate$2C([\n PreDestroy\n], ProvidedColumnGroup.prototype, \"destroy\", null);\n\nconst 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\nfunction firstExistingValue(...values) {\n for (let i = 0; i < values.length; i++) {\n const value = values[i];\n if (exists(value)) {\n return value;\n }\n }\n return null;\n}\nfunction existsAndNotEmpty(value) {\n return value != null && value.length > 0;\n}\nfunction last(arr) {\n if (!arr || !arr.length) {\n return;\n }\n return arr[arr.length - 1];\n}\nfunction 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((value, index) => comparator ? comparator(value, b[index]) : b[index] === value);\n}\n/** @deprecated */\nfunction shallowCompare(arr1, arr2) {\n return areEqual(arr1, arr2);\n}\nfunction sortNumerically(array) {\n return array.sort((a, b) => a - b);\n}\nfunction removeRepeatsFromArray(array, object) {\n if (!array) {\n return;\n }\n for (let index = array.length - 2; index >= 0; index--) {\n const thisOneMatches = array[index] === object;\n const nextOneMatches = array[index + 1] === object;\n if (thisOneMatches && nextOneMatches) {\n array.splice(index + 1, 1);\n }\n }\n}\nfunction removeFromArray(array, object) {\n const index = array.indexOf(object);\n if (index >= 0) {\n array.splice(index, 1);\n }\n}\nfunction removeAllFromArray(array, toRemove) {\n toRemove.forEach(item => removeFromArray(array, item));\n}\nfunction insertIntoArray(array, object, toIndex) {\n array.splice(toIndex, 0, object);\n}\nfunction 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 (let i = src.length - 1; i >= 0; i--) {\n const item = src[i];\n insertIntoArray(dest, item, toIndex);\n }\n}\nfunction 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(obj => insertIntoArray(array, obj, toIndex));\n}\nfunction includes(array, value) {\n return array.indexOf(value) > -1;\n}\nfunction flatten(arrayOfArrays) {\n return [].concat.apply([], arrayOfArrays);\n}\nfunction pushAll(target, source) {\n if (source == null || target == null) {\n return;\n }\n source.forEach(value => target.push(value));\n}\nfunction toStrings(array) {\n return array.map(toStringOrNull);\n}\nfunction forEachReverse(list, action) {\n if (list == null) {\n return;\n }\n for (let i = list.length - 1; i >= 0; i--) {\n action(list[i], i);\n }\n}\n\nvar ArrayUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n firstExistingValue: firstExistingValue,\n existsAndNotEmpty: existsAndNotEmpty,\n last: last,\n areEqual: areEqual,\n shallowCompare: shallowCompare,\n sortNumerically: sortNumerically,\n removeRepeatsFromArray: removeRepeatsFromArray,\n removeFromArray: removeFromArray,\n removeAllFromArray: removeAllFromArray,\n insertIntoArray: insertIntoArray,\n insertArrayIntoArray: insertArrayIntoArray,\n moveInArray: moveInArray,\n includes: includes,\n flatten: flatten,\n pushAll: pushAll,\n toStrings: toStrings,\n forEachReverse: forEachReverse\n});\n\nconst AG_GRID_STOP_PROPAGATION = '__ag_Grid_Stop_Propagation';\nconst PASSIVE_EVENTS$1 = ['touchstart', 'touchend', 'touchmove', 'touchcancel', 'scroll'];\nconst 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 */\nfunction stopPropagationForAgGrid(event) {\n event[AG_GRID_STOP_PROPAGATION] = true;\n}\nfunction isStopPropagationForAgGrid(event) {\n return event[AG_GRID_STOP_PROPAGATION] === true;\n}\nconst isEventSupported = (() => {\n const tags = {\n select: 'input',\n change: 'input',\n submit: 'form',\n reset: 'form',\n error: 'img',\n load: 'img',\n abort: 'img'\n };\n const eventChecker = (eventName) => {\n if (typeof supports[eventName] === 'boolean') {\n return supports[eventName];\n }\n const el = document.createElement(tags[eventName] || 'div');\n eventName = 'on' + eventName;\n return supports[eventName] = (eventName in el);\n };\n return eventChecker;\n})();\nfunction getCtrlForEventTarget(gridOptionsService, eventTarget, type) {\n let sourceElement = eventTarget;\n while (sourceElement) {\n const renderedComp = gridOptionsService.getDomData(sourceElement, type);\n if (renderedComp) {\n return renderedComp;\n }\n sourceElement = sourceElement.parentElement;\n }\n return null;\n}\nfunction isElementInEventPath(element, event) {\n if (!event || !element) {\n return false;\n }\n return getEventPath(event).indexOf(element) >= 0;\n}\nfunction createEventPath(event) {\n const res = [];\n let pointer = event.target;\n while (pointer) {\n res.push(pointer);\n pointer = pointer.parentElement;\n }\n return res;\n}\n/**\n * Gets the path for a browser Event or from the target on an AG Grid Event\n * https://developer.mozilla.org/en-US/docs/Web/API/Event\n * @param {Event| { target: EventTarget }} event\n * @returns {EventTarget[]}\n */\nfunction getEventPath(event) {\n // This can be called with either a browser event or an AG Grid Event that has a target property.\n const eventNoType = event;\n if (eventNoType.path) {\n return eventNoType.path;\n }\n if (eventNoType.composedPath) {\n return eventNoType.composedPath();\n }\n // If this is an AG Grid event build the path ourselves\n return createEventPath(eventNoType);\n}\nfunction addSafePassiveEventListener(frameworkOverrides, eElement, event, listener) {\n const isPassive = includes(PASSIVE_EVENTS$1, event);\n const 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\nvar EventUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n stopPropagationForAgGrid: stopPropagationForAgGrid,\n isStopPropagationForAgGrid: isStopPropagationForAgGrid,\n isEventSupported: isEventSupported,\n getCtrlForEventTarget: getCtrlForEventTarget,\n isElementInEventPath: isElementInEventPath,\n createEventPath: createEventPath,\n getEventPath: getEventPath,\n addSafePassiveEventListener: addSafePassiveEventListener\n});\n\nvar __decorate$2B = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass BeanStub {\n constructor() {\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 = () => !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 getFrameworkOverrides() {\n return this.frameworkOverrides;\n }\n getContext() {\n return this.context;\n }\n destroy() {\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(func => func());\n this.destroyFunctions.length = 0;\n this.destroyed = true;\n this.dispatchEvent({ type: BeanStub.EVENT_DESTROYED });\n }\n addEventListener(eventType, listener) {\n if (!this.localEventService) {\n this.localEventService = new EventService();\n }\n this.localEventService.addEventListener(eventType, listener);\n }\n removeEventListener(eventType, listener) {\n if (this.localEventService) {\n this.localEventService.removeEventListener(eventType, listener);\n }\n }\n dispatchEventAsync(event) {\n window.setTimeout(() => this.dispatchEvent(event), 0);\n }\n dispatchEvent(event) {\n if (this.localEventService) {\n this.localEventService.dispatchEvent(event);\n }\n }\n addManagedListener(object, event, listener) {\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 const destroyFunc = () => {\n object.removeEventListener(event, listener);\n this.destroyFunctions = this.destroyFunctions.filter(fn => fn !== destroyFunc);\n return null;\n };\n this.destroyFunctions.push(destroyFunc);\n return destroyFunc;\n }\n addManagedPropertyListener(event, listener) {\n if (this.destroyed) {\n return;\n }\n this.gridOptionsService.addEventListener(event, listener);\n const destroyFunc = () => {\n this.gridOptionsService.removeEventListener(event, listener);\n this.destroyFunctions = this.destroyFunctions.filter(fn => fn !== destroyFunc);\n return null;\n };\n this.destroyFunctions.push(destroyFunc);\n return destroyFunc;\n }\n addDestroyFunc(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 createManagedBean(bean, context) {\n const res = this.createBean(bean, context);\n this.addDestroyFunc(this.destroyBean.bind(this, bean, context));\n return res;\n }\n createBean(bean, context, afterPreCreateCallback) {\n return (context || this.getContext()).createBean(bean, afterPreCreateCallback);\n }\n destroyBean(bean, context) {\n return (context || this.getContext()).destroyBean(bean);\n }\n destroyBeans(beans, context) {\n if (beans) {\n beans.forEach(bean => this.destroyBean(bean, context));\n }\n return [];\n }\n}\nBeanStub.EVENT_DESTROYED = 'destroyed';\n__decorate$2B([\n Autowired('frameworkOverrides')\n], BeanStub.prototype, \"frameworkOverrides\", void 0);\n__decorate$2B([\n Autowired('context')\n], BeanStub.prototype, \"context\", void 0);\n__decorate$2B([\n Autowired('eventService')\n], BeanStub.prototype, \"eventService\", void 0);\n__decorate$2B([\n Autowired('gridOptionsService')\n], BeanStub.prototype, \"gridOptionsService\", void 0);\n__decorate$2B([\n Autowired('localeService')\n], BeanStub.prototype, \"localeService\", void 0);\n__decorate$2B([\n Autowired('environment')\n], BeanStub.prototype, \"environment\", void 0);\n__decorate$2B([\n PreDestroy\n], BeanStub.prototype, \"destroy\", null);\n\nvar __decorate$2A = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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$9 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\n// takes ColDefs and ColGroupDefs and turns them into Columns and OriginalGroups\nlet ColumnFactory = class ColumnFactory extends BeanStub {\n setBeans(loggerFactory) {\n this.logger = loggerFactory.create('ColumnFactory');\n }\n createColumnTree(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 const columnKeyCreator = new ColumnKeyCreator();\n const { existingCols, existingGroups, existingColKeys } = this.extractExistingTreeData(existingTree);\n columnKeyCreator.addExistingKeys(existingColKeys);\n // create am unbalanced tree that maps the provided definitions\n const unbalancedTree = this.recursivelyCreateColumns(defs, 0, primaryColumns, existingCols, columnKeyCreator, existingGroups);\n const treeDept = this.findMaxDept(unbalancedTree, 0);\n this.logger.log('Number of levels for grouped columns is ' + treeDept);\n const columnTree = this.balanceColumnTree(unbalancedTree, 0, treeDept, columnKeyCreator);\n const deptFirstCallback = (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,\n treeDept\n };\n }\n extractExistingTreeData(existingTree) {\n const existingCols = [];\n const existingGroups = [];\n const existingColKeys = [];\n if (existingTree) {\n this.columnUtils.depthFirstOriginalTreeSearch(null, existingTree, (item) => {\n if (item instanceof ProvidedColumnGroup) {\n const group = item;\n existingGroups.push(group);\n }\n else {\n const col = item;\n existingColKeys.push(col.getId());\n existingCols.push(col);\n }\n });\n }\n return { existingCols, existingGroups, existingColKeys };\n }\n createForAutoGroups(autoGroupCols, gridBalancedTree) {\n return autoGroupCols.map((col) => this.createAutoGroupTreeItem(gridBalancedTree, col));\n }\n createAutoGroupTreeItem(balancedColumnTree, column) {\n const dept = this.findDepth(balancedColumnTree);\n // at the end, this will be the top of the tree item.\n let nextChild = column;\n for (let i = dept - 1; i >= 0; i--) {\n const autoGroup = new ProvidedColumnGroup(null, `FAKE_PATH_${column.getId()}}_${i}`, true, i);\n this.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 findDepth(balancedColumnTree) {\n let dept = 0;\n let pointer = balancedColumnTree;\n while (pointer && pointer[0] && pointer[0] instanceof ProvidedColumnGroup) {\n dept++;\n pointer = pointer[0].getChildren();\n }\n return dept;\n }\n balanceColumnTree(unbalancedTree, currentDept, columnDept, columnKeyCreator) {\n const result = [];\n // go through each child, for groups, recurse a level deeper,\n // for columns we need to pad\n for (let i = 0; i < unbalancedTree.length; i++) {\n const 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 const originalGroup = child;\n const 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 let firstPaddedGroup;\n let currentPaddedGroup;\n // this for loop will NOT run any loops if no padded column groups are needed\n for (let j = columnDept - 1; j >= currentDept; j--) {\n const newColId = columnKeyCreator.getUniqueKey(null, null);\n const colGroupDefMerged = this.createMergedColGroupDef(null);\n const paddedGroup = new ProvidedColumnGroup(colGroupDefMerged, newColId, true, currentDept);\n this.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 const hasGroups = unbalancedTree.some(leaf => 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 findMaxDept(treeChildren, dept) {\n let maxDeptThisLevel = dept;\n for (let i = 0; i < treeChildren.length; i++) {\n const abstractColumn = treeChildren[i];\n if (abstractColumn instanceof ProvidedColumnGroup) {\n const originalGroup = abstractColumn;\n const newDept = this.findMaxDept(originalGroup.getChildren(), dept + 1);\n if (maxDeptThisLevel < newDept) {\n maxDeptThisLevel = newDept;\n }\n }\n }\n return maxDeptThisLevel;\n }\n recursivelyCreateColumns(defs, level, primaryColumns, existingColsCopy, columnKeyCreator, existingGroups) {\n return (defs || []).map((def) => {\n if (this.isColumnGroup(def)) {\n return this.createColumnGroup(primaryColumns, def, level, existingColsCopy, columnKeyCreator, existingGroups);\n }\n else {\n return this.createColumn(primaryColumns, def, existingColsCopy, columnKeyCreator);\n }\n });\n }\n createColumnGroup(primaryColumns, colGroupDef, level, existingColumns, columnKeyCreator, existingGroups) {\n const colGroupDefMerged = this.createMergedColGroupDef(colGroupDef);\n const groupId = columnKeyCreator.getUniqueKey(colGroupDefMerged.groupId || null, null);\n const providedGroup = new ProvidedColumnGroup(colGroupDefMerged, groupId, false, level);\n this.createBean(providedGroup);\n const existingGroup = this.findExistingGroup(colGroupDef, existingGroups);\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 (existingGroup) {\n removeFromArray(existingGroups, existingGroup);\n }\n if (existingGroup && existingGroup.isExpanded()) {\n providedGroup.setExpanded(true);\n }\n const children = this.recursivelyCreateColumns(colGroupDefMerged.children, level + 1, primaryColumns, existingColumns, columnKeyCreator, existingGroups);\n providedGroup.setChildren(children);\n return providedGroup;\n }\n createMergedColGroupDef(colGroupDef) {\n const colGroupDefMerged = {};\n Object.assign(colGroupDefMerged, this.gridOptionsService.get('defaultColGroupDef'));\n Object.assign(colGroupDefMerged, colGroupDef);\n return colGroupDefMerged;\n }\n createColumn(primaryColumns, colDef, existingColsCopy, columnKeyCreator) {\n // see if column already exists\n let column = this.findExistingColumn(colDef, existingColsCopy);\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 && column) {\n removeFromArray(existingColsCopy, column);\n }\n if (!column) {\n // no existing column, need to create one\n const colId = columnKeyCreator.getUniqueKey(colDef.colId, colDef.field);\n const colDefMerged = this.mergeColDefs(colDef, colId);\n column = new Column(colDefMerged, colDef, colId, primaryColumns);\n this.context.createBean(column);\n }\n else {\n const colDefMerged = this.mergeColDefs(colDef, column.getColId());\n column.setColDef(colDefMerged, colDef);\n this.applyColumnState(column, colDefMerged);\n }\n this.dataTypeService.addColumnListeners(column);\n return column;\n }\n applyColumnState(column, colDef) {\n // flex\n const 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 const 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 const 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 const 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 == 'asc' || colDef.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 const 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 const 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 findExistingColumn(newColDef, existingColsCopy) {\n return (existingColsCopy || []).find(existingCol => {\n const existingColDef = existingCol.getUserProvidedColDef();\n if (!existingColDef) {\n return false;\n }\n const newHasId = newColDef.colId != null;\n const 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 }\n findExistingGroup(newGroupDef, existingGroups) {\n return existingGroups.find(existingGroup => {\n const existingDef = existingGroup.getColGroupDef();\n if (!existingDef) {\n return false;\n }\n const newHasId = newGroupDef.groupId != null;\n if (newHasId) {\n return existingGroup.getId() === newGroupDef.groupId;\n }\n return false;\n });\n }\n mergeColDefs(colDef, colId) {\n // start with empty merged definition\n const colDefMerged = {};\n // merge properties from default column definitions\n const defaultColDef = this.gridOptionsService.get('defaultColDef');\n mergeDeep(colDefMerged, defaultColDef, false, true);\n const columnType = this.dataTypeService.updateColDefAndGetColumnType(colDefMerged, colDef, colId);\n if (columnType) {\n this.assignColumnTypes(columnType, colDefMerged);\n }\n // merge properties from column definitions\n mergeDeep(colDefMerged, colDef, false, true);\n const autoGroupColDef = this.gridOptionsService.get('autoGroupColumnDef');\n const isSortingCoupled = this.gridOptionsService.isColumnsSortingCoupledToGroup();\n if (colDef.rowGroup && autoGroupColDef && isSortingCoupled) {\n // override the sort for row group columns where the autoGroupColDef defines these values.\n mergeDeep(colDefMerged, { sort: autoGroupColDef.sort, initialSort: autoGroupColDef.initialSort }, false, true);\n }\n this.dataTypeService.validateColDef(colDefMerged);\n return colDefMerged;\n }\n assignColumnTypes(typeKeys, colDefMerged) {\n if (!typeKeys.length) {\n return;\n }\n // merge user defined with default column types\n const allColumnTypes = Object.assign({}, DefaultColumnTypes);\n const userTypes = this.gridOptionsService.get('columnTypes') || {};\n iterateObject(userTypes, (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((t) => {\n const 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 // if object has children, we assume it's a group\n isColumnGroup(abstractColDef) {\n return abstractColDef.children !== undefined;\n }\n};\n__decorate$2A([\n Autowired('columnUtils')\n], ColumnFactory.prototype, \"columnUtils\", void 0);\n__decorate$2A([\n Autowired('dataTypeService')\n], ColumnFactory.prototype, \"dataTypeService\", void 0);\n__decorate$2A([\n __param$9(0, Qualifier('loggerFactory'))\n], ColumnFactory.prototype, \"setBeans\", null);\nColumnFactory = __decorate$2A([\n Bean('columnFactory')\n], ColumnFactory);\n\nvar __decorate$2z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass ColumnGroup {\n constructor(providedColumnGroup, groupId, partId, 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.partId = partId;\n this.providedColumnGroup = providedColumnGroup;\n this.pinned = pinned;\n }\n // this is static, a it is used outside of this class\n static createUniqueId(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 reset() {\n this.parent = null;\n this.children = null;\n this.displayedChildren = null;\n }\n getParent() {\n return this.parent;\n }\n setParent(parent) {\n this.parent = parent;\n }\n getUniqueId() {\n return ColumnGroup.createUniqueId(this.groupId, this.partId);\n }\n isEmptyGroup() {\n return this.displayedChildren.length === 0;\n }\n isMoving() {\n const allLeafColumns = this.getProvidedColumnGroup().getLeafColumns();\n if (!allLeafColumns || allLeafColumns.length === 0) {\n return false;\n }\n return allLeafColumns.every(col => col.isMoving());\n }\n checkLeft() {\n // first get all children to setLeft, as it impacts our decision below\n this.displayedChildren.forEach((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.gridOptionsService.is('enableRtl')) {\n const lastChild = last(this.displayedChildren);\n const lastChildLeft = lastChild.getLeft();\n this.setLeft(lastChildLeft);\n }\n else {\n const 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 getLeft() {\n return this.left;\n }\n getOldLeft() {\n return this.oldLeft;\n }\n setLeft(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 getPinned() {\n return this.pinned;\n }\n createAgEvent(type) {\n return { type };\n }\n addEventListener(eventType, listener) {\n this.localEventService.addEventListener(eventType, listener);\n }\n removeEventListener(eventType, listener) {\n this.localEventService.removeEventListener(eventType, listener);\n }\n getGroupId() {\n return this.groupId;\n }\n getPartId() {\n return this.partId;\n }\n isChildInThisGroupDeepSearch(wantedChild) {\n let result = false;\n this.children.forEach((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 getActualWidth() {\n let groupActualWidth = 0;\n if (this.displayedChildren) {\n this.displayedChildren.forEach((child) => {\n groupActualWidth += child.getActualWidth();\n });\n }\n return groupActualWidth;\n }\n isResizable() {\n if (!this.displayedChildren) {\n return false;\n }\n // if at least one child is resizable, then the group is resizable\n let result = false;\n this.displayedChildren.forEach((child) => {\n if (child.isResizable()) {\n result = true;\n }\n });\n return result;\n }\n getMinWidth() {\n let result = 0;\n this.displayedChildren.forEach((groupChild) => {\n result += groupChild.getMinWidth() || 0;\n });\n return result;\n }\n addChild(child) {\n if (!this.children) {\n this.children = [];\n }\n this.children.push(child);\n }\n getDisplayedChildren() {\n return this.displayedChildren;\n }\n getLeafColumns() {\n const result = [];\n this.addLeafColumns(result);\n return result;\n }\n getDisplayedLeafColumns() {\n const result = [];\n this.addDisplayedLeafColumns(result);\n return result;\n }\n getDefinition() {\n return this.providedColumnGroup.getColGroupDef();\n }\n getColGroupDef() {\n return this.providedColumnGroup.getColGroupDef();\n }\n isPadding() {\n return this.providedColumnGroup.isPadding();\n }\n isExpandable() {\n return this.providedColumnGroup.isExpandable();\n }\n isExpanded() {\n return this.providedColumnGroup.isExpanded();\n }\n setExpanded(expanded) {\n this.providedColumnGroup.setExpanded(expanded);\n }\n addDisplayedLeafColumns(leafColumns) {\n this.displayedChildren.forEach((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 addLeafColumns(leafColumns) {\n this.children.forEach((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 getChildren() {\n return this.children;\n }\n getColumnGroupShow() {\n return this.providedColumnGroup.getColumnGroupShow();\n }\n getProvidedColumnGroup() {\n return this.providedColumnGroup;\n }\n getPaddingLevel() {\n const parent = this.getParent();\n if (!this.isPadding() || !parent || !parent.isPadding()) {\n return 0;\n }\n return 1 + parent.getPaddingLevel();\n }\n calculateDisplayedColumns() {\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 let parentWithExpansion = this;\n while (parentWithExpansion != null && parentWithExpansion.isPadding()) {\n parentWithExpansion = parentWithExpansion.getParent();\n }\n const 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(child => {\n // never add empty groups\n const emptyGroup = child instanceof ColumnGroup && (!child.displayedChildren || !child.displayedChildren.length);\n if (emptyGroup) {\n return;\n }\n const headerGroupShow = child.getColumnGroupShow();\n switch (headerGroupShow) {\n case '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 '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}\nColumnGroup.EVENT_LEFT_CHANGED = 'leftChanged';\nColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED = 'displayedChildrenChanged';\n__decorate$2z([\n Autowired('gridOptionsService')\n], ColumnGroup.prototype, \"gridOptionsService\", void 0);\n\nclass Events {\n}\n/** Everything has changed with the columns. Either complete new set of columns set, or user called applyColumnState() */\n/** @deprecated - grid no longer uses this, and setSate() also fires individual events */\nEvents.EVENT_COLUMN_EVERYTHING_CHANGED = 'columnEverythingChanged';\n/** User has set in new columns. */\nEvents.EVENT_NEW_COLUMNS_LOADED = 'newColumnsLoaded';\n/** The pivot mode flag was changed */\nEvents.EVENT_COLUMN_PIVOT_MODE_CHANGED = 'columnPivotModeChanged';\n/** A row group column was added, removed or order changed. */\nEvents.EVENT_COLUMN_ROW_GROUP_CHANGED = 'columnRowGroupChanged';\n/** expandAll / collapseAll was called from the api. */\nEvents.EVENT_EXPAND_COLLAPSE_ALL = 'expandOrCollapseAll';\n/** A pivot column was added, removed or order changed. */\nEvents.EVENT_COLUMN_PIVOT_CHANGED = 'columnPivotChanged';\n/** The list of grid columns has changed. */\nEvents.EVENT_GRID_COLUMNS_CHANGED = 'gridColumnsChanged';\n/** A value column was added, removed or agg function was changed. */\nEvents.EVENT_COLUMN_VALUE_CHANGED = 'columnValueChanged';\n/** A column was moved */\nEvents.EVENT_COLUMN_MOVED = 'columnMoved';\n/** One or more columns was shown / hidden */\nEvents.EVENT_COLUMN_VISIBLE = 'columnVisible';\n/** One or more columns was pinned / unpinned*/\nEvents.EVENT_COLUMN_PINNED = 'columnPinned';\n/** A column group was opened / closed */\nEvents.EVENT_COLUMN_GROUP_OPENED = 'columnGroupOpened';\n/** One or more columns was resized. If just one, the column in the event is set. */\nEvents.EVENT_COLUMN_RESIZED = 'columnResized';\n/** The list of displayed columns has changed, can result from columns open / close, column move, pivot, group, etc */\nEvents.EVENT_DISPLAYED_COLUMNS_CHANGED = 'displayedColumnsChanged';\n/** The list of virtual columns has changed, results from viewport changing */\nEvents.EVENT_VIRTUAL_COLUMNS_CHANGED = 'virtualColumnsChanged';\n/** Async Transactions Executed */\nEvents.EVENT_ASYNC_TRANSACTIONS_FLUSHED = 'asyncTransactionsFlushed';\n/** A row group was opened / closed */\nEvents.EVENT_ROW_GROUP_OPENED = 'rowGroupOpened';\n/** @deprecated v28 use EVENT_ROW_DATA_UPDATED instead */\nEvents.EVENT_ROW_DATA_CHANGED = 'rowDataChanged';\n/** The client has updated data for the grid */\nEvents.EVENT_ROW_DATA_UPDATED = 'rowDataUpdated';\n/** The client has set new floating data into the grid */\nEvents.EVENT_PINNED_ROW_DATA_CHANGED = 'pinnedRowDataChanged';\n/** Range selection has changed */\nEvents.EVENT_RANGE_SELECTION_CHANGED = 'rangeSelectionChanged';\n/** Chart was created */\nEvents.EVENT_CHART_CREATED = 'chartCreated';\n/** Chart Range selection has changed */\nEvents.EVENT_CHART_RANGE_SELECTION_CHANGED = 'chartRangeSelectionChanged';\n/** Chart Options have changed */\nEvents.EVENT_CHART_OPTIONS_CHANGED = 'chartOptionsChanged';\n/** Chart was destroyed */\nEvents.EVENT_CHART_DESTROYED = 'chartDestroyed';\n/** For when the tool panel is shown / hidden */\nEvents.EVENT_TOOL_PANEL_VISIBLE_CHANGED = 'toolPanelVisibleChanged';\nEvents.EVENT_TOOL_PANEL_SIZE_CHANGED = 'toolPanelSizeChanged';\nEvents.EVENT_COLUMN_PANEL_ITEM_DRAG_START = 'columnPanelItemDragStart';\nEvents.EVENT_COLUMN_PANEL_ITEM_DRAG_END = 'columnPanelItemDragEnd';\n/** Model was updated - grid updates the drawn rows when this happens */\nEvents.EVENT_MODEL_UPDATED = 'modelUpdated';\nEvents.EVENT_CUT_START = 'cutStart';\nEvents.EVENT_CUT_END = 'cutEnd';\nEvents.EVENT_PASTE_START = 'pasteStart';\nEvents.EVENT_PASTE_END = 'pasteEnd';\nEvents.EVENT_FILL_START = 'fillStart';\nEvents.EVENT_FILL_END = 'fillEnd';\nEvents.EVENT_RANGE_DELETE_START = 'rangeDeleteStart';\nEvents.EVENT_RANGE_DELETE_END = 'rangeDeleteEnd';\n/** Undo operation has started. */\nEvents.EVENT_UNDO_STARTED = 'undoStarted';\n/** Undo operation has ended. */\nEvents.EVENT_UNDO_ENDED = 'undoEnded';\n/** Redo operation has started. */\nEvents.EVENT_REDO_STARTED = 'redoStarted';\n/** Redo operation has ended. */\nEvents.EVENT_REDO_ENDED = 'redoEnded';\nEvents.EVENT_KEY_SHORTCUT_CHANGED_CELL_START = 'keyShortcutChangedCellStart';\nEvents.EVENT_KEY_SHORTCUT_CHANGED_CELL_END = 'keyShortcutChangedCellEnd';\nEvents.EVENT_CELL_CLICKED = 'cellClicked';\nEvents.EVENT_CELL_DOUBLE_CLICKED = 'cellDoubleClicked';\nEvents.EVENT_CELL_MOUSE_DOWN = 'cellMouseDown';\nEvents.EVENT_CELL_CONTEXT_MENU = 'cellContextMenu';\nEvents.EVENT_CELL_VALUE_CHANGED = 'cellValueChanged';\nEvents.EVENT_CELL_EDIT_REQUEST = 'cellEditRequest';\nEvents.EVENT_ROW_VALUE_CHANGED = 'rowValueChanged';\nEvents.EVENT_CELL_FOCUSED = 'cellFocused';\nEvents.EVENT_CELL_FOCUS_CLEARED = 'cellFocusCleared';\nEvents.EVENT_FULL_WIDTH_ROW_FOCUSED = 'fullWidthRowFocused';\nEvents.EVENT_ROW_SELECTED = 'rowSelected';\nEvents.EVENT_SELECTION_CHANGED = 'selectionChanged';\nEvents.EVENT_CELL_KEY_DOWN = 'cellKeyDown';\nEvents.EVENT_CELL_MOUSE_OVER = 'cellMouseOver';\nEvents.EVENT_CELL_MOUSE_OUT = 'cellMouseOut';\n/** 2 events for filtering. The grid LISTENS for filterChanged and afterFilterChanged */\nEvents.EVENT_FILTER_CHANGED = 'filterChanged';\n/** Filter was change but not applied. Only useful if apply buttons are used in filters. */\nEvents.EVENT_FILTER_MODIFIED = 'filterModified';\nEvents.EVENT_FILTER_OPENED = 'filterOpened';\nEvents.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. */\nEvents.EVENT_VIRTUAL_ROW_REMOVED = 'virtualRowRemoved';\nEvents.EVENT_ROW_CLICKED = 'rowClicked';\nEvents.EVENT_ROW_DOUBLE_CLICKED = 'rowDoubleClicked';\n/** Gets called once after the grid has finished initialising. */\nEvents.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. */\nEvents.EVENT_GRID_SIZE_CHANGED = 'gridSizeChanged';\n/** The indexes of the rows rendered has changed, eg user has scrolled to a new vertical position. */\nEvents.EVENT_VIEWPORT_CHANGED = 'viewportChanged';\n/* The width of the scrollbar has been calculated */\nEvents.EVENT_SCROLLBAR_WIDTH_CHANGED = 'scrollbarWidthChanged';\n/** Rows were rendered for the first time (ie on async data load). */\nEvents.EVENT_FIRST_DATA_RENDERED = 'firstDataRendered';\n/** A column drag has started, either resizing a column or moving a column. */\nEvents.EVENT_DRAG_STARTED = 'dragStarted';\n/** A column drag has stopped */\nEvents.EVENT_DRAG_STOPPED = 'dragStopped';\nEvents.EVENT_CHECKBOX_CHANGED = 'checkboxChanged';\nEvents.EVENT_ROW_EDITING_STARTED = 'rowEditingStarted';\nEvents.EVENT_ROW_EDITING_STOPPED = 'rowEditingStopped';\nEvents.EVENT_CELL_EDITING_STARTED = 'cellEditingStarted';\nEvents.EVENT_CELL_EDITING_STOPPED = 'cellEditingStopped';\n/** Main body of grid has scrolled, either horizontally or vertically */\nEvents.EVENT_BODY_SCROLL = 'bodyScroll';\n/** Main body of the grid has stopped scrolling, either horizontally or vertically */\nEvents.EVENT_BODY_SCROLL_END = 'bodyScrollEnd';\nEvents.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. */\nEvents.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. */\nEvents.EVENT_COMPONENT_STATE_CHANGED = 'componentStateChanged';\n/** Only used by the SSRM, called when the grid has no more rows to refresh */\nEvents.EVENT_STORE_REFRESHED = 'storeRefreshed';\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\nEvents.EVENT_BODY_HEIGHT_CHANGED = 'bodyHeightChanged';\nEvents.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED = 'displayedColumnsWidthChanged';\nEvents.EVENT_SCROLL_VISIBILITY_CHANGED = 'scrollVisibilityChanged';\nEvents.EVENT_COLUMN_HOVER_CHANGED = 'columnHoverChanged';\nEvents.EVENT_FLASH_CELLS = 'flashCells';\nEvents.EVENT_PAGINATION_PIXEL_OFFSET_CHANGED = 'paginationPixelOffsetChanged';\nEvents.EVENT_DISPLAYED_ROWS_CHANGED = 'displayedRowsChanged';\nEvents.EVENT_LEFT_PINNED_WIDTH_CHANGED = 'leftPinnedWidthChanged';\nEvents.EVENT_RIGHT_PINNED_WIDTH_CHANGED = 'rightPinnedWidthChanged';\nEvents.EVENT_ROW_CONTAINER_HEIGHT_CHANGED = 'rowContainerHeightChanged';\nEvents.EVENT_HEADER_HEIGHT_CHANGED = 'headerHeightChanged';\nEvents.EVENT_COLUMN_HEADER_HEIGHT_CHANGED = 'columnHeaderHeightChanged';\nEvents.EVENT_ROW_DRAG_ENTER = 'rowDragEnter';\nEvents.EVENT_ROW_DRAG_MOVE = 'rowDragMove';\nEvents.EVENT_ROW_DRAG_LEAVE = 'rowDragLeave';\nEvents.EVENT_ROW_DRAG_END = 'rowDragEnd';\n// environment\nEvents.EVENT_GRID_STYLES_CHANGED = 'gridStylesChanged';\n// primarily for charts\nEvents.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.\nEvents.EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST = 'columnRowGroupChangeRequest';\nEvents.EVENT_COLUMN_PIVOT_CHANGE_REQUEST = 'columnPivotChangeRequest';\nEvents.EVENT_COLUMN_VALUE_CHANGE_REQUEST = 'columnValueChangeRequest';\nEvents.EVENT_COLUMN_AGG_FUNC_CHANGE_REQUEST = 'columnAggFuncChangeRequest';\nEvents.EVENT_KEYBOARD_FOCUS = 'keyboardFocus';\nEvents.EVENT_MOUSE_FOCUS = 'mouseFocus';\nEvents.EVENT_STORE_UPDATED = 'storeUpdated';\nEvents.EVENT_FILTER_DESTROYED = 'filterDestroyed';\nEvents.EVENT_ROW_DATA_UPDATE_STARTED = 'rowDataUpdateStarted';\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\nclass GroupInstanceIdCreator {\n constructor() {\n // this map contains keys to numbers, so we remember what the last call was\n this.existingIds = {};\n }\n getInstanceIdForKey(key) {\n const lastResult = this.existingIds[key];\n let 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}\n\nvar __decorate$2y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst GROUP_AUTO_COLUMN_ID = 'ag-Grid-AutoColumn';\nlet AutoGroupColService = class AutoGroupColService extends BeanStub {\n createAutoGroupColumns(existingCols, rowGroupColumns) {\n const groupAutoColumns = [];\n const doingTreeData = this.gridOptionsService.isTreeData();\n let doingMultiAutoColumn = this.gridOptionsService.isGroupMultiAutoColumn();\n if (doingTreeData && doingMultiAutoColumn) {\n console.warn('AG Grid: you cannot mix groupDisplayType = \"multipleColumns\" with treeData, only one column can be used to display groups when doing tree data');\n doingMultiAutoColumn = false;\n }\n // if doing groupDisplayType = \"multipleColumns\", then we call the method multiple times, once\n // for each column we are grouping by\n if (doingMultiAutoColumn) {\n rowGroupColumns.forEach((rowGroupCol, index) => {\n groupAutoColumns.push(this.createOneAutoGroupColumn(existingCols, rowGroupCol, index));\n });\n }\n else {\n groupAutoColumns.push(this.createOneAutoGroupColumn(existingCols));\n }\n return groupAutoColumns;\n }\n // rowGroupCol and index are missing if groupDisplayType != \"multipleColumns\"\n createOneAutoGroupColumn(existingCols, rowGroupCol, index) {\n // if one provided by user, use it, otherwise create one\n let defaultAutoColDef = this.generateDefaultColDef(rowGroupCol);\n // if doing multi, set the field\n let colId;\n if (rowGroupCol) {\n colId = `${GROUP_AUTO_COLUMN_ID}-${rowGroupCol.getId()}`;\n }\n else {\n colId = GROUP_AUTO_COLUMN_ID;\n }\n const userAutoColDef = this.gridOptionsService.get('autoGroupColumnDef');\n mergeDeep(defaultAutoColDef, userAutoColDef);\n defaultAutoColDef = this.columnFactory.mergeColDefs(defaultAutoColDef, colId);\n defaultAutoColDef.colId = colId;\n // For tree data the filter is always allowed\n if (!this.gridOptionsService.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 const noFieldOrValueGetter = missing(defaultAutoColDef.field) &&\n missing(defaultAutoColDef.valueGetter) &&\n missing(defaultAutoColDef.filterValueGetter) &&\n defaultAutoColDef.filter !== 'agGroupColumnFilter';\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 const existingCol = existingCols.find(col => col.getId() == colId);\n const isSortingCoupled = this.gridOptionsService.isColumnsSortingCoupledToGroup();\n if (existingCol) {\n if (isSortingCoupled) {\n // if col is coupled sorting, and has sort attribute, we want to ignore this\n // because we only accept the sort on creation of the col\n defaultAutoColDef.sort = undefined;\n defaultAutoColDef.sortIndex = undefined;\n }\n existingCol.setColDef(defaultAutoColDef, null);\n this.columnFactory.applyColumnState(existingCol, defaultAutoColDef);\n return existingCol;\n }\n if (isSortingCoupled && (defaultAutoColDef.sort || defaultAutoColDef.initialSort || 'sortIndex' in defaultAutoColDef) && !defaultAutoColDef.field) {\n // if no field, then this column cannot hold its own sort state\n defaultAutoColDef.sort = null;\n defaultAutoColDef.sortIndex = null;\n defaultAutoColDef.initialSort = null;\n }\n const newCol = new Column(defaultAutoColDef, null, colId, true);\n this.context.createBean(newCol);\n return newCol;\n }\n generateDefaultColDef(rowGroupCol) {\n const userDef = this.gridOptionsService.get('autoGroupColumnDef');\n const localeTextFunc = this.localeService.getLocaleTextFunc();\n const res = {\n headerName: localeTextFunc('group', 'Group')\n };\n const userHasProvidedGroupCellRenderer = userDef &&\n (userDef.cellRenderer || 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 const 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) {\n Object.assign(res, {\n cellRendererParams: {\n innerRenderer: colDef.cellRenderer,\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};\n__decorate$2y([\n Autowired('columnModel')\n], AutoGroupColService.prototype, \"columnModel\", void 0);\n__decorate$2y([\n Autowired('columnFactory')\n], AutoGroupColService.prototype, \"columnFactory\", void 0);\nAutoGroupColService = __decorate$2y([\n Bean('autoGroupColService')\n], AutoGroupColService);\n\nconst reUnescapedHtml = /[&<>\"']/g;\n/**\n * HTML Escapes.\n */\nconst 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 */\nfunction utf8_encode(s) {\n const stringFromCharCode = String.fromCharCode;\n function ucs2decode(string) {\n const output = [];\n if (!string) {\n return [];\n }\n const len = string.length;\n let counter = 0;\n let value;\n let 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 const convertedCode = point.toString(16).toUpperCase();\n const paddedCode = convertedCode.padStart(4, '0');\n return `_x${paddedCode}_`;\n }\n if ((point & 0xFFFFFF80) == 0) { // 1-byte sequence\n return stringFromCharCode(point);\n }\n let 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 const codePoints = ucs2decode(s);\n const length = codePoints.length;\n let index = -1;\n let codePoint;\n let byteString = '';\n while (++index < length) {\n codePoint = codePoints[index];\n byteString += encodeCodePoint(codePoint);\n }\n return byteString;\n}\nfunction capitalise(str) {\n return str[0].toUpperCase() + str.substr(1).toLowerCase();\n}\nfunction escapeString(toEscape, skipEscapingHtmlChars) {\n if (toEscape == null) {\n return null;\n }\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 const stringResult = toEscape.toString().toString();\n if (skipEscapingHtmlChars) {\n return stringResult;\n }\n // in react we don't need to escape html characters, as it's done by the framework\n return stringResult.replace(reUnescapedHtml, chr => HTML_ESCAPES[chr]);\n}\n/**\n * Converts a camelCase string into startCase\n * @param {string} camelCase\n * @return {string}\n */\nfunction camelCaseToHumanText(camelCase) {\n if (!camelCase || camelCase == null) {\n return null;\n }\n // either split on a lowercase followed by uppercase ie asHereTo -> as Here To\n const rex = /([a-z])([A-Z])/g;\n // or starts with uppercase and we take all expect the last which is assumed to be part of next word if followed by lowercase HEREToThere -> HERE To There\n const rexCaps = /([A-Z]+)([A-Z])([a-z])/g;\n const words = camelCase\n .replace(rex, '$1 $2')\n .replace(rexCaps, '$1 $2$3')\n .replace(/\\./g, ' ')\n .split(' ');\n return words.map(word => word.substring(0, 1).toUpperCase() + ((word.length > 1) ? word.substring(1, word.length) : '')).join(' ');\n}\n/**\n * Converts a camelCase string into hyphenated string\n * @param {string} camelCase\n * @return {string}\n */\nfunction camelCaseToHyphenated(camelCase) {\n return camelCase.replace(/[A-Z]/g, s => `-${s.toLocaleLowerCase()}`);\n}\n\nvar StringUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n utf8_encode: utf8_encode,\n capitalise: capitalise,\n escapeString: escapeString,\n camelCaseToHumanText: camelCaseToHumanText,\n camelCaseToHyphenated: camelCaseToHyphenated\n});\n\nfunction convertToMap(arr) {\n const map = new Map();\n arr.forEach(pair => 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\nfunction mapById(arr, callback) {\n const map = new Map();\n arr.forEach(item => map.set(callback(item), item));\n return map;\n}\nfunction keys(map) {\n const arr = [];\n map.forEach((_, key) => arr.push(key));\n return arr;\n}\n\nvar MapUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n convertToMap: convertToMap,\n mapById: mapById,\n keys: keys\n});\n\nclass ColDefUtil {\n}\nColDefUtil.ColDefPropertyMap = {\n headerName: undefined,\n columnGroupShow: undefined,\n headerClass: undefined,\n toolPanelClass: undefined,\n headerValueGetter: undefined,\n pivotKeys: undefined,\n groupId: undefined,\n colId: undefined,\n sort: undefined,\n initialSort: undefined,\n field: undefined,\n type: undefined,\n cellDataType: undefined,\n tooltipComponent: undefined,\n tooltipField: undefined,\n headerTooltip: undefined,\n cellClass: undefined,\n showRowGroup: undefined,\n filter: undefined,\n initialAggFunc: undefined,\n defaultAggFunc: undefined,\n aggFunc: undefined,\n pinned: undefined,\n initialPinned: undefined,\n chartDataType: undefined,\n cellEditorPopupPosition: undefined,\n headerGroupComponent: undefined,\n headerGroupComponentParams: undefined,\n cellStyle: undefined,\n cellRenderer: undefined,\n cellRendererParams: undefined,\n cellEditor: undefined,\n cellEditorParams: undefined,\n filterParams: undefined,\n pivotValueColumn: undefined,\n headerComponent: undefined,\n headerComponentParams: undefined,\n floatingFilterComponent: undefined,\n floatingFilterComponentParams: undefined,\n tooltipComponentParams: undefined,\n refData: undefined,\n columnsMenuParams: undefined,\n children: undefined,\n sortingOrder: undefined,\n allowedAggFuncs: undefined,\n menuTabs: undefined,\n pivotTotalColumnIds: undefined,\n cellClassRules: undefined,\n icons: undefined,\n sortIndex: undefined,\n initialSortIndex: undefined,\n flex: undefined,\n initialFlex: undefined,\n width: undefined,\n initialWidth: undefined,\n minWidth: undefined,\n maxWidth: undefined,\n rowGroupIndex: undefined,\n initialRowGroupIndex: undefined,\n pivotIndex: undefined,\n initialPivotIndex: undefined,\n suppressCellFlash: undefined,\n suppressColumnsToolPanel: undefined,\n suppressFiltersToolPanel: undefined,\n openByDefault: undefined,\n marryChildren: undefined,\n suppressStickyLabel: undefined,\n hide: undefined,\n initialHide: undefined,\n rowGroup: undefined,\n initialRowGroup: undefined,\n pivot: undefined,\n initialPivot: undefined,\n checkboxSelection: undefined,\n showDisabledCheckboxes: undefined,\n headerCheckboxSelection: undefined,\n headerCheckboxSelectionFilteredOnly: undefined,\n headerCheckboxSelectionCurrentPageOnly: undefined,\n suppressMenu: undefined,\n suppressMovable: undefined,\n lockPosition: undefined,\n lockVisible: undefined,\n lockPinned: undefined,\n unSortIcon: undefined,\n suppressSizeToFit: undefined,\n suppressAutoSize: undefined,\n enableRowGroup: undefined,\n enablePivot: undefined,\n enableValue: undefined,\n editable: undefined,\n suppressPaste: undefined,\n suppressNavigable: undefined,\n enableCellChangeFlash: undefined,\n rowDrag: undefined,\n dndSource: undefined,\n autoHeight: undefined,\n wrapText: undefined,\n sortable: undefined,\n resizable: undefined,\n singleClickEdit: undefined,\n floatingFilter: undefined,\n cellEditorPopup: undefined,\n suppressFillHandle: undefined,\n wrapHeaderText: undefined,\n autoHeaderHeight: undefined,\n dndSourceOnRowDrag: undefined,\n valueGetter: undefined,\n valueSetter: undefined,\n filterValueGetter: undefined,\n keyCreator: undefined,\n valueFormatter: undefined,\n valueParser: undefined,\n comparator: undefined,\n equals: undefined,\n pivotComparator: undefined,\n suppressKeyboardEvent: undefined,\n suppressHeaderKeyboardEvent: undefined,\n colSpan: undefined,\n rowSpan: undefined,\n getQuickFilterText: undefined,\n onCellValueChanged: undefined,\n onCellClicked: undefined,\n onCellDoubleClicked: undefined,\n onCellContextMenu: undefined,\n rowDragText: undefined,\n tooltipValueGetter: undefined,\n cellRendererSelector: undefined,\n cellEditorSelector: undefined,\n suppressSpanHeaderHeight: undefined,\n useValueFormatterForExport: undefined,\n useValueParserForImport: undefined,\n};\nColDefUtil.ALL_PROPERTIES = Object.keys(ColDefUtil.ColDefPropertyMap);\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 */\nclass PropertyKeys {\n}\nPropertyKeys.STRING_PROPERTIES = [\n 'rowSelection', 'overlayLoadingTemplate', 'overlayNoRowsTemplate', 'gridId',\n 'quickFilterText', 'rowModelType', 'editType', 'domLayout', 'clipboardDelimiter', 'rowGroupPanelShow',\n 'multiSortKey', 'pivotColumnGroupTotals', 'pivotRowTotals', 'pivotPanelShow', 'fillHandleDirection',\n 'serverSideStoreType', 'groupDisplayType', 'treeDataDisplayType', 'colResizeDefault'\n];\nPropertyKeys.OBJECT_PROPERTIES = [\n 'components', 'rowStyle', 'context', 'autoGroupColumnDef', 'localeText', 'icons',\n 'datasource', 'serverSideDatasource', 'viewportDatasource', 'groupRowRendererParams', 'aggFuncs', 'fullWidthCellRendererParams',\n 'defaultColGroupDef', 'defaultColDef', 'defaultCsvExportParams', 'defaultExcelExportParams', 'columnTypes',\n 'rowClassRules', 'detailCellRendererParams', 'loadingCellRendererParams', 'loadingOverlayComponentParams',\n 'noRowsOverlayComponentParams', 'popupParent', 'statusBar', 'sideBar', 'chartThemeOverrides',\n 'customChartThemes', 'chartToolPanelsDef', 'dataTypeDefinitions'\n];\nPropertyKeys.ARRAY_PROPERTIES = [\n 'sortingOrder', 'alignedGrids', 'rowData', 'columnDefs', 'excelStyles', 'pinnedTopRowData', 'pinnedBottomRowData', 'chartThemes', 'rowClass'\n];\nPropertyKeys.NUMBER_PROPERTIES = [\n 'rowHeight', 'detailRowHeight', 'rowBuffer', 'headerHeight', 'groupHeaderHeight', 'floatingFiltersHeight',\n 'pivotHeaderHeight', 'pivotGroupHeaderHeight', 'groupDefaultExpanded', 'viewportRowModelPageSize',\n 'viewportRowModelBufferSize', 'autoSizePadding', 'maxBlocksInCache', 'maxConcurrentDatasourceRequests', 'tooltipShowDelay',\n 'tooltipHideDelay', 'cacheOverflowSize', 'paginationPageSize', 'cacheBlockSize', 'infiniteInitialRowCount', 'serverSideInitialRowCount', 'scrollbarWidth',\n 'asyncTransactionWaitMillis', 'blockLoadDebounceMillis', 'keepDetailRowsCount',\n 'undoRedoCellEditingLimit', 'cellFlashDelay', 'cellFadeDelay', 'tabIndex'\n];\nPropertyKeys.BOOLEAN_PROPERTIES = [\n 'suppressMakeColumnVisibleAfterUnGroup', 'suppressRowClickSelection', 'suppressCellFocus', 'suppressHorizontalScroll',\n 'alwaysShowHorizontalScroll', 'alwaysShowVerticalScroll', 'debug', 'enableBrowserTooltips', 'enableCellExpressions', 'groupSelectsChildren',\n 'groupIncludeFooter', 'groupIncludeTotalFooter', 'groupSuppressBlankHeader', 'suppressMenuHide', 'suppressRowDeselection', 'unSortIcon',\n 'suppressMultiSort', 'alwaysMultiSort', 'singleClickEdit', 'suppressLoadingOverlay', 'suppressNoRowsOverlay', 'suppressAutoSize',\n 'skipHeaderOnAutoSize', 'suppressParentsInRowNodes', 'suppressColumnMoveAnimation', 'suppressMovableColumns', 'suppressFieldDotNotation',\n 'enableRangeSelection', 'enableRangeHandle', 'enableFillHandle', 'suppressClearOnFillReduction', 'deltaSort', 'suppressTouch', 'suppressAsyncEvents',\n 'allowContextMenuWithControlKey', 'suppressContextMenu', 'rememberGroupStateWhenNewData', 'enableCellChangeFlash', 'suppressDragLeaveHidesColumns',\n 'suppressRowGroupHidesColumns', 'suppressMiddleClickScrolls', 'suppressPreventDefaultOnMouseWheel', 'suppressCopyRowsToClipboard', 'copyHeadersToClipboard',\n 'copyGroupHeadersToClipboard', 'pivotMode', 'suppressAggFuncInHeader', 'suppressColumnVirtualisation', 'alwaysAggregateAtRootLevel', 'suppressAggAtRootLevel', 'suppressFocusAfterRefresh',\n 'functionsPassive', 'functionsReadOnly', 'animateRows', 'groupSelectsFiltered', 'groupRemoveSingleChildren', 'groupRemoveLowestSingleChildren', 'enableRtl',\n 'suppressClickEdit', 'rowDragEntireRow', 'rowDragManaged', 'suppressRowDrag', 'suppressMoveWhenRowDragging', 'rowDragMultiRow', 'enableGroupEdit',\n 'embedFullWidthRows', 'suppressPaginationPanel', 'groupHideOpenParents', 'groupAllowUnbalanced', 'pagination', 'paginationAutoPageSize', 'suppressScrollOnNewData',\n 'suppressScrollWhenPopupsAreOpen', 'purgeClosedRowNodes', 'cacheQuickFilter', 'includeHiddenColumnsInQuickFilter', 'excludeHiddenColumnsFromQuickFilter', 'ensureDomOrder', 'accentedSort', 'suppressChangeDetection',\n 'valueCache', 'valueCacheNeverExpires', 'aggregateOnlyChangedColumns', 'suppressAnimationFrame', 'suppressExcelExport', 'suppressCsvExport', 'treeData', 'masterDetail',\n 'suppressMultiRangeSelection', 'enterMovesDown', 'enterMovesDownAfterEdit', 'enterNavigatesVerticallyAfterEdit', 'enterNavigatesVertically', 'suppressPropertyNamesCheck', 'rowMultiSelectWithClick', 'suppressRowHoverHighlight',\n 'suppressRowTransform', 'suppressClipboardPaste', 'suppressLastEmptyLineOnPaste', 'enableCharts', 'enableChartToolPanelsButton', 'suppressChartToolPanelsButton',\n 'suppressMaintainUnsortedOrder', 'enableCellTextSelection', 'suppressBrowserResizeObserver', 'suppressMaxRenderedRowRestriction', 'excludeChildrenWhenTreeDataFiltering',\n 'tooltipMouseTrack', 'keepDetailRows', 'paginateChildRows', 'preventDefaultOnContextMenu', 'undoRedoCellEditing', 'allowDragFromColumnsToolPanel',\n 'pivotSuppressAutoColumn', 'suppressExpandablePivotGroups', 'debounceVerticalScrollbar', 'detailRowAutoHeight', 'serverSideFilteringAlwaysResets', 'serverSideFilterAllLevels',\n 'serverSideSortingAlwaysResets', 'serverSideSortAllLevels', 'serverSideOnlyRefreshFilteredGroups', 'serverSideSortOnServer', 'serverSideFilterOnServer', 'suppressAggFilteredOnly',\n 'showOpenedGroup', 'suppressClipboardApi', 'suppressModelUpdateAfterUpdateTransaction', 'stopEditingWhenCellsLoseFocus', 'maintainColumnOrder', 'groupMaintainOrder',\n 'columnHoverHighlight', 'suppressReactUi', 'readOnlyEdit', 'suppressRowVirtualisation', 'enableCellEditingOnBackspace', 'resetRowDataOnUpdate',\n 'removePivotHeaderRowWhenSingleValueColumn', 'suppressCopySingleCellRanges', 'suppressGroupRowsSticky', 'suppressServerSideInfiniteScroll', 'rowGroupPanelSuppressSort',\n 'allowShowChangeAfterFilter', 'suppressCutToClipboard'\n];\n/** You do not need to include event callbacks in this list, as they are generated automatically. */\nPropertyKeys.FUNCTIONAL_PROPERTIES = [\n 'doesExternalFilterPass', 'processSecondaryColDef', 'processSecondaryColGroupDef', 'processPivotResultColDef',\n 'processPivotResultColGroupDef', 'getBusinessKeyForNode', 'isRowSelectable', 'rowDragText',\n 'groupRowRenderer', 'fullWidthCellRenderer',\n 'loadingCellRenderer', 'loadingOverlayComponent', 'noRowsOverlayComponent',\n 'detailCellRenderer'\n];\nPropertyKeys.CALLBACK_PROPERTIES = [\n 'getLocaleText', 'isExternalFilterPresent', 'getRowHeight', 'getRowClass', 'getRowStyle', 'getContextMenuItems', 'getMainMenuItems',\n 'processRowPostCreate', 'processCellForClipboard', 'getGroupRowAgg', 'isFullWidthRow',\n 'sendToClipboard', 'navigateToNextHeader', 'tabToNextHeader', 'navigateToNextCell',\n 'tabToNextCell', 'processCellFromClipboard', 'getDocument', 'postProcessPopup', 'getChildCount', 'getDataPath', 'isRowMaster', 'postSortRows', 'processHeaderForClipboard',\n 'processGroupHeaderForClipboard', 'paginationNumberFormatter', 'processDataFromClipboard', 'getServerSideGroupKey', 'isServerSideGroup',\n 'createChartContainer', 'getChartToolbarItems', 'fillOperation', 'isApplyServerSideTransaction', 'getServerSideStoreParams', 'getServerSideGroupLevelParams',\n 'isServerSideGroupOpenByDefault', 'isGroupOpenByDefault', 'initialGroupOrderComparator',\n 'loadingCellRendererSelector', 'getRowId', 'groupAggFiltering'\n];\nPropertyKeys.FUNCTION_PROPERTIES = [\n ...PropertyKeys.FUNCTIONAL_PROPERTIES,\n ...PropertyKeys.CALLBACK_PROPERTIES\n];\nPropertyKeys.ALL_PROPERTIES = [\n ...PropertyKeys.ARRAY_PROPERTIES,\n ...PropertyKeys.OBJECT_PROPERTIES,\n ...PropertyKeys.STRING_PROPERTIES,\n ...PropertyKeys.NUMBER_PROPERTIES,\n ...PropertyKeys.FUNCTION_PROPERTIES,\n ...PropertyKeys.BOOLEAN_PROPERTIES\n];\n\nclass ComponentUtil {\n static getCallbackForEvent(eventName) {\n if (!eventName || eventName.length < 2) {\n return eventName;\n }\n return 'on' + eventName[0].toUpperCase() + eventName.substr(1);\n }\n static getCoercionLookup() {\n let coercionLookup = {};\n [\n ...ComponentUtil.ARRAY_PROPERTIES,\n ...ComponentUtil.OBJECT_PROPERTIES,\n ...ComponentUtil.STRING_PROPERTIES,\n ...ComponentUtil.FUNCTION_PROPERTIES,\n ...ComponentUtil.EVENT_CALLBACKS,\n ]\n .forEach((key) => coercionLookup[key] = 'none');\n ComponentUtil.BOOLEAN_PROPERTIES\n .forEach(key => coercionLookup[key] = 'boolean');\n ComponentUtil.NUMBER_PROPERTIES\n .forEach(key => coercionLookup[key] = 'number');\n return coercionLookup;\n }\n static getValue(key, rawValue) {\n const coercionStep = ComponentUtil.coercionLookup[key];\n if (coercionStep) {\n let newValue = rawValue;\n switch (coercionStep) {\n case 'number': {\n newValue = ComponentUtil.toNumber(rawValue);\n break;\n }\n case 'boolean': {\n newValue = ComponentUtil.toBoolean(rawValue);\n break;\n }\n case 'none': {\n // if groupAggFiltering exists and isn't a function, handle as a boolean.\n if (key === 'groupAggFiltering' && typeof rawValue !== 'function') {\n newValue = ComponentUtil.toBoolean(rawValue);\n }\n break;\n }\n }\n return newValue;\n }\n return undefined;\n }\n static getGridOptionKeys(component, isVue) {\n // Vue does not have keys in prod so instead need to run through all the \n // gridOptions checking for presence of a gridOption key.\n return isVue\n ? Object.keys(ComponentUtil.coercionLookup)\n : Object.keys(component);\n }\n static copyAttributesToGridOptions(gridOptions, component, isVue = 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 const pGridOptions = gridOptions;\n const keys = ComponentUtil.getGridOptionKeys(component, isVue);\n // Loop through component props, if they are not undefined and a valid gridOption copy to gridOptions\n keys.forEach(key => {\n const value = component[key];\n if (typeof value !== 'undefined') {\n const coercedValue = ComponentUtil.getValue(key, value);\n if (coercedValue !== undefined) {\n pGridOptions[key] = coercedValue;\n }\n }\n });\n return gridOptions;\n }\n static processOnChange(changes, api) {\n if (!changes || Object.keys(changes).length === 0) {\n return;\n }\n const changesToApply = Object.assign({}, changes);\n // We manually call these updates so that we can provide a different source of gridOptionsChanged\n // We do not call setProperty as this will be called by the grid api methods\n if (changesToApply.columnTypes) {\n api.setColumnTypes(changesToApply.columnTypes.currentValue, \"gridOptionsChanged\");\n delete changesToApply.columnTypes;\n }\n if (changesToApply.autoGroupColumnDef) {\n api.setAutoGroupColumnDef(changesToApply.autoGroupColumnDef.currentValue, \"gridOptionsChanged\");\n delete changesToApply.autoGroupColumnDef;\n }\n if (changesToApply.defaultColDef) {\n api.setDefaultColDef(changesToApply.defaultColDef.currentValue, \"gridOptionsChanged\");\n delete changesToApply.defaultColDef;\n }\n if (changesToApply.columnDefs) {\n api.setColumnDefs(changesToApply.columnDefs.currentValue, \"gridOptionsChanged\");\n delete changesToApply.columnDefs;\n }\n Object.keys(changesToApply).forEach(key => {\n const gridKey = key;\n const coercedValue = ComponentUtil.getValue(gridKey, changesToApply[gridKey].currentValue);\n api.__setProperty(gridKey, coercedValue);\n });\n // copy changes into an event for dispatch\n const event = {\n type: Events.EVENT_COMPONENT_STATE_CHANGED\n };\n iterateObject(changes, (key, value) => {\n event[key] = value;\n });\n api.dispatchEvent(event);\n }\n static toBoolean(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 static toNumber(value) {\n if (typeof value === 'number') {\n return value;\n }\n if (typeof value === 'string') {\n return Number(value);\n }\n }\n}\n// all events\nComponentUtil.EVENTS = values(Events);\n// events that are internal to AG Grid and should not be exposed to users via documentation or generated framework components\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 Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_START,\n Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_END,\n Events.EVENT_FULL_WIDTH_ROW_FOCUSED,\n Events.EVENT_HEADER_HEIGHT_CHANGED,\n Events.EVENT_COLUMN_HEADER_HEIGHT_CHANGED,\n Events.EVENT_CELL_FOCUS_CLEARED,\n Events.EVENT_GRID_STYLES_CHANGED,\n Events.EVENT_FILTER_DESTROYED,\n Events.EVENT_ROW_DATA_UPDATE_STARTED\n];\n// events that are available for use by users of AG Grid and so should be documented\n/** EVENTS that should be exposed via code generation for the framework components. */\nComponentUtil.PUBLIC_EVENTS = ComponentUtil.EVENTS.filter(e => !includes(ComponentUtil.EXCLUDED_INTERNAL_EVENTS, e));\n// onXXX methods, based on the above events\nComponentUtil.EVENT_CALLBACKS = ComponentUtil.EVENTS.map(event => ComponentUtil.getCallbackForEvent(event));\nComponentUtil.STRING_PROPERTIES = PropertyKeys.STRING_PROPERTIES;\nComponentUtil.OBJECT_PROPERTIES = PropertyKeys.OBJECT_PROPERTIES;\nComponentUtil.ARRAY_PROPERTIES = PropertyKeys.ARRAY_PROPERTIES;\nComponentUtil.NUMBER_PROPERTIES = PropertyKeys.NUMBER_PROPERTIES;\nComponentUtil.BOOLEAN_PROPERTIES = PropertyKeys.BOOLEAN_PROPERTIES;\nComponentUtil.FUNCTION_PROPERTIES = PropertyKeys.FUNCTION_PROPERTIES;\nComponentUtil.ALL_PROPERTIES = PropertyKeys.ALL_PROPERTIES;\nComponentUtil.ALL_PROPERTIES_SET = new Set(PropertyKeys.ALL_PROPERTIES);\nComponentUtil.coercionLookup = ComponentUtil.getCoercionLookup();\n\nfunction fuzzyCheckStrings(inputValues, validValues, allSuggestions) {\n const fuzzyMatches = {};\n const invalidInputs = inputValues.filter(inputValue => !validValues.some((validValue) => validValue === inputValue));\n if (invalidInputs.length > 0) {\n invalidInputs.forEach(invalidInput => fuzzyMatches[invalidInput] = fuzzySuggestions(invalidInput, allSuggestions));\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 */\nfunction fuzzySuggestions(inputValue, allSuggestions, hideIrrelevant, filterByPercentageOfBestMatch) {\n let thisSuggestions = allSuggestions.map((text) => ({\n value: text,\n relevance: stringWeightedDistances(inputValue.toLowerCase(), text.toLocaleLowerCase())\n }));\n thisSuggestions.sort((a, b) => b.relevance - a.relevance);\n if (hideIrrelevant) {\n thisSuggestions = thisSuggestions.filter(suggestion => suggestion.relevance !== 0);\n }\n if (filterByPercentageOfBestMatch && filterByPercentageOfBestMatch > 0) {\n const bestMatch = thisSuggestions[0].relevance;\n const limit = bestMatch * filterByPercentageOfBestMatch;\n thisSuggestions = thisSuggestions.filter(suggestion => limit - suggestion.relevance < 0);\n }\n return thisSuggestions.map(suggestion => suggestion.value);\n}\nfunction stringWeightedDistances(str1, str2) {\n const a = str1.replace(/\\s/g, '');\n const b = str2.replace(/\\s/g, '');\n let weight = 0;\n let lastIndex = -1;\n for (let i = 0; i < a.length; i++) {\n const idx = b.indexOf(a[i], lastIndex + 1);\n if (idx === -1) {\n continue;\n }\n lastIndex = idx;\n weight += (100 - (lastIndex * 100 / 10000) * 100);\n }\n return weight;\n}\n\nvar FuzzyMatchUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n fuzzyCheckStrings: fuzzyCheckStrings,\n fuzzySuggestions: fuzzySuggestions\n});\n\nvar __decorate$2x = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nfunction logDeprecation(version, oldProp, newProp, message) {\n const newPropMsg = newProp ? `Please use '${newProp}' instead. ` : '';\n doOnce(() => console.warn(`AG Grid: since v${version}, '${oldProp}' is deprecated. ${newPropMsg}${message !== null && message !== void 0 ? message : ''}`), `Deprecated_${oldProp}`);\n}\n// Vue adds these properties to all objects, so we ignore them when checking for invalid properties\nconst VUE_FRAMEWORK_PROPS = ['__ob__', '__v_skip', '__metadata__'];\nlet GridOptionsValidator = class GridOptionsValidator {\n constructor() {\n this.deprecatedProperties = {\n rememberGroupStateWhenNewData: { version: '24', message: 'Now that transaction updates are possible and they keep group state, this feature is no longer needed.' },\n serverSideFilteringAlwaysResets: { version: '28.0', newProp: 'serverSideOnlyRefreshFilteredGroups', copyToNewProp: true, },\n serverSideSortingAlwaysResets: { version: '28.0', newProp: 'serverSideSortAllLevels', copyToNewProp: true, },\n suppressReactUi: { version: '28', message: 'The legacy React rendering engine is deprecated and will be removed in the next major version of the grid.' },\n processSecondaryColDef: { version: '28', newProp: 'processPivotResultColDef', copyToNewProp: true },\n processSecondaryColGroupDef: { version: '28', newProp: 'processPivotResultColGroupDef', copyToNewProp: true },\n getServerSideStoreParams: { version: '28', newProp: 'getServerSideGroupLevelParams', copyToNewProp: true },\n serverSideInfiniteScroll: { version: '29', message: 'Infinite Scrolling is now the default behaviour. This can be suppressed with `suppressServerSideInfiniteScroll`.' },\n enableChartToolPanelsButton: { version: '29', message: 'The Chart Tool Panels button is now enabled by default. To hide the Chart Tool Panels button and display the hamburger button instead, set suppressChartToolPanelsButton=true.' },\n functionsPassive: { version: '29.2' },\n onColumnRowGroupChangeRequest: { version: '29.2' },\n onColumnPivotChangeRequest: { version: '29.2' },\n onColumnValueChangeRequest: { version: '29.2' },\n onColumnAggFuncChangeRequest: { version: '29.2' },\n serverSideFilterAllLevels: { version: '30', message: 'All server-side group levels are now filtered by default. This can be toggled using `serverSideOnlyRefreshFilteredGroups`.' },\n suppressAggAtRootLevel: { version: '30', message: 'The root level aggregation is now suppressed by default. This can be toggled using `alwaysAggregateAtRootLevel`.' },\n excludeHiddenColumnsFromQuickFilter: { version: '30', message: 'Hidden columns are now excluded from the Quick Filter by default. This can be toggled using `includeHiddenColumnsInQuickFilter`.' },\n enterMovesDown: { version: '30', newProp: 'enterNavigatesVertically', copyToNewProp: true },\n enterMovesDownAfterEdit: { version: '30', newProp: 'enterNavigatesVerticallyAfterEdit', copyToNewProp: true },\n };\n }\n pickOneWarning(prop1, prop2) {\n console.warn(`AG Grid: ${prop1} and ${prop2} do not work with each other, you need to pick one.`);\n }\n init() {\n this.checkForDeprecated();\n this.checkForViolations();\n if (this.gridOptions.suppressPropertyNamesCheck !== true) {\n this.checkGridOptionsProperties();\n this.checkColumnDefProperties();\n }\n this.checkColumnDefViolations();\n if (this.gridOptionsService.is('groupSelectsChildren') && this.gridOptionsService.is('suppressParentsInRowNodes')) {\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.gridOptionsService.is('groupSelectsChildren')) {\n if (this.gridOptionsService.get('rowSelection') !== 'multiple') {\n console.warn(\"AG Grid: rowSelection must be 'multiple' for groupSelectsChildren to make sense\");\n }\n }\n if (this.gridOptionsService.is('groupRemoveSingleChildren') && this.gridOptionsService.is('groupHideOpenParents')) {\n this.pickOneWarning('groupRemoveSingleChildren', 'groupHideOpenParents');\n }\n if (this.gridOptionsService.isRowModelType('serverSide')) {\n const msg = (prop, alt) => (`AG Grid: '${prop}' is not supported on the Server-Side Row Model.` + (alt ? ` Please use ${alt} instead.` : ''));\n if (this.gridOptionsService.exists('groupDefaultExpanded')) {\n console.warn(msg('groupDefaultExpanded', 'isServerSideGroupOpenByDefault callback'));\n }\n if (this.gridOptionsService.exists('groupIncludeFooter') && this.gridOptionsService.is('suppressServerSideInfiniteScroll')) {\n console.warn(msg('groupIncludeFooter'));\n }\n if (this.gridOptionsService.exists('groupIncludeTotalFooter')) {\n console.warn(msg('groupIncludeTotalFooter'));\n }\n }\n if (this.gridOptionsService.is('enableRangeSelection')) {\n ModuleRegistry.__assertRegistered(ModuleNames.RangeSelectionModule, 'enableRangeSelection', this.gridOptionsService.getGridId());\n }\n else if (this.gridOptionsService.is('enableRangeHandle') || this.gridOptionsService.is('enableFillHandle')) {\n console.warn(\"AG Grid: 'enableRangeHandle' or 'enableFillHandle' will not work unless 'enableRangeSelection' is set to true\");\n }\n const validateRegistered = (prop, module) => this.gridOptionsService.exists(prop) && ModuleRegistry.__assertRegistered(module, prop, this.gridOptionsService.getGridId());\n // Ensure the SideBar is registered which will then lead them to register Column / Filter Tool panels as required by their config.\n // It is possible to use the SideBar only with your own custom tool panels.\n validateRegistered('sideBar', ModuleNames.SideBarModule);\n validateRegistered('statusBar', ModuleNames.StatusBarModule);\n validateRegistered('enableCharts', ModuleNames.GridChartsModule);\n validateRegistered('getMainMenuItems', ModuleNames.MenuModule);\n validateRegistered('getContextMenuItems', ModuleNames.MenuModule);\n validateRegistered('allowContextMenuWithControlKey', ModuleNames.MenuModule);\n }\n checkColumnDefProperties() {\n if (this.gridOptions.columnDefs == null) {\n return;\n }\n const validProperties = ColDefUtil.ALL_PROPERTIES;\n const validateColDef = (colDef, propertyName) => {\n const userProperties = Object.getOwnPropertyNames(colDef);\n this.checkProperties(userProperties, [...validProperties, ...VUE_FRAMEWORK_PROPS], validProperties, propertyName, 'https://www.ag-grid.com/javascript-data-grid/column-properties/');\n if (colDef.children) {\n colDef.children.forEach(child => validateColDef(child, 'columnDefs.children'));\n }\n };\n this.gridOptions.columnDefs.forEach(colDef => validateColDef(colDef, 'columnDefs'));\n if (this.gridOptions.defaultColDef) {\n validateColDef(this.gridOptions.defaultColDef, 'defaultColDef');\n }\n }\n checkColumnDefViolations() {\n var _a;\n const rowModel = (_a = this.gridOptionsService.get('rowModelType')) !== null && _a !== void 0 ? _a : 'clientSide';\n const unsupportedPropertiesMap = {\n infinite: ['headerCheckboxSelection', 'headerCheckboxSelectionFilteredOnly', 'headerCheckboxSelectionCurrentPageOnly'],\n viewport: ['headerCheckboxSelection', 'headerCheckboxSelectionFilteredOnly', 'headerCheckboxSelectionCurrentPageOnly'],\n serverSide: ['headerCheckboxSelectionFilteredOnly', 'headerCheckboxSelectionCurrentPageOnly'],\n clientSide: [],\n };\n const unsupportedProperties = unsupportedPropertiesMap[rowModel];\n if (!(unsupportedProperties === null || unsupportedProperties === void 0 ? void 0 : unsupportedProperties.length)) {\n return;\n }\n const validateColDef = (colDef) => {\n unsupportedProperties.forEach(property => {\n if (property in colDef && !!colDef[property]) {\n console.warn(`AG Grid: Column property ${property} is not supported with the row model type ${rowModel}.`);\n }\n });\n };\n if (this.gridOptions.columnDefs != null) {\n this.gridOptions.columnDefs.forEach(colDef => validateColDef(colDef));\n }\n if (this.gridOptions.autoGroupColumnDef != null) {\n validateColDef(this.gridOptions.autoGroupColumnDef);\n }\n if (this.gridOptions.defaultColDef != null) {\n validateColDef(this.gridOptions.defaultColDef);\n }\n }\n checkGridOptionsProperties() {\n const userProperties = Object.getOwnPropertyNames(this.gridOptions);\n const validProperties = [\n ...PropertyKeys.ALL_PROPERTIES,\n ...ComponentUtil.EVENT_CALLBACKS\n ];\n const validPropertiesAndExceptions = [...validProperties, 'api', 'columnApi', ...VUE_FRAMEWORK_PROPS, ...Object.keys(this.deprecatedProperties)];\n this.checkProperties(userProperties, validPropertiesAndExceptions, validProperties, 'gridOptions', 'https://www.ag-grid.com/javascript-data-grid/grid-options/');\n }\n checkProperties(userProperties, validPropertiesAndExceptions, validProperties, containerName, docsUrl) {\n const invalidProperties = fuzzyCheckStrings(userProperties, validPropertiesAndExceptions, validProperties);\n iterateObject(invalidProperties, (key, value) => {\n doOnce(() => console.warn(`AG Grid: invalid ${containerName} property '${key}' did you mean any of these: ${value.slice(0, 8).join(\", \")}`), 'invalidProperty' + containerName + key);\n });\n if (Object.keys(invalidProperties).length > 0) {\n doOnce(() => console.warn(`AG Grid: to see all the valid ${containerName} properties please check: ${docsUrl}`), 'invalidProperties' + containerName + docsUrl);\n }\n }\n checkForDeprecated() {\n // casting to generic object, so typescript compiles even though\n // we are looking for attributes that don't exist\n const options = this.gridOptions;\n Object.entries(this.deprecatedProperties).forEach(([oldProp, details]) => {\n var _a;\n const oldPropValue = options[oldProp];\n if (oldPropValue) {\n logDeprecation(details.version, oldProp, details.newProp, details.message);\n if (details.copyToNewProp && details.newProp && options[details.newProp] == null) {\n options[details.newProp] = (_a = details.newPropValue) !== null && _a !== void 0 ? _a : oldPropValue;\n }\n }\n });\n // Manual messages and deprecation behaviour that don't fit our standard approach above.\n if (options.serverSideStoreType) {\n console.warn('AG Grid: since v29.0, `serverSideStoreType` has been replaced by `suppressServerSideInfiniteScroll`. Set to false to use Partial Store, and true to use Full Store.');\n options.suppressServerSideInfiniteScroll = options.serverSideStoreType !== 'partial';\n }\n }\n checkForViolations() {\n if (this.gridOptionsService.is('treeData')) {\n this.treeDataViolations();\n }\n }\n treeDataViolations() {\n if (this.gridOptionsService.isRowModelType('clientSide')) {\n if (!this.gridOptionsService.exists('getDataPath')) {\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.gridOptionsService.isRowModelType('serverSide')) {\n if (!this.gridOptionsService.exists('isServerSideGroup')) {\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 (!this.gridOptionsService.exists('getServerSideGroupKey')) {\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};\n__decorate$2x([\n Autowired('gridOptions')\n], GridOptionsValidator.prototype, \"gridOptions\", void 0);\n__decorate$2x([\n Autowired('gridOptionsService')\n], GridOptionsValidator.prototype, \"gridOptionsService\", void 0);\n__decorate$2x([\n PostConstruct\n], GridOptionsValidator.prototype, \"init\", null);\nGridOptionsValidator = __decorate$2x([\n Bean('gridOptionsValidator')\n], GridOptionsValidator);\nfunction matchesGroupDisplayType(toMatch, supplied) {\n const 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}\nfunction matchesTreeDataDisplayType(toMatch, supplied) {\n const 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\nvar __decorate$2w = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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$8 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nlet ColumnModel = class ColumnModel extends BeanStub {\n constructor() {\n super(...arguments);\n // header row count, based on user provided columns\n this.primaryHeaderRowCount = 0;\n this.secondaryHeaderRowCount = 0;\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 // A hash key to keep track of changes in viewport columns\n this.viewportColumnsHash = '';\n // same as viewportColumns, except we always include columns with headerAutoHeight\n this.headerViewportColumns = [];\n // all columns to be rendered in the centre\n this.viewportColumnsCenter = [];\n // same as viewportColumnsCenter, except we always include columns with headerAutoHeight\n this.headerViewportColumnsCenter = [];\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 // when we're waiting for cell data types to be inferred, we need to defer column resizing\n this.shouldQueueResizeOperations = false;\n this.resizeOperationQueue = [];\n }\n init() {\n this.suppressColumnVirtualisation = this.gridOptionsService.is('suppressColumnVirtualisation');\n const pivotMode = this.gridOptionsService.is('pivotMode');\n if (this.isPivotSettingAllowed(pivotMode)) {\n this.pivotMode = pivotMode;\n }\n this.usingTreeData = this.gridOptionsService.isTreeData();\n this.addManagedPropertyListener('groupDisplayType', () => this.onAutoGroupColumnDefChanged());\n this.addManagedPropertyListener('autoGroupColumnDef', () => this.onAutoGroupColumnDefChanged());\n this.addManagedPropertyListener('defaultColDef', (params) => this.onSharedColDefChanged(params.source));\n this.addManagedPropertyListener('columnTypes', (params) => this.onSharedColDefChanged(params.source));\n }\n onAutoGroupColumnDefChanged() {\n // Possible for update to be called before columns are present in which case there is nothing to do here.\n if (!this.columnDefs) {\n return;\n }\n this.autoGroupsNeedBuilding = true;\n this.forceRecreateAutoGroups = true;\n this.updateGridColumns();\n this.updateDisplayedColumns('gridOptionsChanged');\n }\n onSharedColDefChanged(source = 'api') {\n // likewise for autoGroupCol, the default col def impacts this\n this.forceRecreateAutoGroups = true;\n this.createColumnsFromColumnDefs(true, source);\n }\n setColumnDefs(columnDefs, source = 'api') {\n const colsPreviouslyExisted = !!this.columnDefs;\n this.columnDefs = columnDefs;\n this.createColumnsFromColumnDefs(colsPreviouslyExisted, source);\n }\n recreateColumnDefs(source = 'api') {\n this.onSharedColDefChanged(source);\n }\n destroyOldColumns(oldTree, newTree) {\n const oldObjectsById = {};\n if (!oldTree) {\n return;\n }\n // add in all old columns to be destroyed\n this.columnUtils.depthFirstOriginalTreeSearch(null, oldTree, child => {\n oldObjectsById[child.getInstanceId()] = child;\n });\n // however we don't destroy anything in the new tree. if destroying the grid, there is no new tree\n if (newTree) {\n this.columnUtils.depthFirstOriginalTreeSearch(null, newTree, child => {\n oldObjectsById[child.getInstanceId()] = null;\n });\n }\n // what's left can be destroyed\n const colsToDestroy = Object.values(oldObjectsById).filter(item => item != null);\n this.destroyBeans(colsToDestroy);\n }\n destroyColumns() {\n this.destroyOldColumns(this.primaryColumnTree);\n this.destroyOldColumns(this.secondaryBalancedTree);\n this.destroyOldColumns(this.groupAutoColsBalancedTree);\n }\n createColumnsFromColumnDefs(colsPreviouslyExisted, source = 'api') {\n // only need to dispatch before/after events if updating columns, never if setting columns for first time\n const dispatchEventsFunc = colsPreviouslyExisted ? this.compareColumnStatesAndDispatchEvents(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 const oldPrimaryColumns = this.primaryColumns;\n const oldPrimaryTree = this.primaryColumnTree;\n const balancedTreeResult = this.columnFactory.createColumnTree(this.columnDefs, true, oldPrimaryTree);\n this.destroyOldColumns(this.primaryColumnTree, balancedTreeResult.columnTree);\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(col => 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 const gridColsNotProcessed = this.gridColsArePrimary === undefined;\n const processGridCols = this.gridColsArePrimary || gridColsNotProcessed;\n if (processGridCols) {\n this.updateGridColumns();\n if (colsPreviouslyExisted && !this.gridOptionsService.is('maintainColumnOrder')) {\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 if (dispatchEventsFunc) {\n dispatchEventsFunc();\n }\n this.dispatchNewColumnsLoaded();\n }\n dispatchNewColumnsLoaded() {\n const newColumnsLoadedEvent = {\n type: Events.EVENT_NEW_COLUMNS_LOADED\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 dispatchEverythingChanged(source = 'api') {\n const eventEverythingChanged = {\n type: Events.EVENT_COLUMN_EVERYTHING_CHANGED,\n source\n };\n this.eventService.dispatchEvent(eventEverythingChanged);\n }\n orderGridColumnsLikePrimary() {\n const primaryColumns = this.primaryColumns;\n if (!primaryColumns) {\n return;\n }\n this.gridColumns.sort((colA, colB) => {\n const primaryIndexA = primaryColumns.indexOf(colA);\n const primaryIndexB = primaryColumns.indexOf(colB);\n // if both cols are present in primary, then we just return the position,\n // so position is maintained.\n const indexAPresent = primaryIndexA >= 0;\n const 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 const gridIndexA = this.gridColumns.indexOf(colA);\n const gridIndexB = this.gridColumns.indexOf(colB);\n return gridIndexA - gridIndexB;\n });\n this.gridColumns = this.placeLockedColumns(this.gridColumns);\n }\n getAllDisplayedAutoHeightCols() {\n return this.displayedAutoHeightCols;\n }\n setViewport() {\n if (this.gridOptionsService.is('enableRtl')) {\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 getDisplayedColumnsStartingAt(column) {\n let currentColumn = column;\n const 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. dispatches an event\n // if the list of columns has changed.\n // + setColumnWidth(), setViewportPosition(), setColumnDefs(), sizeColumnsToFit()\n checkViewportColumns() {\n // check displayCenterColumnTree exists first, as it won't exist when grid is initialising\n if (this.displayedColumnsCenter == null) {\n return;\n }\n const viewportColumnsChanged = this.extractViewport();\n if (!viewportColumnsChanged) {\n return;\n }\n const event = {\n type: Events.EVENT_VIRTUAL_COLUMNS_CHANGED\n };\n this.eventService.dispatchEvent(event);\n }\n setViewportPosition(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 isPivotMode() {\n return this.pivotMode;\n }\n isPivotSettingAllowed(pivot) {\n if (pivot && this.gridOptionsService.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 setPivotMode(pivotMode, 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 groupDisplayType = 'custom', 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 const event = {\n type: Events.EVENT_COLUMN_PIVOT_MODE_CHANGED\n };\n this.eventService.dispatchEvent(event);\n }\n getSecondaryPivotColumn(pivotKeys, valueColKey) {\n if (missing(this.secondaryColumns)) {\n return null;\n }\n const valueColumnToFind = this.getPrimaryColumn(valueColKey);\n let foundColumn = null;\n this.secondaryColumns.forEach(column => {\n const thisPivotKeys = column.getColDef().pivotKeys;\n const pivotValueColumn = column.getColDef().pivotValueColumn;\n const pivotKeyMatches = areEqual(thisPivotKeys, pivotKeys);\n const pivotValueMatches = pivotValueColumn === valueColumnToFind;\n if (pivotKeyMatches && pivotValueMatches) {\n foundColumn = column;\n }\n });\n return foundColumn;\n }\n setBeans(loggerFactory) {\n this.logger = loggerFactory.create('columnModel');\n }\n setFirstRightAndLastLeftPinned(source) {\n let lastLeft;\n let firstRight;\n if (this.gridOptionsService.is('enableRtl')) {\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((column) => {\n column.setLastLeftPinned(column === lastLeft, source);\n column.setFirstRightPinned(column === firstRight, source);\n });\n }\n autoSizeColumns(params) {\n if (this.shouldQueueResizeOperations) {\n this.resizeOperationQueue.push(() => this.autoSizeColumns(params));\n return;\n }\n const { columns, skipHeader, skipHeaderGroups, stopAtGroup, source = 'api' } = params;\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 const columnsAutosized = [];\n // initialise with anything except 0 so that while loop executes at least once\n let changesThisTimeAround = -1;\n const shouldSkipHeader = skipHeader != null ? skipHeader : this.gridOptionsService.is('skipHeaderOnAutoSize');\n const shouldSkipHeaderGroups = skipHeaderGroups != null ? skipHeaderGroups : shouldSkipHeader;\n while (changesThisTimeAround !== 0) {\n changesThisTimeAround = 0;\n this.actionOnGridColumns(columns, (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 const preferredWidth = this.autoWidthCalculator.getPreferredWidthForColumn(column, shouldSkipHeader);\n // preferredWidth = -1 if this col is not on the screen\n if (preferredWidth > 0) {\n const 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, source, stopAtGroup);\n }\n this.dispatchColumnResizedEvent(columnsAutosized, true, 'autosizeColumns');\n }\n dispatchColumnResizedEvent(columns, finished, source, flexColumns = null) {\n if (columns && columns.length) {\n const event = {\n type: Events.EVENT_COLUMN_RESIZED,\n columns: columns,\n column: columns.length === 1 ? columns[0] : null,\n flexColumns: flexColumns,\n finished: finished,\n source: source\n };\n this.eventService.dispatchEvent(event);\n }\n }\n dispatchColumnChangedEvent(type, columns, source) {\n const event = {\n type: type,\n columns: columns,\n column: (columns && columns.length == 1) ? columns[0] : null,\n source: source\n };\n this.eventService.dispatchEvent(event);\n }\n dispatchColumnMovedEvent(params) {\n const { movedColumns, source, toIndex, finished } = params;\n const event = {\n type: Events.EVENT_COLUMN_MOVED,\n columns: movedColumns,\n column: movedColumns && movedColumns.length === 1 ? movedColumns[0] : null,\n toIndex,\n finished,\n source\n };\n this.eventService.dispatchEvent(event);\n }\n dispatchColumnPinnedEvent(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 const column = changedColumns.length === 1 ? changedColumns[0] : null;\n // only include visible if it's common in all columns\n const pinned = this.getCommonValue(changedColumns, col => col.getPinned());\n const 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,\n source: source\n };\n this.eventService.dispatchEvent(event);\n }\n dispatchColumnVisibleEvent(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 const column = changedColumns.length === 1 ? changedColumns[0] : null;\n // only include visible if it's common in all columns\n const visible = this.getCommonValue(changedColumns, col => col.isVisible());\n const event = {\n type: Events.EVENT_COLUMN_VISIBLE,\n visible,\n columns: changedColumns,\n column,\n source: source\n };\n this.eventService.dispatchEvent(event);\n }\n autoSizeColumn(key, skipHeader, source = \"api\") {\n if (key) {\n this.autoSizeColumns({ columns: [key], skipHeader, skipHeaderGroups: true, source });\n }\n }\n autoSizeColumnGroupsByColumns(keys, source, stopAtGroup) {\n const columnGroups = new Set();\n const columns = this.getGridColumns(keys);\n columns.forEach(col => {\n let parent = col.getParent();\n while (parent && parent != stopAtGroup) {\n if (!parent.isPadding()) {\n columnGroups.add(parent);\n }\n parent = parent.getParent();\n }\n });\n let headerGroupCtrl;\n const resizedColumns = [];\n for (const columnGroup of columnGroups) {\n for (const headerContainerCtrl of this.ctrlsService.getHeaderRowContainerCtrls()) {\n headerGroupCtrl = headerContainerCtrl.getHeaderCtrlForColumn(columnGroup);\n if (headerGroupCtrl) {\n break;\n }\n }\n if (headerGroupCtrl) {\n headerGroupCtrl.resizeLeafColumnsToFit(source);\n }\n }\n return resizedColumns;\n }\n autoSizeAllColumns(skipHeader, source = \"api\") {\n if (this.shouldQueueResizeOperations) {\n this.resizeOperationQueue.push(() => this.autoSizeAllColumns(skipHeader, source));\n return;\n }\n const allDisplayedColumns = this.getAllDisplayedColumns();\n this.autoSizeColumns({ columns: allDisplayedColumns, skipHeader, source });\n }\n // Possible candidate for reuse (alot of recursive traversal duplication)\n getColumnsFromTree(rootColumns) {\n const result = [];\n const recursiveFindColumns = (childColumns) => {\n for (let i = 0; i < childColumns.length; i++) {\n const 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 getAllDisplayedTrees() {\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 getPrimaryColumnTree() {\n return this.primaryColumnTree;\n }\n // + gridPanel -> for resizing the body and setting top margin\n getHeaderRowCount() {\n return this.gridHeaderRowCount;\n }\n // + headerRenderer -> setting pinned body width\n getDisplayedTreeLeft() {\n return this.displayedTreeLeft;\n }\n // + headerRenderer -> setting pinned body width\n getDisplayedTreeRight() {\n return this.displayedTreeRight;\n }\n // + headerRenderer -> setting pinned body width\n getDisplayedTreeCentre() {\n return this.displayedTreeCentre;\n }\n // gridPanel -> ensureColumnVisible\n isColumnDisplayed(column) {\n return this.getAllDisplayedColumns().indexOf(column) >= 0;\n }\n // + csvCreator\n getAllDisplayedColumns() {\n return this.displayedColumns;\n }\n getViewportColumns() {\n return this.viewportColumns;\n }\n getDisplayedLeftColumnsForRow(rowNode) {\n if (!this.colSpanActive) {\n return this.displayedColumnsLeft;\n }\n return this.getDisplayedColumnsForRow(rowNode, this.displayedColumnsLeft);\n }\n getDisplayedRightColumnsForRow(rowNode) {\n if (!this.colSpanActive) {\n return this.displayedColumnsRight;\n }\n return this.getDisplayedColumnsForRow(rowNode, this.displayedColumnsRight);\n }\n isColSpanActive() {\n return this.colSpanActive;\n }\n getDisplayedColumnsForRow(rowNode, displayedColumns, filterCallback, emptySpaceBeforeColumn) {\n const result = [];\n let lastConsideredCol = null;\n for (let i = 0; i < displayedColumns.length; i++) {\n const col = displayedColumns[i];\n const maxAllowedColSpan = displayedColumns.length - i;\n const colSpan = Math.min(col.getColSpan(rowNode), maxAllowedColSpan);\n const columnsToCheckFilter = [col];\n if (colSpan > 1) {\n const colsToRemove = colSpan - 1;\n for (let 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 let 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(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 const gapBeforeColumn = emptySpaceBeforeColumn ? emptySpaceBeforeColumn(col) : false;\n if (gapBeforeColumn) {\n result.push(lastConsideredCol);\n }\n }\n result.push(col);\n }\n lastConsideredCol = col;\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 getViewportCenterColumnsForRow(rowNode) {\n if (!this.colSpanActive) {\n return this.viewportColumnsCenter;\n }\n const emptySpaceBeforeColumn = (col) => {\n const left = col.getLeft();\n return exists(left) && left > this.viewportLeft;\n };\n // if doing column virtualisation, then we filter based on the viewport.\n const filterCallback = this.suppressColumnVirtualisation ? null : this.isColumnInRowViewport.bind(this);\n return this.getDisplayedColumnsForRow(rowNode, this.displayedColumnsCenter, filterCallback, emptySpaceBeforeColumn);\n }\n getAriaColumnIndex(col) {\n return this.getAllGridColumns().indexOf(col) + 1;\n }\n isColumnInHeaderViewport(col) {\n // for headers, we never filter out autoHeaderHeight columns, if calculating\n if (col.isAutoHeaderHeight()) {\n return true;\n }\n return this.isColumnInRowViewport(col);\n }\n isColumnInRowViewport(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 const columnLeft = col.getLeft() || 0;\n const 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 const leftBounds = this.viewportLeft - 200;\n const rightBounds = this.viewportRight + 200;\n const columnToMuchLeft = columnLeft < leftBounds && columnRight < leftBounds;\n const 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 getDisplayedColumnsLeftWidth() {\n return this.getWidthOfColsInList(this.displayedColumnsLeft);\n }\n // note: this should be cached\n getDisplayedColumnsRightWidth() {\n return this.getWidthOfColsInList(this.displayedColumnsRight);\n }\n updatePrimaryColumnList(keys, masterList, actionIsAdd, columnCallback, eventType, source = \"api\") {\n if (!keys || missingOrEmpty(keys)) {\n return;\n }\n let atLeastOne = false;\n keys.forEach(key => {\n const 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 const event = {\n type: eventType,\n columns: masterList,\n column: masterList.length === 1 ? masterList[0] : null,\n source: source\n };\n this.eventService.dispatchEvent(event);\n }\n setRowGroupColumns(colKeys, 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 setRowGroupActive(active, column, source) {\n if (active === column.isRowGroupActive()) {\n return;\n }\n column.setRowGroupActive(active, source);\n if (active && !this.gridOptionsService.is('suppressRowGroupHidesColumns')) {\n this.setColumnVisible(column, false, source);\n }\n if (!active && !this.gridOptionsService.is('suppressMakeColumnVisibleAfterUnGroup')) {\n this.setColumnVisible(column, true, source);\n }\n }\n addRowGroupColumn(key, source = \"api\") {\n if (key) {\n this.addRowGroupColumns([key], source);\n }\n }\n addRowGroupColumns(keys, 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 removeRowGroupColumns(keys, 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 removeRowGroupColumn(key, source = \"api\") {\n if (key) {\n this.removeRowGroupColumns([key], source);\n }\n }\n addPivotColumns(keys, source = \"api\") {\n this.updatePrimaryColumnList(keys, this.pivotColumns, true, column => column.setPivotActive(true, source), Events.EVENT_COLUMN_PIVOT_CHANGED, source);\n }\n setPivotColumns(colKeys, source = \"api\") {\n this.setPrimaryColumnList(colKeys, this.pivotColumns, Events.EVENT_COLUMN_PIVOT_CHANGED, (added, column) => {\n column.setPivotActive(added, source);\n }, source);\n }\n addPivotColumn(key, source = \"api\") {\n this.addPivotColumns([key], source);\n }\n removePivotColumns(keys, source = \"api\") {\n this.updatePrimaryColumnList(keys, this.pivotColumns, false, column => column.setPivotActive(false, source), Events.EVENT_COLUMN_PIVOT_CHANGED, source);\n }\n removePivotColumn(key, source = \"api\") {\n this.removePivotColumns([key], source);\n }\n setPrimaryColumnList(colKeys, masterList, eventName, columnCallback, source) {\n masterList.length = 0;\n if (exists(colKeys)) {\n colKeys.forEach(key => {\n const column = this.getPrimaryColumn(key);\n if (column) {\n masterList.push(column);\n }\n });\n }\n (this.primaryColumns || []).forEach(column => {\n const added = masterList.indexOf(column) >= 0;\n columnCallback(added, column);\n });\n if (this.autoGroupsNeedBuilding) {\n this.updateGridColumns();\n }\n this.updateDisplayedColumns(source);\n this.dispatchColumnChangedEvent(eventName, masterList, source);\n }\n setValueColumns(colKeys, source = \"api\") {\n this.setPrimaryColumnList(colKeys, this.valueColumns, Events.EVENT_COLUMN_VALUE_CHANGED, this.setValueActive.bind(this), source);\n }\n setValueActive(active, column, source) {\n if (active === column.isValueActive()) {\n return;\n }\n column.setValueActive(active, source);\n if (active && !column.getAggFunc()) {\n const initialAggFunc = this.aggFuncService.getDefaultAggFunc(column);\n column.setAggFunc(initialAggFunc);\n }\n }\n addValueColumns(keys, source = \"api\") {\n this.updatePrimaryColumnList(keys, this.valueColumns, true, this.setValueActive.bind(this, true), Events.EVENT_COLUMN_VALUE_CHANGED, source);\n }\n addValueColumn(colKey, source = \"api\") {\n if (colKey) {\n this.addValueColumns([colKey], source);\n }\n }\n removeValueColumn(colKey, source = \"api\") {\n this.removeValueColumns([colKey], source);\n }\n removeValueColumns(keys, 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 normaliseColumnWidth(column, newWidth) {\n const minWidth = column.getMinWidth();\n if (exists(minWidth) && newWidth < minWidth) {\n newWidth = minWidth;\n }\n const maxWidth = column.getMaxWidth();\n if (exists(maxWidth) && column.isGreaterThanMax(newWidth)) {\n newWidth = maxWidth;\n }\n return newWidth;\n }\n getPrimaryOrGridColumn(key) {\n const column = this.getPrimaryColumn(key);\n return column || this.getGridColumn(key);\n }\n setColumnWidths(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 = \"api\") {\n const sets = [];\n columnWidths.forEach(columnWidth => {\n const 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 const defaultIsShift = this.gridOptionsService.get('colResizeDefault') === 'shift';\n if (defaultIsShift) {\n shiftKey = !shiftKey;\n }\n if (shiftKey) {\n const otherCol = this.getDisplayedColAfter(col);\n if (!otherCol) {\n return;\n }\n const widthDiff = col.getActualWidth() - columnWidth.newWidth;\n const 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,\n source\n });\n }\n checkMinAndMaxWidthsForSet(columnResizeSet) {\n const { columns, width } = columnResizeSet;\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 let minWidthAccumulated = 0;\n let maxWidthAccumulated = 0;\n let maxWidthActive = true;\n columns.forEach(col => {\n const minWidth = col.getMinWidth();\n minWidthAccumulated += minWidth || 0;\n const 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 const minWidthPasses = width >= minWidthAccumulated;\n const 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 resizeColumnSets(params) {\n const { resizeSets, finished, source } = params;\n const passMinMaxCheck = !resizeSets || resizeSets.every(columnResizeSet => this.checkMinAndMaxWidthsForSet(columnResizeSet));\n if (!passMinMaxCheck) {\n // even though we are not going to resize beyond min/max size, we still need to dispatch event when finished\n if (finished) {\n const columns = resizeSets && resizeSets.length > 0 ? resizeSets[0].columns : null;\n this.dispatchColumnResizedEvent(columns, finished, source);\n }\n return; // don't resize!\n }\n const changedCols = [];\n const allResizedCols = [];\n resizeSets.forEach(set => {\n const { width, columns, ratios } = set;\n // keep track of pixels used, and last column gets the remaining,\n // to cater for rounding errors, and min width adjustments\n const newWidths = {};\n const finishedCols = {};\n columns.forEach(col => 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 let finishedColsGrew = true;\n let loopCount = 0;\n while (finishedColsGrew) {\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 break;\n }\n finishedColsGrew = false;\n const subsetCols = [];\n let subsetRatioTotal = 0;\n let pixelsToDistribute = width;\n columns.forEach((col, index) => {\n const thisColFinished = finishedCols[col.getId()];\n if (thisColFinished) {\n pixelsToDistribute -= newWidths[col.getId()];\n }\n else {\n subsetCols.push(col);\n const 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 const ratioScale = 1 / subsetRatioTotal;\n subsetCols.forEach((col, index) => {\n const lastCol = index === (subsetCols.length - 1);\n let colNewWidth;\n if (lastCol) {\n colNewWidth = pixelsToDistribute;\n }\n else {\n colNewWidth = Math.round(ratios[index] * width * ratioScale);\n pixelsToDistribute -= colNewWidth;\n }\n const minWidth = col.getMinWidth();\n const 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 columns.forEach(col => {\n const newWidth = newWidths[col.getId()];\n const 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 const atLeastOneColChanged = changedCols.length > 0;\n let flexedCols = [];\n if (atLeastOneColChanged) {\n flexedCols = this.refreshFlexedColumns({ resizingCols: allResizedCols, skipSetLeft: true });\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 dispatch '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 dispatch change events\n // in all the columns in the group, but only one with get the pixel.\n const colsForEvent = allResizedCols.concat(flexedCols);\n if (atLeastOneColChanged || finished) {\n this.dispatchColumnResizedEvent(colsForEvent, finished, source, flexedCols);\n }\n }\n setColumnAggFunc(key, aggFunc, source = \"api\") {\n if (!key) {\n return;\n }\n const column = this.getPrimaryColumn(key);\n if (!column) {\n return;\n }\n column.setAggFunc(aggFunc);\n this.dispatchColumnChangedEvent(Events.EVENT_COLUMN_VALUE_CHANGED, [column], source);\n }\n moveRowGroupColumn(fromIndex, toIndex, source = \"api\") {\n const column = this.rowGroupColumns[fromIndex];\n this.rowGroupColumns.splice(fromIndex, 1);\n this.rowGroupColumns.splice(toIndex, 0, column);\n const event = {\n type: Events.EVENT_COLUMN_ROW_GROUP_CHANGED,\n columns: this.rowGroupColumns,\n column: this.rowGroupColumns.length === 1 ? this.rowGroupColumns[0] : null,\n source: source\n };\n this.eventService.dispatchEvent(event);\n }\n moveColumns(columnsToMoveKeys, toIndex, source = \"api\", finished = true) {\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 const movedColumns = this.getGridColumns(columnsToMoveKeys);\n const failedRules = !this.doesMovePassRules(movedColumns, toIndex);\n if (failedRules) {\n return;\n }\n moveInArray(this.gridColumns, movedColumns, toIndex);\n this.updateDisplayedColumns(source);\n this.dispatchColumnMovedEvent({ movedColumns, source, toIndex, finished });\n this.columnAnimationService.finish();\n }\n doesMovePassRules(columnsToMove, toIndex) {\n // make a copy of what the grid columns would look like after the move\n const proposedColumnOrder = this.getProposedColumnOrder(columnsToMove, toIndex);\n return this.doesOrderPassRules(proposedColumnOrder);\n }\n doesOrderPassRules(gridOrder) {\n if (!this.doesMovePassMarryChildren(gridOrder)) {\n return false;\n }\n if (!this.doesMovePassLockedPositions(gridOrder)) {\n return false;\n }\n return true;\n }\n getProposedColumnOrder(columnsToMove, toIndex) {\n const proposedColumnOrder = this.gridColumns.slice();\n moveInArray(proposedColumnOrder, columnsToMove, toIndex);\n return proposedColumnOrder;\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 sortColumnsLikeGridColumns(cols) {\n if (!cols || cols.length <= 1) {\n return;\n }\n const notAllColsInGridColumns = cols.filter(c => this.gridColumns.indexOf(c) < 0).length > 0;\n if (notAllColsInGridColumns) {\n return;\n }\n cols.sort((a, b) => {\n const indexA = this.gridColumns.indexOf(a);\n const indexB = this.gridColumns.indexOf(b);\n return indexA - indexB;\n });\n }\n doesMovePassLockedPositions(proposedColumnOrder) {\n // Placement is a number indicating 'left' 'center' or 'right' as 0 1 2\n let lastPlacement = 0;\n let rulePassed = true;\n const lockPositionToPlacement = (position) => {\n if (!position) { // false or undefined\n return 1;\n }\n if (position === true) {\n return 0;\n }\n return position === 'left' ? 0 : 2; // Otherwise 'right'\n };\n proposedColumnOrder.forEach(col => {\n const placement = lockPositionToPlacement(col.getColDef().lockPosition);\n if (placement < lastPlacement) { // If placement goes down, we're not in the correct order\n rulePassed = false;\n }\n lastPlacement = placement;\n });\n return rulePassed;\n }\n doesMovePassMarryChildren(allColumnsCopy) {\n let rulePassed = true;\n this.columnUtils.depthFirstOriginalTreeSearch(null, this.gridBalancedTree, child => {\n if (!(child instanceof ProvidedColumnGroup)) {\n return;\n }\n const columnGroup = child;\n const colGroupDef = columnGroup.getColGroupDef();\n const marryChildren = colGroupDef && colGroupDef.marryChildren;\n if (!marryChildren) {\n return;\n }\n const newIndexes = [];\n columnGroup.getLeafColumns().forEach(col => {\n const newColIndex = allColumnsCopy.indexOf(col);\n newIndexes.push(newColIndex);\n });\n const maxIndex = Math.max.apply(Math, newIndexes);\n const minIndex = Math.min.apply(Math, newIndexes);\n // spread is how far the first column in this group is away from the last column\n const spread = maxIndex - minIndex;\n const 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 moveColumn(key, toIndex, source = \"api\") {\n this.moveColumns([key], toIndex, source);\n }\n moveColumnByIndex(fromIndex, toIndex, source = \"api\") {\n const column = this.gridColumns[fromIndex];\n this.moveColumn(column, toIndex, source);\n }\n getColumnDefs() {\n if (!this.primaryColumns) {\n return;\n }\n const cols = this.primaryColumns.slice();\n if (this.gridColsArePrimary) {\n cols.sort((a, b) => this.gridColumns.indexOf(a) - this.gridColumns.indexOf(b));\n }\n else if (this.lastPrimaryOrder) {\n cols.sort((a, b) => 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 getBodyContainerWidth() {\n return this.bodyWidth;\n }\n getContainerWidth(pinned) {\n switch (pinned) {\n case 'left':\n return this.leftWidth;\n case 'right':\n return this.rightWidth;\n default:\n return this.bodyWidth;\n }\n }\n // after setColumnWidth or updateGroupsAndDisplayedColumns\n updateBodyWidths() {\n const newBodyWidth = this.getWidthOfColsInList(this.displayedColumnsCenter);\n const newLeftWidth = this.getWidthOfColsInList(this.displayedColumnsLeft);\n const 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 const 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 const event = {\n type: Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED,\n };\n this.eventService.dispatchEvent(event);\n }\n }\n // + rowController\n getValueColumns() {\n return this.valueColumns ? this.valueColumns : [];\n }\n // + rowController\n getPivotColumns() {\n return this.pivotColumns ? this.pivotColumns : [];\n }\n // + clientSideRowModel\n isPivotActive() {\n return this.pivotColumns && this.pivotColumns.length > 0 && this.pivotMode;\n }\n // + toolPanel\n getRowGroupColumns() {\n return this.rowGroupColumns ? this.rowGroupColumns : [];\n }\n // + rowController -> while inserting rows\n getDisplayedCenterColumns() {\n return this.displayedColumnsCenter;\n }\n // + rowController -> while inserting rows\n getDisplayedLeftColumns() {\n return this.displayedColumnsLeft;\n }\n getDisplayedRightColumns() {\n return this.displayedColumnsRight;\n }\n getDisplayedColumns(type) {\n switch (type) {\n case 'left':\n return this.getDisplayedLeftColumns();\n case '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 getAllPrimaryColumns() {\n return this.primaryColumns ? this.primaryColumns.slice() : null;\n }\n getSecondaryColumns() {\n return this.secondaryColumns ? this.secondaryColumns.slice() : null;\n }\n getAllColumnsForQuickFilter() {\n return this.columnsForQuickFilter;\n }\n // + moveColumnController\n getAllGridColumns() {\n return this.gridColumns;\n }\n isEmpty() {\n return missingOrEmpty(this.gridColumns);\n }\n isRowGroupEmpty() {\n return missingOrEmpty(this.rowGroupColumns);\n }\n setColumnVisible(key, visible, source = \"api\") {\n this.setColumnsVisible([key], visible, source);\n }\n setColumnsVisible(keys, visible = false, source = \"api\") {\n this.applyColumnState({\n state: keys.map(key => ({\n colId: typeof key === 'string' ? key : key.getColId(),\n hide: !visible,\n })),\n }, source);\n }\n setColumnPinned(key, pinned, source = \"api\") {\n if (key) {\n this.setColumnsPinned([key], pinned, source);\n }\n }\n setColumnsPinned(keys, pinned, source = \"api\") {\n if (this.gridOptionsService.isDomLayout('print')) {\n console.warn(`AG Grid: Changing the column pinning status is not allowed with domLayout='print'`);\n return;\n }\n this.columnAnimationService.start();\n let actualPinned;\n if (pinned === true || pinned === 'left') {\n actualPinned = 'left';\n }\n else if (pinned === 'right') {\n actualPinned = 'right';\n }\n else {\n actualPinned = null;\n }\n this.actionOnGridColumns(keys, (col) => {\n if (col.getPinned() !== actualPinned) {\n col.setPinned(actualPinned);\n return true;\n }\n return false;\n }, source, () => {\n const event = {\n type: Events.EVENT_COLUMN_PINNED,\n pinned: actualPinned,\n column: null,\n columns: null,\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 actionOnGridColumns(// 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 if (missingOrEmpty(keys)) {\n return;\n }\n const updatedColumns = [];\n keys.forEach((key) => {\n const 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 const 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 const event = createEvent();\n event.columns = updatedColumns;\n event.column = updatedColumns.length === 1 ? updatedColumns[0] : null;\n this.eventService.dispatchEvent(event);\n }\n }\n getDisplayedColBefore(col) {\n const allDisplayedColumns = this.getAllDisplayedColumns();\n const 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 getDisplayedColAfter(col) {\n const allDisplayedColumns = this.getAllDisplayedColumns();\n const oldIndex = allDisplayedColumns.indexOf(col);\n if (oldIndex < (allDisplayedColumns.length - 1)) {\n return allDisplayedColumns[oldIndex + 1];\n }\n return null;\n }\n getDisplayedGroupAfter(columnGroup) {\n return this.getDisplayedGroupAtDirection(columnGroup, 'After');\n }\n getDisplayedGroupBefore(columnGroup) {\n return this.getDisplayedGroupAtDirection(columnGroup, 'Before');\n }\n getDisplayedGroupAtDirection(columnGroup, direction) {\n // pick the last displayed column in this group\n const requiredLevel = columnGroup.getProvidedColumnGroup().getLevel() + columnGroup.getPaddingLevel();\n const colGroupLeafColumns = columnGroup.getDisplayedLeafColumns();\n const col = direction === 'After' ? last(colGroupLeafColumns) : colGroupLeafColumns[0];\n const getDisplayColMethod = `getDisplayedCol${direction}`;\n while (true) {\n // keep moving to the next col, until we get to another group\n const column = this[getDisplayColMethod](col);\n if (!column) {\n return null;\n }\n const groupPointer = this.getColumnGroupAtLevel(column, requiredLevel);\n if (groupPointer !== columnGroup) {\n return groupPointer;\n }\n }\n }\n getColumnGroupAtLevel(column, level) {\n // get group at same level as the one we are looking for\n let groupPointer = column.getParent();\n let originalGroupLevel;\n let groupPointerLevel;\n while (true) {\n const 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 isPinningLeft() {\n return this.displayedColumnsLeft.length > 0;\n }\n isPinningRight() {\n return this.displayedColumnsRight.length > 0;\n }\n getPrimaryAndSecondaryAndAutoColumns() {\n return [].concat(...[\n this.primaryColumns || [],\n this.groupAutoColumns || [],\n this.secondaryColumns || [],\n ]);\n }\n createStateItemFromColumn(column) {\n const rowGroupIndex = column.isRowGroupActive() ? this.rowGroupColumns.indexOf(column) : null;\n const pivotIndex = column.isPivotActive() ? this.pivotColumns.indexOf(column) : null;\n const aggFunc = column.isValueActive() ? column.getAggFunc() : null;\n const sort = column.getSort() != null ? column.getSort() : null;\n const sortIndex = column.getSortIndex() != null ? column.getSortIndex() : null;\n const flex = column.getFlex() != null && column.getFlex() > 0 ? column.getFlex() : null;\n const res = {\n colId: column.getColId(),\n width: column.getActualWidth(),\n hide: !column.isVisible(),\n pinned: column.getPinned(),\n sort,\n sortIndex,\n aggFunc,\n rowGroup: column.isRowGroupActive(),\n rowGroupIndex,\n pivot: column.isPivotActive(),\n pivotIndex: pivotIndex,\n flex\n };\n return res;\n }\n getColumnState() {\n if (missing(this.primaryColumns) || !this.isAlive()) {\n return [];\n }\n const colsForState = this.getPrimaryAndSecondaryAndAutoColumns();\n const res = colsForState.map(this.createStateItemFromColumn.bind(this));\n this.orderColumnStateList(res);\n return res;\n }\n orderColumnStateList(columnStateList) {\n // for fast looking, store the index of each column\n const colIdToGridIndexMap = convertToMap(this.gridColumns.map((col, index) => [col.getColId(), index]));\n columnStateList.sort((itemA, itemB) => {\n const posA = colIdToGridIndexMap.has(itemA.colId) ? colIdToGridIndexMap.get(itemA.colId) : -1;\n const posB = colIdToGridIndexMap.has(itemB.colId) ? colIdToGridIndexMap.get(itemB.colId) : -1;\n return posA - posB;\n });\n }\n resetColumnState(source = \"api\") {\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 // we can't use 'allColumns' as the order might of messed up, so get the primary ordered list\n const primaryColumns = this.getColumnsFromTree(this.primaryColumnTree);\n const 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 let letRowGroupIndex = 1000;\n let letPivotIndex = 1000;\n let colsToProcess = [];\n if (this.groupAutoColumns) {\n colsToProcess = colsToProcess.concat(this.groupAutoColumns);\n }\n if (primaryColumns) {\n colsToProcess = colsToProcess.concat(primaryColumns);\n }\n colsToProcess.forEach(column => {\n const stateItem = this.getColumnStateFromColDef(column);\n if (missing(stateItem.rowGroupIndex) && stateItem.rowGroup) {\n stateItem.rowGroupIndex = letRowGroupIndex++;\n }\n if (missing(stateItem.pivotIndex) && stateItem.pivot) {\n stateItem.pivotIndex = letPivotIndex++;\n }\n columnStates.push(stateItem);\n });\n this.applyColumnState({ state: columnStates, applyOrder: true }, source);\n }\n getColumnStateFromColDef(column) {\n const getValueOrNull = (a, b) => a != null ? a : b != null ? b : null;\n const colDef = column.getColDef();\n const sort = getValueOrNull(colDef.sort, colDef.initialSort);\n const sortIndex = getValueOrNull(colDef.sortIndex, colDef.initialSortIndex);\n const hide = getValueOrNull(colDef.hide, colDef.initialHide);\n const pinned = getValueOrNull(colDef.pinned, colDef.initialPinned);\n const width = getValueOrNull(colDef.width, colDef.initialWidth);\n const flex = getValueOrNull(colDef.flex, colDef.initialFlex);\n let rowGroupIndex = getValueOrNull(colDef.rowGroupIndex, colDef.initialRowGroupIndex);\n let rowGroup = getValueOrNull(colDef.rowGroup, colDef.initialRowGroup);\n if (rowGroupIndex == null && (rowGroup == null || rowGroup == false)) {\n rowGroupIndex = null;\n rowGroup = null;\n }\n let pivotIndex = getValueOrNull(colDef.pivotIndex, colDef.initialPivotIndex);\n let pivot = getValueOrNull(colDef.pivot, colDef.initialPivot);\n if (pivotIndex == null && (pivot == null || pivot == false)) {\n pivotIndex = null;\n pivot = null;\n }\n const aggFunc = getValueOrNull(colDef.aggFunc, colDef.initialAggFunc);\n return {\n colId: column.getColId(),\n sort,\n sortIndex,\n hide,\n pinned,\n width,\n flex,\n rowGroup,\n rowGroupIndex,\n pivot,\n pivotIndex,\n aggFunc,\n };\n }\n applyColumnState(params, source) {\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 const applyStates = (states, existingColumns, getById) => {\n const dispatchEventsFunc = this.compareColumnStatesAndDispatchEvents(source);\n this.autoGroupsNeedBuilding = true;\n // at the end below, this list will have all columns we got no state for\n const columnsWithNoState = existingColumns.slice();\n const rowGroupIndexes = {};\n const pivotIndexes = {};\n const autoGroupColumnStates = [];\n // If pivoting is modified, these are the states we try to reapply after\n // the secondary columns are re-generated\n const unmatchedAndAutoStates = [];\n let unmatchedCount = 0;\n const previousRowGroupCols = this.rowGroupColumns.slice();\n const previousPivotCols = this.pivotColumns.slice();\n states.forEach((state) => {\n const colId = state.colId || '';\n // auto group columns are re-created so deferring syncing with ColumnState\n const isAutoGroupColumn = colId.startsWith(GROUP_AUTO_COLUMN_ID);\n if (isAutoGroupColumn) {\n autoGroupColumnStates.push(state);\n unmatchedAndAutoStates.push(state);\n return;\n }\n const column = getById(colId);\n if (!column) {\n unmatchedAndAutoStates.push(state);\n unmatchedCount += 1;\n }\n else {\n this.syncColumnWithStateItem(column, state, params.defaultState, rowGroupIndexes, pivotIndexes, false, source);\n removeFromArray(columnsWithNoState, column);\n }\n });\n // anything left over, we got no data for, so add in the column as non-value, non-rowGroup and hidden\n const applyDefaultsFunc = (col) => this.syncColumnWithStateItem(col, null, params.defaultState, rowGroupIndexes, pivotIndexes, false, source);\n columnsWithNoState.forEach(applyDefaultsFunc);\n // sort the lists according to the indexes that were provided\n const comparator = (indexes, oldList, colA, colB) => {\n const indexA = indexes[colA.getId()];\n const indexB = indexes[colB.getId()];\n const aHasIndex = indexA != null;\n const 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 const oldIndexA = oldList.indexOf(colA);\n const oldIndexB = oldList.indexOf(colB);\n const aHasOldIndex = oldIndexA >= 0;\n const 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 const autoGroupColsCopy = this.groupAutoColumns ? this.groupAutoColumns.slice() : [];\n autoGroupColumnStates.forEach(stateItem => {\n const 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 dispatchEventsFunc(); // Will trigger secondary column changes if pivoting modified\n return { unmatchedAndAutoStates, unmatchedCount };\n };\n this.columnAnimationService.start();\n let { unmatchedAndAutoStates, unmatchedCount, } = applyStates(params.state || [], this.primaryColumns || [], (id) => this.getPrimaryColumn(id));\n // If there are still states left over, see if we can apply them to newly generated\n // secondary or auto columns. Also if defaults exist, ensure they are applied to secondary cols\n if (unmatchedAndAutoStates.length > 0 || exists(params.defaultState)) {\n unmatchedCount = applyStates(unmatchedAndAutoStates, this.secondaryColumns || [], (id) => this.getSecondaryColumn(id)).unmatchedCount;\n }\n this.columnAnimationService.finish();\n return unmatchedCount === 0; // Successful if no states unaccounted for\n }\n applyOrderAfterApplyState(params) {\n if (!params.applyOrder || !params.state) {\n return;\n }\n let newOrder = [];\n const processedColIds = {};\n params.state.forEach(item => {\n if (!item.colId || processedColIds[item.colId]) {\n return;\n }\n const col = this.gridColumnsMap[item.colId];\n if (col) {\n newOrder.push(col);\n processedColIds[item.colId] = true;\n }\n });\n // add in all other columns\n let autoGroupInsertIndex = 0;\n this.gridColumns.forEach(col => {\n const colId = col.getColId();\n const alreadyProcessed = processedColIds[colId] != null;\n if (alreadyProcessed) {\n return;\n }\n const isAutoGroupCol = colId.startsWith(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.placeLockedColumns(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 compareColumnStatesAndDispatchEvents(source) {\n const startState = {\n rowGroupColumns: this.rowGroupColumns.slice(),\n pivotColumns: this.pivotColumns.slice(),\n valueColumns: this.valueColumns.slice()\n };\n const columnStateBefore = this.getColumnState();\n const columnStateBeforeMap = {};\n columnStateBefore.forEach(col => {\n columnStateBeforeMap[col.colId] = col;\n });\n return () => {\n const colsForState = this.getPrimaryAndSecondaryAndAutoColumns();\n // dispatches generic ColumnEvents where all columns are returned rather than what has changed\n const dispatchWhenListsDifferent = (eventType, colsBefore, colsAfter, idMapper) => {\n const beforeList = colsBefore.map(idMapper);\n const afterList = colsAfter.map(idMapper);\n const unchanged = areEqual(beforeList, afterList);\n if (unchanged) {\n return;\n }\n // returning all columns rather than what has changed!\n const event = {\n type: eventType,\n columns: colsAfter,\n column: colsAfter.length === 1 ? colsAfter[0] : null,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n // determines which columns have changed according to supplied predicate\n const getChangedColumns = (changedPredicate) => {\n const changedColumns = [];\n colsForState.forEach(column => {\n const colStateBefore = columnStateBeforeMap[column.getColId()];\n if (colStateBefore && changedPredicate(colStateBefore, column)) {\n changedColumns.push(column);\n }\n });\n return changedColumns;\n };\n const columnIdMapper = (c) => c.getColId();\n dispatchWhenListsDifferent(Events.EVENT_COLUMN_ROW_GROUP_CHANGED, startState.rowGroupColumns, this.rowGroupColumns, columnIdMapper);\n dispatchWhenListsDifferent(Events.EVENT_COLUMN_PIVOT_CHANGED, startState.pivotColumns, this.pivotColumns, columnIdMapper);\n const valueChangePredicate = (cs, c) => {\n const oldActive = cs.aggFunc != null;\n const activeChanged = oldActive != c.isValueActive();\n // we only check aggFunc if the agg is active\n const aggFuncChanged = oldActive && cs.aggFunc != c.getAggFunc();\n return activeChanged || aggFuncChanged;\n };\n const 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.dispatchColumnChangedEvent(Events.EVENT_COLUMN_VALUE_CHANGED, this.valueColumns, source);\n }\n const resizeChangePredicate = (cs, c) => cs.width != c.getActualWidth();\n this.dispatchColumnResizedEvent(getChangedColumns(resizeChangePredicate), true, source);\n const pinnedChangePredicate = (cs, c) => cs.pinned != c.getPinned();\n this.dispatchColumnPinnedEvent(getChangedColumns(pinnedChangePredicate), source);\n const visibilityChangePredicate = (cs, c) => cs.hide == c.isVisible();\n this.dispatchColumnVisibleEvent(getChangedColumns(visibilityChangePredicate), source);\n const sortChangePredicate = (cs, c) => cs.sort != c.getSort() || cs.sortIndex != c.getSortIndex();\n if (getChangedColumns(sortChangePredicate).length > 0) {\n this.sortController.dispatchSortChangedEvents(source);\n }\n // special handling for moved column events\n this.normaliseColumnMovedEventForColumnState(columnStateBefore, source);\n };\n }\n getCommonValue(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 const firstValue = valueGetter(cols[0]);\n for (let 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 normaliseColumnMovedEventForColumnState(colStateBefore, source) {\n // we are only interested in columns that were both present and visible before and after\n const colStateAfter = this.getColumnState();\n const colStateAfterMapped = {};\n colStateAfter.forEach(s => colStateAfterMapped[s.colId] = s);\n // get id's of cols in both before and after lists\n const colsIntersectIds = {};\n colStateBefore.forEach(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 const beforeFiltered = colStateBefore.filter(c => colsIntersectIds[c.colId]);\n const afterFiltered = colStateAfter.filter(c => colsIntersectIds[c.colId]);\n // see if any cols are in a different location\n const movedColumns = [];\n afterFiltered.forEach((csAfter, index) => {\n const csBefore = beforeFiltered && beforeFiltered[index];\n if (csBefore && csBefore.colId !== csAfter.colId) {\n const gridCol = this.getGridColumn(csBefore.colId);\n if (gridCol) {\n movedColumns.push(gridCol);\n }\n }\n });\n if (!movedColumns.length) {\n return;\n }\n this.dispatchColumnMovedEvent({ movedColumns, source, finished: true });\n }\n syncColumnWithStateItem(column, stateItem, defaultState, rowGroupIndexes, pivotIndexes, autoCol, source) {\n if (!column) {\n return;\n }\n const getValue = (key1, key2) => {\n const obj = { value1: undefined, value2: undefined };\n let 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 const hide = getValue('hide').value1;\n if (hide !== undefined) {\n column.setVisible(!hide, source);\n }\n // sets pinned to 'left' or 'right'\n const 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 const minColWidth = this.columnUtils.calculateColMinWidth(column.getColDef());\n // flex\n const 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 const 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 const width = getValue('width').value1;\n if (width != null) {\n if (minColWidth != null && width >= minColWidth) {\n column.setActualWidth(width, source);\n }\n }\n }\n const sort = getValue('sort').value1;\n if (sort !== undefined) {\n if (sort === 'desc' || sort === 'asc') {\n column.setSort(sort, source);\n }\n else {\n column.setSort(undefined, source);\n }\n }\n const 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 or secondary cols\n if (autoCol || !column.isPrimary()) {\n return;\n }\n const 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 const { value1: rowGroup, value2: rowGroupIndex } = getValue('rowGroup', 'rowGroupIndex');\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 const { value1: pivot, value2: pivotIndex } = getValue('pivot', 'pivotIndex');\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 getGridColumns(keys) {\n return this.getColumns(keys, this.getGridColumn.bind(this));\n }\n getColumns(keys, columnLookupCallback) {\n const foundColumns = [];\n if (keys) {\n keys.forEach((key) => {\n const column = columnLookupCallback(key);\n if (column) {\n foundColumns.push(column);\n }\n });\n }\n return foundColumns;\n }\n // used by growGroupPanel\n getColumnWithValidation(key) {\n if (key == null) {\n return null;\n }\n const column = this.getGridColumn(key);\n if (!column) {\n console.warn('AG Grid: could not find column ' + key);\n }\n return column;\n }\n getPrimaryColumn(key) {\n if (!this.primaryColumns) {\n return null;\n }\n return this.getColumn(key, this.primaryColumns, this.primaryColumnsMap);\n }\n getGridColumn(key) {\n return this.getColumn(key, this.gridColumns, this.gridColumnsMap);\n }\n getSecondaryColumn(key) {\n if (!this.secondaryColumns) {\n return null;\n }\n return this.getColumn(key, this.secondaryColumns, this.secondaryColumnsMap);\n }\n getColumn(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 (let 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 getSourceColumnsForGroupColumn(groupCol) {\n const sourceColumnId = groupCol.getColDef().showRowGroup;\n if (!sourceColumnId) {\n return null;\n }\n if (sourceColumnId === true) {\n return this.rowGroupColumns.slice(0);\n }\n const column = this.getPrimaryColumn(sourceColumnId);\n return column ? [column] : null;\n }\n getAutoColumn(key) {\n if (!this.groupAutoColumns ||\n !exists(this.groupAutoColumns) ||\n missing(this.groupAutoColumns)) {\n return null;\n }\n return this.groupAutoColumns.find(groupCol => this.columnsMatch(groupCol, key)) || null;\n }\n columnsMatch(column, key) {\n const columnMatches = column === key;\n const colDefMatches = column.getColDef() === key;\n const idMatches = column.getColId() == key;\n return columnMatches || colDefMatches || idMatches;\n }\n getDisplayNameForColumn(column, location, includeAggFunc = false) {\n if (!column) {\n return null;\n }\n const headerName = this.getHeaderName(column.getColDef(), column, null, null, location);\n if (includeAggFunc) {\n return this.wrapHeaderNameWithAggFunc(column, headerName);\n }\n return headerName;\n }\n getDisplayNameForProvidedColumnGroup(columnGroup, providedColumnGroup, location) {\n const colGroupDef = providedColumnGroup ? providedColumnGroup.getColGroupDef() : null;\n if (colGroupDef) {\n return this.getHeaderName(colGroupDef, null, columnGroup, providedColumnGroup, location);\n }\n return null;\n }\n getDisplayNameForColumnGroup(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 getHeaderName(colDef, column, columnGroup, providedColumnGroup, location) {\n const headerValueGetter = colDef.headerValueGetter;\n if (headerValueGetter) {\n const params = {\n colDef: colDef,\n column: column,\n columnGroup: columnGroup,\n providedColumnGroup: providedColumnGroup,\n location: location,\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context\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 wrapHeaderNameWithAggFunc(column, headerName) {\n if (this.gridOptionsService.is('suppressAggFuncInHeader')) {\n return headerName;\n }\n // only columns with aggregation active can have aggregations\n const pivotValueColumn = column.getColDef().pivotValueColumn;\n const pivotActiveOnThisColumn = exists(pivotValueColumn);\n let aggFunc = null;\n let aggFuncFound;\n // otherwise we have a measure that is active, and we are doing aggregation on it\n if (pivotActiveOnThisColumn) {\n const isCollapsedHeaderEnabled = this.gridOptionsService.is('removePivotHeaderRowWhenSingleValueColumn') && this.valueColumns.length === 1;\n const isTotalColumn = column.getColDef().pivotTotalColumnIds !== undefined;\n if (isCollapsedHeaderEnabled && !isTotalColumn) {\n return headerName; // Skip decorating the header - in this case the label is the pivot key, not the value col\n }\n aggFunc = pivotValueColumn ? pivotValueColumn.getAggFunc() : null;\n aggFuncFound = true;\n }\n else {\n const measureActive = column.isValueActive();\n const 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 const aggFuncString = (typeof aggFunc === 'string') ? aggFunc : 'func';\n const localeTextFunc = this.localeService.getLocaleTextFunc();\n const 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 getColumnGroup(colId, partId) {\n if (!colId) {\n return null;\n }\n if (colId instanceof ColumnGroup) {\n return colId;\n }\n const allColumnGroups = this.getAllDisplayedTrees();\n const checkPartId = typeof partId === 'number';\n let result = null;\n this.columnUtils.depthFirstAllColumnTreeSearch(allColumnGroups, (child) => {\n if (child instanceof ColumnGroup) {\n const columnGroup = child;\n let matched;\n if (checkPartId) {\n matched = colId === columnGroup.getGroupId() && partId === columnGroup.getPartId();\n }\n else {\n matched = colId === columnGroup.getGroupId();\n }\n if (matched) {\n result = columnGroup;\n }\n }\n });\n return result;\n }\n isReady() {\n return this.ready;\n }\n extractValueColumns(source, oldPrimaryColumns) {\n this.valueColumns = this.extractColumns(oldPrimaryColumns, this.valueColumns, (col, flag) => col.setValueActive(flag, source), \n // aggFunc doesn't have index variant, cos order of value cols doesn't matter, so always return null\n () => undefined, () => undefined, \n // aggFunc is a string, so return it's existence\n (colDef) => {\n const 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 }, (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(col => {\n const 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 extractRowGroupColumns(source, oldPrimaryColumns) {\n this.rowGroupColumns = this.extractColumns(oldPrimaryColumns, this.rowGroupColumns, (col, flag) => col.setRowGroupActive(flag, source), (colDef) => colDef.rowGroupIndex, (colDef) => colDef.initialRowGroupIndex, (colDef) => colDef.rowGroup, (colDef) => colDef.initialRowGroup);\n }\n extractColumns(oldPrimaryColumns = [], previousCols = [], setFlagFunc, getIndexFunc, getInitialIndexFunc, getValueFunc, getInitialValueFunc) {\n const colsWithIndex = [];\n const colsWithValue = [];\n // go though all cols.\n // if value, change\n // if default only, change only if new\n (this.primaryColumns || []).forEach(col => {\n const colIsNew = oldPrimaryColumns.indexOf(col) < 0;\n const colDef = col.getColDef();\n const value = attrToBoolean(getValueFunc(colDef));\n const initialValue = attrToBoolean(getInitialValueFunc(colDef));\n const index = attrToNumber(getIndexFunc(colDef));\n const initialIndex = attrToNumber(getInitialIndexFunc(colDef));\n let include;\n const valuePresent = value !== undefined;\n const indexPresent = index !== undefined;\n const initialValuePresent = initialValue !== undefined;\n const 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 const useIndex = colIsNew ? (index != null || initialIndex != null) : index != null;\n useIndex ? colsWithIndex.push(col) : colsWithValue.push(col);\n }\n });\n const getIndexForCol = (col) => {\n const index = getIndexFunc(col.getColDef());\n const defaultIndex = getInitialIndexFunc(col.getColDef());\n return index != null ? index : defaultIndex;\n };\n // sort cols with index, and add these first\n colsWithIndex.sort((colA, colB) => {\n const indexA = getIndexForCol(colA);\n const indexB = getIndexForCol(colB);\n if (indexA === indexB) {\n return 0;\n }\n if (indexA < indexB) {\n return -1;\n }\n return 1;\n });\n const 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(col => {\n if (colsWithValue.indexOf(col) >= 0) {\n res.push(col);\n }\n });\n // lastly put in all remaining cols\n colsWithValue.forEach(col => {\n if (res.indexOf(col) < 0) {\n res.push(col);\n }\n });\n // set flag=false for removed cols\n previousCols.forEach(col => {\n if (res.indexOf(col) < 0) {\n setFlagFunc(col, false);\n }\n });\n // set flag=true for newly added cols\n res.forEach(col => {\n if (previousCols.indexOf(col) < 0) {\n setFlagFunc(col, true);\n }\n });\n return res;\n }\n extractPivotColumns(source, oldPrimaryColumns) {\n this.pivotColumns = this.extractColumns(oldPrimaryColumns, this.pivotColumns, (col, flag) => col.setPivotActive(flag, source), (colDef) => colDef.pivotIndex, (colDef) => colDef.initialPivotIndex, (colDef) => colDef.pivot, (colDef) => colDef.initialPivot);\n }\n resetColumnGroupState(source = \"api\") {\n const stateItems = [];\n this.columnUtils.depthFirstOriginalTreeSearch(null, this.primaryColumnTree, child => {\n if (child instanceof ProvidedColumnGroup) {\n const colGroupDef = child.getColGroupDef();\n const 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 getColumnGroupState() {\n const columnGroupState = [];\n this.columnUtils.depthFirstOriginalTreeSearch(null, this.gridBalancedTree, node => {\n if (node instanceof ProvidedColumnGroup) {\n columnGroupState.push({\n groupId: node.getGroupId(),\n open: node.isExpanded()\n });\n }\n });\n return columnGroupState;\n }\n setColumnGroupState(stateItems, source = \"api\") {\n this.columnAnimationService.start();\n const impactedGroups = [];\n stateItems.forEach(stateItem => {\n const groupKey = stateItem.groupId;\n const newValue = stateItem.open;\n const 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(providedColumnGroup => {\n const event = {\n type: Events.EVENT_COLUMN_GROUP_OPENED,\n columnGroup: providedColumnGroup\n };\n this.eventService.dispatchEvent(event);\n });\n this.columnAnimationService.finish();\n }\n // called by headerRenderer - when a header is opened or closed\n setColumnGroupOpened(key, newValue, source = \"api\") {\n let 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 getProvidedColumnGroup(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 let res = null;\n this.columnUtils.depthFirstOriginalTreeSearch(null, this.gridBalancedTree, node => {\n if (node instanceof ProvidedColumnGroup) {\n if (node.getId() === key) {\n res = node;\n }\n }\n });\n return res;\n }\n calculateColumnsForDisplay() {\n let columnsForDisplay;\n if (this.pivotMode && missing(this.secondaryColumns)) {\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(column => {\n const isAutoGroupCol = this.groupAutoColumns && includes(this.groupAutoColumns, column);\n const 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(column => {\n // keep col if a) it's auto-group or b) it's visible\n const isAutoGroupCol = this.groupAutoColumns && includes(this.groupAutoColumns, column);\n return isAutoGroupCol || column.isVisible();\n });\n }\n return columnsForDisplay;\n }\n checkColSpanActiveInCols(columns) {\n let result = false;\n columns.forEach(col => {\n if (exists(col.getColDef().colSpan)) {\n result = true;\n }\n });\n return result;\n }\n calculateColumnsForGroupDisplay() {\n this.groupDisplayColumns = [];\n this.groupDisplayColumnsMap = {};\n const checkFunc = (col) => {\n const colDef = col.getColDef();\n const underlyingColumn = colDef.showRowGroup;\n if (colDef && exists(underlyingColumn)) {\n this.groupDisplayColumns.push(col);\n if (typeof underlyingColumn === 'string') {\n this.groupDisplayColumnsMap[underlyingColumn] = col;\n }\n else if (underlyingColumn === true) {\n this.getRowGroupColumns().forEach(rowGroupCol => {\n this.groupDisplayColumnsMap[rowGroupCol.getId()] = col;\n });\n }\n }\n };\n this.gridColumns.forEach(checkFunc);\n }\n getGroupDisplayColumns() {\n return this.groupDisplayColumns;\n }\n getGroupDisplayColumnForGroup(rowGroupColumnId) {\n return this.groupDisplayColumnsMap[rowGroupColumnId];\n }\n updateDisplayedColumns(source) {\n const columnsForDisplay = this.calculateColumnsForDisplay();\n this.buildDisplayedTrees(columnsForDisplay);\n // also called when group opened/closed\n this.updateGroupsAndDisplayedColumns(source);\n // also called when group opened/closed\n this.setFirstRightAndLastLeftPinned(source);\n }\n isSecondaryColumnsPresent() {\n return exists(this.secondaryColumns);\n }\n setSecondaryColumns(colDefs, source = \"api\") {\n const newColsPresent = colDefs && colDefs.length > 0;\n // if not cols passed, and we had no cols anyway, then do nothing\n if (!newColsPresent && missing(this.secondaryColumns)) {\n return;\n }\n if (newColsPresent) {\n this.processSecondaryColumnDefinitions(colDefs);\n const balancedTreeResult = this.columnFactory.createColumnTree(colDefs, false, this.secondaryBalancedTree || this.previousSecondaryColumns || undefined);\n this.destroyOldColumns(this.secondaryBalancedTree, balancedTreeResult.columnTree);\n this.secondaryBalancedTree = balancedTreeResult.columnTree;\n this.secondaryHeaderRowCount = balancedTreeResult.treeDept + 1;\n this.secondaryColumns = this.getColumnsFromTree(this.secondaryBalancedTree);\n this.secondaryColumnsMap = {};\n this.secondaryColumns.forEach(col => this.secondaryColumnsMap[col.getId()] = col);\n this.previousSecondaryColumns = null;\n }\n else {\n this.previousSecondaryColumns = this.secondaryBalancedTree;\n this.secondaryBalancedTree = null;\n this.secondaryHeaderRowCount = -1;\n this.secondaryColumns = null;\n this.secondaryColumnsMap = {};\n }\n this.updateGridColumns();\n this.updateDisplayedColumns(source);\n }\n processSecondaryColumnDefinitions(colDefs) {\n const columnCallback = this.gridOptionsService.get('processPivotResultColDef') || this.gridOptionsService.get('processSecondaryColDef');\n const groupCallback = this.gridOptionsService.get('processPivotResultColGroupDef') || this.gridOptionsService.get('processSecondaryColGroupDef');\n if (!columnCallback && !groupCallback) {\n return undefined;\n }\n const searchForColDefs = (colDefs2) => {\n colDefs2.forEach((abstractColDef) => {\n const isGroup = exists(abstractColDef.children);\n if (isGroup) {\n const colGroupDef = abstractColDef;\n if (groupCallback) {\n groupCallback(colGroupDef);\n }\n searchForColDefs(colGroupDef.children);\n }\n else {\n const colDef = abstractColDef;\n if (columnCallback) {\n columnCallback(colDef);\n }\n }\n });\n };\n if (colDefs) {\n searchForColDefs(colDefs);\n }\n }\n // called from: applyColumnState, setColumnDefs, setSecondaryColumns\n updateGridColumns() {\n const prevGridCols = this.gridBalancedTree;\n if (this.gridColsArePrimary) {\n this.lastPrimaryOrder = this.gridColumns;\n }\n else {\n this.lastSecondaryOrder = this.gridColumns;\n }\n let sortOrderToRecover;\n if (this.secondaryColumns && this.secondaryBalancedTree) {\n const hasSameColumns = this.secondaryColumns.every((col) => {\n return this.gridColumnsMap[col.getColId()] !== undefined;\n });\n this.gridBalancedTree = this.secondaryBalancedTree.slice();\n this.gridHeaderRowCount = this.secondaryHeaderRowCount;\n this.gridColumns = this.secondaryColumns.slice();\n this.gridColsArePrimary = false;\n // If the current columns are the same or a subset of the previous\n // we keep the previous order, otherwise we go back to the order the pivot\n // cols are generated in\n if (hasSameColumns) {\n sortOrderToRecover = this.lastSecondaryOrder;\n }\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 cols\n sortOrderToRecover = this.lastPrimaryOrder;\n }\n // create the new auto columns\n const areAutoColsChanged = this.createGroupAutoColumnsIfNeeded();\n // if auto group cols have changed, and we have a sort order, we need to move auto cols to the start\n if (areAutoColsChanged && sortOrderToRecover) {\n const groupAutoColsMap = convertToMap(this.groupAutoColumns.map(col => [col, true]));\n // if group columns has changed, we don't preserve the group column order, so remove them from the old order\n sortOrderToRecover = sortOrderToRecover.filter(col => !groupAutoColsMap.has(col));\n // and add them to the start of the order\n sortOrderToRecover = [...this.groupAutoColumns, ...sortOrderToRecover];\n }\n this.addAutoGroupToGridColumns();\n this.orderGridColsLike(sortOrderToRecover);\n this.gridColumns = this.placeLockedColumns(this.gridColumns);\n this.calculateColumnsForGroupDisplay();\n this.refreshQuickFilterColumns();\n this.clearDisplayedAndViewportColumns();\n this.colSpanActive = this.checkColSpanActiveInCols(this.gridColumns);\n this.gridColumnsMap = {};\n this.gridColumns.forEach(col => this.gridColumnsMap[col.getId()] = col);\n this.setAutoHeightActive();\n if (!areEqual(prevGridCols, this.gridBalancedTree)) {\n const event = {\n type: Events.EVENT_GRID_COLUMNS_CHANGED\n };\n this.eventService.dispatchEvent(event);\n }\n }\n setAutoHeightActive() {\n this.autoHeightActive = this.gridColumns.filter(col => col.isAutoHeight()).length > 0;\n if (this.autoHeightActive) {\n this.autoHeightActiveAtLeastOnce = true;\n const supportedRowModel = this.gridOptionsService.isRowModelType('clientSide') || this.gridOptionsService.isRowModelType('serverSide');\n if (!supportedRowModel) {\n const message = 'AG Grid - autoHeight columns only work with Client Side Row Model and Server Side Row Model.';\n doOnce(() => console.warn(message), 'autoHeightActive.wrongRowModel');\n }\n }\n }\n orderGridColsLike(colsOrder) {\n if (missing(colsOrder)) {\n return;\n }\n const lastOrderMapped = convertToMap(colsOrder.map((col, index) => [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 let noColsFound = true;\n this.gridColumns.forEach(col => {\n if (lastOrderMapped.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 const gridColsMap = convertToMap(this.gridColumns.map(col => [col, true]));\n const oldColsOrdered = colsOrder.filter(col => gridColsMap.has(col));\n const oldColsMap = convertToMap(oldColsOrdered.map(col => [col, true]));\n const newColsOrdered = this.gridColumns.filter(col => !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 const newGridColumns = oldColsOrdered.slice();\n newColsOrdered.forEach(newCol => {\n let 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 const siblings = [];\n while (!siblings.length && parent) {\n const leafCols = parent.getLeafColumns();\n leafCols.forEach(leafCol => {\n const presentInNewGriColumns = newGridColumns.indexOf(leafCol) >= 0;\n const 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 const indexes = siblings.map(col => newGridColumns.indexOf(col));\n const lastIndex = Math.max(...indexes);\n insertIntoArray(newGridColumns, newCol, lastIndex + 1);\n });\n this.gridColumns = newGridColumns;\n }\n isPrimaryColumnGroupsPresent() {\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 refreshQuickFilterColumns() {\n var _a;\n let columnsForQuickFilter = (_a = (this.isPivotMode() ? this.secondaryColumns : this.primaryColumns)) !== null && _a !== void 0 ? _a : [];\n if (this.groupAutoColumns) {\n columnsForQuickFilter = columnsForQuickFilter.concat(this.groupAutoColumns);\n }\n this.columnsForQuickFilter = this.gridOptionsService.is('includeHiddenColumnsInQuickFilter')\n ? columnsForQuickFilter\n : columnsForQuickFilter.filter(col => col.isVisible() || col.isRowGroupActive());\n }\n placeLockedColumns(cols) {\n const left = [];\n const normal = [];\n const right = [];\n cols.forEach((col) => {\n const position = col.getColDef().lockPosition;\n if (position === 'right') {\n right.push(col);\n }\n else if (position === 'left' || position === true) {\n left.push(col);\n }\n else {\n normal.push(col);\n }\n });\n return [...left, ...normal, ...right];\n }\n addAutoGroupToGridColumns() {\n if (missing(this.groupAutoColumns)) {\n this.destroyOldColumns(this.groupAutoColsBalancedTree);\n this.groupAutoColsBalancedTree = null;\n return;\n }\n this.gridColumns = this.groupAutoColumns ? this.groupAutoColumns.concat(this.gridColumns) : this.gridColumns;\n const newAutoColsTree = this.columnFactory.createForAutoGroups(this.groupAutoColumns, this.gridBalancedTree);\n this.destroyOldColumns(this.groupAutoColsBalancedTree, newAutoColsTree);\n this.groupAutoColsBalancedTree = newAutoColsTree;\n this.gridBalancedTree = newAutoColsTree.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 clearDisplayedAndViewportColumns() {\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 this.headerViewportColumns = [];\n this.viewportColumnsHash = '';\n }\n updateGroupsAndDisplayedColumns(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 const event = {\n type: Events.EVENT_DISPLAYED_COLUMNS_CHANGED\n };\n this.eventService.dispatchEvent(event);\n }\n deriveDisplayedColumns(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(col => col.isAutoHeight());\n }\n isAutoRowHeightActive() {\n return this.autoHeightActive;\n }\n wasAutoRowHeightEverActive() {\n return this.autoHeightActiveAtLeastOnce;\n }\n joinDisplayedColumns() {\n if (this.gridOptionsService.is('enableRtl')) {\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 setLeftValues(source) {\n this.setLeftValuesOfColumns(source);\n this.setLeftValuesOfGroups();\n }\n setLeftValuesOfColumns(source) {\n if (!this.primaryColumns) {\n return;\n }\n // go through each list of displayed columns\n const allColumns = this.primaryColumns.slice(0);\n // let totalColumnWidth = this.getWidthOfColsInList()\n const doingRtl = this.gridOptionsService.is('enableRtl');\n [\n this.displayedColumnsLeft,\n this.displayedColumnsRight,\n this.displayedColumnsCenter\n ].forEach(columns => {\n if (doingRtl) {\n // when doing RTL, we start at the top most pixel (ie RHS) and work backwards\n let left = this.getWidthOfColsInList(columns);\n columns.forEach(column => {\n left -= column.getActualWidth();\n column.setLeft(left, source);\n });\n }\n else {\n // otherwise normal LTR, we start at zero\n let left = 0;\n columns.forEach(column => {\n column.setLeft(left, source);\n left += 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((column) => {\n column.setLeft(null, source);\n });\n }\n setLeftValuesOfGroups() {\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(columns => {\n columns.forEach(column => {\n if (column instanceof ColumnGroup) {\n const columnGroup = column;\n columnGroup.checkLeft();\n }\n });\n });\n }\n derivedDisplayedColumnsFromDisplayedTree(tree, columns) {\n columns.length = 0;\n this.columnUtils.depthFirstDisplayedColumnTreeSearch(tree, (child) => {\n if (child instanceof Column) {\n columns.push(child);\n }\n });\n }\n extractViewportColumns() {\n if (this.suppressColumnVirtualisation) {\n // no virtualisation, so don't filter\n this.viewportColumnsCenter = this.displayedColumnsCenter;\n this.headerViewportColumnsCenter = this.displayedColumnsCenter;\n }\n else {\n // filter out what should be visible\n this.viewportColumnsCenter = this.displayedColumnsCenter.filter(this.isColumnInRowViewport.bind(this));\n this.headerViewportColumnsCenter = this.displayedColumnsCenter.filter(this.isColumnInHeaderViewport.bind(this));\n }\n this.viewportColumns = this.viewportColumnsCenter\n .concat(this.displayedColumnsLeft)\n .concat(this.displayedColumnsRight);\n this.headerViewportColumns = this.headerViewportColumnsCenter\n .concat(this.displayedColumnsLeft)\n .concat(this.displayedColumnsRight);\n }\n getVirtualHeaderGroupRow(type, dept) {\n let result;\n switch (type) {\n case 'left':\n result = this.viewportRowLeft[dept];\n break;\n case '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 calculateHeaderRows() {\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 const virtualColIds = {};\n this.headerViewportColumns.forEach(col => virtualColIds[col.getId()] = true);\n const testGroup = (children, result, dept) => {\n let returnValue = false;\n for (let i = 0; i < children.length; i++) {\n // see if this item is within viewport\n const child = children[i];\n let 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 const columnGroup = child;\n const 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 extractViewport() {\n const hashColumn = (c) => `${c.getId()}-${c.getPinned() || 'normal'}`;\n this.extractViewportColumns();\n const newHash = this.viewportColumns.map(hashColumn).join('#');\n const changed = this.viewportColumnsHash !== newHash;\n if (changed) {\n this.viewportColumnsHash = newHash;\n this.calculateHeaderRows();\n }\n return changed;\n }\n refreshFlexedColumns(params = {}) {\n const 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 let flexAfterDisplayIndex = -1;\n if (params.resizingCols) {\n params.resizingCols.forEach(col => {\n const indexOfCol = this.displayedColumnsCenter.indexOf(col);\n if (flexAfterDisplayIndex < indexOfCol) {\n flexAfterDisplayIndex = indexOfCol;\n }\n });\n }\n const isColFlex = (col) => {\n const afterResizingCols = this.displayedColumnsCenter.indexOf(col) > flexAfterDisplayIndex;\n return col.getFlex() && afterResizingCols;\n };\n const knownWidthColumns = this.displayedColumnsCenter.filter(col => !isColFlex(col));\n const flexingColumns = this.displayedColumnsCenter.filter(col => isColFlex(col));\n const changedColumns = [];\n if (!flexingColumns.length) {\n return [];\n }\n const flexingColumnSizes = [];\n let spaceForFlexingColumns;\n outer: while (true) {\n const totalFlex = flexingColumns.reduce((count, col) => count + col.getFlex(), 0);\n spaceForFlexingColumns = this.flexViewportWidth - this.getWidthOfColsInList(knownWidthColumns);\n for (let i = 0; i < flexingColumns.length; i++) {\n const col = flexingColumns[i];\n const widthByFlexRule = spaceForFlexingColumns * col.getFlex() / totalFlex;\n let constrainedWidth = 0;\n const minWidth = col.getMinWidth();\n const 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 let remainingSpace = spaceForFlexingColumns;\n flexingColumns.forEach((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.dispatchColumnResizedEvent(changedColumns, true, source, flexingColumns);\n }\n return flexingColumns;\n }\n // called from api\n sizeColumnsToFit(gridWidth, source = \"sizeColumnsToFit\", silent, params) {\n var _a, _b, _c, _d, _e;\n if (this.shouldQueueResizeOperations) {\n this.resizeOperationQueue.push(() => this.sizeColumnsToFit(gridWidth, source, silent, params));\n return;\n }\n const limitsMap = {};\n if (params) {\n (_a = params === null || params === void 0 ? void 0 : params.columnLimits) === null || _a === void 0 ? void 0 : _a.forEach((_a) => {\n var { key } = _a, dimensions = __rest(_a, [\"key\"]);\n limitsMap[typeof key === 'string' ? key : key.getColId()] = dimensions;\n });\n }\n // avoid divide by zero\n const allDisplayedColumns = this.getAllDisplayedColumns();\n const doColumnsAlreadyFit = gridWidth === this.getWidthOfColsInList(allDisplayedColumns);\n if (gridWidth <= 0 || !allDisplayedColumns.length || doColumnsAlreadyFit) {\n return;\n }\n const colsToSpread = [];\n const colsToNotSpread = [];\n allDisplayedColumns.forEach(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 const colsToDispatchEventFor = colsToSpread.slice(0);\n let finishedResizing = false;\n const moveToNotSpread = (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 dispatch resize events after the resize has been done for each column.\n colsToSpread.forEach(column => column.resetActualWidth(source));\n while (!finishedResizing) {\n finishedResizing = true;\n const availablePixels = gridWidth - this.getWidthOfColsInList(colsToNotSpread);\n if (availablePixels <= 0) {\n // no width, set everything to minimum\n colsToSpread.forEach((column) => {\n var _a, _b;\n const widthOverride = (_b = (_a = limitsMap === null || limitsMap === void 0 ? void 0 : limitsMap[column.getId()]) === null || _a === void 0 ? void 0 : _a.minWidth) !== null && _b !== void 0 ? _b : params === null || params === void 0 ? void 0 : params.defaultMinWidth;\n if (typeof widthOverride === 'number') {\n column.setActualWidth(widthOverride);\n return;\n }\n column.setMinimum(source);\n });\n }\n else {\n const 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 let pixelsForLastCol = availablePixels;\n // backwards through loop, as we are removing items as we go\n for (let i = colsToSpread.length - 1; i >= 0; i--) {\n const column = colsToSpread[i];\n const widthOverride = limitsMap === null || limitsMap === void 0 ? void 0 : limitsMap[column.getId()];\n const minOverride = ((_b = widthOverride === null || widthOverride === void 0 ? void 0 : widthOverride.minWidth) !== null && _b !== void 0 ? _b : params === null || params === void 0 ? void 0 : params.defaultMinWidth);\n const maxOverride = ((_c = widthOverride === null || widthOverride === void 0 ? void 0 : widthOverride.maxWidth) !== null && _c !== void 0 ? _c : params === null || params === void 0 ? void 0 : params.defaultMaxWidth);\n const colMinWidth = (_d = column.getMinWidth()) !== null && _d !== void 0 ? _d : 0;\n const colMaxWidth = (_e = column.getMaxWidth()) !== null && _e !== void 0 ? _e : Number.MAX_VALUE;\n const minWidth = typeof minOverride === 'number' && minOverride > colMinWidth ? minOverride : column.getMinWidth();\n const maxWidth = typeof maxOverride === 'number' && maxOverride < colMaxWidth ? maxOverride : column.getMaxWidth();\n let 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) && newWidth > maxWidth) {\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 colsToDispatchEventFor.forEach(col => {\n col.fireColumnWidthChangedEvent(source);\n });\n this.setLeftValues(source);\n this.updateBodyWidths();\n if (silent) {\n return;\n }\n this.dispatchColumnResizedEvent(colsToDispatchEventFor, true, source);\n }\n buildDisplayedTrees(visibleColumns) {\n const leftVisibleColumns = [];\n const rightVisibleColumns = [];\n const centerVisibleColumns = [];\n visibleColumns.forEach(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 const groupInstanceIdCreator = new GroupInstanceIdCreator();\n this.displayedTreeLeft = this.displayedGroupCreator.createDisplayedGroups(leftVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, 'left', this.displayedTreeLeft);\n this.displayedTreeRight = this.displayedGroupCreator.createDisplayedGroups(rightVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, 'right', this.displayedTreeRight);\n this.displayedTreeCentre = this.displayedGroupCreator.createDisplayedGroups(centerVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, null, this.displayedTreeCentre);\n this.updateDisplayedMap();\n }\n updateDisplayedMap() {\n this.displayedColumnsAndGroupsMap = {};\n const func = (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 isDisplayed(item) {\n const 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 updateOpenClosedVisibilityInColumnGroups() {\n const allColumnGroups = this.getAllDisplayedTrees();\n this.columnUtils.depthFirstAllColumnTreeSearch(allColumnGroups, child => {\n if (child instanceof ColumnGroup) {\n const columnGroup = child;\n columnGroup.calculateDisplayedColumns();\n }\n });\n }\n getGroupAutoColumns() {\n return this.groupAutoColumns;\n }\n /**\n * Creates new auto group columns if required\n * @returns whether auto cols have changed\n */\n createGroupAutoColumnsIfNeeded() {\n const forceRecreateAutoGroups = this.forceRecreateAutoGroups;\n this.forceRecreateAutoGroups = false;\n if (!this.autoGroupsNeedBuilding) {\n return false;\n }\n this.autoGroupsNeedBuilding = false;\n const groupFullWidthRow = this.gridOptionsService.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 const suppressAutoColumn = this.pivotMode ?\n this.gridOptionsService.is('pivotSuppressAutoColumn') : this.isGroupSuppressAutoColumn();\n const groupingActive = this.rowGroupColumns.length > 0 || this.usingTreeData;\n const needAutoColumns = groupingActive && !suppressAutoColumn && !groupFullWidthRow;\n if (needAutoColumns) {\n const existingCols = this.groupAutoColumns || [];\n const newAutoGroupCols = this.autoGroupColService.createAutoGroupColumns(existingCols, this.rowGroupColumns);\n const autoColsDifferent = !this.autoColsEqual(newAutoGroupCols, this.groupAutoColumns);\n // we force recreate 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 || forceRecreateAutoGroups) {\n this.groupAutoColumns = newAutoGroupCols;\n return true;\n }\n }\n else {\n this.groupAutoColumns = null;\n }\n return false;\n }\n isGroupSuppressAutoColumn() {\n const groupDisplayType = this.gridOptionsService.get('groupDisplayType');\n const isCustomRowGroups = groupDisplayType ? matchesGroupDisplayType('custom', groupDisplayType) : false;\n if (isCustomRowGroups) {\n return true;\n }\n const treeDataDisplayType = this.gridOptionsService.get('treeDataDisplayType');\n return treeDataDisplayType ? matchesTreeDataDisplayType('custom', treeDataDisplayType) : false;\n }\n autoColsEqual(colsA, colsB) {\n return areEqual(colsA, colsB, (a, b) => a.getColId() === b.getColId());\n }\n getWidthOfColsInList(columnList) {\n return columnList.reduce((width, col) => width + col.getActualWidth(), 0);\n }\n getGridBalancedTree() {\n return this.gridBalancedTree;\n }\n hasFloatingFilters() {\n if (!this.gridColumns) {\n return false;\n }\n const res = this.gridColumns.some(col => col.getColDef().floatingFilter);\n return res;\n }\n getFirstDisplayedColumn() {\n const isRtl = this.gridOptionsService.is('enableRtl');\n const queryOrder = [\n 'getDisplayedLeftColumns',\n 'getDisplayedCenterColumns',\n 'getDisplayedRightColumns'\n ];\n if (isRtl) {\n queryOrder.reverse();\n }\n for (let i = 0; i < queryOrder.length; i++) {\n const container = this[queryOrder[i]]();\n if (container.length) {\n return isRtl ? last(container) : container[0];\n }\n }\n return null;\n }\n setColumnHeaderHeight(col, height) {\n const changed = col.setAutoHeaderHeight(height);\n if (changed) {\n const event = {\n type: Events.EVENT_COLUMN_HEADER_HEIGHT_CHANGED,\n column: col,\n columns: [col],\n source: 'autosizeColumnHeaderHeight',\n };\n this.eventService.dispatchEvent(event);\n }\n }\n getColumnGroupHeaderRowHeight() {\n if (this.isPivotMode()) {\n return this.getPivotGroupHeaderHeight();\n }\n return this.getGroupHeaderHeight();\n }\n getColumnHeaderRowHeight() {\n const defaultHeight = (this.isPivotMode() ?\n this.getPivotHeaderHeight() :\n this.getHeaderHeight());\n const displayedHeights = this.getAllDisplayedColumns()\n .filter((col) => col.isAutoHeaderHeight())\n .map((col) => col.getAutoHeaderHeight() || 0);\n return Math.max(defaultHeight, ...displayedHeights);\n }\n getHeaderHeight() {\n var _a;\n return (_a = this.gridOptionsService.getNum('headerHeight')) !== null && _a !== void 0 ? _a : this.environment.getFromTheme(25, 'headerHeight');\n }\n getFloatingFiltersHeight() {\n var _a;\n return (_a = this.gridOptionsService.getNum('floatingFiltersHeight')) !== null && _a !== void 0 ? _a : this.getHeaderHeight();\n }\n getGroupHeaderHeight() {\n var _a;\n return (_a = this.gridOptionsService.getNum('groupHeaderHeight')) !== null && _a !== void 0 ? _a : this.getHeaderHeight();\n }\n getPivotHeaderHeight() {\n var _a;\n return (_a = this.gridOptionsService.getNum('pivotHeaderHeight')) !== null && _a !== void 0 ? _a : this.getHeaderHeight();\n }\n getPivotGroupHeaderHeight() {\n var _a;\n return (_a = this.gridOptionsService.getNum('pivotGroupHeaderHeight')) !== null && _a !== void 0 ? _a : this.getGroupHeaderHeight();\n }\n queueResizeOperations() {\n this.shouldQueueResizeOperations = true;\n }\n processResizeOperations() {\n this.shouldQueueResizeOperations = false;\n this.resizeOperationQueue.forEach(resizeOperation => resizeOperation());\n this.resizeOperationQueue = [];\n }\n resetColumnDefIntoColumn(column) {\n const userColDef = column.getUserProvidedColDef();\n if (!userColDef) {\n return false;\n }\n const newColDef = this.columnFactory.mergeColDefs(userColDef, column.getColId());\n column.setColDef(newColDef, userColDef);\n return true;\n }\n generateColumnStateForRowGroupAndPivotIndexes(updatedRowGroupColumnState, updatedPivotColumnState) {\n // Generally columns should appear in the order they were before. For any new columns, these should appear in the original col def order.\n // The exception is for columns that were added via `addGroupColumns`. These should appear at the end.\n // We don't have to worry about full updates, as in this case the arrays are correct, and they won't appear in the updated lists.\n let existingColumnStateUpdates = {};\n const orderColumns = (updatedColumnState, colList, enableProp, initialEnableProp, indexProp, initialIndexProp) => {\n if (!colList.length || !this.primaryColumns) {\n return [];\n }\n const updatedColIdArray = Object.keys(updatedColumnState);\n const updatedColIds = new Set(updatedColIdArray);\n const newColIds = new Set(updatedColIdArray);\n const allColIds = new Set(colList.map(column => {\n const colId = column.getColId();\n newColIds.delete(colId);\n return colId;\n }).concat(updatedColIdArray));\n const colIdsInOriginalOrder = [];\n const originalOrderMap = {};\n let orderIndex = 0;\n for (let i = 0; i < this.primaryColumns.length; i++) {\n const colId = this.primaryColumns[i].getColId();\n if (allColIds.has(colId)) {\n colIdsInOriginalOrder.push(colId);\n originalOrderMap[colId] = orderIndex++;\n }\n }\n // follow approach in `resetColumnState`\n let index = 1000;\n let hasAddedNewCols = false;\n let lastIndex = 0;\n const processPrecedingNewCols = (colId) => {\n const originalOrderIndex = originalOrderMap[colId];\n for (let i = lastIndex; i < originalOrderIndex; i++) {\n const newColId = colIdsInOriginalOrder[i];\n if (newColIds.has(newColId)) {\n updatedColumnState[newColId][indexProp] = index++;\n newColIds.delete(newColId);\n }\n }\n lastIndex = originalOrderIndex;\n };\n colList.forEach(column => {\n const colId = column.getColId();\n if (updatedColIds.has(colId)) {\n // New col already exists. Add any other new cols that should be before it.\n processPrecedingNewCols(colId);\n updatedColumnState[colId][indexProp] = index++;\n }\n else {\n const colDef = column.getColDef();\n const missingIndex = colDef[indexProp] === null || (colDef[indexProp] === undefined && colDef[initialIndexProp] == null);\n if (missingIndex) {\n if (!hasAddedNewCols) {\n const propEnabled = colDef[enableProp] || (colDef[enableProp] === undefined && colDef[initialEnableProp]);\n if (propEnabled) {\n processPrecedingNewCols(colId);\n }\n else {\n // Reached the first manually added column. Add all the new columns now.\n newColIds.forEach(newColId => {\n // Rather than increment the index, just use the original order index - doesn't need to be contiguous.\n updatedColumnState[newColId][indexProp] = index + originalOrderMap[newColId];\n });\n index += colIdsInOriginalOrder.length;\n hasAddedNewCols = true;\n }\n }\n if (!existingColumnStateUpdates[colId]) {\n existingColumnStateUpdates[colId] = { colId };\n }\n existingColumnStateUpdates[colId][indexProp] = index++;\n }\n }\n });\n };\n orderColumns(updatedRowGroupColumnState, this.rowGroupColumns, 'rowGroup', 'initialRowGroup', 'rowGroupIndex', 'initialRowGroupIndex');\n orderColumns(updatedPivotColumnState, this.pivotColumns, 'pivot', 'initialPivot', 'pivotIndex', 'initialPivotIndex');\n return Object.values(existingColumnStateUpdates);\n }\n};\n__decorate$2w([\n Autowired('expressionService')\n], ColumnModel.prototype, \"expressionService\", void 0);\n__decorate$2w([\n Autowired('columnFactory')\n], ColumnModel.prototype, \"columnFactory\", void 0);\n__decorate$2w([\n Autowired('displayedGroupCreator')\n], ColumnModel.prototype, \"displayedGroupCreator\", void 0);\n__decorate$2w([\n Autowired('ctrlsService')\n], ColumnModel.prototype, \"ctrlsService\", void 0);\n__decorate$2w([\n Autowired('autoWidthCalculator')\n], ColumnModel.prototype, \"autoWidthCalculator\", void 0);\n__decorate$2w([\n Autowired('columnUtils')\n], ColumnModel.prototype, \"columnUtils\", void 0);\n__decorate$2w([\n Autowired('columnAnimationService')\n], ColumnModel.prototype, \"columnAnimationService\", void 0);\n__decorate$2w([\n Autowired('autoGroupColService')\n], ColumnModel.prototype, \"autoGroupColService\", void 0);\n__decorate$2w([\n Optional('aggFuncService')\n], ColumnModel.prototype, \"aggFuncService\", void 0);\n__decorate$2w([\n Optional('valueCache')\n], ColumnModel.prototype, \"valueCache\", void 0);\n__decorate$2w([\n Optional('animationFrameService')\n], ColumnModel.prototype, \"animationFrameService\", void 0);\n__decorate$2w([\n Autowired('sortController')\n], ColumnModel.prototype, \"sortController\", void 0);\n__decorate$2w([\n Autowired('columnDefFactory')\n], ColumnModel.prototype, \"columnDefFactory\", void 0);\n__decorate$2w([\n PostConstruct\n], ColumnModel.prototype, \"init\", null);\n__decorate$2w([\n PreDestroy\n], ColumnModel.prototype, \"destroyColumns\", null);\n__decorate$2w([\n __param$8(0, Qualifier('loggerFactory'))\n], ColumnModel.prototype, \"setBeans\", null);\nColumnModel = __decorate$2w([\n Bean('columnModel')\n], ColumnModel);\n\nvar __decorate$2v = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// takes in a list of columns, as specified by the column definitions, and returns column groups\nlet ColumnUtils = class ColumnUtils extends BeanStub {\n calculateColMinWidth(colDef) {\n return colDef.minWidth != null ? colDef.minWidth : this.environment.getMinColWidth();\n }\n calculateColMaxWidth(colDef) {\n return colDef.maxWidth != null ? colDef.maxWidth : Number.MAX_SAFE_INTEGER;\n }\n calculateColInitialWidth(colDef) {\n const minColWidth = this.calculateColMinWidth(colDef);\n const maxColWidth = this.calculateColMaxWidth(colDef);\n let width;\n const colDefWidth = attrToNumber(colDef.width);\n const 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 = 200;\n }\n return Math.max(Math.min(width, maxColWidth), minColWidth);\n }\n getOriginalPathForColumn(column, originalBalancedTree) {\n const result = [];\n let found = false;\n const recursePath = (balancedColumnTree, dept) => {\n for (let 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 const node = balancedColumnTree[i];\n if (node instanceof ProvidedColumnGroup) {\n const 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 depthFirstOriginalTreeSearch(parent, tree, callback) {\n if (!tree) {\n return;\n }\n tree.forEach((child) => {\n if (child instanceof ProvidedColumnGroup) {\n this.depthFirstOriginalTreeSearch(child, child.getChildren(), callback);\n }\n callback(child, parent);\n });\n }\n depthFirstAllColumnTreeSearch(tree, callback) {\n if (!tree) {\n return;\n }\n tree.forEach((child) => {\n if (child instanceof ColumnGroup) {\n this.depthFirstAllColumnTreeSearch(child.getChildren(), callback);\n }\n callback(child);\n });\n }\n depthFirstDisplayedColumnTreeSearch(tree, callback) {\n if (!tree) {\n return;\n }\n tree.forEach((child) => {\n if (child instanceof ColumnGroup) {\n this.depthFirstDisplayedColumnTreeSearch(child.getDisplayedChildren(), callback);\n }\n callback(child);\n });\n }\n};\nColumnUtils = __decorate$2v([\n Bean('columnUtils')\n], ColumnUtils);\n\nvar __decorate$2u = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// takes in a list of columns, as specified by the column definitions, and returns column groups\nlet DisplayedGroupCreator = class DisplayedGroupCreator extends BeanStub {\n createDisplayedGroups(\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 const result = [];\n let previousRealPath;\n let previousOriginalPath;\n const 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((currentColumn) => {\n const currentOriginalPath = this.getOriginalPathForColumn(balancedColumnTree, currentColumn);\n const currentRealPath = [];\n const firstColumn = !previousOriginalPath;\n for (let i = 0; i < currentOriginalPath.length; i++) {\n if (firstColumn || currentOriginalPath[i] !== previousOriginalPath[i]) {\n // new group needed\n const 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 const 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 const 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 createColumnGroup(providedGroup, groupInstanceIdCreator, oldColumnsMapped, pinned) {\n const groupId = providedGroup.getGroupId();\n const instanceId = groupInstanceIdCreator.getInstanceIdForKey(groupId);\n const uniqueId = ColumnGroup.createUniqueId(groupId, instanceId);\n let 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 mapOldGroupsById(displayedGroups) {\n const result = {};\n const recursive = (columnsOrGroups) => {\n columnsOrGroups.forEach(columnOrGroup => {\n if (columnOrGroup instanceof ColumnGroup) {\n const 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 setupParentsIntoColumns(columnsOrGroups, parent) {\n columnsOrGroups.forEach(columnsOrGroup => {\n columnsOrGroup.setParent(parent);\n if (columnsOrGroup instanceof ColumnGroup) {\n const columnGroup = columnsOrGroup;\n this.setupParentsIntoColumns(columnGroup.getChildren(), columnGroup);\n }\n });\n }\n getOriginalPathForColumn(balancedColumnTree, column) {\n const result = [];\n let found = false;\n const recursePath = (columnTree, dept) => {\n for (let 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 const node = columnTree[i];\n if (node instanceof ProvidedColumnGroup) {\n recursePath(node.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};\nDisplayedGroupCreator = __decorate$2u([\n Bean('displayedGroupCreator')\n], DisplayedGroupCreator);\n\nvar __decorate$2t = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet AgStackComponentsRegistry = class AgStackComponentsRegistry extends BeanStub {\n constructor() {\n super(...arguments);\n this.componentsMappedByName = {};\n }\n setupComponents(components) {\n if (components) {\n components.forEach(componentMeta => this.addComponent(componentMeta));\n }\n }\n addComponent(componentMeta) {\n // get name of the class as a string\n // insert a dash after every capital letter\n // let classEscaped = className.replace(/([A-Z])/g, \"-$1\").toLowerCase();\n const classEscaped = componentMeta.componentName.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n // put all to upper case\n const classUpperCase = classEscaped.toUpperCase();\n // finally store\n this.componentsMappedByName[classUpperCase] = componentMeta.componentClass;\n }\n getComponentClass(htmlTag) {\n return this.componentsMappedByName[htmlTag];\n }\n};\nAgStackComponentsRegistry = __decorate$2t([\n Bean('agStackComponentsRegistry')\n], AgStackComponentsRegistry);\n\n// ARIA HELPER FUNCTIONS\nfunction toggleAriaAttribute(element, attribute, value) {\n if (value == null || value == '') {\n removeAriaAttribute(element, attribute);\n }\n else {\n setAriaAttribute(element, attribute, value);\n }\n}\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}\nfunction setAriaRole(element, role) {\n if (role) {\n element.setAttribute('role', role);\n }\n else {\n element.removeAttribute('role');\n }\n}\nfunction getAriaSortState(sortDirection) {\n let sort;\n if (sortDirection === 'asc') {\n sort = 'ascending';\n }\n else if (sortDirection === 'desc') {\n sort = 'descending';\n }\n else if (sortDirection === 'mixed') {\n sort = 'other';\n }\n else {\n sort = 'none';\n }\n return sort;\n}\n// ARIA ATTRIBUTE GETTERS\nfunction getAriaLevel(element) {\n return parseInt(element.getAttribute('aria-level'), 10);\n}\nfunction getAriaPosInSet(element) {\n return parseInt(element.getAttribute('aria-posinset'), 10);\n}\nfunction getAriaDescribedBy(element) {\n return element.getAttribute('aria-describedby') || '';\n}\n// ARIA ATTRIBUTE SETTERS\nfunction setAriaLabel(element, label) {\n toggleAriaAttribute(element, 'label', label);\n}\nfunction setAriaLabelledBy(element, labelledBy) {\n toggleAriaAttribute(element, 'labelledby', labelledBy);\n}\nfunction setAriaDescription(element, description) {\n toggleAriaAttribute(element, 'description', description);\n}\nfunction setAriaDescribedBy(element, describedby) {\n toggleAriaAttribute(element, 'describedby', describedby);\n}\nfunction setAriaLive(element, live) {\n toggleAriaAttribute(element, 'live', live);\n}\nfunction setAriaLevel(element, level) {\n toggleAriaAttribute(element, 'level', level);\n}\nfunction setAriaDisabled(element, disabled) {\n toggleAriaAttribute(element, 'disabled', disabled);\n}\nfunction setAriaHidden(element, hidden) {\n toggleAriaAttribute(element, 'hidden', hidden);\n}\nfunction setAriaExpanded(element, expanded) {\n setAriaAttribute(element, 'expanded', expanded);\n}\nfunction removeAriaExpanded(element) {\n removeAriaAttribute(element, 'expanded');\n}\nfunction setAriaSetSize(element, setsize) {\n setAriaAttribute(element, 'setsize', setsize);\n}\nfunction setAriaPosInSet(element, position) {\n setAriaAttribute(element, 'posinset', position);\n}\nfunction setAriaMultiSelectable(element, multiSelectable) {\n setAriaAttribute(element, 'multiselectable', multiSelectable);\n}\nfunction setAriaRowCount(element, rowCount) {\n setAriaAttribute(element, 'rowcount', rowCount);\n}\nfunction setAriaRowIndex(element, rowIndex) {\n setAriaAttribute(element, 'rowindex', rowIndex);\n}\nfunction setAriaColCount(element, colCount) {\n setAriaAttribute(element, 'colcount', colCount);\n}\nfunction setAriaColIndex(element, colIndex) {\n setAriaAttribute(element, 'colindex', colIndex);\n}\nfunction setAriaColSpan(element, colSpan) {\n setAriaAttribute(element, 'colspan', colSpan);\n}\nfunction setAriaSort(element, sort) {\n setAriaAttribute(element, 'sort', sort);\n}\nfunction removeAriaSort(element) {\n removeAriaAttribute(element, 'sort');\n}\nfunction setAriaSelected(element, selected) {\n toggleAriaAttribute(element, 'selected', selected);\n}\nfunction setAriaChecked(element, checked) {\n setAriaAttribute(element, 'checked', checked === undefined ? 'mixed' : checked);\n}\nfunction setAriaControls(controllerElement, controlledElement) {\n toggleAriaAttribute(controllerElement, 'controls', controlledElement.id);\n setAriaLabelledBy(controlledElement, controllerElement.id);\n}\nfunction getAriaCheckboxStateName(translate, state) {\n return state === undefined\n ? translate('ariaIndeterminate', 'indeterminate')\n : (state === true\n ? translate('ariaChecked', 'checked')\n : translate('ariaUnchecked', 'unchecked'));\n}\n\nvar AriaUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n setAriaRole: setAriaRole,\n getAriaSortState: getAriaSortState,\n getAriaLevel: getAriaLevel,\n getAriaPosInSet: getAriaPosInSet,\n getAriaDescribedBy: getAriaDescribedBy,\n setAriaLabel: setAriaLabel,\n setAriaLabelledBy: setAriaLabelledBy,\n setAriaDescription: setAriaDescription,\n setAriaDescribedBy: setAriaDescribedBy,\n setAriaLive: setAriaLive,\n setAriaLevel: setAriaLevel,\n setAriaDisabled: setAriaDisabled,\n setAriaHidden: setAriaHidden,\n setAriaExpanded: setAriaExpanded,\n removeAriaExpanded: removeAriaExpanded,\n setAriaSetSize: setAriaSetSize,\n setAriaPosInSet: setAriaPosInSet,\n setAriaMultiSelectable: setAriaMultiSelectable,\n setAriaRowCount: setAriaRowCount,\n setAriaRowIndex: setAriaRowIndex,\n setAriaColCount: setAriaColCount,\n setAriaColIndex: setAriaColIndex,\n setAriaColSpan: setAriaColSpan,\n setAriaSort: setAriaSort,\n removeAriaSort: removeAriaSort,\n setAriaSelected: setAriaSelected,\n setAriaChecked: setAriaChecked,\n setAriaControls: setAriaControls,\n getAriaCheckboxStateName: getAriaCheckboxStateName\n});\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 */\nlet isSafari;\nlet safariVersion;\nlet isChrome;\nlet isFirefox;\nlet isMacOs;\nlet isIOS;\nlet invisibleScrollbar;\nlet browserScrollbarWidth;\nfunction isBrowserSafari() {\n if (isSafari === undefined) {\n isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n }\n return isSafari;\n}\nfunction getSafariVersion() {\n if (safariVersion === undefined) {\n if (isBrowserSafari()) {\n const versionMatch = navigator.userAgent.match(/version\\/(\\d+)/i);\n if (versionMatch) {\n safariVersion = versionMatch[1] != null ? parseFloat(versionMatch[1]) : 0;\n }\n }\n else {\n safariVersion = 0;\n }\n }\n return safariVersion;\n}\n/**\n * Returns true for Chrome and also for Edge (Chromium)\n */\nfunction isBrowserChrome() {\n if (isChrome === undefined) {\n const 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}\nfunction isBrowserFirefox() {\n if (isFirefox === undefined) {\n isFirefox = /(firefox)/i.test(navigator.userAgent);\n }\n return isFirefox;\n}\nfunction isMacOsUserAgent() {\n if (isMacOs === undefined) {\n isMacOs = /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform);\n }\n return isMacOs;\n}\nfunction isIOSUserAgent() {\n if (isIOS === undefined) {\n isIOS = (/iPad|iPhone|iPod/.test(navigator.platform) ||\n // eslint-disable-next-line\n (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1));\n }\n return isIOS;\n}\nfunction browserSupportsPreventScroll() {\n // all browsers except safari support focus({ preventScroll: true }).\n // this feature was added on Safari 15+\n return !isBrowserSafari() || getSafariVersion() >= 15;\n}\nfunction getTabIndex(el) {\n if (!el) {\n return null;\n }\n const numberTabIndex = el.tabIndex;\n const tabIndex = el.getAttribute('tabIndex');\n if (numberTabIndex === -1 && (tabIndex === null || (tabIndex === '' && !isBrowserFirefox()))) {\n return null;\n }\n return numberTabIndex.toString();\n}\nfunction getMaxDivHeight() {\n if (!document.body) {\n return -1;\n }\n let res = 1000000;\n // FF reports the height back but still renders blank after ~6M px\n const testUpTo = navigator.userAgent.toLowerCase().match(/firefox/) ? 6000000 : 1000000000;\n const div = document.createElement('div');\n document.body.appendChild(div);\n while (true) {\n const 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}\nfunction getBodyWidth() {\n var _a, _b, _c;\n return (_b = (_a = document.body) === null || _a === void 0 ? void 0 : _a.clientWidth) !== null && _b !== void 0 ? _b : (window.innerHeight || ((_c = document.documentElement) === null || _c === void 0 ? void 0 : _c.clientWidth) || -1);\n}\nfunction getBodyHeight() {\n var _a, _b, _c;\n return (_b = (_a = document.body) === null || _a === void 0 ? void 0 : _a.clientHeight) !== null && _b !== void 0 ? _b : (window.innerHeight || ((_c = document.documentElement) === null || _c === void 0 ? void 0 : _c.clientHeight) || -1);\n}\nfunction getScrollbarWidth() {\n if (browserScrollbarWidth == null) {\n initScrollbarWidthAndVisibility();\n }\n return browserScrollbarWidth;\n}\nfunction initScrollbarWidthAndVisibility() {\n const body = document.body;\n const 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 let 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}\nfunction isInvisibleScrollbar() {\n if (invisibleScrollbar == null) {\n initScrollbarWidthAndVisibility();\n }\n return invisibleScrollbar;\n}\n\nvar BrowserUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n isBrowserSafari: isBrowserSafari,\n getSafariVersion: getSafariVersion,\n isBrowserChrome: isBrowserChrome,\n isBrowserFirefox: isBrowserFirefox,\n isMacOsUserAgent: isMacOsUserAgent,\n isIOSUserAgent: isIOSUserAgent,\n browserSupportsPreventScroll: browserSupportsPreventScroll,\n getTabIndex: getTabIndex,\n getMaxDivHeight: getMaxDivHeight,\n getBodyWidth: getBodyWidth,\n getBodyHeight: getBodyHeight,\n getScrollbarWidth: getScrollbarWidth,\n isInvisibleScrollbar: isInvisibleScrollbar\n});\n\nfunction padStartWidthZeros(value, totalStringSize) {\n return value.toString().padStart(totalStringSize, '0');\n}\nfunction createArrayOfNumbers(first, last) {\n const result = [];\n for (let i = first; i <= last; i++) {\n result.push(i);\n }\n return result;\n}\nfunction 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}\nfunction decToHex(number, bytes) {\n let hex = '';\n for (let i = 0; i < bytes; i++) {\n hex += String.fromCharCode(number & 0xff);\n number >>>= 8;\n }\n return hex;\n}\nfunction 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 */\nfunction 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}\nfunction sum(values) {\n return values == null ? null : values.reduce((total, value) => total + value, 0);\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 const valueNumber = parseInt(value, 10);\n if (!isNaN(valueNumber) && isFinite(valueNumber) && valueNumber > 0) {\n return valueNumber;\n }\n return defaultValue;\n}\n\nvar NumberUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n padStartWidthZeros: padStartWidthZeros,\n createArrayOfNumbers: createArrayOfNumbers,\n cleanNumber: cleanNumber,\n decToHex: decToHex,\n formatNumberTwoDecimalPlacesAndCommas: formatNumberTwoDecimalPlacesAndCommas,\n formatNumberCommas: formatNumberCommas,\n sum: sum,\n zeroOrGreater: zeroOrGreater,\n oneOrGreater: oneOrGreater\n});\n\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 */\nfunction serialiseDate(date, includeTime = true, separator = '-') {\n if (!date) {\n return null;\n }\n let serialised = [date.getFullYear(), date.getMonth() + 1, date.getDate()].map(part => padStartWidthZeros(part, 2)).join(separator);\n if (includeTime) {\n serialised += ' ' + [date.getHours(), date.getMinutes(), date.getSeconds()].map(part => padStartWidthZeros(part, 2)).join(':');\n }\n return serialised;\n}\nconst calculateOrdinal = (value) => {\n if (value > 3 && value < 21) {\n return 'th';\n }\n const remainder = value % 10;\n switch (remainder) {\n case 1: return \"st\";\n case 2: return \"nd\";\n case 3: return \"rd\";\n }\n return 'th';\n};\n/**\n * Serialises a Date to a string of format the defined format, does not include time.\n * @param date The date to serialise\n * @param format The string to format the date to, defaults to YYYY-MM-DD\n */\nfunction dateToFormattedString(date, format = 'YYYY-MM-DD') {\n const fullYear = padStartWidthZeros(date.getFullYear(), 4);\n const months = [\n 'January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December',\n ];\n const days = [\n 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday',\n ];\n const replace = {\n YYYY: () => fullYear.slice(fullYear.length - 4, fullYear.length),\n YY: () => fullYear.slice(fullYear.length - 2, fullYear.length),\n Y: () => `${date.getFullYear()}`,\n MMMM: () => months[date.getMonth()],\n MMM: () => months[date.getMonth()].slice(0, 3),\n MM: () => padStartWidthZeros(date.getMonth() + 1, 2),\n Mo: () => `${date.getMonth() + 1}${calculateOrdinal(date.getMonth() + 1)}`,\n M: () => `${date.getMonth() + 1}`,\n Do: () => `${date.getDate()}${calculateOrdinal(date.getDate())}`,\n DD: () => padStartWidthZeros(date.getDate(), 2),\n D: () => `${date.getDate()}`,\n dddd: () => days[date.getDay()],\n ddd: () => days[date.getDay()].slice(0, 3),\n dd: () => days[date.getDay()].slice(0, 2),\n do: () => `${date.getDay()}${calculateOrdinal(date.getDay())}`,\n d: () => `${date.getDay()}`,\n };\n const regexp = new RegExp(Object.keys(replace).join('|'), 'g');\n return format.replace(regexp, (match) => {\n if (match in replace) {\n return replace[match]();\n }\n return match;\n });\n}\n/**\n * Parses a date and time from a string in the format `yyyy-MM-dd HH:mm:ss`\n */\nfunction parseDateTimeFromString(value) {\n if (!value) {\n return null;\n }\n const [dateStr, timeStr] = value.split(' ');\n if (!dateStr) {\n return null;\n }\n const fields = dateStr.split('-').map(f => parseInt(f, 10));\n if (fields.filter(f => !isNaN(f)).length !== 3) {\n return null;\n }\n const [year, month, day] = fields;\n const 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 const [hours, minutes, seconds] = timeStr.split(':').map(part => parseInt(part, 10));\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\nvar DateUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n serialiseDate: serialiseDate,\n dateToFormattedString: dateToFormattedString,\n parseDateTimeFromString: parseDateTimeFromString\n});\n\nlet 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 */\nfunction radioCssClass(element, elementClass, otherElementClass) {\n const parent = element.parentElement;\n let 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}\nconst FOCUSABLE_SELECTOR = '[tabindex], input, select, button, textarea, [href]';\nconst FOCUSABLE_EXCLUDE = '.ag-hidden, .ag-hidden *, [disabled], .ag-disabled:not(.ag-button), .ag-disabled *.mjs';\nfunction isFocusableFormField(element) {\n const matches = Element.prototype.matches || Element.prototype.msMatchesSelector;\n const inputSelector = 'input, select, button, textarea';\n const isFocusable = matches.call(element, inputSelector);\n const isNotFocusable = matches.call(element, FOCUSABLE_EXCLUDE);\n const isElementVisible = isVisible(element);\n const focusable = isFocusable && !isNotFocusable && isElementVisible;\n return focusable;\n}\nfunction setDisplayed(element, displayed, options = {}) {\n const { skipAriaHidden } = options;\n element.classList.toggle('ag-hidden', !displayed);\n if (!skipAriaHidden) {\n setAriaHidden(element, !displayed);\n }\n}\nfunction setVisible(element, visible, options = {}) {\n const { skipAriaHidden } = options;\n element.classList.toggle('ag-invisible', !visible);\n if (!skipAriaHidden) {\n setAriaHidden(element, !visible);\n }\n}\nfunction setDisabled(element, disabled) {\n const attributeName = 'disabled';\n const addOrRemoveDisabledAttribute = disabled ?\n (e) => e.setAttribute(attributeName, '') :\n (e) => e.removeAttribute(attributeName);\n addOrRemoveDisabledAttribute(element);\n nodeListForEach(element.querySelectorAll('input'), input => addOrRemoveDisabledAttribute(input));\n}\nfunction isElementChildOfClass(element, cls, maxNest) {\n let counter = 0;\n while (element) {\n if (element.classList.contains(cls)) {\n return true;\n }\n element = element.parentElement;\n if (typeof maxNest == 'number') {\n if (++counter > maxNest) {\n break;\n }\n }\n else if (element === 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\nfunction getElementSize(el) {\n const { height, width, borderTopWidth, borderRightWidth, borderBottomWidth, borderLeftWidth, paddingTop, paddingRight, paddingBottom, paddingLeft, marginTop, marginRight, marginBottom, marginLeft, boxSizing } = window.getComputedStyle(el);\n return {\n height: parseFloat(height),\n width: parseFloat(width),\n borderTopWidth: parseFloat(borderTopWidth),\n borderRightWidth: parseFloat(borderRightWidth),\n borderBottomWidth: parseFloat(borderBottomWidth),\n borderLeftWidth: parseFloat(borderLeftWidth),\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\n };\n}\nfunction getInnerHeight(el) {\n const size = getElementSize(el);\n if (size.boxSizing === 'border-box') {\n return size.height - size.paddingTop - size.paddingBottom;\n }\n return size.height;\n}\nfunction getInnerWidth(el) {\n const size = getElementSize(el);\n if (size.boxSizing === 'border-box') {\n return size.width - size.paddingLeft - size.paddingRight;\n }\n return size.width;\n}\nfunction getAbsoluteHeight(el) {\n const size = getElementSize(el);\n const marginRight = size.marginBottom + size.marginTop;\n return Math.ceil(el.offsetHeight + marginRight);\n}\nfunction getAbsoluteWidth(el) {\n const size = getElementSize(el);\n const marginWidth = size.marginLeft + size.marginRight;\n return Math.ceil(el.offsetWidth + marginWidth);\n}\nfunction getElementRectWithOffset(el) {\n const offsetElementRect = el.getBoundingClientRect();\n const { borderTopWidth, borderLeftWidth, borderRightWidth, borderBottomWidth } = getElementSize(el);\n return {\n top: offsetElementRect.top + (borderTopWidth || 0),\n left: offsetElementRect.left + (borderLeftWidth || 0),\n right: offsetElementRect.right + (borderRightWidth || 0),\n bottom: offsetElementRect.bottom + (borderBottomWidth || 0),\n };\n}\nfunction isRtlNegativeScroll() {\n if (typeof rtlNegativeScroll === \"boolean\") {\n return rtlNegativeScroll;\n }\n const 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}\nfunction getScrollLeft(element, rtl) {\n let 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}\nfunction 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}\nfunction clearElement(el) {\n while (el && el.firstChild) {\n el.removeChild(el.firstChild);\n }\n}\n/** @deprecated */\nfunction removeElement(parent, cssSelector) {\n removeFromParent(parent.querySelector(cssSelector));\n}\nfunction removeFromParent(node) {\n if (node && node.parentNode) {\n node.parentNode.removeChild(node);\n }\n}\nfunction 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 */\nfunction loadTemplate(template) {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = (template || '').trim();\n return tempDiv.firstChild;\n}\nfunction 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 */\nfunction getElementAttribute(element, attributeName) {\n if (element.attributes && element.attributes[attributeName]) {\n const attribute = element.attributes[attributeName];\n return attribute.value;\n }\n return null;\n}\nfunction offsetHeight(element) {\n return element && element.clientHeight ? element.clientHeight : 0;\n}\nfunction offsetWidth(element) {\n return element && element.clientWidth ? element.clientWidth : 0;\n}\nfunction ensureDomOrder(eContainer, eChild, eChildBefore) {\n // if already in right order, do nothing\n if (eChildBefore && eChildBefore.nextSibling === eChild) {\n return;\n }\n const focusedEl = document.activeElement;\n const eChildHasFocus = eChild.contains(focusedEl);\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 if (eChildHasFocus && focusedEl && browserSupportsPreventScroll()) {\n focusedEl.focus({ preventScroll: true });\n }\n}\nfunction setDomChildOrder(eContainer, orderedChildren) {\n for (let i = 0; i < orderedChildren.length; i++) {\n const correctCellAtIndex = orderedChildren[i];\n const actualCellAtIndex = eContainer.children[i];\n if (actualCellAtIndex !== correctCellAtIndex) {\n eContainer.insertBefore(correctCellAtIndex, actualCellAtIndex);\n }\n }\n}\nfunction 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 */\nfunction prependDC(parent, documentFragment) {\n if (exists(parent.firstChild)) {\n parent.insertBefore(documentFragment, parent.firstChild);\n }\n else {\n parent.appendChild(documentFragment);\n }\n}\nfunction addStylesToElement(eElement, styles) {\n if (!styles) {\n return;\n }\n for (const [key, value] of Object.entries(styles)) {\n if (!key || !key.length || value == null) {\n continue;\n }\n // changes the key from camelCase into a hyphenated-string\n const parsedKey = camelCaseToHyphenated(key);\n const valueAsString = value.toString();\n const parsedValue = valueAsString.replace(/\\s*!important/g, '');\n const priority = parsedValue.length != valueAsString.length ? 'important' : undefined;\n eElement.style.setProperty(parsedKey, parsedValue, priority);\n }\n}\nfunction isHorizontalScrollShowing(element) {\n return element.clientWidth < element.scrollWidth;\n}\nfunction isVerticalScrollShowing(element) {\n return element.clientHeight < element.scrollHeight;\n}\nfunction 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}\nfunction 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}\nfunction 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}\nfunction 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}\nfunction formatSize(size) {\n if (typeof size === 'number') {\n return `${size}px`;\n }\n return size;\n}\nfunction isNodeOrElement(o) {\n return o instanceof Node || o instanceof HTMLElement;\n}\n/**\n * Makes a copy of a node list into a list\n * @param {NodeList} nodeList\n * @returns {Node[]}\n */\nfunction copyNodeList(nodeList) {\n if (nodeList == null) {\n return [];\n }\n const result = [];\n nodeListForEach(nodeList, node => result.push(node));\n return result;\n}\nfunction iterateNamedNodeMap(map, callback) {\n if (!map) {\n return;\n }\n for (let i = 0; i < map.length; i++) {\n const attr = map[i];\n callback(attr.name, attr.value);\n }\n}\nfunction addOrRemoveAttribute(element, name, value) {\n if (value == null) {\n element.removeAttribute(name);\n }\n else {\n element.setAttribute(name, value.toString());\n }\n}\nfunction nodeListForEach(nodeList, action) {\n if (nodeList == null) {\n return;\n }\n for (let i = 0; i < nodeList.length; i++) {\n action(nodeList[i]);\n }\n}\n\nvar DomUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n radioCssClass: radioCssClass,\n FOCUSABLE_SELECTOR: FOCUSABLE_SELECTOR,\n FOCUSABLE_EXCLUDE: FOCUSABLE_EXCLUDE,\n isFocusableFormField: isFocusableFormField,\n setDisplayed: setDisplayed,\n setVisible: setVisible,\n setDisabled: setDisabled,\n isElementChildOfClass: isElementChildOfClass,\n getElementSize: getElementSize,\n getInnerHeight: getInnerHeight,\n getInnerWidth: getInnerWidth,\n getAbsoluteHeight: getAbsoluteHeight,\n getAbsoluteWidth: getAbsoluteWidth,\n getElementRectWithOffset: getElementRectWithOffset,\n isRtlNegativeScroll: isRtlNegativeScroll,\n getScrollLeft: getScrollLeft,\n setScrollLeft: setScrollLeft,\n clearElement: clearElement,\n removeElement: removeElement,\n removeFromParent: removeFromParent,\n isVisible: isVisible,\n loadTemplate: loadTemplate,\n appendHtml: appendHtml,\n getElementAttribute: getElementAttribute,\n offsetHeight: offsetHeight,\n offsetWidth: offsetWidth,\n ensureDomOrder: ensureDomOrder,\n setDomChildOrder: setDomChildOrder,\n insertWithDomOrder: insertWithDomOrder,\n prependDC: prependDC,\n addStylesToElement: addStylesToElement,\n isHorizontalScrollShowing: isHorizontalScrollShowing,\n isVerticalScrollShowing: isVerticalScrollShowing,\n setElementWidth: setElementWidth,\n setFixedWidth: setFixedWidth,\n setElementHeight: setElementHeight,\n setFixedHeight: setFixedHeight,\n formatSize: formatSize,\n isNodeOrElement: isNodeOrElement,\n copyNodeList: copyNodeList,\n iterateNamedNodeMap: iterateNamedNodeMap,\n addOrRemoveAttribute: addOrRemoveAttribute,\n nodeListForEach: nodeListForEach\n});\n\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//\nconst 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 // set filter tree list group contracted (click to expand)\n setFilterGroupClosed: 'tree-closed',\n // set filter tree list group expanded (click to contract)\n setFilterGroupOpen: 'tree-open',\n // set filter tree list expand/collapse all button, shown when some children are expanded and\n // others are collapsed\n setFilterGroupIndeterminate: 'tree-indeterminate',\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 cut item\n clipboardCut: 'cut',\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 {GridOptionsService} gridOptionsService\n * @param {Column | null} [column]\n * @returns {Element}\n */\nfunction createIcon(iconName, gridOptionsService, column) {\n const iconContents = createIconNoSpan(iconName, gridOptionsService, column);\n if (iconContents) {\n const { className } = iconContents;\n if ((typeof className === 'string' && className.indexOf('ag-icon') > -1) ||\n (typeof className === 'object' && className['ag-icon'])) {\n return iconContents;\n }\n }\n const eResult = document.createElement('span');\n eResult.appendChild(iconContents);\n return eResult;\n}\nfunction createIconNoSpan(iconName, gridOptionsService, column, forceCreate) {\n let userProvidedIcon = null;\n // check col for icon first\n const icons = column && column.getColDef().icons;\n if (icons) {\n userProvidedIcon = icons[iconName];\n }\n // if not in col, try grid options\n if (gridOptionsService && !userProvidedIcon) {\n const optionsIcons = gridOptionsService.get('icons');\n if (optionsIcons) {\n userProvidedIcon = optionsIcons[iconName];\n }\n }\n // now if user provided, use it\n if (userProvidedIcon) {\n let rendererResult;\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 const span = document.createElement('span');\n let 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\nvar IconUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n iconNameClassMap: iconNameClassMap,\n createIcon: createIcon,\n createIconNoSpan: createIconNoSpan\n});\n\nclass KeyCode {\n}\nKeyCode.BACKSPACE = 'Backspace';\nKeyCode.TAB = 'Tab';\nKeyCode.ENTER = 'Enter';\nKeyCode.ESCAPE = 'Escape';\nKeyCode.SPACE = ' ';\nKeyCode.LEFT = 'ArrowLeft';\nKeyCode.UP = 'ArrowUp';\nKeyCode.RIGHT = 'ArrowRight';\nKeyCode.DOWN = 'ArrowDown';\nKeyCode.DELETE = 'Delete';\nKeyCode.F2 = 'F2';\nKeyCode.PAGE_UP = 'PageUp';\nKeyCode.PAGE_DOWN = 'PageDown';\nKeyCode.PAGE_HOME = 'Home';\nKeyCode.PAGE_END = 'End';\n// these should be used with `event.code` instead of `event.key`\n// as `event.key` changes when non-latin keyboards are used\nKeyCode.A = 'KeyA';\nKeyCode.C = 'KeyC';\nKeyCode.D = 'KeyD';\nKeyCode.V = 'KeyV';\nKeyCode.X = 'KeyX';\nKeyCode.Y = 'KeyY';\nKeyCode.Z = 'KeyZ';\n\nconst A_KEYCODE = 65;\nconst C_KEYCODE = 67;\nconst V_KEYCODE = 86;\nconst D_KEYCODE = 68;\nconst Z_KEYCODE = 90;\nconst Y_KEYCODE = 89;\nfunction 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 const printableCharacter = event.key.length === 1;\n return printableCharacter;\n}\n/**\n * Allows user to tell the grid to skip specific keyboard events\n * @param {GridOptionsService} gridOptionsService\n * @param {KeyboardEvent} keyboardEvent\n * @param {IRowNode} rowNode\n * @param {Column} column\n * @param {boolean} editing\n * @returns {boolean}\n */\nfunction isUserSuppressingKeyboardEvent(gridOptionsService, keyboardEvent, rowNode, column, editing) {\n const colDefFunc = column ? column.getColDef().suppressKeyboardEvent : undefined;\n // if no callbacks provided by user, then do nothing\n if (!colDefFunc) {\n return false;\n }\n const params = {\n event: keyboardEvent,\n editing,\n column,\n api: gridOptionsService.api,\n node: rowNode,\n data: rowNode.data,\n colDef: column.getColDef(),\n context: gridOptionsService.context,\n columnApi: gridOptionsService.columnApi\n };\n // colDef get first preference on suppressing events\n if (colDefFunc) {\n const 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 // otherwise return false, don't suppress, as colDef didn't suppress and no func on gridOptions\n return false;\n}\nfunction isUserSuppressingHeaderKeyboardEvent(gridOptionsService, keyboardEvent, headerRowIndex, column) {\n const colDef = column.getDefinition();\n const colDefFunc = colDef && colDef.suppressHeaderKeyboardEvent;\n if (!exists(colDefFunc)) {\n return false;\n }\n const params = {\n api: gridOptionsService.api,\n columnApi: gridOptionsService.columnApi,\n context: gridOptionsService.context,\n colDef: colDef,\n column,\n headerRowIndex,\n event: keyboardEvent\n };\n return !!colDefFunc(params);\n}\nfunction normaliseQwertyAzerty(keyboardEvent) {\n const { keyCode } = keyboardEvent;\n let code;\n switch (keyCode) {\n case A_KEYCODE:\n code = KeyCode.A;\n break;\n case C_KEYCODE:\n code = KeyCode.C;\n break;\n case V_KEYCODE:\n code = KeyCode.V;\n break;\n case D_KEYCODE:\n code = KeyCode.D;\n break;\n case Z_KEYCODE:\n code = KeyCode.Z;\n break;\n case Y_KEYCODE:\n code = KeyCode.Y;\n break;\n default:\n code = keyboardEvent.code;\n }\n return code;\n}\nfunction isDeleteKey(key, alwaysReturnFalseOnBackspace = false) {\n if (key === KeyCode.DELETE) {\n return true;\n }\n if (!alwaysReturnFalseOnBackspace && key === KeyCode.BACKSPACE) {\n return isMacOsUserAgent();\n }\n return false;\n}\n\nvar KeyboardUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n isEventFromPrintableCharacter: isEventFromPrintableCharacter,\n isUserSuppressingKeyboardEvent: isUserSuppressingKeyboardEvent,\n isUserSuppressingHeaderKeyboardEvent: isUserSuppressingHeaderKeyboardEvent,\n normaliseQwertyAzerty: normaliseQwertyAzerty,\n isDeleteKey: isDeleteKey\n});\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 */\nfunction areEventsNear(e1, e2, pixelCount) {\n // by default, we wait 4 pixels before starting the drag\n if (pixelCount === 0) {\n return false;\n }\n const diffX = Math.abs(e1.clientX - e2.clientX);\n const diffY = Math.abs(e1.clientY - e2.clientY);\n return Math.max(diffX, diffY) <= pixelCount;\n}\n\nvar MouseUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n areEventsNear: areEventsNear\n});\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 *\n * @returns a boolean representing whether nodes were reordered\n */\nfunction sortRowNodesByOrder(rowNodes, rowNodeOrder) {\n if (!rowNodes) {\n return false;\n }\n const comparator = (nodeA, nodeB) => {\n const positionA = rowNodeOrder[nodeA.id];\n const positionB = rowNodeOrder[nodeB.id];\n const aHasIndex = positionA !== undefined;\n const bHasIndex = positionB !== undefined;\n const bothNodesAreUserNodes = aHasIndex && bHasIndex;\n const 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 let rowNodeA;\n let rowNodeB;\n let atLeastOneOutOfOrder = false;\n for (let 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 return true;\n }\n return false;\n}\nfunction traverseNodesWithKey(nodes, callback) {\n const keyParts = [];\n recursiveSearchNodes(nodes);\n function recursiveSearchNodes(currentNodes) {\n if (!currentNodes) {\n return;\n }\n currentNodes.forEach((node) => {\n // also checking for children for tree data\n if (node.group || node.hasChildren()) {\n keyParts.push(node.key);\n const key = keyParts.join('|');\n callback(node, key);\n recursiveSearchNodes(node.childrenAfterGroup);\n keyParts.pop();\n }\n });\n }\n}\n\nvar RowNodeUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n sortRowNodesByOrder: sortRowNodesByOrder,\n traverseNodesWithKey: traverseNodesWithKey\n});\n\nfunction convertToSet(list) {\n const set = new Set();\n list.forEach(x => set.add(x));\n return set;\n}\n\nvar SetUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n convertToSet: convertToSet\n});\n\nconst utils = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, AriaUtils), ArrayUtils), BrowserUtils), DateUtils), DomUtils), EventUtils), FunctionUtils), FuzzyMatchUtils), GenericUtils), IconUtils), KeyboardUtils), MapUtils), MouseUtils), NumberUtils), ObjectUtils), RowNodeUtils), SetUtils), StringUtils);\nconst _ = utils;\n\nclass NumberSequence {\n constructor(initValue = 0, step = 1) {\n this.nextValue = initValue;\n this.step = step;\n }\n next() {\n const valToReturn = this.nextValue;\n this.nextValue += this.step;\n return valToReturn;\n }\n peek() {\n return this.nextValue;\n }\n skip(count) {\n this.nextValue += count;\n }\n}\n\nvar AgPromiseStatus;\n(function (AgPromiseStatus) {\n AgPromiseStatus[AgPromiseStatus[\"IN_PROGRESS\"] = 0] = \"IN_PROGRESS\";\n AgPromiseStatus[AgPromiseStatus[\"RESOLVED\"] = 1] = \"RESOLVED\";\n})(AgPromiseStatus || (AgPromiseStatus = {}));\nclass AgPromise {\n constructor(callback) {\n this.status = AgPromiseStatus.IN_PROGRESS;\n this.resolution = null;\n this.waiters = [];\n callback(value => this.onDone(value), params => this.onReject(params));\n }\n static all(promises) {\n return new AgPromise(resolve => {\n let remainingToResolve = promises.length;\n const combinedValues = new Array(remainingToResolve);\n promises.forEach((promise, index) => {\n promise.then(value => {\n combinedValues[index] = value;\n remainingToResolve--;\n if (remainingToResolve === 0) {\n resolve(combinedValues);\n }\n });\n });\n });\n }\n static resolve(value = null) {\n return new AgPromise(resolve => resolve(value));\n }\n then(func) {\n return new AgPromise(resolve => {\n if (this.status === AgPromiseStatus.RESOLVED) {\n resolve(func(this.resolution));\n }\n else {\n this.waiters.push(value => resolve(func(value)));\n }\n });\n }\n resolveNow(ifNotResolvedValue, ifResolved) {\n return this.status === AgPromiseStatus.RESOLVED ? ifResolved(this.resolution) : ifNotResolvedValue;\n }\n onDone(value) {\n this.status = AgPromiseStatus.RESOLVED;\n this.resolution = value;\n this.waiters.forEach(waiter => waiter(value));\n }\n onReject(params) {\n console.warn('TBI');\n }\n}\n\n/**\n * A Util Class only used when debugging for printing time to console\n */\nclass Timer {\n constructor() {\n this.timestamp = new Date().getTime();\n }\n print(msg) {\n const duration = (new Date().getTime()) - this.timestamp;\n console.info(`${msg} = ${duration}`);\n this.timestamp = new Date().getTime();\n }\n}\n\nvar __decorate$2s = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 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 = {}));\nclass CustomTooltipFeature extends BeanStub {\n constructor(parentComp) {\n super();\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 }\n postConstruct() {\n this.tooltipShowDelay = this.getTooltipDelay('show') || this.DEFAULT_SHOW_TOOLTIP_DELAY;\n this.tooltipHideDelay = this.getTooltipDelay('hide') || this.DEFAULT_HIDE_TOOLTIP_DELAY;\n this.tooltipMouseTrack = this.gridOptionsService.is('tooltipMouseTrack');\n const 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 destroy() {\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.destroy();\n }\n onMouseEnter(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 const 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 onMouseLeave() {\n this.setToDoNothing();\n }\n onKeyDown() {\n this.setToDoNothing();\n }\n setToDoNothing() {\n if (this.state === TooltipStates.SHOWING) {\n this.hideTooltip();\n }\n this.clearTimeouts();\n this.state = TooltipStates.NOTHING;\n }\n onMouseMove(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 onMouseDown() {\n this.setToDoNothing();\n }\n getTooltipDelay(type) {\n const tooltipShowDelay = this.gridOptionsService.getNum('tooltipShowDelay');\n const tooltipHideDelay = this.gridOptionsService.getNum('tooltipHideDelay');\n const delay = type === 'show' ? tooltipShowDelay : tooltipHideDelay;\n const capitalisedType = capitalise(type);\n if (exists(delay)) {\n if (delay < 0) {\n doOnce(() => 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 hideTooltip() {\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 destroyTooltipComp() {\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 const tooltipPopupDestroyFunc = this.tooltipPopupDestroyFunc;\n const tooltipComp = this.tooltipComp;\n window.setTimeout(() => {\n tooltipPopupDestroyFunc();\n this.getContext().destroyBean(tooltipComp);\n }, this.FADE_OUT_TOOLTIP_TIMEOUT);\n this.tooltipPopupDestroyFunc = undefined;\n this.tooltipComp = undefined;\n }\n isLastTooltipHiddenRecently() {\n // return true if <1000ms since last time we hid a tooltip\n const now = new Date().getTime();\n const then = CustomTooltipFeature.lastTooltipHideTime;\n return (now - then) < this.SHOW_QUICK_TOOLTIP_DIFF;\n }\n showTooltip() {\n const params = Object.assign({}, 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 const callback = this.newTooltipComponentCallback.bind(this, this.tooltipInstanceCount);\n const userDetails = this.userComponentFactory.getTooltipCompDetails(params);\n userDetails.newAgStackInstance().then(callback);\n }\n newTooltipComponentCallback(tooltipInstanceCopy, tooltipComp) {\n const compNoLongerNeeded = this.state !== TooltipStates.SHOWING || this.tooltipInstanceCount !== tooltipInstanceCopy;\n if (compNoLongerNeeded) {\n this.getContext().destroyBean(tooltipComp);\n return;\n }\n const eGui = tooltipComp.getGui();\n this.tooltipComp = tooltipComp;\n if (!eGui.classList.contains('ag-tooltip')) {\n eGui.classList.add('ag-tooltip-custom');\n }\n const translate = this.localeService.getLocaleTextFunc();\n const 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 positionTooltipUnderLastMouseEvent() {\n this.popupService.positionPopupUnderMouseEvent({\n type: 'tooltip',\n mouseEvent: this.lastMouseEvent,\n ePopup: this.tooltipComp.getGui(),\n nudgeY: 18,\n skipObserver: this.tooltipMouseTrack\n });\n }\n clearTimeouts() {\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}\n__decorate$2s([\n Autowired('popupService')\n], CustomTooltipFeature.prototype, \"popupService\", void 0);\n__decorate$2s([\n Autowired('userComponentFactory')\n], CustomTooltipFeature.prototype, \"userComponentFactory\", void 0);\n__decorate$2s([\n PostConstruct\n], CustomTooltipFeature.prototype, \"postConstruct\", null);\n\nclass CssClassManager {\n constructor(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 addCssClass(className) {\n const list = (className || '').split(' ');\n if (list.length > 1) {\n list.forEach(cls => this.addCssClass(cls));\n return;\n }\n const updateNeeded = this.cssClassStates[className] !== true;\n if (updateNeeded && className.length) {\n const eGui = this.getGui();\n if (eGui) {\n eGui.classList.add(className);\n }\n this.cssClassStates[className] = true;\n }\n }\n removeCssClass(className) {\n const list = (className || '').split(' ');\n if (list.length > 1) {\n list.forEach(cls => this.removeCssClass(cls));\n return;\n }\n const updateNeeded = this.cssClassStates[className] !== false;\n if (updateNeeded && className.length) {\n const eGui = this.getGui();\n if (eGui) {\n eGui.classList.remove(className);\n }\n this.cssClassStates[className] = false;\n }\n }\n containsCssClass(className) {\n const eGui = this.getGui();\n if (!eGui) {\n return false;\n }\n return eGui.classList.contains(className);\n }\n addOrRemoveCssClass(className, addOrRemove) {\n if (!className) {\n return;\n }\n // we check for spaces before doing the split, as doing the split\n // created a performance problem (on windows only, see AG-6765)\n if (className.indexOf(' ') >= 0) {\n const list = (className || '').split(' ');\n if (list.length > 1) {\n list.forEach(cls => this.addOrRemoveCssClass(cls, addOrRemove));\n return;\n }\n }\n const updateNeeded = this.cssClassStates[className] !== addOrRemove;\n if (updateNeeded && className.length) {\n const eGui = this.getGui();\n if (eGui) {\n eGui.classList.toggle(className, addOrRemove);\n }\n this.cssClassStates[className] = addOrRemove;\n }\n }\n}\n\nvar __decorate$2r = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst compIdSequence = new NumberSequence();\nclass Component extends BeanStub {\n constructor(template) {\n super();\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(() => this.eGui);\n if (template) {\n this.setTemplate(template);\n }\n }\n preConstructOnComponent() {\n this.usingBrowserTooltips = this.gridOptionsService.is('enableBrowserTooltips');\n }\n getCompId() {\n return this.compId;\n }\n getTooltipParams() {\n return {\n value: this.tooltipText,\n location: 'UNKNOWN'\n };\n }\n setTooltip(newTooltipText) {\n const removeTooltip = () => {\n if (this.usingBrowserTooltips) {\n this.getGui().removeAttribute('title');\n }\n else {\n this.tooltipFeature = this.destroyBean(this.tooltipFeature);\n }\n };\n const addTooltip = () => {\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 createChildComponentsFromTags(parentNode, paramsMap) {\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 const childNodeList = copyNodeList(parentNode.childNodes);\n childNodeList.forEach(childNode => {\n if (!(childNode instanceof HTMLElement)) {\n return;\n }\n const childComp = this.createComponentFromElement(childNode, childComp => {\n // copy over all attributes, including css classes, so any attributes user put on the tag\n // wll be carried across\n const 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 const 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 createComponentFromElement(element, afterPreCreateCallback, paramsMap) {\n const key = element.nodeName;\n const componentParams = paramsMap ? paramsMap[element.getAttribute('ref')] : undefined;\n const ComponentClass = this.agStackComponentsRegistry.getComponentClass(key);\n if (ComponentClass) {\n Component.elementGettingCreated = element;\n const newComponent = new ComponentClass(componentParams);\n newComponent.setParentComponent(this);\n this.createBean(newComponent, null, afterPreCreateCallback);\n return newComponent;\n }\n return null;\n }\n copyAttributesFromNode(source, dest) {\n iterateNamedNodeMap(source.attributes, (name, value) => dest.setAttribute(name, value));\n }\n swapComponentForNode(newComponent, parentNode, childNode) {\n const 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 swapInComponentForQuerySelectors(newComponent, childNode) {\n const thisNoType = this;\n this.iterateOverQuerySelectors((querySelector) => {\n if (thisNoType[querySelector.attributeName] === childNode) {\n thisNoType[querySelector.attributeName] = newComponent;\n }\n });\n }\n iterateOverQuerySelectors(action) {\n let thisPrototype = Object.getPrototypeOf(this);\n while (thisPrototype != null) {\n const metaData = thisPrototype.__agComponentMetaData;\n const currentProtoName = getFunctionName(thisPrototype.constructor);\n if (metaData && metaData[currentProtoName] && metaData[currentProtoName].querySelectors) {\n metaData[currentProtoName].querySelectors.forEach((querySelector) => action(querySelector));\n }\n thisPrototype = Object.getPrototypeOf(thisPrototype);\n }\n }\n activateTabIndex(elements) {\n const tabIndex = this.gridOptionsService.getNum('tabIndex') || 0;\n if (!elements) {\n elements = [];\n }\n if (!elements.length) {\n elements.push(this.getGui());\n }\n elements.forEach(el => el.setAttribute('tabindex', tabIndex.toString()));\n }\n setTemplate(template, paramsMap) {\n const eGui = loadTemplate(template);\n this.setTemplateFromElement(eGui, paramsMap);\n }\n setTemplateFromElement(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 createChildComponentsPreConstruct() {\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 wireQuerySelectors() {\n if (!this.eGui) {\n return;\n }\n const thisNoType = this;\n this.iterateOverQuerySelectors((querySelector) => {\n const setResult = (result) => 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 const topLevelRefMatch = querySelector.refSelector\n && this.getAttribute('ref') === querySelector.refSelector;\n if (topLevelRefMatch) {\n setResult(this.eGui);\n }\n else {\n // otherwise use querySelector, which looks at children\n const resultOfQuery = this.eGui.querySelector(querySelector.querySelector);\n if (resultOfQuery) {\n setResult(resultOfQuery.__agComponent || resultOfQuery);\n }\n }\n });\n }\n getGui() {\n return this.eGui;\n }\n getFocusableElement() {\n return this.eGui;\n }\n setParentComponent(component) {\n this.parentComponent = component;\n }\n getParentComponent() {\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 setGui(eGui) {\n this.eGui = eGui;\n }\n queryForHtmlElement(cssSelector) {\n return this.eGui.querySelector(cssSelector);\n }\n queryForHtmlInputElement(cssSelector) {\n return this.eGui.querySelector(cssSelector);\n }\n appendChild(newChild, container) {\n if (newChild == null) {\n return;\n }\n if (!container) {\n container = this.eGui;\n }\n if (isNodeOrElement(newChild)) {\n container.appendChild(newChild);\n }\n else {\n const childComponent = newChild;\n container.appendChild(childComponent.getGui());\n }\n }\n isDisplayed() {\n return this.displayed;\n }\n setVisible(visible, options = {}) {\n if (visible !== this.visible) {\n this.visible = visible;\n const { skipAriaHidden } = options;\n setVisible(this.eGui, visible, { skipAriaHidden });\n }\n }\n setDisplayed(displayed, options = {}) {\n if (displayed !== this.displayed) {\n this.displayed = displayed;\n const { skipAriaHidden } = options;\n setDisplayed(this.eGui, displayed, { skipAriaHidden });\n const event = {\n type: Component.EVENT_DISPLAYED_CHANGED,\n visible: this.displayed\n };\n this.dispatchEvent(event);\n }\n }\n destroy() {\n if (this.tooltipFeature) {\n this.tooltipFeature = this.destroyBean(this.tooltipFeature);\n }\n if (this.parentComponent) {\n this.parentComponent = undefined;\n }\n const eGui = this.eGui;\n if (eGui && eGui.__agComponent) {\n eGui.__agComponent = undefined;\n }\n super.destroy();\n }\n addGuiEventListener(event, listener, options) {\n this.eGui.addEventListener(event, listener, options);\n this.addDestroyFunc(() => this.eGui.removeEventListener(event, listener));\n }\n addCssClass(className) {\n this.cssClassManager.addCssClass(className);\n }\n removeCssClass(className) {\n this.cssClassManager.removeCssClass(className);\n }\n containsCssClass(className) {\n return this.cssClassManager.containsCssClass(className);\n }\n addOrRemoveCssClass(className, addOrRemove) {\n this.cssClassManager.addOrRemoveCssClass(className, addOrRemove);\n }\n getAttribute(key) {\n const { eGui } = this;\n return eGui ? eGui.getAttribute(key) : null;\n }\n getRefElement(refName) {\n return this.queryForHtmlElement(`[ref=\"${refName}\"]`);\n }\n}\nComponent.EVENT_DISPLAYED_CHANGED = 'displayedChanged';\n__decorate$2r([\n Autowired('agStackComponentsRegistry')\n], Component.prototype, \"agStackComponentsRegistry\", void 0);\n__decorate$2r([\n PreConstruct\n], Component.prototype, \"preConstructOnComponent\", null);\n__decorate$2r([\n PreConstruct\n], Component.prototype, \"createChildComponentsPreConstruct\", null);\n\nfunction QuerySelector(selector) {\n return querySelectorFunc.bind(this, selector, undefined);\n}\nfunction 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 const 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\nvar __decorate$2q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// 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()\nclass ReadOnlyFloatingFilter extends Component {\n constructor() {\n super(/* html */ `\n
\n \n
`);\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 destroy() {\n super.destroy();\n }\n init(params) {\n this.params = params;\n const displayName = this.columnModel.getDisplayNameForColumn(params.column, 'header', true);\n const translate = this.localeService.getLocaleTextFunc();\n this.eFloatingFilterText\n .setDisabled(true)\n .setInputAriaLabel(`${displayName} ${translate('ariaFilterInput', 'Filter Input')}`);\n }\n onParentModelChanged(parentModel) {\n if (!parentModel) {\n this.eFloatingFilterText.setValue('');\n return;\n }\n this.params.parentFilterInstance(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 const modelAsString = filterInstance.getModelAsString(parentModel);\n this.eFloatingFilterText.setValue(modelAsString);\n }\n });\n }\n}\n__decorate$2q([\n RefSelector('eFloatingFilterText')\n], ReadOnlyFloatingFilter.prototype, \"eFloatingFilterText\", void 0);\n__decorate$2q([\n Autowired('columnModel')\n], ReadOnlyFloatingFilter.prototype, \"columnModel\", void 0);\n\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. */\nclass DateCompWrapper {\n constructor(context, userComponentFactory, dateComponentParams, eParent) {\n this.alive = true;\n this.context = context;\n this.eParent = eParent;\n const compDetails = userComponentFactory.getDateCompDetails(dateComponentParams);\n const promise = compDetails.newAgStackInstance();\n promise.then(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 destroy() {\n this.alive = false;\n this.dateComp = this.context.destroyBean(this.dateComp);\n }\n getDate() {\n return this.dateComp ? this.dateComp.getDate() : this.tempValue;\n }\n setDate(value) {\n if (this.dateComp) {\n this.dateComp.setDate(value);\n }\n else {\n this.tempValue = value;\n }\n }\n setDisabled(disabled) {\n if (this.dateComp) {\n this.setDateCompDisabled(disabled);\n }\n else {\n this.disabled = disabled;\n }\n }\n setDisplayed(displayed) {\n setDisplayed(this.eParent, displayed);\n }\n setInputPlaceholder(placeholder) {\n if (this.dateComp && this.dateComp.setInputPlaceholder) {\n this.dateComp.setInputPlaceholder(placeholder);\n }\n }\n setInputAriaLabel(label) {\n if (this.dateComp && this.dateComp.setInputAriaLabel) {\n this.dateComp.setInputAriaLabel(label);\n }\n }\n afterGuiAttached(params) {\n if (this.dateComp && typeof this.dateComp.afterGuiAttached === 'function') {\n this.dateComp.afterGuiAttached(params);\n }\n }\n setDateCompDisabled(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}\n\n/* Common logic for options, used by both filters and floating filters. */\nclass OptionsFactory {\n constructor() {\n this.customFilterOptions = {};\n }\n init(params, defaultOptions) {\n this.filterOptions = params.filterOptions || defaultOptions;\n this.mapCustomOptions();\n this.selectDefaultItem(params);\n }\n getFilterOptions() {\n return this.filterOptions;\n }\n mapCustomOptions() {\n if (!this.filterOptions) {\n return;\n }\n this.filterOptions.forEach(filterOption => {\n if (typeof filterOption === 'string') {\n return;\n }\n const requiredProperties = [['displayKey'], ['displayName'], ['predicate', 'test']];\n const propertyCheck = (keys) => {\n if (!keys.some(key => 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(v => v === filterOption) || [];\n return;\n }\n this.customFilterOptions[filterOption.displayKey] = filterOption;\n });\n }\n selectDefaultItem(params) {\n if (params.defaultOption) {\n this.defaultOption = params.defaultOption;\n }\n else if (this.filterOptions.length >= 1) {\n const 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 getDefaultOption() {\n return this.defaultOption;\n }\n getCustomOption(name) {\n return this.customFilterOptions[name];\n }\n}\n\nconst 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\nvar __decorate$2p = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass ManagedFocusFeature extends BeanStub {\n constructor(eFocusableElement, callbacks = {}) {\n super();\n this.eFocusableElement = eFocusableElement;\n this.callbacks = callbacks;\n this.callbacks = Object.assign({ shouldStopEventPropagation: () => false, onTabKeyDown: (e) => {\n if (e.defaultPrevented) {\n return;\n }\n const nextRoot = this.focusService.findNextFocusableElement(this.eFocusableElement, false, e.shiftKey);\n if (!nextRoot) {\n return;\n }\n nextRoot.focus();\n e.preventDefault();\n } }, callbacks);\n }\n postConstruct() {\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 addKeyDownListeners(eGui) {\n this.addManagedListener(eGui, 'keydown', (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}\nManagedFocusFeature.FOCUS_MANAGED_CLASS = 'ag-focus-managed';\n__decorate$2p([\n Autowired('focusService')\n], ManagedFocusFeature.prototype, \"focusService\", void 0);\n__decorate$2p([\n PostConstruct\n], ManagedFocusFeature.prototype, \"postConstruct\", null);\n\nvar __decorate$2o = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst RESIZE_CONTAINER_STYLE = 'ag-resizer-wrapper';\nconst RESIZE_TEMPLATE = /* html */ `
\n
\n
\n
\n
\n
\n
\n
\n
\n
`;\nclass PositionableFeature extends BeanStub {\n constructor(element, config) {\n super();\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 }\n center() {\n const { clientHeight, clientWidth } = this.offsetParent;\n const x = (clientWidth / 2) - (this.getWidth() / 2);\n const y = (clientHeight / 2) - (this.getHeight() / 2);\n this.offsetElement(x, y);\n }\n initialisePosition() {\n if (this.positioned) {\n return;\n }\n const { centered, forcePopupParentAsOffsetParent, minWidth, width, minHeight, height, x, y } = this.config;\n if (!this.offsetParent) {\n this.setOffsetParent();\n }\n let computedMinHeight = 0;\n let 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 const isVisible = !!this.element.offsetParent;\n if (isVisible) {\n const boundaryEl = this.findBoundaryElement();\n const offsetParentComputedStyles = window.getComputedStyle(boundaryEl);\n if (offsetParentComputedStyles.minWidth != null) {\n const paddingWidth = boundaryEl.offsetWidth - this.element.offsetWidth;\n computedMinWidth = parseInt(offsetParentComputedStyles.minWidth, 10) - paddingWidth;\n }\n if (offsetParentComputedStyles.minHeight != null) {\n const 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) {\n let boundaryEl = this.boundaryEl;\n let initialisedDuringPositioning = true;\n if (!boundaryEl) {\n boundaryEl = this.findBoundaryElement();\n initialisedDuringPositioning = false;\n }\n if (boundaryEl) {\n const top = parseFloat(boundaryEl.style.top);\n const left = parseFloat(boundaryEl.style.left);\n if (initialisedDuringPositioning) {\n this.offsetElement(isNaN(left) ? 0 : left, isNaN(top) ? 0 : top);\n }\n else {\n this.setPosition(left, top);\n }\n }\n }\n this.positioned = !!this.offsetParent;\n }\n isPositioned() {\n return this.positioned;\n }\n getPosition() {\n return this.position;\n }\n setMovable(movable, moveElement) {\n if (!this.config.popup || movable === this.movable) {\n return;\n }\n this.movable = movable;\n const 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 setResizable(resizable) {\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((side) => {\n const resizableStructure = resizable;\n const isSideResizable = !!resizableStructure[side];\n const resizerEl = this.getResizerElement(side);\n const params = {\n dragStartPixels: 0,\n eElement: resizerEl,\n onDragStart: (e) => this.onResizeStart(e, side),\n onDragging: this.onResize.bind(this),\n onDragStop: (e) => this.onResizeEnd(e, side),\n };\n if (isSideResizable || (!this.isAlive() && !isSideResizable)) {\n if (isSideResizable) {\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 this.resizable[side] = isSideResizable;\n }\n });\n }\n removeSizeFromEl() {\n this.element.style.removeProperty('height');\n this.element.style.removeProperty('width');\n this.element.style.removeProperty('flex');\n }\n restoreLastSize() {\n this.element.style.flex = '0 0 auto';\n const { height, width } = this.lastSize;\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 getHeight() {\n return this.element.offsetHeight;\n }\n setHeight(height) {\n const { popup } = this.config;\n const eGui = this.element;\n let isPercent = false;\n if (typeof height === 'string' && height.indexOf('%') !== -1) {\n setFixedHeight(eGui, height);\n height = getAbsoluteHeight(eGui);\n isPercent = true;\n }\n else {\n height = Math.max(this.minHeight, height);\n if (this.positioned) {\n const availableHeight = this.getAvailableHeight();\n if (availableHeight && height > availableHeight) {\n height = availableHeight;\n }\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 getAvailableHeight() {\n const { popup, forcePopupParentAsOffsetParent } = this.config;\n if (!this.positioned) {\n this.initialisePosition();\n }\n const { clientHeight } = this.offsetParent;\n if (!clientHeight) {\n return null;\n }\n const elRect = this.element.getBoundingClientRect();\n const offsetParentRect = this.offsetParent.getBoundingClientRect();\n const yPosition = popup ? this.position.y : elRect.top;\n const parentTop = popup ? 0 : offsetParentRect.top;\n // When `forcePopupParentAsOffsetParent`, there may be elements that appear after the resizable element, but aren't included in the height.\n // Take these into account here\n let additionalHeight = 0;\n if (forcePopupParentAsOffsetParent) {\n const parentEl = this.element.parentElement;\n if (parentEl) {\n const { bottom } = parentEl.getBoundingClientRect();\n additionalHeight = bottom - elRect.bottom;\n }\n }\n const availableHeight = clientHeight + parentTop - yPosition - additionalHeight;\n return availableHeight;\n }\n getWidth() {\n return this.element.offsetWidth;\n }\n setWidth(width) {\n const eGui = this.element;\n const { popup } = this.config;\n let 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 const { clientWidth } = this.offsetParent;\n const 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 offsetElement(x = 0, y = 0) {\n const { forcePopupParentAsOffsetParent } = this.config;\n const ePopup = forcePopupParentAsOffsetParent ? this.boundaryEl : this.element;\n if (!ePopup) {\n return;\n }\n this.popupService.positionPopup({\n ePopup,\n keepWithinBounds: true,\n skipObserver: this.movable || this.isResizable(),\n updatePosition: () => ({ x, y })\n });\n this.setPosition(parseFloat(ePopup.style.left), parseFloat(ePopup.style.top));\n }\n constrainSizeToAvailableHeight(constrain) {\n if (!this.config.forcePopupParentAsOffsetParent) {\n return;\n }\n const applyMaxHeightToElement = () => {\n const availableHeight = this.getAvailableHeight();\n this.element.style.setProperty('max-height', `${availableHeight}px`);\n };\n if (constrain) {\n this.resizeObserverSubscriber = this.resizeObserverService.observeResize(this.popupService.getPopupParent(), applyMaxHeightToElement);\n }\n else {\n this.element.style.removeProperty('max-height');\n if (this.resizeObserverSubscriber) {\n this.resizeObserverSubscriber();\n this.resizeObserverSubscriber = undefined;\n }\n }\n }\n setPosition(x, y) {\n this.position.x = x;\n this.position.y = y;\n }\n updateDragStartPosition(x, y) {\n this.dragStartPosition = { x, y };\n }\n calculateMouseMovement(params) {\n const { e, isLeft, isTop, anywhereWithin, topBuffer } = params;\n const xDiff = e.clientX - this.dragStartPosition.x;\n const yDiff = e.clientY - this.dragStartPosition.y;\n const movementX = this.shouldSkipX(e, !!isLeft, !!anywhereWithin, xDiff) ? 0 : xDiff;\n const movementY = this.shouldSkipY(e, !!isTop, topBuffer, yDiff) ? 0 : yDiff;\n return { movementX, movementY };\n }\n shouldSkipX(e, isLeft, anywhereWithin, diff) {\n const elRect = this.element.getBoundingClientRect();\n const parentRect = this.offsetParent.getBoundingClientRect();\n const boundaryElRect = this.boundaryEl.getBoundingClientRect();\n const xPosition = this.config.popup ? this.position.x : elRect.left;\n // skip if cursor is outside of popupParent horizontally\n let 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 shouldSkipY(e, isTop, topBuffer = 0, diff) {\n const elRect = this.element.getBoundingClientRect();\n const parentRect = this.offsetParent.getBoundingClientRect();\n const boundaryElRect = this.boundaryEl.getBoundingClientRect();\n const yPosition = this.config.popup ? this.position.y : elRect.top;\n // skip if cursor is outside of popupParent vertically\n let 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 createResizeMap() {\n const 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 addResizers() {\n if (this.resizersAdded) {\n return;\n }\n const eGui = this.element;\n if (!eGui) {\n return;\n }\n const parser = new DOMParser();\n const resizers = parser.parseFromString(RESIZE_TEMPLATE, 'text/html').body;\n eGui.appendChild(resizers.firstChild);\n this.createResizeMap();\n this.resizersAdded = true;\n }\n removeResizers() {\n this.resizerMap = undefined;\n const resizerEl = this.element.querySelector(`.${RESIZE_CONTAINER_STYLE}`);\n if (resizerEl) {\n this.element.removeChild(resizerEl);\n }\n this.resizersAdded = false;\n }\n getResizerElement(side) {\n return this.resizerMap[side].element;\n }\n onResizeStart(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 const { popup, forcePopupParentAsOffsetParent } = this.config;\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 getSiblings() {\n const element = this.element;\n const parent = element.parentElement;\n if (!parent) {\n return null;\n }\n return Array.prototype.slice.call(parent.children).filter((el) => !el.classList.contains('ag-hidden'));\n }\n getMinSizeOfSiblings() {\n const siblings = this.getSiblings() || [];\n let height = 0;\n let width = 0;\n for (let i = 0; i < siblings.length; i++) {\n const currentEl = siblings[i];\n const isFlex = !!currentEl.style.flex && currentEl.style.flex !== '0 0 auto';\n if (currentEl === this.element) {\n continue;\n }\n let nextHeight = this.minHeight || 0;\n let nextWidth = this.minWidth || 0;\n if (isFlex) {\n const 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, width };\n }\n applySizeToSiblings(vertical) {\n let containerToFlex = null;\n const siblings = this.getSiblings();\n if (!siblings) {\n return;\n }\n for (let i = 0; i < siblings.length; i++) {\n const 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 isResizable() {\n return Object.values(this.resizable).some(value => value);\n }\n onResize(e) {\n if (!this.isResizing || !this.currentResizer) {\n return;\n }\n const { popup, forcePopupParentAsOffsetParent } = this.config;\n const { isTop, isRight, isBottom, isLeft } = this.currentResizer;\n const isHorizontal = isRight || isLeft;\n const isVertical = isBottom || isTop;\n const { movementX, movementY } = this.calculateMouseMovement({ e, isLeft, isTop });\n const xPosition = this.position.x;\n const yPosition = this.position.y;\n let offsetLeft = 0;\n let offsetTop = 0;\n if (isHorizontal && movementX) {\n const direction = isLeft ? -1 : 1;\n const oldWidth = this.getWidth();\n const newWidth = oldWidth + (movementX * direction);\n let 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 const direction = isTop ? -1 : 1;\n const oldHeight = this.getHeight();\n const newHeight = oldHeight + (movementY * direction);\n let 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 onResizeEnd(e, side) {\n this.isResizing = false;\n this.currentResizer = null;\n this.boundaryEl = null;\n const params = {\n type: 'resize',\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi\n };\n this.element.classList.remove('ag-resizing');\n this.resizerMap[side].element.classList.remove('ag-active');\n this.dispatchEvent(params);\n }\n refreshSize() {\n const 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 onMoveStart(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 onMove(e) {\n if (!this.isMoving) {\n return;\n }\n const { x, y } = this.position;\n let topBuffer;\n if (this.config.calculateTopBuffer) {\n topBuffer = this.config.calculateTopBuffer();\n }\n const { movementX, movementY } = this.calculateMouseMovement({\n e,\n isTop: true,\n anywhereWithin: true,\n topBuffer\n });\n this.offsetElement(x + movementX, y + movementY);\n this.updateDragStartPosition(e.clientX, e.clientY);\n }\n onMoveEnd() {\n this.isMoving = false;\n this.boundaryEl = null;\n this.element.classList.remove('ag-moving');\n }\n setOffsetParent() {\n if (this.config.forcePopupParentAsOffsetParent) {\n this.offsetParent = this.popupService.getPopupParent();\n }\n else {\n this.offsetParent = this.element.offsetParent;\n }\n }\n findBoundaryElement() {\n let 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 clearResizeListeners() {\n while (this.resizeListeners.length) {\n const params = this.resizeListeners.pop();\n this.dragService.removeDragSource(params);\n }\n }\n destroy() {\n super.destroy();\n if (this.moveElementDragListener) {\n this.dragService.removeDragSource(this.moveElementDragListener);\n }\n this.constrainSizeToAvailableHeight(false);\n this.clearResizeListeners();\n this.removeResizers();\n }\n}\n__decorate$2o([\n Autowired('popupService')\n], PositionableFeature.prototype, \"popupService\", void 0);\n__decorate$2o([\n Autowired('resizeObserverService')\n], PositionableFeature.prototype, \"resizeObserverService\", void 0);\n__decorate$2o([\n Autowired('dragService')\n], PositionableFeature.prototype, \"dragService\", void 0);\n\nvar __decorate$2n = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\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 */\nclass ProvidedFilter extends Component {\n constructor(filterNameKey) {\n super();\n this.filterNameKey = filterNameKey;\n this.applyActive = false;\n this.hidePopup = null;\n this.debouncePending = false;\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 }\n postConstruct() {\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 this.positionableFeature = new PositionableFeature(this.getPositionableElement(), {\n forcePopupParentAsOffsetParent: true\n });\n this.createBean(this.positionableFeature);\n }\n // override\n handleKeyDown(e) { }\n getFilterTitle() {\n return this.translate(this.filterNameKey);\n }\n isFilterActive() {\n // filter is active if we have a valid applied model\n return !!this.appliedModel;\n }\n resetTemplate(paramsMap) {\n let eGui = this.getGui();\n if (eGui) {\n eGui.removeEventListener('submit', this.onFormSubmit);\n }\n const templateString = /* html */ `\n
\n
\n ${this.createBodyTemplate()}\n
\n
`;\n this.setTemplate(templateString, paramsMap);\n eGui = this.getGui();\n if (eGui) {\n eGui.addEventListener('submit', this.onFormSubmit);\n }\n }\n isReadOnly() {\n return !!this.providedFilterParams.readOnly;\n }\n init(params) {\n this.setParams(params);\n this.resetUiToDefaults(true).then(() => {\n this.updateUiVisibility();\n this.setupOnBtApplyDebounce();\n });\n }\n setParams(params) {\n this.providedFilterParams = params;\n this.applyActive = ProvidedFilter.isUseApplyButton(params);\n this.createButtonPanel();\n }\n createButtonPanel() {\n const { buttons } = this.providedFilterParams;\n if (!buttons || buttons.length < 1 || this.isReadOnly()) {\n return;\n }\n const eButtonsPanel = document.createElement('div');\n eButtonsPanel.classList.add('ag-filter-apply-panel');\n const addButton = (type) => {\n let text;\n let clickListener;\n switch (type) {\n case 'apply':\n text = this.translate('applyFilter');\n clickListener = (e) => this.onBtApply(false, false, e);\n break;\n case 'clear':\n text = this.translate('clearFilter');\n clickListener = () => this.onBtClear();\n break;\n case 'reset':\n text = this.translate('resetFilter');\n clickListener = () => this.onBtReset();\n break;\n case 'cancel':\n text = this.translate('cancelFilter');\n clickListener = (e) => { this.onBtCancel(e); };\n break;\n default:\n console.warn('AG Grid: Unknown button type specified');\n return;\n }\n const buttonType = type === 'apply' ? 'submit' : 'button';\n const button = loadTemplate(\n /* html */\n `${text}\n `);\n eButtonsPanel.appendChild(button);\n this.addManagedListener(button, 'click', clickListener);\n };\n convertToSet(buttons).forEach(type => addButton(type));\n this.getGui().appendChild(eButtonsPanel);\n }\n // subclasses can override this to provide alternative debounce defaults\n getDefaultDebounceMs() {\n return 0;\n }\n setupOnBtApplyDebounce() {\n const debounceMs = ProvidedFilter.getDebounceMs(this.providedFilterParams, this.getDefaultDebounceMs());\n const debounceFunc = debounce(this.checkApplyDebounce.bind(this), debounceMs);\n this.onBtApplyDebounce = () => {\n this.debouncePending = true;\n debounceFunc();\n };\n }\n checkApplyDebounce() {\n if (this.debouncePending) {\n // May already have been applied, so don't apply again (e.g. closing filter before debounce timeout)\n this.debouncePending = false;\n this.onBtApply();\n }\n }\n getModel() {\n return this.appliedModel ? this.appliedModel : null;\n }\n setModel(model) {\n const promise = model != null ? this.setModelIntoUi(model) : this.resetUiToDefaults();\n return promise.then(() => {\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('api');\n });\n }\n onBtCancel(e) {\n this.resetUiToActiveModel(this.getModel(), () => {\n this.handleCancelEnd(e);\n });\n }\n handleCancelEnd(e) {\n if (this.providedFilterParams.closeOnApply) {\n this.close(e);\n }\n }\n resetUiToActiveModel(currentModel, afterUiUpdatedFunc) {\n const afterAppliedFunc = () => {\n this.onUiChanged(false, 'prevent');\n afterUiUpdatedFunc === null || afterUiUpdatedFunc === void 0 ? void 0 : afterUiUpdatedFunc();\n };\n if (currentModel != null) {\n this.setModelIntoUi(currentModel).then(afterAppliedFunc);\n }\n else {\n this.resetUiToDefaults().then(afterAppliedFunc);\n }\n }\n onBtClear() {\n this.resetUiToDefaults().then(() => this.onUiChanged());\n }\n onBtReset() {\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 applyModel(source = 'api') {\n const newModel = this.getModelFromUi();\n if (!this.isModelValid(newModel)) {\n return false;\n }\n const 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 isModelValid(model) {\n return true;\n }\n onFormSubmit(e) {\n e.preventDefault();\n }\n onBtApply(afterFloatingFilter = false, afterDataChange = false, e) {\n // Prevent form submission\n if (e) {\n e.preventDefault();\n }\n if (this.applyModel(afterDataChange ? 'rowDataUpdated' : 'ui')) {\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, afterDataChange });\n }\n const { closeOnApply } = this.providedFilterParams;\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 onNewRowsLoaded() {\n }\n close(e) {\n if (!this.hidePopup) {\n return;\n }\n const keyboardEvent = e;\n const key = keyboardEvent && keyboardEvent.key;\n let params;\n if (key === 'Enter' || key === 'Space') {\n params = { 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 onUiChanged(fromFloatingFilter = false, apply) {\n this.updateUiVisibility();\n this.providedFilterParams.filterModifiedCallback();\n if (this.applyActive && !this.isReadOnly()) {\n const 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 afterGuiAttached(params) {\n if (params) {\n this.hidePopup = params.hidePopup;\n }\n this.refreshFilterResizer(params === null || params === void 0 ? void 0 : params.container);\n }\n refreshFilterResizer(containerType) {\n // tool panel is scrollable, so don't need to size\n if (!this.positionableFeature || containerType === 'toolPanel') {\n return;\n }\n const isFloatingFilter = containerType === 'floatingFilter';\n const { positionableFeature, gridOptionsService } = this;\n if (isFloatingFilter) {\n positionableFeature.restoreLastSize();\n positionableFeature.setResizable(gridOptionsService.is('enableRtl')\n ? { bottom: true, bottomLeft: true, left: true }\n : { bottom: true, bottomRight: true, right: true });\n }\n else {\n this.positionableFeature.removeSizeFromEl();\n this.positionableFeature.setResizable(false);\n }\n this.positionableFeature.constrainSizeToAvailableHeight(true);\n }\n afterGuiDetached() {\n this.checkApplyDebounce();\n if (this.positionableFeature) {\n this.positionableFeature.constrainSizeToAvailableHeight(false);\n }\n }\n // static, as used by floating filter also\n static getDebounceMs(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 static isUseApplyButton(params) {\n return !!params.buttons && params.buttons.indexOf('apply') >= 0;\n }\n destroy() {\n const eGui = this.getGui();\n if (eGui) {\n eGui.removeEventListener('submit', this.onFormSubmit);\n }\n this.hidePopup = null;\n if (this.positionableFeature) {\n this.positionableFeature = this.destroyBean(this.positionableFeature);\n }\n super.destroy();\n }\n translate(key) {\n const translate = this.localeService.getLocaleTextFunc();\n return translate(key, DEFAULT_FILTER_LOCALE_TEXT[key]);\n }\n getCellValue(rowNode) {\n const { api, colDef, column, columnApi, context } = this.providedFilterParams;\n return this.providedFilterParams.valueGetter({\n api,\n colDef,\n column,\n columnApi,\n context,\n data: rowNode.data,\n getValue: (field) => rowNode.data[field],\n node: rowNode,\n });\n }\n // override to control positionable feature\n getPositionableElement() {\n return this.eFilterBody;\n }\n}\n__decorate$2n([\n Autowired('rowModel')\n], ProvidedFilter.prototype, \"rowModel\", void 0);\n__decorate$2n([\n RefSelector('eFilterBody')\n], ProvidedFilter.prototype, \"eFilterBody\", void 0);\n__decorate$2n([\n PostConstruct\n], ProvidedFilter.prototype, \"postConstruct\", null);\n\nvar __decorate$2m = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass AgAbstractLabel extends Component {\n constructor(config, template) {\n super(template);\n this.labelSeparator = '';\n this.labelAlignment = 'left';\n this.disabled = false;\n this.label = '';\n this.config = config || {};\n }\n postConstruct() {\n this.addCssClass('ag-labeled');\n this.eLabel.classList.add('ag-label');\n const { labelSeparator, label, labelWidth, labelAlignment } = this.config;\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 refreshLabel() {\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 setDisplayed(this.eLabel, false);\n setAriaRole(this.eLabel, 'presentation');\n }\n else {\n setDisplayed(this.eLabel, true);\n setAriaRole(this.eLabel, null);\n }\n }\n setLabelSeparator(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 getLabelId() {\n this.eLabel.id = this.eLabel.id || `ag-${this.getCompId()}-label`;\n return this.eLabel.id;\n }\n getLabel() {\n return this.label;\n }\n setLabel(label) {\n if (this.label === label) {\n return this;\n }\n this.label = label;\n this.refreshLabel();\n return this;\n }\n setLabelAlignment(alignment) {\n const eGui = this.getGui();\n const 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 setLabelEllipsis(hasEllipsis) {\n this.eLabel.classList.toggle('ag-label-ellipsis', hasEllipsis);\n return this;\n }\n setLabelWidth(width) {\n if (this.label == null) {\n return this;\n }\n setElementWidth(this.eLabel, width);\n return this;\n }\n setDisabled(disabled) {\n disabled = !!disabled;\n const element = this.getGui();\n setDisabled(element, disabled);\n element.classList.toggle('ag-disabled', disabled);\n this.disabled = disabled;\n return this;\n }\n isDisabled() {\n return !!this.disabled;\n }\n}\n__decorate$2m([\n PostConstruct\n], AgAbstractLabel.prototype, \"postConstruct\", null);\n\nclass AgAbstractField extends AgAbstractLabel {\n constructor(config, template, className) {\n super(config, template);\n this.className = className;\n }\n postConstruct() {\n super.postConstruct();\n if (this.className) {\n this.addCssClass(this.className);\n }\n }\n onValueChange(callbackFn) {\n this.addManagedListener(this, AgAbstractField.EVENT_CHANGED, () => callbackFn(this.getValue()));\n return this;\n }\n getWidth() {\n return this.getGui().clientWidth;\n }\n setWidth(width) {\n setFixedWidth(this.getGui(), width);\n return this;\n }\n getPreviousValue() {\n return this.previousValue;\n }\n getValue() {\n return this.value;\n }\n setValue(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}\nAgAbstractField.EVENT_CHANGED = 'valueChange';\n\nvar __decorate$2l = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass AgPickerField extends AgAbstractField {\n constructor(config, className, pickerIcon, ariaRole) {\n super(config, \n /* html */ `
\n
\n
\n
\n
\n
\n
`, className);\n this.pickerIcon = pickerIcon;\n this.isPickerDisplayed = false;\n this.isDestroyingPicker = false;\n this.skipClick = false;\n }\n postConstruct() {\n super.postConstruct();\n const displayId = `ag-${this.getCompId()}-display`;\n this.eDisplayField.setAttribute('id', displayId);\n setAriaDescribedBy(this.eWrapper, displayId);\n const clickHandler = () => {\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 const eGui = this.getGui();\n this.addManagedListener(eGui, 'mousedown', (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', (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 const icon = createIconNoSpan(this.pickerIcon, this.gridOptionsService);\n if (icon) {\n this.eIcon.appendChild(icon);\n }\n }\n }\n refreshLabel() {\n if (exists(this.getLabel())) {\n setAriaLabelledBy(this.eWrapper, this.getLabelId());\n }\n else {\n this.eWrapper.removeAttribute('aria-labelledby');\n }\n super.refreshLabel();\n }\n setAriaLabel(label) {\n setAriaLabel(this.eWrapper, label);\n return this;\n }\n setInputWidth(width) {\n setElementWidth(this.eWrapper, width);\n return this;\n }\n getFocusableElement() {\n return this.eWrapper;\n }\n}\n__decorate$2l([\n RefSelector('eLabel')\n], AgPickerField.prototype, \"eLabel\", void 0);\n__decorate$2l([\n RefSelector('eWrapper')\n], AgPickerField.prototype, \"eWrapper\", void 0);\n__decorate$2l([\n RefSelector('eDisplayField')\n], AgPickerField.prototype, \"eDisplayField\", void 0);\n__decorate$2l([\n RefSelector('eIcon')\n], AgPickerField.prototype, \"eIcon\", void 0);\n\nvar __decorate$2k = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass AgList extends Component {\n constructor(cssIdentifier = 'default') {\n super(/* html */ `
`);\n this.cssIdentifier = cssIdentifier;\n this.options = [];\n this.itemEls = [];\n }\n init() {\n this.addManagedListener(this.getGui(), 'keydown', this.handleKeyDown.bind(this));\n }\n handleKeyDown(e) {\n const key = e.key;\n switch (key) {\n case KeyCode.ENTER:\n if (!this.highlightedEl) {\n this.setValue(this.getValue());\n }\n else {\n const pos = this.itemEls.indexOf(this.highlightedEl);\n this.setValueByIndex(pos);\n }\n break;\n case KeyCode.DOWN:\n case KeyCode.UP:\n const isDown = key === KeyCode.DOWN;\n let itemToHighlight;\n e.preventDefault();\n if (!this.highlightedEl) {\n itemToHighlight = this.itemEls[isDown ? 0 : this.itemEls.length - 1];\n }\n else {\n const currentIdx = this.itemEls.indexOf(this.highlightedEl);\n let 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 addOptions(listOptions) {\n listOptions.forEach(listOption => this.addOption(listOption));\n return this;\n }\n addOption(listOption) {\n const { value, text } = listOption;\n const sanitisedText = escapeString(text || value);\n this.options.push({ value, text: sanitisedText });\n this.renderOption(value, sanitisedText);\n this.updateIndices();\n return this;\n }\n updateIndices() {\n const options = this.getGui().querySelectorAll('.ag-list-item');\n options.forEach((option, idx) => {\n setAriaPosInSet(option, idx + 1);\n setAriaSetSize(option, options.length);\n });\n }\n renderOption(value, text) {\n const 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', () => this.highlightItem(itemEl));\n this.addManagedListener(itemEl, 'mouseleave', () => this.clearHighlighted());\n this.addManagedListener(itemEl, 'click', () => this.setValue(value));\n this.getGui().appendChild(itemEl);\n }\n setValue(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 const idx = this.options.findIndex(option => option.value === value);\n if (idx !== -1) {\n const 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 setValueByIndex(idx) {\n return this.setValue(this.options[idx].value);\n }\n getValue() {\n return this.value;\n }\n getDisplayValue() {\n return this.displayValue;\n }\n refreshHighlighted() {\n this.clearHighlighted();\n const idx = this.options.findIndex(option => option.value === this.value);\n if (idx !== -1) {\n this.highlightItem(this.itemEls[idx]);\n }\n }\n reset() {\n this.value = null;\n this.displayValue = null;\n this.clearHighlighted();\n this.fireChangeEvent();\n }\n highlightItem(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 clearHighlighted() {\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 fireChangeEvent() {\n this.dispatchEvent({ type: AgAbstractField.EVENT_CHANGED });\n this.fireItemSelected();\n }\n fireItemSelected() {\n this.dispatchEvent({ type: AgList.EVENT_ITEM_SELECTED });\n }\n}\nAgList.EVENT_ITEM_SELECTED = 'selectedItem';\nAgList.ACTIVE_CLASS = 'ag-active-item';\n__decorate$2k([\n PostConstruct\n], AgList.prototype, \"init\", null);\n\nvar __decorate$2j = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass AgSelect extends AgPickerField {\n constructor(config) {\n super(config, 'ag-select', 'smallDown', 'listbox');\n }\n init() {\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, () => {\n if (this.hideList) {\n this.hideList();\n }\n this.dispatchEvent({ type: AgSelect.EVENT_ITEM_SELECTED });\n });\n this.listComponent.addManagedListener(this.listComponent, AgAbstractField.EVENT_CHANGED, () => {\n this.setValue(this.listComponent.getValue(), false, true);\n if (this.hideList) {\n this.hideList();\n }\n });\n }\n showPicker() {\n const listGui = this.listComponent.getGui();\n const eDocument = this.gridOptionsService.getDocument();\n const destroyMouseWheelFunc = this.addManagedListener(eDocument.body, 'wheel', (e) => {\n if (!listGui.contains(e.target) && this.hideList) {\n this.hideList();\n }\n });\n const destroyFocusOutFunc = this.addManagedListener(listGui, 'focusout', (e) => {\n if (!listGui.contains(e.relatedTarget) && this.hideList) {\n this.hideList();\n }\n });\n const translate = this.localeService.getLocaleTextFunc();\n const addPopupRes = this.popupService.addPopup({\n modal: true,\n eChild: listGui,\n closeOnEsc: true,\n closedCallback: () => {\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.positionPopupByComponent({\n type: 'ag-list',\n eventSource: this.eWrapper,\n ePopup: listGui,\n position: 'under',\n keepWithinBounds: true\n });\n this.listComponent.refreshHighlighted();\n return this.listComponent;\n }\n addOptions(options) {\n options.forEach(option => this.addOption(option));\n return this;\n }\n addOption(option) {\n this.listComponent.addOption(option);\n return this;\n }\n setValue(value, silent, fromPicker) {\n if (this.value === value) {\n return this;\n }\n if (!fromPicker) {\n this.listComponent.setValue(value, true);\n }\n const newValue = this.listComponent.getValue();\n if (newValue === this.getValue()) {\n return this;\n }\n this.eDisplayField.innerHTML = this.listComponent.getDisplayValue();\n return super.setValue(value, silent);\n }\n destroy() {\n if (this.hideList) {\n this.hideList();\n }\n this.destroyBean(this.listComponent);\n super.destroy();\n }\n}\nAgSelect.EVENT_ITEM_SELECTED = 'selectedItem';\n__decorate$2j([\n Autowired('popupService')\n], AgSelect.prototype, \"popupService\", void 0);\n__decorate$2j([\n PostConstruct\n], AgSelect.prototype, \"init\", null);\n\nvar __decorate$2i = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass AgAbstractInputField extends AgAbstractField {\n constructor(config, className, inputType = 'text', displayFieldTag = 'input') {\n super(config, /* html */ `\n
\n
\n
\n <${displayFieldTag} ref=\"eInput\" class=\"ag-input-field-input\">\n
\n
`, className);\n this.inputType = inputType;\n this.displayFieldTag = displayFieldTag;\n }\n postConstruct() {\n super.postConstruct();\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 const { width, value } = this.config;\n if (width != null) {\n this.setWidth(width);\n }\n if (value != null) {\n this.setValue(value);\n }\n this.addInputListeners();\n this.activateTabIndex([this.eInput]);\n }\n refreshLabel() {\n if (exists(this.getLabel())) {\n setAriaLabelledBy(this.eInput, this.getLabelId());\n }\n else {\n this.eInput.removeAttribute('aria-labelledby');\n }\n super.refreshLabel();\n }\n addInputListeners() {\n this.addManagedListener(this.eInput, 'input', e => this.setValue(e.target.value));\n }\n setInputType() {\n if (this.displayFieldTag === 'input') {\n this.eInput.setAttribute('type', this.inputType);\n }\n }\n getInputElement() {\n return this.eInput;\n }\n setInputWidth(width) {\n setElementWidth(this.eWrapper, width);\n return this;\n }\n setInputName(name) {\n this.getInputElement().setAttribute('name', name);\n return this;\n }\n getFocusableElement() {\n return this.eInput;\n }\n setMaxLength(length) {\n const eInput = this.eInput;\n eInput.maxLength = length;\n return this;\n }\n setInputPlaceholder(placeholder) {\n addOrRemoveAttribute(this.eInput, 'placeholder', placeholder);\n return this;\n }\n setInputAriaLabel(label) {\n setAriaLabel(this.eInput, label);\n return this;\n }\n setDisabled(disabled) {\n setDisabled(this.eInput, disabled);\n return super.setDisabled(disabled);\n }\n}\n__decorate$2i([\n RefSelector('eLabel')\n], AgAbstractInputField.prototype, \"eLabel\", void 0);\n__decorate$2i([\n RefSelector('eWrapper')\n], AgAbstractInputField.prototype, \"eWrapper\", void 0);\n__decorate$2i([\n RefSelector('eInput')\n], AgAbstractInputField.prototype, \"eInput\", void 0);\n\nclass AgCheckbox extends AgAbstractInputField {\n constructor(config, className = 'ag-checkbox', inputType = 'checkbox') {\n super(config, className, inputType);\n this.labelAlignment = 'right';\n this.selected = false;\n this.readOnly = false;\n this.passive = false;\n }\n addInputListeners() {\n this.addManagedListener(this.eInput, 'click', this.onCheckboxClick.bind(this));\n this.addManagedListener(this.eLabel, 'click', this.toggle.bind(this));\n }\n getNextValue() {\n return this.selected === undefined ? true : !this.selected;\n }\n setPassive(passive) {\n this.passive = passive;\n }\n isReadOnly() {\n return this.readOnly;\n }\n setReadOnly(readOnly) {\n this.eWrapper.classList.toggle('ag-disabled', readOnly);\n this.eInput.disabled = readOnly;\n this.readOnly = readOnly;\n }\n setDisabled(disabled) {\n this.eWrapper.classList.toggle('ag-disabled', disabled);\n return super.setDisabled(disabled);\n }\n toggle() {\n if (this.eInput.disabled) {\n return;\n }\n const previousValue = this.isSelected();\n const nextValue = this.getNextValue();\n if (this.passive) {\n this.dispatchChange(nextValue, previousValue);\n }\n else {\n this.setValue(nextValue);\n }\n }\n getValue() {\n return this.isSelected();\n }\n setValue(value, silent) {\n this.refreshSelectedClass(value);\n this.setSelected(value, silent);\n return this;\n }\n setName(name) {\n const input = this.getInputElement();\n input.name = name;\n return this;\n }\n isSelected() {\n return this.selected;\n }\n setSelected(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 dispatchChange(selected, previousValue, event) {\n this.dispatchEvent({ type: AgCheckbox.EVENT_CHANGED, selected, previousValue, event });\n const input = this.getInputElement();\n const checkboxChangedEvent = {\n type: Events.EVENT_CHECKBOX_CHANGED,\n id: input.id,\n name: input.name,\n selected,\n previousValue\n };\n this.eventService.dispatchEvent(checkboxChangedEvent);\n }\n onCheckboxClick(e) {\n if (this.passive || this.eInput.disabled) {\n return;\n }\n const previousValue = this.isSelected();\n const selected = this.selected = e.target.checked;\n this.refreshSelectedClass(selected);\n this.dispatchChange(selected, previousValue, e);\n }\n refreshSelectedClass(value) {\n this.eWrapper.classList.toggle('ag-checked', value === true);\n this.eWrapper.classList.toggle('ag-indeterminate', value == null);\n }\n}\n\nclass AgRadioButton extends AgCheckbox {\n constructor(config) {\n super(config, 'ag-radio-button', 'radio');\n }\n isSelected() {\n return this.eInput.checked;\n }\n toggle() {\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 addInputListeners() {\n super.addInputListeners();\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 onChange(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}\n\nclass SimpleFilterModelFormatter {\n constructor(localeService, optionsFactory) {\n this.localeService = localeService;\n this.optionsFactory = optionsFactory;\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 getModelAsString(model) {\n if (!model) {\n return null;\n }\n const isCombined = model.operator != null;\n const translate = this.localeService.getLocaleTextFunc();\n if (isCombined) {\n const combinedModel = model;\n let { conditions } = combinedModel;\n if (!conditions) {\n const { condition1, condition2 } = combinedModel;\n conditions = [condition1, condition2];\n }\n const customOptions = conditions.map(condition => this.getModelAsString(condition));\n const joinOperatorTranslateKey = combinedModel.operator === 'AND' ? 'andCondition' : 'orCondition';\n return customOptions.join(` ${translate(joinOperatorTranslateKey, DEFAULT_FILTER_LOCALE_TEXT[joinOperatorTranslateKey])} `);\n }\n else if (model.type === SimpleFilter.BLANK || model.type === SimpleFilter.NOT_BLANK) {\n return translate(model.type, model.type);\n }\n else {\n const condition = model;\n const 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 const { displayKey, displayName, numberOfInputs } = customOption || {};\n if (displayKey && displayName && numberOfInputs === 0) {\n translate(displayKey, displayName);\n return displayName;\n }\n return this.conditionToString(condition, customOption);\n }\n }\n}\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 */\nclass SimpleFilter extends ProvidedFilter {\n constructor() {\n super(...arguments);\n this.eTypes = [];\n this.eJoinOperatorPanels = [];\n this.eJoinOperatorsAnd = [];\n this.eJoinOperatorsOr = [];\n this.eConditionBodies = [];\n this.listener = () => this.onUiChanged();\n this.lastUiCompletePosition = null;\n this.joinOperatorId = 0;\n }\n getNumberOfInputs(type) {\n const customOpts = this.optionsFactory.getCustomOption(type);\n if (customOpts) {\n const { numberOfInputs } = customOpts;\n return numberOfInputs != null ? numberOfInputs : 1;\n }\n const 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 onFloatingFilterChanged(type, value) {\n this.setTypeFromFloatingFilter(type);\n this.setValueFromFloatingFilter(value);\n this.onUiChanged(true);\n }\n setTypeFromFloatingFilter(type) {\n this.eTypes.forEach((eType, position) => {\n if (position === 0) {\n eType.setValue(type, true);\n }\n else {\n eType.setValue(this.optionsFactory.getDefaultOption(), true);\n }\n });\n }\n getModelFromUi() {\n const conditions = this.getUiCompleteConditions();\n if (conditions.length === 0) {\n return null;\n }\n if (this.maxNumConditions > 1 && conditions.length > 1) {\n return {\n filterType: this.getFilterType(),\n operator: this.getJoinOperator(),\n condition1: conditions[0],\n condition2: conditions[1],\n conditions\n };\n }\n return conditions[0];\n }\n getConditionTypes() {\n return this.eTypes.map(eType => eType.getValue());\n }\n getConditionType(position) {\n return this.eTypes[position].getValue();\n }\n getJoinOperator() {\n if (this.eJoinOperatorsOr.length === 0) {\n return this.defaultJoinOperator;\n }\n return this.eJoinOperatorsOr[0].getValue() === true ? 'OR' : 'AND';\n }\n areModelsEqual(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 const aIsSimple = !a.operator;\n const bIsSimple = !b.operator;\n const oneSimpleOneCombined = (!aIsSimple && bIsSimple) || (aIsSimple && !bIsSimple);\n if (oneSimpleOneCombined) {\n return false;\n }\n let res;\n // otherwise both present, so compare\n if (aIsSimple) {\n const aSimple = a;\n const bSimple = b;\n res = this.areSimpleModelsEqual(aSimple, bSimple);\n }\n else {\n const aCombined = a;\n const bCombined = b;\n res = aCombined.operator === bCombined.operator\n && areEqual(aCombined.conditions, bCombined.conditions, (aModel, bModel) => this.areSimpleModelsEqual(aModel, bModel));\n }\n return res;\n }\n setModelIntoUi(model) {\n const isCombined = model.operator;\n if (isCombined) {\n let combinedModel = model;\n if (!combinedModel.conditions) {\n combinedModel.conditions = [\n combinedModel.condition1,\n combinedModel.condition2\n ];\n }\n const numConditions = this.validateAndUpdateConditions(combinedModel.conditions);\n const numPrevConditions = this.getNumConditions();\n if (numConditions < numPrevConditions) {\n this.removeConditionsAndOperators(numConditions);\n }\n else if (numConditions > numPrevConditions) {\n for (let i = numPrevConditions; i < numConditions; i++) {\n this.createJoinOperatorPanel();\n this.createOption();\n }\n }\n const orChecked = combinedModel.operator === 'OR';\n this.eJoinOperatorsAnd.forEach(eJoinOperatorAnd => eJoinOperatorAnd.setValue(!orChecked, true));\n this.eJoinOperatorsOr.forEach(eJoinOperatorOr => eJoinOperatorOr.setValue(orChecked, true));\n combinedModel.conditions.forEach((condition, position) => {\n this.eTypes[position].setValue(condition.type, true);\n this.setConditionIntoUi(condition, position);\n });\n }\n else {\n const simpleModel = model;\n if (this.getNumConditions() > 1) {\n this.removeConditionsAndOperators(1);\n }\n this.eTypes[0].setValue(simpleModel.type, true);\n this.setConditionIntoUi(simpleModel, 0);\n }\n this.lastUiCompletePosition = this.getNumConditions() - 1;\n this.createMissingConditionsAndOperators();\n this.onUiChanged();\n return AgPromise.resolve();\n }\n validateAndUpdateConditions(conditions) {\n let numConditions = conditions.length;\n if (numConditions > this.maxNumConditions) {\n conditions.splice(this.maxNumConditions);\n doOnce(() => console.warn('AG Grid: Filter Model contains more conditions than \"filterParams.maxNumConditions\". Additional conditions have been ignored.'), 'simpleFilterSetModelMaxNumConditions');\n numConditions = this.maxNumConditions;\n }\n return numConditions;\n }\n doesFilterPass(params) {\n var _a;\n const model = this.getModel();\n if (model == null) {\n return true;\n }\n const { operator } = model;\n const models = [];\n if (operator) {\n const combinedModel = model;\n models.push(...((_a = combinedModel.conditions) !== null && _a !== void 0 ? _a : []));\n }\n else {\n models.push(model);\n }\n const combineFunction = operator && operator === 'OR' ? 'some' : 'every';\n return models[combineFunction](m => this.individualConditionPasses(params, m));\n }\n setParams(params) {\n super.setParams(params);\n this.setNumConditions(params);\n this.defaultJoinOperator = this.getDefaultJoinOperator(params.defaultJoinOperator);\n this.filterPlaceholder = params.filterPlaceholder;\n this.optionsFactory = new OptionsFactory();\n this.optionsFactory.init(params, this.getDefaultFilterOptions());\n this.createFilterListOptions();\n this.createOption();\n this.createMissingConditionsAndOperators();\n }\n setNumConditions(params) {\n var _a, _b;\n if (params.suppressAndOrCondition != null) {\n doOnce(() => console.warn('AG Grid: Since v29.2 \"filterParams.suppressAndOrCondition\" is deprecated. Use \"filterParams.maxNumConditions = 1\" instead.'), 'simpleFilterSuppressAndOrCondition');\n }\n if (params.alwaysShowBothConditions != null) {\n doOnce(() => console.warn('AG Grid: Since v29.2 \"filterParams.alwaysShowBothConditions\" is deprecated. Use \"filterParams.numAlwaysVisibleConditions = 2\" instead.'), 'simpleFilterAlwaysShowBothConditions');\n }\n this.maxNumConditions = (_a = params.maxNumConditions) !== null && _a !== void 0 ? _a : (params.suppressAndOrCondition ? 1 : 2);\n if (this.maxNumConditions < 1) {\n doOnce(() => console.warn('AG Grid: \"filterParams.maxNumConditions\" must be greater than or equal to zero.'), 'simpleFilterMaxNumConditions');\n this.maxNumConditions = 1;\n }\n this.numAlwaysVisibleConditions = (_b = params.numAlwaysVisibleConditions) !== null && _b !== void 0 ? _b : (params.alwaysShowBothConditions ? 2 : 1);\n if (this.numAlwaysVisibleConditions < 1) {\n doOnce(() => console.warn('AG Grid: \"filterParams.numAlwaysVisibleConditions\" must be greater than or equal to zero.'), 'simpleFilterNumAlwaysVisibleConditions');\n this.numAlwaysVisibleConditions = 1;\n }\n if (this.numAlwaysVisibleConditions > this.maxNumConditions) {\n doOnce(() => console.warn('AG Grid: \"filterParams.numAlwaysVisibleConditions\" cannot be greater than \"filterParams.maxNumConditions\".'), 'simpleFilterNumAlwaysVisibleGreaterThanMaxNumConditions');\n this.numAlwaysVisibleConditions = this.maxNumConditions;\n }\n }\n createOption() {\n const eType = this.createManagedBean(new AgSelect());\n this.eTypes.push(eType);\n eType.addCssClass('ag-filter-select');\n this.eFilterBody.appendChild(eType.getGui());\n const eConditionBody = this.createValueElement();\n this.eConditionBodies.push(eConditionBody);\n this.eFilterBody.appendChild(eConditionBody);\n this.putOptionsIntoDropdown(eType);\n this.resetType(eType);\n const position = this.getNumConditions() - 1;\n this.forEachPositionInput(position, (element) => this.resetInput(element));\n this.addChangedListeners(eType, position);\n }\n createJoinOperatorPanel() {\n const eJoinOperatorPanel = document.createElement('div');\n this.eJoinOperatorPanels.push(eJoinOperatorPanel);\n eJoinOperatorPanel.classList.add('ag-filter-condition');\n const eJoinOperatorAnd = this.createJoinOperator(this.eJoinOperatorsAnd, eJoinOperatorPanel, 'and');\n const eJoinOperatorOr = this.createJoinOperator(this.eJoinOperatorsOr, eJoinOperatorPanel, 'or');\n this.eFilterBody.appendChild(eJoinOperatorPanel);\n const index = this.eJoinOperatorPanels.length - 1;\n const uniqueGroupId = this.joinOperatorId++;\n this.resetJoinOperatorAnd(eJoinOperatorAnd, index, uniqueGroupId);\n this.resetJoinOperatorOr(eJoinOperatorOr, index, uniqueGroupId);\n if (!this.isReadOnly()) {\n eJoinOperatorAnd.onValueChange(this.listener);\n eJoinOperatorOr.onValueChange(this.listener);\n }\n }\n createJoinOperator(eJoinOperators, eJoinOperatorPanel, andOr) {\n const eJoinOperator = this.createManagedBean(new AgRadioButton());\n eJoinOperators.push(eJoinOperator);\n eJoinOperator.addCssClass('ag-filter-condition-operator');\n eJoinOperator.addCssClass(`ag-filter-condition-operator-${andOr}`);\n eJoinOperatorPanel.appendChild(eJoinOperator.getGui());\n return eJoinOperator;\n }\n getDefaultJoinOperator(defaultJoinOperator) {\n return defaultJoinOperator === 'AND' || defaultJoinOperator === 'OR' ? defaultJoinOperator : 'AND';\n }\n createFilterListOptions() {\n const filterOptions = this.optionsFactory.getFilterOptions();\n this.filterListOptions = filterOptions.map(option => typeof option === 'string' ?\n this.createBoilerplateListOption(option) :\n this.createCustomListOption(option));\n }\n putOptionsIntoDropdown(eType) {\n // Add specified options to condition drop-down.\n this.filterListOptions.forEach(listOption => {\n eType.addOption(listOption);\n });\n // Make drop-downs read-only if there is only one option.\n eType.setDisabled(this.filterListOptions.length <= 1);\n }\n createBoilerplateListOption(option) {\n return { value: option, text: this.translate(option) };\n }\n createCustomListOption(option) {\n const { displayKey } = option;\n const customOption = this.optionsFactory.getCustomOption(option.displayKey);\n return {\n value: displayKey,\n text: customOption ?\n this.localeService.getLocaleTextFunc()(customOption.displayKey, customOption.displayName) :\n this.translate(displayKey),\n };\n }\n /**\n * @deprecated As of v29.2 filters can have more than two conditions. Check `colDef.filterParams.maxNumConditions` instead.\n */\n isAllowTwoConditions() {\n return this.maxNumConditions >= 2;\n }\n createBodyTemplate() {\n // created dynamically\n return '';\n }\n getCssIdentifier() {\n return 'simple-filter';\n }\n updateUiVisibility() {\n const joinOperator = this.getJoinOperator();\n this.updateNumConditions();\n // from here, the number of elements in all the collections is correct, so can just update the values/statuses\n this.updateConditionStatusesAndValues(this.lastUiCompletePosition, joinOperator);\n }\n updateNumConditions() {\n var _a;\n // Collection sizes are already correct if updated via API, so only need to handle UI updates here\n let lastUiCompletePosition = -1;\n let areAllConditionsUiComplete = true;\n for (let position = 0; position < this.getNumConditions(); position++) {\n if (this.isConditionUiComplete(position)) {\n lastUiCompletePosition = position;\n }\n else {\n areAllConditionsUiComplete = false;\n }\n }\n if (this.shouldAddNewConditionAtEnd(areAllConditionsUiComplete)) {\n this.createJoinOperatorPanel();\n this.createOption();\n }\n else {\n const activePosition = (_a = this.lastUiCompletePosition) !== null && _a !== void 0 ? _a : this.getNumConditions() - 2;\n if (lastUiCompletePosition < activePosition) {\n // remove any incomplete conditions at the end, excluding the active position\n this.removeConditionsAndOperators(activePosition + 1);\n const removeStartPosition = lastUiCompletePosition + 1;\n const numConditionsToRemove = activePosition - removeStartPosition;\n if (numConditionsToRemove > 0) {\n this.removeConditionsAndOperators(removeStartPosition, numConditionsToRemove);\n }\n this.createMissingConditionsAndOperators();\n }\n }\n this.lastUiCompletePosition = lastUiCompletePosition;\n }\n updateConditionStatusesAndValues(lastUiCompletePosition, joinOperator) {\n this.eTypes.forEach((eType, position) => {\n const disabled = this.isConditionDisabled(position, lastUiCompletePosition);\n eType.setDisabled(disabled || this.filterListOptions.length <= 1);\n if (position === 1) {\n setDisabled(this.eJoinOperatorPanels[0], disabled);\n this.eJoinOperatorsAnd[0].setDisabled(disabled);\n this.eJoinOperatorsOr[0].setDisabled(disabled);\n }\n });\n this.eConditionBodies.forEach((element, index) => {\n setDisplayed(element, this.isConditionBodyVisible(index));\n });\n const orChecked = (joinOperator !== null && joinOperator !== void 0 ? joinOperator : this.getJoinOperator()) === 'OR';\n this.eJoinOperatorsAnd.forEach((eJoinOperatorAnd, index) => {\n eJoinOperatorAnd.setValue(!orChecked, true);\n });\n this.eJoinOperatorsOr.forEach((eJoinOperatorOr, index) => {\n eJoinOperatorOr.setValue(orChecked, true);\n });\n this.forEachInput((element, index, position, numberOfInputs) => {\n this.setElementDisplayed(element, index < numberOfInputs);\n this.setElementDisabled(element, this.isConditionDisabled(position, lastUiCompletePosition));\n });\n this.resetPlaceholder();\n }\n shouldAddNewConditionAtEnd(areAllConditionsUiComplete) {\n return areAllConditionsUiComplete && this.getNumConditions() < this.maxNumConditions && !this.isReadOnly();\n }\n removeConditionsAndOperators(startPosition, deleteCount) {\n if (startPosition >= this.getNumConditions()) {\n return;\n }\n this.removeComponents(this.eTypes, startPosition, deleteCount);\n this.removeElements(this.eConditionBodies, startPosition, deleteCount);\n this.removeValueElements(startPosition, deleteCount);\n const joinOperatorIndex = Math.max(startPosition - 1, 0);\n this.removeElements(this.eJoinOperatorPanels, joinOperatorIndex, deleteCount);\n this.removeComponents(this.eJoinOperatorsAnd, joinOperatorIndex, deleteCount);\n this.removeComponents(this.eJoinOperatorsOr, joinOperatorIndex, deleteCount);\n }\n removeElements(elements, startPosition, deleteCount) {\n const removedElements = this.removeItems(elements, startPosition, deleteCount);\n removedElements.forEach(element => removeFromParent(element));\n }\n removeComponents(components, startPosition, deleteCount) {\n const removedComponents = this.removeItems(components, startPosition, deleteCount);\n removedComponents.forEach(comp => {\n removeFromParent(comp.getGui());\n this.destroyBean(comp);\n });\n }\n removeItems(items, startPosition, deleteCount) {\n return deleteCount == null ? items.splice(startPosition) : items.splice(startPosition, deleteCount);\n }\n afterGuiAttached(params) {\n super.afterGuiAttached(params);\n this.resetPlaceholder();\n if (!params || (!params.suppressFocus && !this.isReadOnly())) {\n const firstInput = this.getInputs(0)[0];\n if (!firstInput) {\n return;\n }\n if (firstInput instanceof AgAbstractInputField) {\n firstInput.getInputElement().focus();\n }\n }\n }\n afterGuiDetached() {\n super.afterGuiDetached();\n const appliedModel = this.getModel();\n if (!this.areModelsEqual(appliedModel, this.getModelFromUi()) || this.hasInvalidInputs()) {\n this.resetUiToActiveModel(appliedModel);\n }\n // remove incomplete positions\n let lastUiCompletePosition = -1;\n // as we remove incomplete positions, the last UI complete position will change\n let updatedLastUiCompletePosition = -1;\n let conditionsRemoved = false;\n const joinOperator = this.getJoinOperator();\n for (let position = this.getNumConditions() - 1; position >= 0; position--) {\n if (this.isConditionUiComplete(position)) {\n if (lastUiCompletePosition === -1) {\n lastUiCompletePosition = position;\n updatedLastUiCompletePosition = position;\n }\n }\n else {\n const shouldRemovePositionAtEnd = position >= this.numAlwaysVisibleConditions && !this.isConditionUiComplete(position - 1);\n const positionBeforeLastUiCompletePosition = position < lastUiCompletePosition;\n if (shouldRemovePositionAtEnd || positionBeforeLastUiCompletePosition) {\n this.removeConditionsAndOperators(position, 1);\n conditionsRemoved = true;\n if (positionBeforeLastUiCompletePosition) {\n updatedLastUiCompletePosition--;\n }\n }\n }\n }\n let shouldUpdateConditionStatusesAndValues = false;\n if (this.getNumConditions() < this.numAlwaysVisibleConditions) {\n // if conditions have been removed, need to recreate new ones at the end up to the number required\n this.createMissingConditionsAndOperators();\n shouldUpdateConditionStatusesAndValues = true;\n }\n if (this.shouldAddNewConditionAtEnd(updatedLastUiCompletePosition === this.getNumConditions() - 1)) {\n this.createJoinOperatorPanel();\n this.createOption();\n shouldUpdateConditionStatusesAndValues = true;\n }\n if (shouldUpdateConditionStatusesAndValues) {\n this.updateConditionStatusesAndValues(updatedLastUiCompletePosition, joinOperator);\n }\n if (conditionsRemoved) {\n this.updateJoinOperatorsDisabled();\n }\n this.lastUiCompletePosition = updatedLastUiCompletePosition;\n }\n getPlaceholderText(defaultPlaceholder, position) {\n let placeholder = this.translate(defaultPlaceholder);\n if (isFunction(this.filterPlaceholder)) {\n const filterPlaceholderFn = this.filterPlaceholder;\n const filterOptionKey = this.eTypes[position].getValue();\n const filterOption = this.translate(filterOptionKey);\n placeholder = filterPlaceholderFn({\n filterOptionKey,\n filterOption,\n placeholder\n });\n }\n else if (typeof this.filterPlaceholder === 'string') {\n placeholder = this.filterPlaceholder;\n }\n return placeholder;\n }\n // allow sub-classes to reset HTML placeholders after UI update.\n resetPlaceholder() {\n const globalTranslate = this.localeService.getLocaleTextFunc();\n this.forEachInput((element, index, position, numberOfInputs) => {\n if (!(element instanceof AgAbstractInputField)) {\n return;\n }\n const placeholder = index === 0 && numberOfInputs > 1 ? 'inRangeStart' :\n index === 0 ? 'filterOoo' :\n 'inRangeEnd';\n const 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.getPlaceholderText(placeholder, position));\n element.setInputAriaLabel(ariaLabel);\n });\n }\n setElementValue(element, value) {\n if (element instanceof AgAbstractInputField) {\n element.setValue(value != null ? String(value) : null, true);\n }\n }\n setElementDisplayed(element, displayed) {\n if (element instanceof Component) {\n setDisplayed(element.getGui(), displayed);\n }\n }\n setElementDisabled(element, disabled) {\n if (element instanceof Component) {\n setDisabled(element.getGui(), disabled);\n }\n }\n attachElementOnChange(element, listener) {\n if (element instanceof AgAbstractInputField) {\n element.onValueChange(listener);\n }\n }\n forEachInput(cb) {\n this.getConditionTypes().forEach((type, position) => {\n this.forEachPositionTypeInput(position, type, cb);\n });\n }\n forEachPositionInput(position, cb) {\n const type = this.getConditionType(position);\n this.forEachPositionTypeInput(position, type, cb);\n }\n forEachPositionTypeInput(position, type, cb) {\n const numberOfInputs = this.getNumberOfInputs(type);\n const inputs = this.getInputs(position);\n for (let index = 0; index < inputs.length; index++) {\n const input = inputs[index];\n if (input != null) {\n cb(input, index, position, numberOfInputs);\n }\n }\n }\n isConditionDisabled(position, lastUiCompletePosition) {\n if (this.isReadOnly()) {\n return true;\n } // Read-only mode trumps everything.\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 and no subsequent conditions are complete.\n return position > lastUiCompletePosition + 1;\n }\n isConditionBodyVisible(position) {\n // Check that the condition needs inputs.\n const type = this.getConditionType(position);\n const 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 isConditionUiComplete(position) {\n if (position >= this.getNumConditions()) {\n return false;\n } // Condition doesn't exist.\n const type = this.getConditionType(position);\n if (type === SimpleFilter.EMPTY) {\n return false;\n }\n if (this.getValues(position).some(v => v == null)) {\n return false;\n }\n return true;\n }\n getNumConditions() {\n return this.eTypes.length;\n }\n getUiCompleteConditions() {\n const conditions = [];\n for (let position = 0; position < this.getNumConditions(); position++) {\n if (this.isConditionUiComplete(position)) {\n conditions.push(this.createCondition(position));\n }\n }\n return conditions;\n }\n createMissingConditionsAndOperators() {\n if (this.isReadOnly()) {\n return;\n } // don't show incomplete conditions when read only\n for (let i = this.getNumConditions(); i < this.numAlwaysVisibleConditions; i++) {\n this.createJoinOperatorPanel();\n this.createOption();\n }\n }\n resetUiToDefaults(silent) {\n this.removeConditionsAndOperators(this.isReadOnly() ? 1 : this.numAlwaysVisibleConditions);\n this.eTypes.forEach(eType => this.resetType(eType));\n this.eJoinOperatorsAnd.forEach((eJoinOperatorAnd, index) => this.resetJoinOperatorAnd(eJoinOperatorAnd, index, this.joinOperatorId + index));\n this.eJoinOperatorsOr.forEach((eJoinOperatorOr, index) => this.resetJoinOperatorOr(eJoinOperatorOr, index, this.joinOperatorId + index));\n this.joinOperatorId++;\n this.forEachInput((element) => this.resetInput(element));\n this.resetPlaceholder();\n this.createMissingConditionsAndOperators();\n this.lastUiCompletePosition = null;\n if (!silent) {\n this.onUiChanged();\n }\n return AgPromise.resolve();\n }\n resetType(eType) {\n const translate = this.localeService.getLocaleTextFunc();\n const filteringLabel = translate('ariaFilteringOperator', 'Filtering operator');\n eType\n .setValue(this.optionsFactory.getDefaultOption(), true)\n .setAriaLabel(filteringLabel)\n .setDisabled(this.isReadOnly() || this.filterListOptions.length <= 1);\n }\n resetJoinOperatorAnd(eJoinOperatorAnd, index, uniqueGroupId) {\n this.resetJoinOperator(eJoinOperatorAnd, index, this.isDefaultOperator('AND'), this.translate('andCondition'), uniqueGroupId);\n }\n resetJoinOperatorOr(eJoinOperatorOr, index, uniqueGroupId) {\n this.resetJoinOperator(eJoinOperatorOr, index, this.isDefaultOperator('OR'), this.translate('orCondition'), uniqueGroupId);\n }\n resetJoinOperator(eJoinOperator, index, value, label, uniqueGroupId) {\n this.updateJoinOperatorDisabled(eJoinOperator\n .setValue(value, true)\n .setName(`ag-simple-filter-and-or-${this.getCompId()}-${uniqueGroupId}`)\n .setLabel(label), index);\n }\n updateJoinOperatorsDisabled() {\n this.eJoinOperatorsAnd.forEach((eJoinOperator, index) => this.updateJoinOperatorDisabled(eJoinOperator, index));\n this.eJoinOperatorsOr.forEach((eJoinOperator, index) => this.updateJoinOperatorDisabled(eJoinOperator, index));\n }\n updateJoinOperatorDisabled(eJoinOperator, index) {\n eJoinOperator.setDisabled(this.isReadOnly() || index > 0);\n }\n resetInput(element) {\n this.setElementValue(element, null);\n this.setElementDisabled(element, this.isReadOnly());\n }\n // puts model values into the UI\n setConditionIntoUi(model, position) {\n const values = this.mapValuesFromModel(model);\n this.forEachInput((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 setValueFromFloatingFilter(value) {\n this.forEachInput((element, index, position, _) => {\n this.setElementValue(element, index === 0 && position === 0 ? value : null);\n });\n }\n isDefaultOperator(operator) {\n return operator === this.defaultJoinOperator;\n }\n addChangedListeners(eType, position) {\n if (this.isReadOnly()) {\n return;\n }\n eType.onValueChange(this.listener);\n this.forEachPositionInput(position, (element) => {\n this.attachElementOnChange(element, this.listener);\n });\n }\n /** returns true if the row passes the said condition */\n individualConditionPasses(params, filterModel) {\n const cellValue = this.getCellValue(params.node);\n const values = this.mapValuesFromModel(filterModel);\n const customFilterOption = this.optionsFactory.getCustomOption(filterModel.type);\n const 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 evaluateCustomFilter(customFilterOption, values, cellValue) {\n if (customFilterOption == null) {\n return;\n }\n const { predicate } = customFilterOption;\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(v => v == null)) {\n return predicate(values, cellValue);\n }\n // No custom filter invocation, indicate that to the caller.\n return;\n }\n isBlank(cellValue) {\n return cellValue == null ||\n (typeof cellValue === 'string' && cellValue.trim().length === 0);\n }\n hasInvalidInputs() {\n return false;\n }\n}\nSimpleFilter.EMPTY = 'empty';\nSimpleFilter.BLANK = 'blank';\nSimpleFilter.NOT_BLANK = 'notBlank';\nSimpleFilter.EQUALS = 'equals';\nSimpleFilter.NOT_EQUAL = 'notEqual';\nSimpleFilter.LESS_THAN = 'lessThan';\nSimpleFilter.LESS_THAN_OR_EQUAL = 'lessThanOrEqual';\nSimpleFilter.GREATER_THAN = 'greaterThan';\nSimpleFilter.GREATER_THAN_OR_EQUAL = 'greaterThanOrEqual';\nSimpleFilter.IN_RANGE = 'inRange';\nSimpleFilter.CONTAINS = 'contains';\nSimpleFilter.NOT_CONTAINS = 'notContains';\nSimpleFilter.STARTS_WITH = 'startsWith';\nSimpleFilter.ENDS_WITH = 'endsWith';\n\nclass ScalarFilter extends SimpleFilter {\n setParams(params) {\n super.setParams(params);\n this.scalarFilterParams = params;\n }\n evaluateNullValue(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 evaluateNonNullValue(values, cellValue, filterModel) {\n const comparator = this.comparator();\n const 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 const 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}\n\nvar __decorate$2h = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst DEFAULT_MIN_YEAR = 1000;\nconst DEFAULT_MAX_YEAR = Infinity;\nclass DateFilterModelFormatter extends SimpleFilterModelFormatter {\n constructor(dateFilterParams, localeService, optionsFactory) {\n super(localeService, optionsFactory);\n this.dateFilterParams = dateFilterParams;\n }\n conditionToString(condition, options) {\n const { type } = condition;\n const { numberOfInputs } = options || {};\n const isRange = type == SimpleFilter.IN_RANGE || numberOfInputs === 2;\n const dateFrom = parseDateTimeFromString(condition.dateFrom);\n const dateTo = parseDateTimeFromString(condition.dateTo);\n const format = this.dateFilterParams.inRangeFloatingFilterDateFormat;\n if (isRange) {\n const formattedFrom = dateFrom !== null ? dateToFormattedString(dateFrom, format) : 'null';\n const formattedTo = dateTo !== null ? dateToFormattedString(dateTo, format) : 'null';\n return `${formattedFrom}-${formattedTo}`;\n }\n if (dateFrom != null) {\n return dateToFormattedString(dateFrom, format);\n }\n // cater for when the type doesn't need a value\n return `${type}`;\n }\n}\nclass DateFilter extends ScalarFilter {\n constructor() {\n super('dateFilter');\n this.eConditionPanelsFrom = [];\n this.eConditionPanelsTo = [];\n this.dateConditionFromComps = [];\n this.dateConditionToComps = [];\n this.minValidYear = DEFAULT_MIN_YEAR;\n this.maxValidYear = DEFAULT_MAX_YEAR;\n }\n afterGuiAttached(params) {\n super.afterGuiAttached(params);\n this.dateConditionFromComps[0].afterGuiAttached(params);\n }\n mapValuesFromModel(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 const { dateFrom, dateTo, type } = filterModel || {};\n return [\n dateFrom && parseDateTimeFromString(dateFrom) || null,\n dateTo && parseDateTimeFromString(dateTo) || null,\n ].slice(0, this.getNumberOfInputs(type));\n }\n comparator() {\n return this.dateFilterParams.comparator ? this.dateFilterParams.comparator : this.defaultComparator.bind(this);\n }\n defaultComparator(filterDate, cellValue) {\n // The default comparator assumes that the cellValue is a date\n const 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 setParams(params) {\n this.dateFilterParams = params;\n super.setParams(params);\n const yearParser = (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.filterModelFormatter = new DateFilterModelFormatter(this.dateFilterParams, this.localeService, this.optionsFactory);\n }\n createDateCompWrapper(element) {\n const dateCompWrapper = new DateCompWrapper(this.getContext(), this.userComponentFactory, {\n onDateChanged: () => this.onUiChanged(),\n filterParams: this.dateFilterParams\n }, element);\n this.addDestroyFunc(() => dateCompWrapper.destroy());\n return dateCompWrapper;\n }\n setElementValue(element, value) {\n element.setDate(value);\n }\n setElementDisplayed(element, displayed) {\n element.setDisplayed(displayed);\n }\n setElementDisabled(element, disabled) {\n element.setDisabled(disabled);\n }\n getDefaultFilterOptions() {\n return DateFilter.DEFAULT_FILTER_OPTIONS;\n }\n createValueElement() {\n const eCondition = document.createElement('div');\n eCondition.classList.add('ag-filter-body');\n this.createFromToElement(eCondition, this.eConditionPanelsFrom, this.dateConditionFromComps, 'from');\n this.createFromToElement(eCondition, this.eConditionPanelsTo, this.dateConditionToComps, 'to');\n return eCondition;\n }\n createFromToElement(eCondition, eConditionPanels, dateConditionComps, fromTo) {\n const eConditionPanel = document.createElement('div');\n eConditionPanel.classList.add(`ag-filter-${fromTo}`);\n eConditionPanel.classList.add(`ag-filter-date-${fromTo}`);\n eConditionPanels.push(eConditionPanel);\n eCondition.appendChild(eConditionPanel);\n dateConditionComps.push(this.createDateCompWrapper(eConditionPanel));\n }\n removeValueElements(startPosition, deleteCount) {\n this.removeDateComps(this.dateConditionFromComps, startPosition, deleteCount);\n this.removeDateComps(this.dateConditionToComps, startPosition, deleteCount);\n this.removeItems(this.eConditionPanelsFrom, startPosition, deleteCount);\n this.removeItems(this.eConditionPanelsTo, startPosition, deleteCount);\n }\n removeDateComps(components, startPosition, deleteCount) {\n const removedComponents = this.removeItems(components, startPosition, deleteCount);\n removedComponents.forEach(comp => comp.destroy());\n }\n isConditionUiComplete(position) {\n if (!super.isConditionUiComplete(position)) {\n return false;\n }\n const isValidDate = (value) => value != null\n && value.getUTCFullYear() >= this.minValidYear\n && value.getUTCFullYear() <= this.maxValidYear;\n let valid = true;\n this.forEachInput((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 areSimpleModelsEqual(aSimple, bSimple) {\n return aSimple.dateFrom === bSimple.dateFrom\n && aSimple.dateTo === bSimple.dateTo\n && aSimple.type === bSimple.type;\n }\n getFilterType() {\n return 'date';\n }\n createCondition(position) {\n const type = this.getConditionType(position);\n const model = {};\n const 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 Object.assign({ dateFrom: null, dateTo: null, filterType: this.getFilterType(), type }, model);\n }\n resetPlaceholder() {\n const globalTranslate = this.localeService.getLocaleTextFunc();\n const placeholder = this.translate('dateFormatOoo');\n const ariaLabel = globalTranslate('ariaFilterValue', 'Filter Value');\n this.forEachInput((element) => {\n element.setInputPlaceholder(placeholder);\n element.setInputAriaLabel(ariaLabel);\n });\n }\n getInputs(position) {\n if (position >= this.dateConditionFromComps.length) {\n return [null, null];\n }\n return [this.dateConditionFromComps[position], this.dateConditionToComps[position]];\n }\n getValues(position) {\n const result = [];\n this.forEachPositionInput(position, (element, index, _elPosition, numberOfInputs) => {\n if (index < numberOfInputs) {\n result.push(element.getDate());\n }\n });\n return result;\n }\n getModelAsString(model) {\n var _a;\n return (_a = this.filterModelFormatter.getModelAsString(model)) !== null && _a !== void 0 ? _a : '';\n }\n}\nDateFilter.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$2h([\n Autowired('userComponentFactory')\n], DateFilter.prototype, \"userComponentFactory\", void 0);\n\nclass SimpleFloatingFilter extends Component {\n getDefaultDebounceMs() {\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 destroy() {\n super.destroy();\n }\n isEventFromFloatingFilter(event) {\n return event && event.afterFloatingFilter;\n }\n isEventFromDataChange(event) {\n return event === null || event === void 0 ? void 0 : event.afterDataChange;\n }\n getLastType() {\n return this.lastType;\n }\n isReadOnly() {\n return this.readOnly;\n }\n setLastTypeFromModel(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 const isCombined = model.operator;\n let condition;\n if (isCombined) {\n const combinedModel = model;\n condition = combinedModel.conditions[0];\n }\n else {\n condition = model;\n }\n this.lastType = condition.type;\n }\n canWeEditAfterModelFromParentFilter(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 const isCombined = model.operator;\n if (isCombined) {\n return false;\n }\n const simpleModel = model;\n return this.isTypeEditable(simpleModel.type);\n }\n init(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 ProvidedFilterParams - 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 const editable = this.isTypeEditable(this.lastType);\n this.setEditable(editable);\n }\n doesFilterHaveSingleInput(filterType) {\n const customFilterOption = this.optionsFactory.getCustomOption(filterType);\n const { numberOfInputs } = customFilterOption || {};\n return numberOfInputs == null || numberOfInputs == 1;\n }\n isTypeEditable(type) {\n const 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}\n\nvar __decorate$2g = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass DateFloatingFilter extends SimpleFloatingFilter {\n constructor() {\n super(/* html */ `\n
\n \n
\n
`);\n }\n getDefaultFilterOptions() {\n return DateFilter.DEFAULT_FILTER_OPTIONS;\n }\n init(params) {\n super.init(params);\n this.params = params;\n this.filterParams = params.filterParams;\n this.createDateComponent();\n const translate = this.localeService.getLocaleTextFunc();\n this.eReadOnlyText\n .setDisabled(true)\n .setInputAriaLabel(translate('ariaDateFilterInput', 'Date Filter Input'));\n this.filterModelFormatter = new DateFilterModelFormatter(this.filterParams, this.localeService, this.optionsFactory);\n }\n setEditable(editable) {\n setDisplayed(this.eDateWrapper, editable);\n setDisplayed(this.eReadOnlyText.getGui(), !editable);\n }\n onParentModelChanged(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 // This is similar for data changes, which don't affect provided date floating filters\n if (this.isEventFromFloatingFilter(event) || this.isEventFromDataChange(event)) {\n return;\n }\n super.setLastTypeFromModel(model);\n const allowEditing = !this.isReadOnly() &&\n this.canWeEditAfterModelFromParentFilter(model);\n this.setEditable(allowEditing);\n if (allowEditing) {\n if (model) {\n const 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.filterModelFormatter.getModelAsString(model));\n this.dateComp.setDate(null);\n }\n }\n onDateChanged() {\n const filterValueDate = this.dateComp.getDate();\n const filterValueText = serialiseDate(filterValueDate);\n this.params.parentFilterInstance(filterInstance => {\n if (filterInstance) {\n const date = parseDateTimeFromString(filterValueText);\n filterInstance.onFloatingFilterChanged(this.getLastType() || null, date);\n }\n });\n }\n createDateComponent() {\n const debounceMs = ProvidedFilter.getDebounceMs(this.params.filterParams, this.getDefaultDebounceMs());\n const 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(() => this.dateComp.destroy());\n }\n getFilterModelFormatter() {\n return this.filterModelFormatter;\n }\n}\n__decorate$2g([\n Autowired('userComponentFactory')\n], DateFloatingFilter.prototype, \"userComponentFactory\", void 0);\n__decorate$2g([\n RefSelector('eReadOnlyText')\n], DateFloatingFilter.prototype, \"eReadOnlyText\", void 0);\n__decorate$2g([\n RefSelector('eDateWrapper')\n], DateFloatingFilter.prototype, \"eDateWrapper\", void 0);\n\nvar __decorate$2f = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass DefaultDateComponent extends Component {\n constructor() {\n super(/* html */ `\n
\n \n
`);\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 destroy() {\n super.destroy();\n }\n init(params) {\n const eDocument = this.gridOptionsService.getDocument();\n const inputElement = this.eDateInput.getInputElement();\n const shouldUseBrowserDatePicker = this.shouldUseBrowserDatePicker(params);\n if (shouldUseBrowserDatePicker) {\n inputElement.type = 'date';\n }\n // ensures that the input element is focussed when a clear button is clicked,\n // unless using safari as there is no clear button and focus does not work properly\n const usingSafariDatePicker = shouldUseBrowserDatePicker && isBrowserSafari();\n this.addManagedListener(inputElement, 'mousedown', () => {\n if (this.eDateInput.isDisabled() || usingSafariDatePicker) {\n return;\n }\n inputElement.focus();\n });\n this.addManagedListener(inputElement, 'input', e => {\n if (e.target !== eDocument.activeElement) {\n return;\n }\n if (this.eDateInput.isDisabled()) {\n return;\n }\n params.onDateChanged();\n });\n const { minValidYear, maxValidYear } = params.filterParams || {};\n if (minValidYear) {\n inputElement.min = `${minValidYear}-01-01`;\n }\n if (maxValidYear) {\n inputElement.max = `${maxValidYear}-12-31`;\n }\n }\n getDate() {\n return parseDateTimeFromString(this.eDateInput.getValue());\n }\n setDate(date) {\n this.eDateInput.setValue(serialiseDate(date, false));\n }\n setInputPlaceholder(placeholder) {\n this.eDateInput.setInputPlaceholder(placeholder);\n }\n setDisabled(disabled) {\n this.eDateInput.setDisabled(disabled);\n }\n afterGuiAttached(params) {\n if (!params || !params.suppressFocus) {\n this.eDateInput.getInputElement().focus();\n }\n }\n shouldUseBrowserDatePicker(params) {\n if (params.filterParams && params.filterParams.browserDatePicker != null) {\n return params.filterParams.browserDatePicker;\n }\n return isBrowserChrome() || isBrowserFirefox() || (isBrowserSafari() && getSafariVersion() >= 14.1);\n }\n}\n__decorate$2f([\n RefSelector('eDateInput')\n], DefaultDateComponent.prototype, \"eDateInput\", void 0);\n\nclass AgInputTextField extends AgAbstractInputField {\n constructor(config, className = 'ag-text-field', inputType = 'text') {\n super(config, className, inputType);\n }\n postConstruct() {\n super.postConstruct();\n if (this.config.allowedCharPattern) {\n this.preventDisallowedCharacters();\n }\n }\n setValue(value, silent) {\n const ret = super.setValue(value, silent);\n if (this.eInput.value !== value) {\n this.eInput.value = exists(value) ? value : '';\n }\n return ret;\n }\n /** Used to set an initial value into the input without necessarily setting `this.value` or triggering events (e.g. to set an invalid value) */\n setStartValue(value) {\n this.setValue(value, true);\n }\n preventDisallowedCharacters() {\n const pattern = new RegExp(`[${this.config.allowedCharPattern}]`);\n const preventCharacters = (event) => {\n if (!isEventFromPrintableCharacter(event)) {\n return;\n }\n if (event.key && !pattern.test(event.key)) {\n event.preventDefault();\n }\n };\n this.addManagedListener(this.eInput, 'keydown', preventCharacters);\n this.addManagedListener(this.eInput, 'paste', (e) => {\n var _a;\n const text = (_a = e.clipboardData) === null || _a === void 0 ? void 0 : _a.getData('text');\n if (text && text.split('').some((c) => !pattern.test(c))) {\n e.preventDefault();\n }\n });\n }\n}\n\nclass AgInputNumberField extends AgInputTextField {\n constructor(config) {\n super(config, 'ag-number-field', 'number');\n }\n postConstruct() {\n super.postConstruct();\n this.addManagedListener(this.eInput, 'blur', () => {\n const floatedValue = parseFloat(this.eInput.value);\n const value = isNaN(floatedValue) ? '' : this.normalizeValue(floatedValue.toString());\n if (this.value !== value) {\n this.setValue(value);\n }\n });\n this.addManagedListener(this.eInput, 'wheel', this.onWheel.bind(this));\n this.eInput.step = 'any';\n }\n onWheel(e) {\n // Prevent default scroll events from incrementing / decrementing the input, since its inconsistent between browsers\n if (document.activeElement === this.eInput) {\n e.preventDefault();\n }\n }\n normalizeValue(value) {\n if (value === '') {\n return '';\n }\n if (this.precision != null) {\n value = this.adjustPrecision(value);\n }\n const 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 adjustPrecision(value, isScientificNotation) {\n if (this.precision == null) {\n return value;\n }\n if (isScientificNotation) {\n const floatString = parseFloat(value).toFixed(this.precision);\n return parseFloat(floatString).toString();\n }\n // can't use toFixed here because we don't want to round up\n const parts = String(value).split('.');\n if (parts.length > 1) {\n if (parts[1].length <= this.precision) {\n return value;\n }\n else if (this.precision > 0) {\n return `${parts[0]}.${parts[1].slice(0, this.precision)}`;\n }\n }\n return parts[0];\n }\n setMin(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 setMax(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 setPrecision(precision) {\n this.precision = precision;\n return this;\n }\n setStep(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 setValue(value, silent) {\n return this.setValueOrInputValue(v => super.setValue(v, silent), () => this, value);\n }\n setStartValue(value) {\n return this.setValueOrInputValue(v => super.setValue(v, true), v => { this.eInput.value = v; }, value);\n }\n setValueOrInputValue(setValueFunc, setInputValueOnlyFunc, value) {\n if (exists(value)) {\n // need to maintain the scientific notation format whilst typing (e.g. 1e10)\n let setInputValueOnly = this.isScientificNotation(value);\n if (setInputValueOnly && this.eInput.validity.valid) {\n return setValueFunc(value);\n }\n if (!setInputValueOnly) {\n value = this.adjustPrecision(value);\n const normalizedValue = this.normalizeValue(value);\n // outside of valid range\n setInputValueOnly = value != normalizedValue;\n }\n if (setInputValueOnly) {\n return setInputValueOnlyFunc(value);\n }\n }\n return setValueFunc(value);\n }\n getValue() {\n if (!this.eInput.validity.valid) {\n return undefined;\n }\n const inputValue = this.eInput.value;\n if (this.isScientificNotation(inputValue)) {\n return this.adjustPrecision(inputValue, true);\n }\n return super.getValue();\n }\n isScientificNotation(value) {\n return typeof value === 'string' && value.includes('e');\n }\n}\n\nclass NumberFilterModelFormatter extends SimpleFilterModelFormatter {\n conditionToString(condition, options) {\n const { numberOfInputs } = options || {};\n const 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}\nfunction getAllowedCharPattern(filterParams) {\n const { allowedCharPattern } = filterParams !== null && filterParams !== void 0 ? filterParams : {};\n return allowedCharPattern !== null && allowedCharPattern !== void 0 ? allowedCharPattern : null;\n}\nclass NumberFilter extends ScalarFilter {\n constructor() {\n super('numberFilter');\n this.eValuesFrom = [];\n this.eValuesTo = [];\n }\n mapValuesFromModel(filterModel) {\n const { filter, filterTo, type } = filterModel || {};\n return [\n this.processValue(filter),\n this.processValue(filterTo),\n ].slice(0, this.getNumberOfInputs(type));\n }\n getDefaultDebounceMs() {\n return 500;\n }\n comparator() {\n return (left, right) => {\n if (left === right) {\n return 0;\n }\n return left < right ? 1 : -1;\n };\n }\n setParams(params) {\n this.numberFilterParams = params;\n super.setParams(params);\n this.filterModelFormatter = new NumberFilterModelFormatter(this.localeService, this.optionsFactory);\n }\n getDefaultFilterOptions() {\n return NumberFilter.DEFAULT_FILTER_OPTIONS;\n }\n createValueElement() {\n const allowedCharPattern = getAllowedCharPattern(this.numberFilterParams);\n const eCondition = document.createElement('div');\n eCondition.classList.add('ag-filter-body');\n setAriaRole(eCondition, 'presentation');\n this.createFromToElement(eCondition, this.eValuesFrom, 'from', allowedCharPattern);\n this.createFromToElement(eCondition, this.eValuesTo, 'to', allowedCharPattern);\n return eCondition;\n }\n createFromToElement(eCondition, eValues, fromTo, allowedCharPattern) {\n const eValue = this.createManagedBean(allowedCharPattern ? new AgInputTextField({ allowedCharPattern }) : new AgInputNumberField());\n eValue.addCssClass(`ag-filter-${fromTo}`);\n eValue.addCssClass('ag-filter-filter');\n eValues.push(eValue);\n eCondition.appendChild(eValue.getGui());\n }\n removeValueElements(startPosition, deleteCount) {\n this.removeComponents(this.eValuesFrom, startPosition, deleteCount);\n this.removeComponents(this.eValuesTo, startPosition, deleteCount);\n }\n getValues(position) {\n const result = [];\n this.forEachPositionInput(position, (element, index, _elPosition, numberOfInputs) => {\n if (index < numberOfInputs) {\n result.push(this.processValue(this.stringToFloat(element.getValue())));\n }\n });\n return result;\n }\n areSimpleModelsEqual(aSimple, bSimple) {\n return aSimple.filter === bSimple.filter\n && aSimple.filterTo === bSimple.filterTo\n && aSimple.type === bSimple.type;\n }\n getFilterType() {\n return 'number';\n }\n processValue(value) {\n if (value == null) {\n return null;\n }\n return isNaN(value) ? null : value;\n }\n stringToFloat(value) {\n if (typeof value === 'number') {\n return value;\n }\n let 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 createCondition(position) {\n const type = this.getConditionType(position);\n const model = {\n filterType: this.getFilterType(),\n type\n };\n const 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 getInputs(position) {\n if (position >= this.eValuesFrom.length) {\n return [null, null];\n }\n return [this.eValuesFrom[position], this.eValuesTo[position]];\n }\n getModelAsString(model) {\n var _a;\n return (_a = this.filterModelFormatter.getModelAsString(model)) !== null && _a !== void 0 ? _a : '';\n }\n hasInvalidInputs() {\n let invalidInputs = false;\n this.forEachInput(element => {\n if (!element.getInputElement().validity.valid) {\n invalidInputs = true;\n return;\n }\n });\n return invalidInputs;\n }\n}\nNumberFilter.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\nclass TextFilterModelFormatter extends SimpleFilterModelFormatter {\n conditionToString(condition, options) {\n const { numberOfInputs } = options || {};\n const 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}\nclass TextFilter extends SimpleFilter {\n constructor() {\n super('textFilter');\n this.eValuesFrom = [];\n this.eValuesTo = [];\n }\n static trimInput(value) {\n const 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 getDefaultDebounceMs() {\n return 500;\n }\n setParams(params) {\n this.textFilterParams = params;\n super.setParams(params);\n this.matcher = this.getTextMatcher();\n this.formatter = this.textFilterParams.textFormatter ||\n (this.textFilterParams.caseSensitive ? TextFilter.DEFAULT_FORMATTER : TextFilter.DEFAULT_LOWERCASE_FORMATTER);\n this.filterModelFormatter = new TextFilterModelFormatter(this.localeService, this.optionsFactory);\n }\n getTextMatcher() {\n const legacyComparator = this.textFilterParams.textCustomComparator;\n if (legacyComparator) {\n _.doOnce(() => console.warn('AG Grid - textCustomComparator is deprecated, use textMatcher instead.'), 'textCustomComparator.deprecated');\n return ({ filterOption, value, filterText }) => legacyComparator(filterOption, value, filterText);\n }\n return this.textFilterParams.textMatcher || TextFilter.DEFAULT_MATCHER;\n }\n createCondition(position) {\n const type = this.getConditionType(position);\n const model = {\n filterType: this.getFilterType(),\n type,\n };\n const 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 getFilterType() {\n return 'text';\n }\n areSimpleModelsEqual(aSimple, bSimple) {\n return aSimple.filter === bSimple.filter &&\n aSimple.filterTo === bSimple.filterTo &&\n aSimple.type === bSimple.type;\n }\n getInputs(position) {\n if (position >= this.eValuesFrom.length) {\n return [null, null];\n }\n return [this.eValuesFrom[position], this.eValuesTo[position]];\n }\n getValues(position) {\n const result = [];\n this.forEachPositionInput(position, (element, index, _elPosition, numberOfInputs) => {\n if (index < numberOfInputs) {\n const value = makeNull(element.getValue());\n const 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 getDefaultFilterOptions() {\n return TextFilter.DEFAULT_FILTER_OPTIONS;\n }\n createValueElement() {\n const eCondition = document.createElement('div');\n eCondition.classList.add('ag-filter-body');\n setAriaRole(eCondition, 'presentation');\n this.createFromToElement(eCondition, this.eValuesFrom, 'from');\n this.createFromToElement(eCondition, this.eValuesTo, 'to');\n return eCondition;\n }\n createFromToElement(eCondition, eValues, fromTo) {\n const eValue = this.createManagedBean(new AgInputTextField());\n eValue.addCssClass(`ag-filter-${fromTo}`);\n eValue.addCssClass('ag-filter-filter');\n eValues.push(eValue);\n eCondition.appendChild(eValue.getGui());\n }\n removeValueElements(startPosition, deleteCount) {\n this.removeComponents(this.eValuesFrom, startPosition, deleteCount);\n this.removeComponents(this.eValuesTo, startPosition, deleteCount);\n }\n mapValuesFromModel(filterModel) {\n const { filter, filterTo, type } = filterModel || {};\n return [\n filter || null,\n filterTo || null,\n ].slice(0, this.getNumberOfInputs(type));\n }\n evaluateNullValue(filterType) {\n const filterTypesAllowNulls = [\n SimpleFilter.NOT_EQUAL, SimpleFilter.NOT_CONTAINS, SimpleFilter.BLANK,\n ];\n return filterType ? filterTypesAllowNulls.indexOf(filterType) >= 0 : false;\n }\n evaluateNonNullValue(values, cellValue, filterModel, params) {\n const formattedValues = values.map(v => this.formatter(v)) || [];\n const cellValueFormatted = this.formatter(cellValue);\n const { api, colDef, column, columnApi, context, textFormatter } = this.textFilterParams;\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 const matcherParams = {\n api,\n colDef,\n column,\n columnApi,\n context,\n node: params.node,\n data: params.data,\n filterOption: filterModel.type,\n value: cellValueFormatted,\n textFormatter,\n };\n return formattedValues.some(v => this.matcher(Object.assign(Object.assign({}, matcherParams), { filterText: v })));\n }\n getModelAsString(model) {\n var _a;\n return (_a = this.filterModelFormatter.getModelAsString(model)) !== null && _a !== void 0 ? _a : '';\n }\n}\nTextFilter.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];\nTextFilter.DEFAULT_FORMATTER = (from) => from;\nTextFilter.DEFAULT_LOWERCASE_FORMATTER = (from) => from == null ? null : from.toString().toLowerCase();\nTextFilter.DEFAULT_MATCHER = ({ filterOption, value, 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 const index = value.lastIndexOf(filterText);\n return index >= 0 && index === (value.length - filterText.length);\n default:\n return false;\n }\n};\n\nvar __decorate$2e = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass FloatingFilterTextInputService extends BeanStub {\n constructor(params) {\n super();\n this.params = params;\n }\n setupGui(parentElement) {\n this.eFloatingFilterTextInput = this.createManagedBean(new AgInputTextField(this.params.config));\n this.eFloatingFilterTextInput.setInputAriaLabel(this.params.ariaLabel);\n parentElement.appendChild(this.eFloatingFilterTextInput.getGui());\n }\n setEditable(editable) {\n this.eFloatingFilterTextInput.setDisabled(!editable);\n }\n getValue() {\n return this.eFloatingFilterTextInput.getValue();\n }\n setValue(value, silent) {\n this.eFloatingFilterTextInput.setValue(value, silent);\n }\n addValueChangedListener(listener) {\n const inputGui = this.eFloatingFilterTextInput.getGui();\n this.addManagedListener(inputGui, 'input', listener);\n this.addManagedListener(inputGui, 'keydown', listener);\n }\n}\nclass TextInputFloatingFilter extends SimpleFloatingFilter {\n postConstruct() {\n this.setTemplate(/* html */ `\n
\n `);\n }\n getDefaultDebounceMs() {\n return 500;\n }\n onParentModelChanged(model, event) {\n if (this.isEventFromFloatingFilter(event) || this.isEventFromDataChange(event)) {\n // if the floating filter triggered the change, it is already in sync.\n // Data changes also do not affect provided text floating filters\n return;\n }\n this.setLastTypeFromModel(model);\n this.setEditable(this.canWeEditAfterModelFromParentFilter(model));\n this.floatingFilterInputService.setValue(this.getFilterModelFormatter().getModelAsString(model));\n }\n init(params) {\n this.params = params;\n const displayName = this.columnModel.getDisplayNameForColumn(params.column, 'header', true);\n const translate = this.localeService.getLocaleTextFunc();\n const ariaLabel = `${displayName} ${translate('ariaFilterInput', 'Filter Input')}`;\n this.floatingFilterInputService = this.createFloatingFilterInputService(ariaLabel);\n this.floatingFilterInputService.setupGui(this.eFloatingFilterInputContainer);\n super.init(params);\n this.applyActive = ProvidedFilter.isUseApplyButton(this.params.filterParams);\n if (!this.isReadOnly()) {\n const debounceMs = ProvidedFilter.getDebounceMs(this.params.filterParams, this.getDefaultDebounceMs());\n const toDebounce = debounce(this.syncUpWithParentFilter.bind(this), debounceMs);\n this.floatingFilterInputService.addValueChangedListener(toDebounce);\n }\n }\n syncUpWithParentFilter(e) {\n const isEnterKey = e.key === KeyCode.ENTER;\n if (this.applyActive && !isEnterKey) {\n return;\n }\n let value = this.floatingFilterInputService.getValue();\n if (this.params.filterParams.trimInput) {\n value = TextFilter.trimInput(value);\n this.floatingFilterInputService.setValue(value, true); // ensure visible value is trimmed\n }\n this.params.parentFilterInstance(filterInstance => {\n if (filterInstance) {\n // NumberFilter is typed as number, but actually receives string values\n filterInstance.onFloatingFilterChanged(this.getLastType() || null, value || null);\n }\n });\n }\n setEditable(editable) {\n this.floatingFilterInputService.setEditable(editable);\n }\n}\n__decorate$2e([\n Autowired('columnModel')\n], TextInputFloatingFilter.prototype, \"columnModel\", void 0);\n__decorate$2e([\n RefSelector('eFloatingFilterInputContainer')\n], TextInputFloatingFilter.prototype, \"eFloatingFilterInputContainer\", void 0);\n__decorate$2e([\n PostConstruct\n], TextInputFloatingFilter.prototype, \"postConstruct\", null);\n\nclass FloatingFilterNumberInputService extends BeanStub {\n constructor(params) {\n super();\n this.params = params;\n this.numberInputActive = true;\n }\n setupGui(parentElement) {\n this.eFloatingFilterNumberInput = this.createManagedBean(new AgInputNumberField());\n this.eFloatingFilterTextInput = this.createManagedBean(new AgInputTextField());\n this.eFloatingFilterTextInput.setDisabled(true);\n this.eFloatingFilterNumberInput.setInputAriaLabel(this.params.ariaLabel);\n this.eFloatingFilterTextInput.setInputAriaLabel(this.params.ariaLabel);\n parentElement.appendChild(this.eFloatingFilterNumberInput.getGui());\n parentElement.appendChild(this.eFloatingFilterTextInput.getGui());\n }\n setEditable(editable) {\n this.numberInputActive = editable;\n this.eFloatingFilterNumberInput.setDisplayed(this.numberInputActive);\n this.eFloatingFilterTextInput.setDisplayed(!this.numberInputActive);\n }\n getValue() {\n return this.getActiveInputElement().getValue();\n }\n setValue(value, silent) {\n this.getActiveInputElement().setValue(value, silent);\n }\n getActiveInputElement() {\n return this.numberInputActive ? this.eFloatingFilterNumberInput : this.eFloatingFilterTextInput;\n }\n addValueChangedListener(listener) {\n this.setupListeners(this.eFloatingFilterNumberInput.getGui(), listener);\n this.setupListeners(this.eFloatingFilterTextInput.getGui(), listener);\n }\n setupListeners(element, listener) {\n this.addManagedListener(element, 'input', listener);\n this.addManagedListener(element, 'keydown', listener);\n }\n}\nclass NumberFloatingFilter extends TextInputFloatingFilter {\n init(params) {\n super.init(params);\n this.filterModelFormatter = new NumberFilterModelFormatter(this.localeService, this.optionsFactory);\n }\n getDefaultFilterOptions() {\n return NumberFilter.DEFAULT_FILTER_OPTIONS;\n }\n getFilterModelFormatter() {\n return this.filterModelFormatter;\n }\n createFloatingFilterInputService(ariaLabel) {\n const allowedCharPattern = getAllowedCharPattern(this.params.filterParams);\n if (allowedCharPattern) {\n // need to sue text input\n return this.createManagedBean(new FloatingFilterTextInputService({\n config: { allowedCharPattern },\n ariaLabel\n }));\n }\n return this.createManagedBean(new FloatingFilterNumberInputService({ ariaLabel }));\n }\n}\n\nclass TextFloatingFilter extends TextInputFloatingFilter {\n init(params) {\n super.init(params);\n this.filterModelFormatter = new TextFilterModelFormatter(this.localeService, this.optionsFactory);\n }\n getDefaultFilterOptions() {\n return TextFilter.DEFAULT_FILTER_OPTIONS;\n }\n getFilterModelFormatter() {\n return this.filterModelFormatter;\n }\n createFloatingFilterInputService(ariaLabel) {\n return this.createManagedBean(new FloatingFilterTextInputService({\n ariaLabel\n }));\n }\n}\n\nclass TouchListener {\n constructor(eElement, preventMouseClick = false) {\n this.destroyFuncs = [];\n this.touching = false;\n this.eventService = new EventService();\n this.eElement = eElement;\n this.preventMouseClick = preventMouseClick;\n const startListener = this.onTouchStart.bind(this);\n const moveListener = this.onTouchMove.bind(this);\n const 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(() => {\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 getActiveTouch(touchList) {\n for (let i = 0; i < touchList.length; i++) {\n const matches = touchList[i].identifier === this.touchStart.identifier;\n if (matches) {\n return touchList[i];\n }\n }\n return null;\n }\n addEventListener(eventType, listener) {\n this.eventService.addEventListener(eventType, listener);\n }\n removeEventListener(eventType, listener) {\n this.eventService.removeEventListener(eventType, listener);\n }\n onTouchStart(touchEvent) {\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 const touchStartCopy = this.touchStart;\n window.setTimeout(() => {\n const touchesMatch = this.touchStart === touchStartCopy;\n if (this.touching && touchesMatch && !this.moved) {\n this.moved = true;\n const event = {\n type: TouchListener.EVENT_LONG_TAP,\n touchStart: this.touchStart,\n touchEvent: touchEvent\n };\n this.eventService.dispatchEvent(event);\n }\n }, 500);\n }\n onTouchMove(touchEvent) {\n if (!this.touching) {\n return;\n }\n const touch = this.getActiveTouch(touchEvent.touches);\n if (!touch) {\n return;\n }\n const eventIsFarAway = !areEventsNear(touch, this.touchStart, 4);\n if (eventIsFarAway) {\n this.moved = true;\n }\n }\n onTouchEnd(touchEvent) {\n if (!this.touching) {\n return;\n }\n if (!this.moved) {\n const event = {\n type: TouchListener.EVENT_TAP,\n touchStart: this.touchStart\n };\n this.eventService.dispatchEvent(event);\n this.checkForDoubleTap();\n }\n // stops the tap from also been processed as a mouse click\n if (this.preventMouseClick && touchEvent.cancelable) {\n touchEvent.preventDefault();\n }\n this.touching = false;\n }\n checkForDoubleTap() {\n const 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 const interval = now - this.lastTapTime;\n if (interval > TouchListener.DOUBLE_TAP_MILLIS) {\n // dispatch double tap event\n const event = {\n type: TouchListener.EVENT_DOUBLE_TAP,\n touchStart: this.touchStart\n };\n this.eventService.dispatchEvent(event);\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 destroy() {\n this.destroyFuncs.forEach(func => func());\n }\n}\nTouchListener.EVENT_TAP = \"tap\";\nTouchListener.EVENT_DOUBLE_TAP = \"doubleTap\";\nTouchListener.EVENT_LONG_TAP = \"longTap\";\nTouchListener.DOUBLE_TAP_MILLIS = 500;\n\nvar __decorate$2d = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass SortIndicatorComp extends Component {\n constructor(skipTemplate) {\n super();\n if (!skipTemplate) {\n this.setTemplate(SortIndicatorComp.TEMPLATE);\n }\n }\n attachCustomElements(eSortOrder, eSortAsc, eSortDesc, eSortMixed, eSortNone) {\n this.eSortOrder = eSortOrder;\n this.eSortAsc = eSortAsc;\n this.eSortDesc = eSortDesc;\n this.eSortMixed = eSortMixed;\n this.eSortNone = eSortNone;\n }\n setupSort(column, suppressOrder = false) {\n this.column = column;\n this.suppressOrder = suppressOrder;\n this.setupMultiSortIndicator();\n const canSort = !!this.column.getColDef().sortable;\n if (!canSort) {\n return;\n }\n this.addInIcon('sortAscending', this.eSortAsc, column);\n this.addInIcon('sortDescending', this.eSortDesc, column);\n this.addInIcon('sortUnSort', this.eSortNone, column);\n // Watch global events, as row group columns can effect their display column.\n this.addManagedListener(this.eventService, Events.EVENT_SORT_CHANGED, () => this.onSortChanged());\n // when grouping changes so can sort indexes and icons\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, () => this.onSortChanged());\n this.onSortChanged();\n }\n addInIcon(iconName, eParent, column) {\n if (eParent == null) {\n return;\n }\n const eIcon = createIconNoSpan(iconName, this.gridOptionsService, column);\n if (eIcon) {\n eParent.appendChild(eIcon);\n }\n }\n onSortChanged() {\n this.updateIcons();\n if (!this.suppressOrder) {\n this.updateSortOrder();\n }\n }\n updateIcons() {\n const sortDirection = this.sortController.getDisplaySortForColumn(this.column);\n if (this.eSortAsc) {\n const isAscending = sortDirection === 'asc';\n setDisplayed(this.eSortAsc, isAscending, { skipAriaHidden: true });\n }\n if (this.eSortDesc) {\n const isDescending = sortDirection === 'desc';\n setDisplayed(this.eSortDesc, isDescending, { skipAriaHidden: true });\n }\n if (this.eSortNone) {\n const alwaysHideNoSort = !this.column.getColDef().unSortIcon && !this.gridOptionsService.is('unSortIcon');\n const isNone = sortDirection === null || sortDirection === undefined;\n setDisplayed(this.eSortNone, !alwaysHideNoSort && isNone, { skipAriaHidden: true });\n }\n }\n setupMultiSortIndicator() {\n this.addInIcon('sortUnSort', this.eSortMixed, this.column);\n const isColumnShowingRowGroup = this.column.getColDef().showRowGroup;\n const areGroupsCoupled = this.gridOptionsService.isColumnsSortingCoupledToGroup();\n if (areGroupsCoupled && isColumnShowingRowGroup) {\n // Watch global events, as row group columns can effect their display column.\n this.addManagedListener(this.eventService, Events.EVENT_SORT_CHANGED, () => this.updateMultiSortIndicator());\n // when grouping changes so can sort indexes and icons\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, () => this.updateMultiSortIndicator());\n this.updateMultiSortIndicator();\n }\n }\n updateMultiSortIndicator() {\n if (this.eSortMixed) {\n const isMixedSort = this.sortController.getDisplaySortForColumn(this.column) === 'mixed';\n setDisplayed(this.eSortMixed, isMixedSort, { skipAriaHidden: true });\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 updateSortOrder() {\n var _a;\n if (!this.eSortOrder) {\n return;\n }\n const allColumnsWithSorting = this.sortController.getColumnsWithSortingOrdered();\n const indexThisCol = (_a = this.sortController.getDisplaySortIndexForColumn(this.column)) !== null && _a !== void 0 ? _a : -1;\n const moreThanOneColSorting = allColumnsWithSorting.some(col => { var _a; return (_a = this.sortController.getDisplaySortIndexForColumn(col)) !== null && _a !== void 0 ? _a : -1 >= 1; });\n const showIndex = indexThisCol >= 0 && moreThanOneColSorting;\n setDisplayed(this.eSortOrder, showIndex, { skipAriaHidden: true });\n if (indexThisCol >= 0) {\n this.eSortOrder.innerHTML = (indexThisCol + 1).toString();\n }\n else {\n clearElement(this.eSortOrder);\n }\n }\n}\nSortIndicatorComp.TEMPLATE = `\n \n \n \n \n \n `;\n__decorate$2d([\n RefSelector('eSortOrder')\n], SortIndicatorComp.prototype, \"eSortOrder\", void 0);\n__decorate$2d([\n RefSelector('eSortAsc')\n], SortIndicatorComp.prototype, \"eSortAsc\", void 0);\n__decorate$2d([\n RefSelector('eSortDesc')\n], SortIndicatorComp.prototype, \"eSortDesc\", void 0);\n__decorate$2d([\n RefSelector('eSortMixed')\n], SortIndicatorComp.prototype, \"eSortMixed\", void 0);\n__decorate$2d([\n RefSelector('eSortNone')\n], SortIndicatorComp.prototype, \"eSortNone\", void 0);\n__decorate$2d([\n Autowired('columnModel')\n], SortIndicatorComp.prototype, \"columnModel\", void 0);\n__decorate$2d([\n Autowired('sortController')\n], SortIndicatorComp.prototype, \"sortController\", void 0);\n\nvar __decorate$2c = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass HeaderComp extends Component {\n constructor() {\n super(...arguments);\n this.lastMovingChanged = 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 destroy() {\n super.destroy();\n }\n refresh(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 workOutTemplate() {\n let 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 init(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 setDisplayName(params) {\n if (this.currentDisplayName != params.displayName) {\n this.currentDisplayName = params.displayName;\n const displayNameSanitised = escapeString(this.currentDisplayName);\n if (this.eText) {\n this.eText.innerHTML = displayNameSanitised;\n }\n }\n }\n setupIcons(column) {\n this.addInIcon('menu', this.eMenu, column);\n this.addInIcon('filter', this.eFilter, column);\n }\n addInIcon(iconName, eParent, column) {\n if (eParent == null) {\n return;\n }\n const eIcon = createIconNoSpan(iconName, this.gridOptionsService, column);\n if (eIcon) {\n eParent.appendChild(eIcon);\n }\n }\n setupTap() {\n const { gridOptionsService } = this;\n if (gridOptionsService.is('suppressTouch')) {\n return;\n }\n const touchListener = new TouchListener(this.getGui(), true);\n const suppressMenuHide = gridOptionsService.is('suppressMenuHide');\n const tapMenuButton = suppressMenuHide && exists(this.eMenu);\n const menuTouchListener = tapMenuButton ? new TouchListener(this.eMenu, true) : touchListener;\n if (this.params.enableMenu) {\n const eventType = tapMenuButton ? 'EVENT_TAP' : 'EVENT_LONG_TAP';\n const showMenuFn = (event) => {\n gridOptionsService.api.showColumnMenuAfterMouseClick(this.params.column, event.touchStart);\n };\n this.addManagedListener(menuTouchListener, TouchListener[eventType], showMenuFn);\n }\n if (this.params.enableSorting) {\n const tapListener = (event) => {\n const 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(() => touchListener.destroy());\n if (tapMenuButton) {\n this.addDestroyFunc(() => menuTouchListener.destroy());\n }\n }\n workOutShowMenu() {\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 const menuHides = !this.gridOptionsService.is('suppressMenuHide');\n const onIpadAndMenuHides = isIOSUserAgent() && menuHides;\n const showMenu = this.params.enableMenu && !onIpadAndMenuHides;\n return showMenu;\n }\n setMenu() {\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 const suppressMenuHide = this.gridOptionsService.is('suppressMenuHide');\n this.addManagedListener(this.eMenu, 'click', () => this.showMenu(this.eMenu));\n this.eMenu.classList.toggle('ag-header-menu-always-show', suppressMenuHide);\n }\n showMenu(eventSource) {\n if (!eventSource) {\n eventSource = this.eMenu;\n }\n this.menuFactory.showMenuAfterButtonClick(this.params.column, eventSource, 'columnMenu');\n }\n workOutSort() {\n return this.params.enableSorting;\n }\n setupSort() {\n this.currentSort = this.params.enableSorting;\n // eSortIndicator will not be present when customers provided custom header\n // templates, in that case, we need to look for provided sort elements and\n // manually create eSortIndicator.\n if (!this.eSortIndicator) {\n this.eSortIndicator = this.context.createBean(new SortIndicatorComp(true));\n this.eSortIndicator.attachCustomElements(this.eSortOrder, this.eSortAsc, this.eSortDesc, this.eSortMixed, this.eSortNone);\n }\n this.eSortIndicator.setupSort(this.params.column);\n // we set up the indicator prior to the check for whether this column is sortable, as it allows the indicator to\n // set up the multi sort indicator which can appear irrelevant of whether this column can itself be sorted.\n // this can occur in the case of a non-sortable group display column.\n if (!this.currentSort) {\n return;\n }\n const sortUsingCtrl = this.gridOptionsService.get('multiSortKey') === 'ctrl';\n // keep track of last time the moving changed flag was set\n this.addManagedListener(this.params.column, Column.EVENT_MOVING_CHANGED, () => {\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', (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 const moving = this.params.column.isMoving();\n const 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 const movedRecently = (nowTime - this.lastMovingChanged) < 50;\n const columnMoving = moving || movedRecently;\n if (!columnMoving) {\n const multiSort = sortUsingCtrl ? (event.ctrlKey || event.metaKey) : event.shiftKey;\n this.params.progressSort(multiSort);\n }\n });\n }\n const onSortingChanged = () => {\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.params.column.getColDef().showRowGroup) {\n const sourceColumns = this.columnModel.getSourceColumnsForGroupColumn(this.params.column);\n // this == is intentional, as it allows null and undefined to match, which are both unsorted states\n const sortDirectionsMatch = sourceColumns === null || sourceColumns === void 0 ? void 0 : sourceColumns.every(sourceCol => this.params.column.getSort() == sourceCol.getSort());\n const isMultiSorting = !sortDirectionsMatch;\n this.addOrRemoveCssClass('ag-header-cell-sorted-mixed', isMultiSorting);\n }\n };\n this.addManagedListener(this.eventService, Events.EVENT_SORT_CHANGED, onSortingChanged);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, onSortingChanged);\n }\n setupFilterIcon() {\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 onFilterChanged() {\n const filterPresent = this.params.column.isFilterActive();\n setDisplayed(this.eFilter, filterPresent, { skipAriaHidden: true });\n }\n}\nHeaderComp.TEMPLATE = `
\n \n
\n \n \n \n
\n
`;\n__decorate$2c([\n Autowired('sortController')\n], HeaderComp.prototype, \"sortController\", void 0);\n__decorate$2c([\n Autowired('menuFactory')\n], HeaderComp.prototype, \"menuFactory\", void 0);\n__decorate$2c([\n Autowired('columnModel')\n], HeaderComp.prototype, \"columnModel\", void 0);\n__decorate$2c([\n RefSelector('eFilter')\n], HeaderComp.prototype, \"eFilter\", void 0);\n__decorate$2c([\n RefSelector('eSortIndicator')\n], HeaderComp.prototype, \"eSortIndicator\", void 0);\n__decorate$2c([\n RefSelector('eMenu')\n], HeaderComp.prototype, \"eMenu\", void 0);\n__decorate$2c([\n RefSelector('eLabel')\n], HeaderComp.prototype, \"eLabel\", void 0);\n__decorate$2c([\n RefSelector('eText')\n], HeaderComp.prototype, \"eText\", void 0);\n__decorate$2c([\n RefSelector('eSortOrder')\n], HeaderComp.prototype, \"eSortOrder\", void 0);\n__decorate$2c([\n RefSelector('eSortAsc')\n], HeaderComp.prototype, \"eSortAsc\", void 0);\n__decorate$2c([\n RefSelector('eSortDesc')\n], HeaderComp.prototype, \"eSortDesc\", void 0);\n__decorate$2c([\n RefSelector('eSortMixed')\n], HeaderComp.prototype, \"eSortMixed\", void 0);\n__decorate$2c([\n RefSelector('eSortNone')\n], HeaderComp.prototype, \"eSortNone\", void 0);\n\nvar __decorate$2b = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass HeaderGroupComp extends Component {\n constructor() {\n super(HeaderGroupComp.TEMPLATE);\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 destroy() {\n super.destroy();\n }\n init(params) {\n this.params = params;\n this.checkWarnings();\n this.setupLabel();\n this.addGroupExpandIcon();\n this.setupExpandIcons();\n }\n checkWarnings() {\n const paramsAny = this.params;\n if (paramsAny.template) {\n const message = `AG Grid: A template was provided for Header Group Comp - templates are only supported for Header Comps (not groups)`;\n doOnce(() => console.warn(message), 'HeaderGroupComp.templateNotSupported');\n }\n }\n setupExpandIcons() {\n this.addInIcon(\"columnGroupOpened\", \"agOpened\");\n this.addInIcon(\"columnGroupClosed\", \"agClosed\");\n const expandAction = (event) => {\n if (isStopPropagationForAgGrid(event)) {\n return;\n }\n const 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 const stopPropagationAction = (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 const 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 addTouchAndClickListeners(eElement, action) {\n const touchListener = new TouchListener(eElement, true);\n this.addManagedListener(touchListener, TouchListener.EVENT_TAP, action);\n this.addDestroyFunc(() => touchListener.destroy());\n this.addManagedListener(eElement, \"click\", action);\n }\n updateIconVisibility() {\n const columnGroup = this.params.columnGroup;\n if (columnGroup.isExpandable()) {\n const 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 addInIcon(iconName, refName) {\n const eIcon = createIconNoSpan(iconName, this.gridOptionsService, null);\n if (eIcon) {\n this.getRefElement(refName).appendChild(eIcon);\n }\n }\n addGroupExpandIcon() {\n if (!this.params.columnGroup.isExpandable()) {\n setDisplayed(this.eOpenIcon, false);\n setDisplayed(this.eCloseIcon, false);\n return;\n }\n }\n setupLabel() {\n var _a;\n // no renderer, default text render\n const { displayName, columnGroup } = this.params;\n if (exists(displayName)) {\n const displayNameSanitised = escapeString(displayName);\n this.getRefElement('agLabel').innerHTML = displayNameSanitised;\n }\n this.addOrRemoveCssClass('ag-sticky-label', !((_a = columnGroup.getColGroupDef()) === null || _a === void 0 ? void 0 : _a.suppressStickyLabel));\n }\n}\nHeaderGroupComp.TEMPLATE = `
\n \n \n \n
`;\n__decorate$2b([\n Autowired(\"columnModel\")\n], HeaderGroupComp.prototype, \"columnModel\", void 0);\n__decorate$2b([\n RefSelector(\"agOpened\")\n], HeaderGroupComp.prototype, \"eOpenIcon\", void 0);\n__decorate$2b([\n RefSelector(\"agClosed\")\n], HeaderGroupComp.prototype, \"eCloseIcon\", void 0);\n\nclass PopupComponent extends Component {\n isPopup() {\n return true;\n }\n setParentComponent(container) {\n container.addCssClass('ag-has-popup');\n super.setParentComponent(container);\n }\n destroy() {\n const parentComp = this.parentComponent;\n const hasParent = parentComp && parentComp.isAlive();\n if (hasParent) {\n parentComp.getGui().classList.remove('ag-has-popup');\n }\n super.destroy();\n }\n}\n\nvar __decorate$2a = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass LargeTextCellEditor extends PopupComponent {\n constructor() {\n super(LargeTextCellEditor.TEMPLATE);\n }\n init(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, true)) {\n this.eTextArea.setValue(params.value.toString(), true);\n }\n this.addGuiEventListener('keydown', this.onKeyDown.bind(this));\n this.activateTabIndex();\n }\n onKeyDown(event) {\n const 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 afterGuiAttached() {\n const translate = this.localeService.getLocaleTextFunc();\n this.eTextArea.setInputAriaLabel(translate('ariaInputEditor', 'Input Editor'));\n if (this.focusAfterAttached) {\n this.eTextArea.getFocusableElement().focus();\n }\n }\n getValue() {\n const value = this.eTextArea.getValue();\n if (!exists(value) && !exists(this.params.value)) {\n return this.params.value;\n }\n return this.params.parseValue(value);\n }\n}\nLargeTextCellEditor.TEMPLATE = `
\n \n
`;\n__decorate$2a([\n RefSelector(\"eTextArea\")\n], LargeTextCellEditor.prototype, \"eTextArea\", void 0);\n\nvar __decorate$29 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass SelectCellEditor extends PopupComponent {\n constructor() {\n super('
');\n this.startedByEnter = false;\n }\n init(params) {\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 let hasValue = false;\n params.values.forEach((value) => {\n const option = { value };\n const valueFormatted = this.valueFormatterService.formatValue(params.column, null, value);\n const 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.gridOptionsService.get('editType') !== 'fullRow') {\n this.addManagedListener(this.eSelect, AgSelect.EVENT_ITEM_SELECTED, () => params.stopEditing());\n }\n }\n afterGuiAttached() {\n if (this.focusAfterAttached) {\n this.eSelect.getFocusableElement().focus();\n }\n if (this.startedByEnter) {\n this.eSelect.showPicker();\n }\n }\n focusIn() {\n this.eSelect.getFocusableElement().focus();\n }\n getValue() {\n return this.eSelect.getValue();\n }\n isPopup() {\n return false;\n }\n}\n__decorate$29([\n Autowired('valueFormatterService')\n], SelectCellEditor.prototype, \"valueFormatterService\", void 0);\n__decorate$29([\n RefSelector('eSelect')\n], SelectCellEditor.prototype, \"eSelect\", void 0);\n\nvar __decorate$28 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass SimpleCellEditor extends PopupComponent {\n constructor(cellEditorInput) {\n super(/* html */ `\n
\n ${cellEditorInput.getTemplate()}\n
`);\n this.cellEditorInput = cellEditorInput;\n }\n init(params) {\n this.params = params;\n const eInput = this.eInput;\n this.cellEditorInput.init(eInput, params);\n let startValue;\n // cellStartedEdit is only false if we are doing fullRow editing\n if (params.cellStartedEdit) {\n this.focusAfterAttached = true;\n const eventKey = params.eventKey;\n if (eventKey === KeyCode.BACKSPACE || params.eventKey === KeyCode.DELETE) {\n startValue = '';\n }\n else if (eventKey && eventKey.length === 1) {\n startValue = eventKey;\n }\n else {\n startValue = this.cellEditorInput.getStartValue();\n if (eventKey !== KeyCode.F2) {\n this.highlightAllOnFocus = true;\n }\n }\n }\n else {\n this.focusAfterAttached = false;\n startValue = this.cellEditorInput.getStartValue();\n }\n if (startValue != null) {\n eInput.setStartValue(startValue);\n }\n this.addManagedListener(eInput.getGui(), 'keydown', (event) => {\n const { key } = event;\n if (key === KeyCode.PAGE_UP || key === KeyCode.PAGE_DOWN) {\n event.preventDefault();\n }\n });\n }\n afterGuiAttached() {\n var _a, _b;\n const translate = this.localeService.getLocaleTextFunc();\n const 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 const inputEl = eInput.getInputElement();\n if (this.highlightAllOnFocus) {\n inputEl.select();\n }\n else {\n (_b = (_a = this.cellEditorInput).setCaret) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n }\n // gets called when tabbing through cells and in full row edit mode\n focusIn() {\n const eInput = this.eInput;\n const focusEl = eInput.getFocusableElement();\n const inputEl = eInput.getInputElement();\n focusEl.focus();\n inputEl.select();\n }\n getValue() {\n return this.cellEditorInput.getValue();\n }\n isPopup() {\n return false;\n }\n}\n__decorate$28([\n RefSelector('eInput')\n], SimpleCellEditor.prototype, \"eInput\", void 0);\n\nclass TextCellEditorInput {\n getTemplate() {\n return /* html */ ``;\n }\n init(eInput, params) {\n this.eInput = eInput;\n this.params = params;\n if (params.maxLength != null) {\n eInput.setMaxLength(params.maxLength);\n }\n }\n getValue() {\n const value = this.eInput.getValue();\n if (!exists(value) && !exists(this.params.value)) {\n return this.params.value;\n }\n return this.params.parseValue(value);\n }\n getStartValue() {\n const formatValue = this.params.useFormatter || this.params.column.getColDef().refData;\n return formatValue ? this.params.formatValue(this.params.value) : this.params.value;\n }\n setCaret() {\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 const value = this.eInput.getValue();\n const len = (exists(value) && value.length) || 0;\n if (len) {\n this.eInput.getInputElement().setSelectionRange(len, len);\n }\n }\n}\nclass TextCellEditor extends SimpleCellEditor {\n constructor() {\n super(new TextCellEditorInput());\n }\n}\n\nvar __decorate$27 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst ARROW_UP = '\\u2191';\nconst ARROW_DOWN = '\\u2193';\nclass AnimateShowChangeCellRenderer extends Component {\n constructor() {\n super(AnimateShowChangeCellRenderer.TEMPLATE);\n this.refreshCount = 0;\n }\n init(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 showDelta(params, delta) {\n const absDelta = Math.abs(delta);\n const valueFormatted = params.formatValue(absDelta);\n const valueToUse = exists(valueFormatted) ? valueFormatted : absDelta;\n const 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 setTimerToRemoveDelta() {\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 const refreshCountCopy = this.refreshCount;\n window.setTimeout(() => {\n if (refreshCountCopy === this.refreshCount) {\n this.hideDeltaValue();\n }\n }, 2000);\n }\n hideDeltaValue() {\n this.eValue.classList.remove('ag-value-change-value-highlight');\n clearElement(this.eDelta);\n }\n refresh(params) {\n const 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 const 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}\nAnimateShowChangeCellRenderer.TEMPLATE = '' +\n '' +\n '' +\n '';\n__decorate$27([\n Autowired('filterManager')\n], AnimateShowChangeCellRenderer.prototype, \"filterManager\", void 0);\n\nvar __decorate$26 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass AnimateSlideCellRenderer extends Component {\n constructor() {\n super(AnimateSlideCellRenderer.TEMPLATE);\n this.refreshCount = 0;\n this.eCurrent = this.queryForHtmlElement('.ag-value-slide-current');\n }\n init(params) {\n this.refresh(params);\n }\n addSlideAnimation() {\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 const 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(() => {\n if (refreshCountCopy !== this.refreshCount) {\n return;\n }\n this.ePrevious.classList.add('ag-value-slide-out-end');\n }, 50);\n window.setTimeout(() => {\n if (refreshCountCopy !== this.refreshCount) {\n return;\n }\n this.getGui().removeChild(this.ePrevious);\n this.ePrevious = null;\n }, 3000);\n }\n refresh(params) {\n let 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}\nAnimateSlideCellRenderer.TEMPLATE = `\n \n `;\n__decorate$26([\n Autowired('filterManager')\n], AnimateSlideCellRenderer.prototype, \"filterManager\", void 0);\n\nclass RowNode {\n constructor(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.hovered = false;\n this.selected = false;\n this.beans = beans;\n }\n /**\n * Replaces the data on the `rowNode`. When this method is called, the grid will refresh the entire rendered row if it is displayed.\n */\n setData(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 /**\n * Updates the data on the `rowNode`. When this method is called, the grid will refresh the entire rendered row if it is displayed.\n */\n updateData(data) {\n this.setDataCommon(data, true);\n }\n setDataCommon(data, update) {\n const oldData = this.data;\n this.data = data;\n this.beans.valueCache.onDataChanged();\n this.updateDataOnDetailNode();\n this.checkRowSelectable();\n this.resetQuickFilterAggregateText();\n const 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 updateDataOnDetailNode() {\n if (this.detailNode) {\n this.detailNode.data = this.data;\n }\n }\n createDataChangedEvent(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 createLocalRowEvent(type) {\n return {\n type: type,\n node: this\n };\n }\n getRowIndexString() {\n if (this.rowPinned === 'top') {\n return 't-' + this.rowIndex;\n }\n if (this.rowPinned === 'bottom') {\n return 'b-' + this.rowIndex;\n }\n return this.rowIndex.toString();\n }\n createDaemonNode() {\n const 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 setDataAndId(data, id) {\n const oldNode = exists(this.id) ? this.createDaemonNode() : null;\n const 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 const event = this.createDataChangedEvent(data, oldData, false);\n this.dispatchLocalEvent(event);\n }\n checkRowSelectable() {\n const isRowSelectableFunc = this.beans.gridOptionsService.get('isRowSelectable');\n this.setRowSelectable(isRowSelectableFunc ? isRowSelectableFunc(this) : true);\n }\n setRowSelectable(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 const isGroupSelectsChildren = this.beans.gridOptionsService.is('groupSelectsChildren');\n if (isGroupSelectsChildren) {\n const selected = this.calculateSelectedFromChildren();\n this.setSelectedParams({\n newValue: selected !== null && selected !== void 0 ? selected : false,\n source: 'selectableChanged',\n });\n }\n }\n }\n setId(id) {\n // see if user is providing the id's\n const getRowIdFunc = this.beans.gridOptionsService.getCallback('getRowId');\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 const parentKeys = this.getGroupKeys(true);\n this.id = getRowIdFunc({\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 getGroupKeys(excludeSelf = false) {\n const keys = [];\n let 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 isPixelInRange(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 setFirstChild(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 setLastChild(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 setChildIndex(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 setRowTop(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 clearRowTopAndRowIndex() {\n this.oldRowTop = null;\n this.setRowTop(null);\n this.setRowIndex(null);\n }\n setDisplayed(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 setDragging(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 setHighlighted(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 setHovered(hovered) {\n if (this.hovered === hovered) {\n return;\n }\n this.hovered = hovered;\n }\n isHovered() {\n return this.hovered;\n }\n setAllChildrenCount(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 setMaster(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 setGroup(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 setRowHeight(rowHeight, 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 setRowAutoHeight(cellHeight, column) {\n if (!this.__autoHeights) {\n this.__autoHeights = {};\n }\n this.__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 checkAutoHeights() {\n let notAllPresent = false;\n let nonePresent = true;\n let newRowHeight = 0;\n const autoHeights = this.__autoHeights;\n if (autoHeights == null) {\n return;\n }\n const displayedAutoHeightCols = this.beans.columnModel.getAllDisplayedAutoHeightCols();\n displayedAutoHeightCols.forEach(col => {\n let cellHeight = autoHeights[col.getId()];\n if (cellHeight == null) {\n // If column spanning is active a column may not provide auto height for a row if that\n // cell is not present for the given row due to a previous cell spanning over the auto height column.\n if (this.beans.columnModel.isColSpanActive()) {\n let activeColsForRow = [];\n switch (col.getPinned()) {\n case 'left':\n activeColsForRow = this.beans.columnModel.getDisplayedLeftColumnsForRow(this);\n break;\n case 'right':\n activeColsForRow = this.beans.columnModel.getDisplayedRightColumnsForRow(this);\n break;\n case null:\n activeColsForRow = this.beans.columnModel.getViewportCenterColumnsForRow(this);\n break;\n }\n if (activeColsForRow.includes(col)) {\n // Column is present in the row, i.e not spanned over, but no auto height was provided so we cannot calculate the row height\n notAllPresent = true;\n return;\n }\n // Ignore this column as it is spanned over and not present in the row\n cellHeight = -1;\n }\n else {\n notAllPresent = true;\n return;\n }\n }\n else {\n // At least one auto height is present\n nonePresent = false;\n }\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.gridOptionsService.getRowHeightForNode(this).height;\n }\n if (newRowHeight == this.rowHeight) {\n return;\n }\n this.setRowHeight(newRowHeight);\n const rowModel = this.beans.rowModel;\n if (rowModel.onRowHeightChangedDebounced) {\n rowModel.onRowHeightChangedDebounced();\n }\n }\n setRowIndex(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 setUiLevel(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 /**\n * Set the expanded state of this rowNode. Pass `true` to expand and `false` to collapse.\n */\n setExpanded(expanded, e) {\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 const event = Object.assign({}, this.createGlobalRowEvent(Events.EVENT_ROW_GROUP_OPENED), {\n expanded,\n event: e || null\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.gridOptionsService.is('groupIncludeFooter')) {\n this.beans.rowRenderer.refreshCells({ rowNodes: [this] });\n }\n }\n createGlobalRowEvent(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.gridOptionsService.context,\n api: this.beans.gridOptionsService.api,\n columnApi: this.beans.gridOptionsService.columnApi\n };\n }\n dispatchLocalEvent(event) {\n if (this.eventService) {\n this.eventService.dispatchEvent(event);\n }\n }\n /**\n * Replaces the value on the `rowNode` for the specified column. When complete,\n * the grid will refresh the rendered cell on the required row only.\n * **Note**: This method only fires `onCellEditRequest` when the Grid is in **Read Only** mode.\n *\n * @param colKey The column where the value should be updated\n * @param newValue The new value\n * @param eventSource The source of the event\n * @returns `true` if the value was changed, otherwise `false`.\n */\n setDataValue(colKey, newValue, eventSource) {\n const getColumnFromKey = () => {\n var _a;\n if (typeof colKey !== 'string') {\n return colKey;\n }\n // if in pivot mode, grid columns wont include primary columns\n return (_a = this.beans.columnModel.getGridColumn(colKey)) !== null && _a !== void 0 ? _a : this.beans.columnModel.getPrimaryColumn(colKey);\n };\n // When it is done via 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 const column = getColumnFromKey();\n const oldValue = this.getValueFromValueService(column);\n if (this.beans.gridOptionsService.is('readOnlyEdit')) {\n this.dispatchEventForSaveValueReadOnly(column, oldValue, newValue, eventSource);\n return false;\n }\n const valueChanged = this.beans.valueService.setValue(this, column, newValue, eventSource);\n this.dispatchCellChangedEvent(column, newValue, oldValue);\n this.checkRowSelectable();\n return valueChanged;\n }\n getValueFromValueService(column) {\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 const lockedClosedGroup = this.leafGroup && this.beans.columnModel.isPivotMode();\n const isOpenGroup = this.group && this.expanded && !this.footer && !lockedClosedGroup;\n // are we showing group footers\n const groupFootersEnabled = this.beans.gridOptionsService.is('groupIncludeFooter');\n // if doing footers, we normally don't show agg data at group level when group is open\n const groupAlwaysShowAggData = this.beans.gridOptionsService.is('groupSuppressBlankHeader');\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 const ignoreAggData = (isOpenGroup && groupFootersEnabled) && !groupAlwaysShowAggData;\n const value = this.beans.valueService.getValue(column, this, false, ignoreAggData);\n return value;\n }\n dispatchEventForSaveValueReadOnly(column, oldValue, newValue, eventSource) {\n const event = {\n type: Events.EVENT_CELL_EDIT_REQUEST,\n event: null,\n rowIndex: this.rowIndex,\n rowPinned: this.rowPinned,\n column: column,\n colDef: column.getColDef(),\n context: this.beans.gridOptionsService.context,\n api: this.beans.gridOptionsService.api,\n columnApi: this.beans.gridOptionsService.columnApi,\n data: this.data,\n node: this,\n oldValue,\n newValue,\n value: newValue,\n source: eventSource\n };\n this.beans.eventService.dispatchEvent(event);\n }\n setGroupValue(colKey, newValue) {\n const column = this.beans.columnModel.getGridColumn(colKey);\n if (missing(this.groupData)) {\n this.groupData = {};\n }\n const columnId = column.getColId();\n const 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 setAggData(newAggData) {\n // find out all keys that could potentially change\n const colIds = getAllKeysInObjects([this.aggData, newAggData]);\n const 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(colId => {\n const column = this.beans.columnModel.getGridColumn(colId);\n const value = this.aggData ? this.aggData[colId] : undefined;\n const oldValue = oldAggData ? oldAggData[colId] : undefined;\n this.dispatchCellChangedEvent(column, value, oldValue);\n });\n }\n }\n updateHasChildren() {\n // in CSRM, the group property will be set before the childrenAfterGroup property, check both to prevent flickering\n let newValue = (this.group && !this.footer) || (this.childrenAfterGroup && this.childrenAfterGroup.length > 0);\n const isSsrm = this.beans.gridOptionsService.isRowModelType('serverSide');\n if (isSsrm) {\n const isTreeData = this.beans.gridOptionsService.isTreeData();\n const isGroupFunc = this.beans.gridOptionsService.get('isServerSideGroup');\n // stubs and footers can never have children, as they're grid rows. if tree data the presence of children\n // is determined by the isServerSideGroup callback, if not tree data then the rows group property will be set.\n newValue = !this.stub && !this.footer && (isTreeData ? !!isGroupFunc && isGroupFunc(this.data) : !!this.group);\n }\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 hasChildren() {\n if (this.__hasChildren == null) {\n this.updateHasChildren();\n }\n return this.__hasChildren;\n }\n isEmptyRowGroupNode() {\n return this.group && missingOrEmpty(this.childrenAfterGroup);\n }\n dispatchCellChangedEvent(column, newValue, oldValue) {\n const 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 resetQuickFilterAggregateText() {\n this.quickFilterAggregateText = null;\n }\n /** Returns:\n * - `true` if the node can be expanded, i.e it is a group or master row.\n * - `false` if the node cannot be expanded\n */\n isExpandable() {\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 isSelected() {\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 depthFirstSearch(callback) {\n if (this.childrenAfterGroup) {\n this.childrenAfterGroup.forEach(child => child.depthFirstSearch(callback));\n }\n callback(this);\n }\n // + selectionController.calculatedSelectedForAllGroupNodes()\n calculateSelectedFromChildren() {\n var _a;\n let atLeastOneSelected = false;\n let atLeastOneDeSelected = false;\n let atLeastOneMixed = false;\n if (!((_a = this.childrenAfterGroup) === null || _a === void 0 ? void 0 : _a.length)) {\n return this.selectable ? this.selected : null;\n }\n for (let i = 0; i < this.childrenAfterGroup.length; i++) {\n const child = this.childrenAfterGroup[i];\n let childState = child.isSelected();\n // non-selectable nodes must be calculated from their children, or ignored if no value results.\n if (!child.selectable) {\n const selectable = child.calculateSelectedFromChildren();\n if (selectable === null) {\n continue;\n }\n childState = selectable;\n }\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 if (atLeastOneMixed || (atLeastOneSelected && atLeastOneDeSelected)) {\n return undefined;\n }\n if (atLeastOneSelected) {\n return true;\n }\n if (atLeastOneDeSelected) {\n return false;\n }\n if (!this.selectable) {\n return null;\n }\n return this.selected;\n }\n setSelectedInitialValue(selected) {\n this.selected = selected;\n }\n selectThisNode(newValue, e, source = 'api') {\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 const selectionNotAllowed = !this.selectable && newValue;\n const 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 const event = Object.assign(Object.assign({}, this.createGlobalRowEvent(Events.EVENT_ROW_SELECTED)), { event: e || null, source });\n this.beans.eventService.dispatchEvent(event);\n return true;\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 source - Source property that will appear in the `selectionChanged` event.\n */\n setSelected(newValue, clearSelection = false, source = 'api') {\n if (typeof source === 'boolean') {\n console.warn('AG Grid: since version v30, rowNode.setSelected() property `suppressFinishActions` has been removed, please use `gridApi.setNodesSelected()` for bulk actions, and the event `source` property for ignoring events instead.');\n return;\n }\n this.setSelectedParams({\n newValue,\n clearSelection,\n rangeSelect: false,\n source\n });\n }\n // this is for internal use only. To make calling code more readable, this is the same method as setSelected except it takes names parameters\n setSelectedParams(params) {\n if (this.rowPinned) {\n console.warn('AG Grid: cannot select pinned rows');\n return 0;\n }\n if (this.id === undefined) {\n console.warn('AG Grid: cannot select node until id for node is known');\n return 0;\n }\n return this.beans.selectionService.setNodesSelected(Object.assign(Object.assign({}, params), { nodes: [this.footer ? this.sibling : this] }));\n }\n /**\n * Returns:\n * - `true` if node is either pinned to the `top` or `bottom`\n * - `false` if the node isn't pinned\n */\n isRowPinned() {\n return this.rowPinned === 'top' || this.rowPinned === 'bottom';\n }\n isParentOfNode(potentialParent) {\n let parentNode = this.parent;\n while (parentNode) {\n if (parentNode === potentialParent) {\n return true;\n }\n parentNode = parentNode.parent;\n }\n return false;\n }\n /** Add an event listener. */\n addEventListener(eventType, listener) {\n if (!this.eventService) {\n this.eventService = new EventService();\n }\n this.eventService.addEventListener(eventType, listener);\n }\n /** Remove event listener. */\n removeEventListener(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 onMouseEnter() {\n this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_MOUSE_ENTER));\n }\n onMouseLeave() {\n this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_MOUSE_LEAVE));\n }\n getFirstChildOfFirstChild(rowGroupColumn) {\n let currentRowNode = this;\n let isCandidate = true;\n let foundFirstChildPath = false;\n let 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 const parentRowNode = currentRowNode.parent;\n const 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 /**\n * Returns:\n * - `true` if the node is a full width cell\n * - `false` if the node is not a full width cell\n */\n isFullWidthCell() {\n const isFullWidthCellFunc = this.beans.gridOptionsService.getCallback('isFullWidthRow');\n return isFullWidthCellFunc ? isFullWidthCellFunc({ rowNode: 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 getRoute() {\n if (this.key == null) {\n return;\n }\n const res = [];\n let pointer = this;\n while (pointer.key != null) {\n res.push(pointer.key);\n pointer = pointer.parent;\n }\n return res.reverse();\n }\n createFooter() {\n // only create footer node once, otherwise we have daemons and\n // the animate screws up with the daemons hanging around\n if (this.sibling) {\n return;\n }\n const footerNode = new RowNode(this.beans);\n Object.keys(this).forEach(key => {\n footerNode[key] = this[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 footerNode.id = 'rowGroupFooter_' + this.id;\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 = this;\n this.sibling = footerNode;\n }\n}\nRowNode.ID_PREFIX_ROW_GROUP = 'row-group-';\nRowNode.ID_PREFIX_TOP_PINNED = 't-';\nRowNode.ID_PREFIX_BOTTOM_PINNED = 'b-';\nRowNode.OBJECT_ID_SEQUENCE = 0;\nRowNode.EVENT_ROW_SELECTED = 'rowSelected';\nRowNode.EVENT_DATA_CHANGED = 'dataChanged';\nRowNode.EVENT_CELL_CHANGED = 'cellChanged';\nRowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED = 'allChildrenCountChanged';\nRowNode.EVENT_MASTER_CHANGED = 'masterChanged';\nRowNode.EVENT_GROUP_CHANGED = 'groupChanged';\nRowNode.EVENT_MOUSE_ENTER = 'mouseEnter';\nRowNode.EVENT_MOUSE_LEAVE = 'mouseLeave';\nRowNode.EVENT_HEIGHT_CHANGED = 'heightChanged';\nRowNode.EVENT_TOP_CHANGED = 'topChanged';\nRowNode.EVENT_DISPLAYED_CHANGED = 'displayedChanged';\nRowNode.EVENT_FIRST_CHILD_CHANGED = 'firstChildChanged';\nRowNode.EVENT_LAST_CHILD_CHANGED = 'lastChildChanged';\nRowNode.EVENT_CHILD_INDEX_CHANGED = 'childIndexChanged';\nRowNode.EVENT_ROW_INDEX_CHANGED = 'rowIndexChanged';\nRowNode.EVENT_EXPANDED_CHANGED = 'expandedChanged';\nRowNode.EVENT_HAS_CHILDREN_CHANGED = 'hasChildrenChanged';\nRowNode.EVENT_SELECTABLE_CHANGED = 'selectableChanged';\nRowNode.EVENT_UI_LEVEL_CHANGED = 'uiLevelChanged';\nRowNode.EVENT_HIGHLIGHT_CHANGED = 'rowHighlightChanged';\nRowNode.EVENT_DRAGGING_CHANGED = 'draggingChanged';\n\nvar __decorate$25 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass CheckboxSelectionComponent extends Component {\n constructor() {\n super(/* html*/ `\n
\n \n
`);\n }\n postConstruct() {\n this.eCheckbox.setPassive(true);\n setAriaLive(this.eCheckbox.getInputElement(), 'polite');\n }\n getCheckboxId() {\n return this.eCheckbox.getInputElement().id;\n }\n onDataChanged() {\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 onSelectableChanged() {\n this.showOrHideSelect();\n }\n onSelectionChanged() {\n const translate = this.localeService.getLocaleTextFunc();\n const state = this.rowNode.isSelected();\n const stateName = getAriaCheckboxStateName(translate, state);\n const ariaLabel = translate('ariaRowToggleSelection', 'Press Space to toggle row selection');\n this.eCheckbox.setValue(state, true);\n this.eCheckbox.setInputAriaLabel(`${ariaLabel} (${stateName})`);\n }\n onClicked(newValue, groupSelectsFiltered, event) {\n return this.rowNode.setSelectedParams({ newValue, rangeSelect: event.shiftKey, groupSelectsFiltered, event, source: 'checkboxSelected' });\n }\n init(params) {\n this.rowNode = params.rowNode;\n this.column = params.column;\n this.overrides = params.overrides;\n this.onSelectionChanged();\n // we don't want double click on this icon to open a group\n this.addManagedListener(this.eCheckbox.getInputElement(), 'dblclick', (event) => {\n stopPropagationForAgGrid(event);\n });\n this.addManagedListener(this.eCheckbox.getInputElement(), 'click', (event) => {\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 stopPropagationForAgGrid(event);\n const groupSelectsFiltered = this.gridOptionsService.is('groupSelectsFiltered');\n const isSelected = this.eCheckbox.getValue();\n if (this.shouldHandleIndeterminateState(isSelected, groupSelectsFiltered)) {\n // try toggling children to determine action.\n const result = this.onClicked(true, groupSelectsFiltered, event || {});\n if (result === 0) {\n this.onClicked(false, groupSelectsFiltered, event);\n }\n }\n else if (isSelected) {\n this.onClicked(false, groupSelectsFiltered, event);\n }\n else {\n this.onClicked(true, groupSelectsFiltered, 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 const isRowSelectableFunc = this.gridOptionsService.get('isRowSelectable');\n const checkboxVisibleIsDynamic = isRowSelectableFunc || typeof this.getIsVisible() === 'function';\n if (checkboxVisibleIsDynamic) {\n const 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 shouldHandleIndeterminateState(isSelected, groupSelectsFiltered) {\n // for CSRM groupSelectsFiltered, we can get an indeterminate state where all filtered children are selected,\n // and we would expect clicking to deselect all rather than select all\n return groupSelectsFiltered &&\n (this.eCheckbox.getPreviousValue() === undefined || isSelected === undefined) &&\n this.gridOptionsService.isRowModelType('clientSide');\n }\n showOrHideSelect() {\n var _a, _b, _c, _d;\n // if the isRowSelectable() is not provided the row node is selectable by default\n let 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 const isVisible = this.getIsVisible();\n if (selectable) {\n if (typeof isVisible === 'function') {\n const extraParams = (_a = this.overrides) === null || _a === void 0 ? void 0 : _a.callbackParams;\n const params = (_b = this.column) === null || _b === void 0 ? void 0 : _b.createColumnFunctionCallbackParams(this.rowNode);\n selectable = params ? isVisible(Object.assign(Object.assign({}, extraParams), params)) : false;\n }\n else {\n selectable = isVisible !== null && isVisible !== void 0 ? isVisible : false;\n }\n }\n const disableInsteadOfHide = (_c = this.column) === null || _c === void 0 ? void 0 : _c.getColDef().showDisabledCheckboxes;\n if (disableInsteadOfHide) {\n this.eCheckbox.setDisabled(!selectable);\n this.setVisible(true);\n this.setDisplayed(true);\n return;\n }\n if ((_d = this.overrides) === null || _d === void 0 ? void 0 : _d.removeHidden) {\n this.setDisplayed(selectable);\n return;\n }\n this.setVisible(selectable);\n }\n getIsVisible() {\n var _a, _b;\n if (this.overrides) {\n return this.overrides.isVisible;\n }\n // column will be missing if groupDisplayType = 'groupRows'\n return (_b = (_a = this.column) === null || _a === void 0 ? void 0 : _a.getColDef()) === null || _b === void 0 ? void 0 : _b.checkboxSelection;\n }\n}\n__decorate$25([\n RefSelector('eCheckbox')\n], CheckboxSelectionComponent.prototype, \"eCheckbox\", void 0);\n__decorate$25([\n PostConstruct\n], CheckboxSelectionComponent.prototype, \"postConstruct\", null);\n\nvar __decorate$24 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 DragAndDropService_1;\nvar 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 = {}));\nvar VerticalDirection;\n(function (VerticalDirection) {\n VerticalDirection[VerticalDirection[\"Up\"] = 0] = \"Up\";\n VerticalDirection[VerticalDirection[\"Down\"] = 1] = \"Down\";\n})(VerticalDirection || (VerticalDirection = {}));\nvar HorizontalDirection;\n(function (HorizontalDirection) {\n HorizontalDirection[HorizontalDirection[\"Left\"] = 0] = \"Left\";\n HorizontalDirection[HorizontalDirection[\"Right\"] = 1] = \"Right\";\n})(HorizontalDirection || (HorizontalDirection = {}));\nlet DragAndDropService = DragAndDropService_1 = class DragAndDropService extends BeanStub {\n constructor() {\n super(...arguments);\n this.dragSourceAndParamsList = [];\n this.dropTargets = [];\n }\n init() {\n this.ePinnedIcon = createIcon('columnMovePin', this.gridOptionsService, null);\n this.eHideIcon = createIcon('columnMoveHide', this.gridOptionsService, null);\n this.eMoveIcon = createIcon('columnMoveMove', this.gridOptionsService, null);\n this.eLeftIcon = createIcon('columnMoveLeft', this.gridOptionsService, null);\n this.eRightIcon = createIcon('columnMoveRight', this.gridOptionsService, null);\n this.eGroupIcon = createIcon('columnMoveGroup', this.gridOptionsService, null);\n this.eAggregateIcon = createIcon('columnMoveValue', this.gridOptionsService, null);\n this.ePivotIcon = createIcon('columnMovePivot', this.gridOptionsService, null);\n this.eDropNotAllowedIcon = createIcon('dropNotAllowed', this.gridOptionsService, null);\n }\n addDragSource(dragSource, allowTouch = false) {\n const 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 includeTouch: allowTouch\n };\n this.dragSourceAndParamsList.push({ params: params, dragSource: dragSource });\n this.dragService.addDragSource(params);\n }\n removeDragSource(dragSource) {\n const sourceAndParams = this.dragSourceAndParamsList.find(item => item.dragSource === dragSource);\n if (sourceAndParams) {\n this.dragService.removeDragSource(sourceAndParams.params);\n removeFromArray(this.dragSourceAndParamsList, sourceAndParams);\n }\n }\n clearDragSourceParamsList() {\n this.dragSourceAndParamsList.forEach(sourceAndParams => this.dragService.removeDragSource(sourceAndParams.params));\n this.dragSourceAndParamsList.length = 0;\n this.dropTargets.length = 0;\n }\n nudge() {\n if (this.dragging) {\n this.onDragging(this.eventLastTime, true);\n }\n }\n onDragStart(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 onDragStop(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 const 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 onDragging(mouseEvent, fromNudge) {\n var _a, _b, _c, _d;\n const hDirection = this.getHorizontalDirection(mouseEvent);\n const vDirection = this.getVerticalDirection(mouseEvent);\n this.eventLastTime = mouseEvent;\n this.positionGhost(mouseEvent);\n // check if mouseEvent intersects with any of the drop targets\n const validDropTargets = this.dropTargets.filter(target => this.isMouseOnDropTarget(mouseEvent, target));\n const dropTarget = this.findCurrentDropTarget(mouseEvent, validDropTargets);\n if (dropTarget !== this.lastDropTarget) {\n this.leaveLastTargetIfExists(mouseEvent, hDirection, vDirection, fromNudge);\n if (this.lastDropTarget !== null && dropTarget === null) {\n (_b = (_a = this.dragSource).onGridExit) === null || _b === void 0 ? void 0 : _b.call(_a, this.dragItem);\n }\n if (this.lastDropTarget === null && dropTarget !== null) {\n (_d = (_c = this.dragSource).onGridEnter) === null || _d === void 0 ? void 0 : _d.call(_c, this.dragItem);\n }\n this.enterDragTargetIfExists(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n this.lastDropTarget = dropTarget;\n }\n else if (dropTarget && dropTarget.onDragging) {\n const draggingEvent = this.createDropTargetEvent(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n dropTarget.onDragging(draggingEvent);\n }\n }\n getAllContainersFromDropTarget(dropTarget) {\n const secondaryContainers = dropTarget.getSecondaryContainers ? dropTarget.getSecondaryContainers() : null;\n const containers = [[dropTarget.getContainer()]];\n return secondaryContainers ? containers.concat(secondaryContainers) : containers;\n }\n allContainersIntersect(mouseEvent, containers) {\n for (const container of containers) {\n const 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 const horizontalFit = mouseEvent.clientX >= rect.left && mouseEvent.clientX < rect.right;\n const verticalFit = mouseEvent.clientY >= rect.top && mouseEvent.clientY < rect.bottom;\n if (!horizontalFit || !verticalFit) {\n return false;\n }\n }\n return true;\n }\n // checks if the mouse is on the drop target. it checks eContainer and eSecondaryContainers\n isMouseOnDropTarget(mouseEvent, dropTarget) {\n const allContainersFromDropTarget = this.getAllContainersFromDropTarget(dropTarget);\n let mouseOverTarget = false;\n for (const currentContainers of allContainersFromDropTarget) {\n if (this.allContainersIntersect(mouseEvent, currentContainers)) {\n mouseOverTarget = true;\n break;\n }\n }\n if (dropTarget.targetContainsSource && !dropTarget.getContainer().contains(this.dragSource.eElement)) {\n return false;\n }\n return mouseOverTarget && dropTarget.isInterestedIn(this.dragSource.type, this.dragSource.eElement);\n }\n findCurrentDropTarget(mouseEvent, validDropTargets) {\n const len = validDropTargets.length;\n if (len === 0) {\n return null;\n }\n if (len === 1) {\n return validDropTargets[0];\n }\n const rootNode = this.gridOptionsService.getRootNode();\n // elementsFromPoint return a list of elements under\n // the mouseEvent sorted from topMost to bottomMost\n const elementStack = rootNode.elementsFromPoint(mouseEvent.clientX, mouseEvent.clientY);\n // loop over the sorted elementStack to find which dropTarget comes first\n for (const el of elementStack) {\n for (const dropTarget of validDropTargets) {\n const containers = flatten(this.getAllContainersFromDropTarget(dropTarget));\n if (containers.indexOf(el) !== -1) {\n return dropTarget;\n }\n }\n }\n // we should never hit this point of the code because only\n // valid dropTargets should be provided to this method.\n return null;\n }\n enterDragTargetIfExists(dropTarget, mouseEvent, hDirection, vDirection, fromNudge) {\n if (!dropTarget) {\n return;\n }\n if (dropTarget.onDragEnter) {\n const dragEnterEvent = this.createDropTargetEvent(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n dropTarget.onDragEnter(dragEnterEvent);\n }\n this.setGhostIcon(dropTarget.getIconName ? dropTarget.getIconName() : null);\n }\n leaveLastTargetIfExists(mouseEvent, hDirection, vDirection, fromNudge) {\n if (!this.lastDropTarget) {\n return;\n }\n if (this.lastDropTarget.onDragLeave) {\n const dragLeaveEvent = this.createDropTargetEvent(this.lastDropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n this.lastDropTarget.onDragLeave(dragLeaveEvent);\n }\n this.setGhostIcon(null);\n }\n addDropTarget(dropTarget) {\n this.dropTargets.push(dropTarget);\n }\n removeDropTarget(dropTarget) {\n this.dropTargets = this.dropTargets.filter(target => target.getContainer() !== dropTarget.getContainer());\n }\n hasExternalDropZones() {\n return this.dropTargets.some(zones => zones.external);\n }\n findExternalZone(params) {\n const externalTargets = this.dropTargets.filter(target => target.external);\n return externalTargets.find(zone => zone.getContainer() === params.getContainer()) || null;\n }\n getHorizontalDirection(event) {\n const clientX = this.eventLastTime && this.eventLastTime.clientX;\n const eClientX = event.clientX;\n if (clientX === eClientX) {\n return null;\n }\n return clientX > eClientX ? HorizontalDirection.Left : HorizontalDirection.Right;\n }\n getVerticalDirection(event) {\n const clientY = this.eventLastTime && this.eventLastTime.clientY;\n const eClientY = event.clientY;\n if (clientY === eClientY) {\n return null;\n }\n return clientY > eClientY ? VerticalDirection.Up : VerticalDirection.Down;\n }\n createDropTargetEvent(dropTarget, event, hDirection, vDirection, fromNudge) {\n // localise x and y to the target\n const dropZoneTarget = dropTarget.getContainer();\n const rect = dropZoneTarget.getBoundingClientRect();\n const { gridApi: api, columnApi, dragItem, dragSource } = this;\n const x = event.clientX - rect.left;\n const y = event.clientY - rect.top;\n return { event, x, y, vDirection, hDirection, dragSource, fromNudge, dragItem: dragItem, api, columnApi, dropZoneTarget };\n }\n positionGhost(event) {\n const ghost = this.eGhost;\n if (!ghost) {\n return;\n }\n const ghostRect = ghost.getBoundingClientRect();\n const ghostHeight = ghostRect.height;\n const browserWidth = getBodyWidth() - 2; // 2px for 1px borderLeft and 1px borderRight\n const browserHeight = getBodyHeight() - 2; // 2px for 1px borderTop and 1px borderBottom\n const offsetParentSize = getElementRectWithOffset(ghost.offsetParent);\n const { clientY, clientX } = event;\n let top = (clientY - offsetParentSize.top) - (ghostHeight / 2);\n let left = (clientX - offsetParentSize.left) - 10;\n const eDocument = this.gridOptionsService.getDocument();\n const win = (eDocument.defaultView || window);\n const windowScrollY = win.pageYOffset || eDocument.documentElement.scrollTop;\n const 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 removeGhost() {\n if (this.eGhost && this.eGhostParent) {\n this.eGhostParent.removeChild(this.eGhost);\n }\n this.eGhost = null;\n }\n createGhost() {\n this.eGhost = loadTemplate(DragAndDropService_1.GHOST_TEMPLATE);\n this.mouseEventService.stampTopLevelGridCompWithGridInstance(this.eGhost);\n const { theme } = this.environment.getTheme();\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 const eText = this.eGhost.querySelector('.ag-dnd-ghost-label');\n let 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 const eDocument = this.gridOptionsService.getDocument();\n let 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 const rootNode = this.gridOptionsService.getRootNode();\n const body = rootNode.querySelector('body');\n if (body) {\n targetEl = body;\n }\n else if (rootNode instanceof ShadowRoot) {\n targetEl = rootNode;\n }\n else {\n targetEl = rootNode === null || rootNode === void 0 ? void 0 : rootNode.documentElement;\n }\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 setGhostIcon(iconName, shake = false) {\n clearElement(this.eGhostIcon);\n let 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.gridOptionsService.is('suppressDragLeaveHidesColumns')) {\n return;\n }\n if (eIcon) {\n this.eGhostIcon.appendChild(eIcon);\n }\n }\n};\nDragAndDropService.ICON_PINNED = 'pinned';\nDragAndDropService.ICON_MOVE = 'move';\nDragAndDropService.ICON_LEFT = 'left';\nDragAndDropService.ICON_RIGHT = 'right';\nDragAndDropService.ICON_GROUP = 'group';\nDragAndDropService.ICON_AGGREGATE = 'aggregate';\nDragAndDropService.ICON_PIVOT = 'pivot';\nDragAndDropService.ICON_NOT_ALLOWED = 'notAllowed';\nDragAndDropService.ICON_HIDE = 'hide';\nDragAndDropService.GHOST_TEMPLATE = `
\n \n
\n
`;\n__decorate$24([\n Autowired('dragService')\n], DragAndDropService.prototype, \"dragService\", void 0);\n__decorate$24([\n Autowired('mouseEventService')\n], DragAndDropService.prototype, \"mouseEventService\", void 0);\n__decorate$24([\n Autowired('columnApi')\n], DragAndDropService.prototype, \"columnApi\", void 0);\n__decorate$24([\n Autowired('gridApi')\n], DragAndDropService.prototype, \"gridApi\", void 0);\n__decorate$24([\n PostConstruct\n], DragAndDropService.prototype, \"init\", null);\n__decorate$24([\n PreDestroy\n], DragAndDropService.prototype, \"clearDragSourceParamsList\", null);\nDragAndDropService = DragAndDropService_1 = __decorate$24([\n Bean('dragAndDropService')\n], DragAndDropService);\n\nvar __decorate$23 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass RowDragComp extends Component {\n constructor(cellValueFn, rowNode, column, customGui, dragStartPixels, suppressVisibilityChange) {\n super();\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 }\n isCustomGui() {\n return this.customGui != null;\n }\n postConstruct() {\n if (!this.customGui) {\n this.setTemplate(/* html */ `
`);\n this.getGui().appendChild(createIconNoSpan('rowDrag', this.gridOptionsService, null));\n this.addDragSource();\n }\n else {\n this.setDragElement(this.customGui, this.dragStartPixels);\n }\n this.checkCompatibility();\n if (!this.suppressVisibilityChange) {\n const strategy = this.gridOptionsService.is('rowDragManaged') ?\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 setDragElement(dragElement, dragStartPixels) {\n this.setTemplateFromElement(dragElement);\n this.addDragSource(dragStartPixels);\n }\n getSelectedNodes() {\n const isRowDragMultiRow = this.gridOptionsService.is('rowDragMultiRow');\n if (!isRowDragMultiRow) {\n return [this.rowNode];\n }\n const selection = this.beans.selectionService.getSelectedNodes();\n return selection.indexOf(this.rowNode) !== -1 ? selection : [this.rowNode];\n }\n // returns true if all compatibility items work out\n checkCompatibility() {\n const managed = this.gridOptionsService.is('rowDragManaged');\n const treeData = this.gridOptionsService.isTreeData();\n if (treeData && managed) {\n doOnce(() => console.warn('AG Grid: If using row drag with tree data, you cannot have rowDragManaged=true'), 'RowDragComp.managedAndTreeData');\n }\n }\n getDragItem() {\n return {\n rowNode: this.rowNode,\n rowNodes: this.getSelectedNodes(),\n columns: this.column ? [this.column] : undefined,\n defaultTextValue: this.cellValueFn(),\n };\n }\n getRowDragText(column) {\n if (column) {\n const colDef = column.getColDef();\n if (colDef.rowDragText) {\n return colDef.rowDragText;\n }\n }\n return this.gridOptionsService.get('rowDragText');\n }\n addDragSource(dragStartPixels = 4) {\n // if this is changing the drag element, delete the previous dragSource\n if (this.dragSource) {\n this.removeDragSource();\n }\n const rowDragText = this.getRowDragText(this.column);\n const translate = this.localeService.getLocaleTextFunc();\n this.dragSource = {\n type: DragSourceType.RowDrag,\n eElement: this.getGui(),\n dragItemName: () => {\n var _a;\n const dragItem = this.getDragItem();\n const dragItemCount = ((_a = dragItem.rowNodes) === null || _a === void 0 ? void 0 : _a.length) || 1;\n if (rowDragText) {\n return rowDragText(dragItem, dragItemCount);\n }\n return dragItemCount === 1 ? this.cellValueFn() : `${dragItemCount} ${translate('rowDragRows', 'rows')}`;\n },\n getDragItem: () => this.getDragItem(),\n dragStartPixels,\n dragSourceDomDataKey: this.gridOptionsService.getDomDataKey()\n };\n this.beans.dragAndDropService.addDragSource(this.dragSource, true);\n }\n removeDragSource() {\n if (this.dragSource) {\n this.beans.dragAndDropService.removeDragSource(this.dragSource);\n }\n this.dragSource = null;\n }\n}\n__decorate$23([\n Autowired('beans')\n], RowDragComp.prototype, \"beans\", void 0);\n__decorate$23([\n PostConstruct\n], RowDragComp.prototype, \"postConstruct\", null);\n__decorate$23([\n PreDestroy\n], RowDragComp.prototype, \"removeDragSource\", null);\nclass VisibilityStrategy extends BeanStub {\n constructor(parent, rowNode, column) {\n super();\n this.parent = parent;\n this.rowNode = rowNode;\n this.column = column;\n }\n setDisplayedOrVisible(neverDisplayed) {\n const displayedOptions = { skipAriaHidden: true };\n if (neverDisplayed) {\n this.parent.setDisplayed(false, displayedOptions);\n }\n else {\n let shown = true;\n let 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, displayedOptions);\n this.parent.setVisible(shown, displayedOptions);\n }\n else {\n this.parent.setDisplayed(shown, displayedOptions);\n this.parent.setVisible(true, displayedOptions);\n }\n }\n }\n}\n// when non managed, the visibility depends on suppressRowDrag property only\nclass NonManagedVisibilityStrategy extends VisibilityStrategy {\n constructor(parent, beans, rowNode, column) {\n super(parent, rowNode, column);\n this.beans = beans;\n }\n postConstruct() {\n this.addManagedPropertyListener('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 onSuppressRowDrag() {\n this.workOutVisibility();\n }\n workOutVisibility() {\n // only show the drag if both sort and filter are not present\n const neverDisplayed = this.gridOptionsService.is('suppressRowDrag');\n this.setDisplayedOrVisible(neverDisplayed);\n }\n}\n__decorate$23([\n PostConstruct\n], NonManagedVisibilityStrategy.prototype, \"postConstruct\", null);\n// when managed, the visibility depends on sort, filter and row group, as well as suppressRowDrag property\nclass ManagedVisibilityStrategy extends VisibilityStrategy {\n constructor(parent, beans, rowNode, column) {\n super(parent, rowNode, column);\n this.beans = beans;\n }\n postConstruct() {\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.addManagedPropertyListener('suppressRowDrag', this.onSuppressRowDrag.bind(this));\n this.workOutVisibility();\n }\n onSuppressRowDrag() {\n this.workOutVisibility();\n }\n workOutVisibility() {\n // only show the drag if both sort and filter are not present\n const gridBodyCon = this.beans.ctrlsService.getGridBodyCtrl();\n const rowDragFeature = gridBodyCon.getRowDragFeature();\n const shouldPreventRowMove = rowDragFeature && rowDragFeature.shouldPreventRowMove();\n const suppressRowDrag = this.gridOptionsService.is('suppressRowDrag');\n const hasExternalDropZones = this.beans.dragAndDropService.hasExternalDropZones();\n const neverDisplayed = (shouldPreventRowMove && !hasExternalDropZones) || suppressRowDrag;\n this.setDisplayedOrVisible(neverDisplayed);\n }\n}\n__decorate$23([\n PostConstruct\n], ManagedVisibilityStrategy.prototype, \"postConstruct\", null);\n\nvar __decorate$22 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass GroupCellRendererCtrl extends BeanStub {\n init(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 const topLevelFooter = this.isTopLevelFooter();\n const embeddedRowMismatch = this.isEmbeddedRowMismatch();\n // This allows for empty strings to appear as groups since\n // it will only return for null or undefined.\n const isNullValueAndNotMaster = params.value == null && !params.node.master;\n let 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.gridOptionsService.is('groupIncludeFooter') && this.gridOptionsService.is('groupHideOpenParents')) {\n const node = params.node;\n if (node.footer) {\n const showRowGroup = params.colDef && params.colDef.showRowGroup;\n const rowGroupColumnId = node.rowGroupColumn && node.rowGroupColumn.getColId();\n skipCell = showRowGroup !== rowGroupColumnId;\n }\n }\n this.cellIsBlank = topLevelFooter ? false : (embeddedRowMismatch || (isNullValueAndNotMaster && !params.node.master) || 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 this.refreshAriaExpanded();\n }\n destroy() {\n super.destroy();\n // property cleanup to avoid memory leaks\n this.expandListener = null;\n }\n refreshAriaExpanded() {\n const { node, eParentOfValue } = this.params;\n if (this.expandListener) {\n this.expandListener = this.expandListener();\n }\n if (!this.isExpandable()) {\n removeAriaExpanded(eParentOfValue);\n return;\n }\n const listener = () => {\n // for react, we don't use JSX, as setting attributes via jsx is slower\n setAriaExpanded(eParentOfValue, !!node.expanded);\n };\n this.expandListener = this.addManagedListener(node, RowNode.EVENT_EXPANDED_CHANGED, listener) || null;\n listener();\n }\n isTopLevelFooter() {\n if (!this.gridOptionsService.is('groupIncludeTotalFooter')) {\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 (groupDisplayType: 'multipleColumns'), we only want 'total' to appear in the first column.\n const colDef = this.params.colDef;\n const doingFullWidth = colDef == null;\n if (doingFullWidth) {\n return true;\n }\n if (colDef.showRowGroup === true) {\n return true;\n }\n const 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 const 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 isEmbeddedRowMismatch() {\n if (!this.params.fullWidth || !this.gridOptionsService.is('embedFullWidthRows')) {\n return false;\n }\n const pinnedLeftCell = this.params.pinned === 'left';\n const pinnedRightCell = this.params.pinned === 'right';\n const bodyCell = !pinnedLeftCell && !pinnedRightCell;\n if (this.gridOptionsService.is('enableRtl')) {\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 findDisplayedGroupNode() {\n const column = this.params.column;\n const rowNode = this.params.node;\n if (this.showingValueForOpenedParent) {\n let 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 setupShowingValueForOpenedParent() {\n // note - this code depends on sortService.updateGroupDataForHiddenOpenParents, where group data\n // is updated to reflect the dragged down parents\n const rowNode = this.params.node;\n const column = this.params.column;\n if (!this.gridOptionsService.is('groupHideOpenParents')) {\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 const showingGroupNode = rowNode.rowGroupColumn != null;\n if (showingGroupNode) {\n const keyOfGroupingColumn = rowNode.rowGroupColumn.getId();\n const 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 const valPresent = rowNode.groupData[column.getId()] != null;\n this.showingValueForOpenedParent = valPresent;\n }\n addValueElement() {\n if (this.displayedGroupNode.footer) {\n this.addFooterValue();\n }\n else {\n this.addGroupValue();\n this.addChildCount();\n }\n }\n addGroupValue() {\n // we try and use the cellRenderer of the column used for the grouping if we can\n const paramsAdjusted = this.adjustParamsWithDetailsFromRelatedColumn();\n const innerCompDetails = this.getInnerCompDetails(paramsAdjusted);\n const { valueFormatted, value } = paramsAdjusted;\n let valueWhenNoRenderer = valueFormatted;\n if (valueWhenNoRenderer == null) {\n if (value === '' && this.params.node.group) {\n const localeTextFunc = this.localeService.getLocaleTextFunc();\n valueWhenNoRenderer = localeTextFunc('blanks', '(Blanks)');\n }\n else {\n valueWhenNoRenderer = value !== null && value !== void 0 ? value : null;\n }\n }\n this.comp.setInnerRenderer(innerCompDetails, valueWhenNoRenderer);\n }\n adjustParamsWithDetailsFromRelatedColumn() {\n const relatedColumn = this.displayedGroupNode.rowGroupColumn;\n const column = this.params.column;\n if (!relatedColumn) {\n return this.params;\n }\n const notFullWidth = column != null;\n if (notFullWidth) {\n const showingThisRowGroup = column.isRowGroupDisplayed(relatedColumn.getId());\n if (!showingThisRowGroup) {\n return this.params;\n }\n }\n const params = this.params;\n const { value, node } = this.params;\n const valueFormatted = this.valueFormatterService.formatValue(relatedColumn, node, 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 const paramsAdjusted = Object.assign(Object.assign({}, params), { valueFormatted: valueFormatted });\n return paramsAdjusted;\n }\n addFooterValue() {\n const footerValueGetter = this.params.footerValueGetter;\n let footerValue = '';\n if (footerValueGetter) {\n // params is same as we were given, except we set the value as the item to display\n const 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 const innerCompDetails = this.getInnerCompDetails(this.params);\n this.comp.setInnerRenderer(innerCompDetails, footerValue);\n }\n getInnerCompDetails(params) {\n // for full width rows, we don't do any of the below\n if (params.fullWidth) {\n return this.userComponentFactory.getFullWidthGroupRowInnerCellRenderer(this.gridOptionsService.get('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 const 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 const isGroupRowRenderer = (details) => details && details.componentClass == this.compClass;\n if (innerCompDetails && !isGroupRowRenderer(innerCompDetails)) {\n // use the renderer defined in cellRendererParams.innerRenderer\n return innerCompDetails;\n }\n const relatedColumn = this.displayedGroupNode.rowGroupColumn;\n const 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 const 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 const res = this.userComponentFactory.getInnerRendererDetails(relatedColDef.cellRendererParams, params);\n return res;\n }\n }\n addChildCount() {\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 updateChildCount() {\n const allChildrenCount = this.displayedGroupNode.allChildrenCount;\n const showingGroupForThisNode = this.isShowRowGroupForThisRow();\n const showCount = showingGroupForThisNode && allChildrenCount != null && allChildrenCount >= 0;\n const countString = showCount ? `(${allChildrenCount})` : ``;\n this.comp.setChildCount(countString);\n }\n isShowRowGroupForThisRow() {\n if (this.gridOptionsService.isTreeData()) {\n return true;\n }\n const rowGroupColumn = this.displayedGroupNode.rowGroupColumn;\n if (!rowGroupColumn) {\n return false;\n }\n // column is null for fullWidthRows\n const column = this.params.column;\n const thisColumnIsInterested = column == null || column.isRowGroupDisplayed(rowGroupColumn.getId());\n return thisColumnIsInterested;\n }\n addExpandAndContract() {\n var _a;\n const params = this.params;\n const eExpandedIcon = createIconNoSpan('groupExpanded', this.gridOptionsService, null);\n const eContractedIcon = createIconNoSpan('groupContracted', this.gridOptionsService, null);\n if (eExpandedIcon) {\n this.eExpanded.appendChild(eExpandedIcon);\n }\n if (eContractedIcon) {\n this.eContracted.appendChild(eContractedIcon);\n }\n const eGroupCell = params.eGridCell;\n // if editing groups, then double click is to start editing\n const isDoubleClickEdit = ((_a = this.params.column) === null || _a === void 0 ? void 0 : _a.isCellEditable(params.node)) && this.gridOptionsService.is('enableGroupEdit');\n if (!isDoubleClickEdit && 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 const 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 onExpandClicked(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(mouseEvent);\n }\n onExpandOrContract(e) {\n // must use the displayedGroup, so if data was dragged down, we expand the parent, not this row\n const rowNode = this.displayedGroupNode;\n const nextExpandState = !rowNode.expanded;\n if (!nextExpandState && rowNode.sticky) {\n this.scrollToStickyNode(rowNode);\n }\n rowNode.setExpanded(nextExpandState, e);\n }\n scrollToStickyNode(rowNode) {\n const gridBodyCtrl = this.ctrlsService.getGridBodyCtrl();\n const scrollFeature = gridBodyCtrl.getScrollFeature();\n scrollFeature.setVerticalScrollPosition(rowNode.rowTop - rowNode.stickyRowTop);\n }\n isExpandable() {\n if (this.showingValueForOpenedParent) {\n return true;\n }\n const rowNode = this.displayedGroupNode;\n const reducedLeafNode = this.columnModel.isPivotMode() && rowNode.leafGroup;\n const expandableGroup = rowNode.isExpandable() && !rowNode.footer && !reducedLeafNode;\n if (!expandableGroup) {\n return false;\n }\n // column is null for fullWidthRows\n const column = this.params.column;\n const displayingForOneColumnOnly = column != null && typeof column.getColDef().showRowGroup === 'string';\n if (displayingForOneColumnOnly) {\n const showing = this.isShowRowGroupForThisRow();\n return showing;\n }\n return true;\n }\n showExpandAndContractIcons() {\n const { params, displayedGroupNode: displayedGroup, columnModel } = this;\n const { node } = params;\n const 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 const 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 const pivotMode = columnModel.isPivotMode();\n const pivotModeAndLeafGroup = pivotMode && displayedGroup.leafGroup;\n const addExpandableCss = isExpandable && !pivotModeAndLeafGroup;\n const 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 onRowNodeIsExpandableChanged() {\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 this.refreshAriaExpanded();\n }\n setupIndent() {\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 const node = this.params.node;\n const 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 setIndent() {\n if (this.gridOptionsService.is('groupHideOpenParents')) {\n return;\n }\n const params = this.params;\n const rowNode = params.node;\n // if we are only showing one group column, we don't want to be indenting based on level\n const fullWithRow = !!params.colDef;\n const treeData = this.gridOptionsService.isTreeData();\n const manyDimensionThisColumn = !fullWithRow || treeData || params.colDef.showRowGroup === true;\n const paddingCount = manyDimensionThisColumn ? rowNode.uiLevel : 0;\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 addFullWidthRowDraggerIfNeeded() {\n if (!this.params.fullWidth || !this.params.rowDrag) {\n return;\n }\n const rowDragComp = new RowDragComp(() => this.params.value, this.params.node);\n this.createManagedBean(rowDragComp, this.context);\n this.eGui.insertAdjacentElement('afterbegin', rowDragComp.getGui());\n }\n isUserWantsSelected() {\n const paramsCheckbox = this.params.checkbox;\n // if a function, we always return true as change detection can show or hide the checkbox.\n return typeof paramsCheckbox === 'function' || paramsCheckbox === true;\n }\n addCheckboxIfNeeded() {\n const rowNode = this.displayedGroupNode;\n const 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 const cbSelectionComponent = new CheckboxSelectionComponent();\n this.getContext().createBean(cbSelectionComponent);\n cbSelectionComponent.init({\n rowNode: rowNode,\n column: this.params.column,\n overrides: {\n isVisible: this.params.checkbox,\n callbackParams: this.params,\n removeHidden: true,\n },\n });\n this.eCheckbox.appendChild(cbSelectionComponent.getGui());\n this.addDestroyFunc(() => this.getContext().destroyBean(cbSelectionComponent));\n }\n this.comp.setCheckboxVisible(checkboxNeeded);\n }\n onKeyDown(event) {\n const isEnterKey = event.key === KeyCode.ENTER;\n if (!isEnterKey || this.params.suppressEnterExpand) {\n return;\n }\n const cellEditable = this.params.column && this.params.column.isCellEditable(this.params.node);\n if (cellEditable) {\n return;\n }\n this.onExpandOrContract(event);\n }\n onCellDblClicked(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 const targetIsExpandIcon = isElementInEventPath(this.eExpanded, mouseEvent)\n || isElementInEventPath(this.eContracted, mouseEvent);\n if (!targetIsExpandIcon) {\n this.onExpandOrContract(mouseEvent);\n }\n }\n}\n__decorate$22([\n Autowired('expressionService')\n], GroupCellRendererCtrl.prototype, \"expressionService\", void 0);\n__decorate$22([\n Autowired('valueFormatterService')\n], GroupCellRendererCtrl.prototype, \"valueFormatterService\", void 0);\n__decorate$22([\n Autowired('columnModel')\n], GroupCellRendererCtrl.prototype, \"columnModel\", void 0);\n__decorate$22([\n Autowired('userComponentFactory')\n], GroupCellRendererCtrl.prototype, \"userComponentFactory\", void 0);\n__decorate$22([\n Autowired(\"ctrlsService\")\n], GroupCellRendererCtrl.prototype, \"ctrlsService\", void 0);\n\nvar __decorate$21 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass GroupCellRenderer extends Component {\n constructor() {\n super(GroupCellRenderer.TEMPLATE);\n }\n init(params) {\n const compProxy = {\n setInnerRenderer: (compDetails, valueToDisplay) => this.setRenderDetails(compDetails, valueToDisplay),\n setChildCount: count => this.eChildCount.innerHTML = count,\n addOrRemoveCssClass: (cssClass, value) => this.addOrRemoveCssClass(cssClass, value),\n setContractedDisplayed: expanded => setDisplayed(this.eContracted, expanded),\n setExpandedDisplayed: expanded => setDisplayed(this.eExpanded, expanded),\n setCheckboxVisible: visible => this.eCheckbox.classList.toggle('ag-invisible', !visible)\n };\n const ctrl = this.createManagedBean(new GroupCellRendererCtrl());\n const fullWidth = !params.colDef;\n const 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 setRenderDetails(compDetails, valueToDisplay) {\n if (compDetails) {\n const componentPromise = compDetails.newAgStackInstance();\n if (!componentPromise) {\n return;\n }\n componentPromise.then(comp => {\n if (!comp) {\n return;\n }\n const destroyComp = () => 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 destroy() {\n this.getContext().destroyBean(this.innerCellRenderer);\n super.destroy();\n }\n refresh() {\n return false;\n }\n}\nGroupCellRenderer.TEMPLATE = `\n \n \n \n \n \n `;\n__decorate$21([\n RefSelector('eExpanded')\n], GroupCellRenderer.prototype, \"eExpanded\", void 0);\n__decorate$21([\n RefSelector('eContracted')\n], GroupCellRenderer.prototype, \"eContracted\", void 0);\n__decorate$21([\n RefSelector('eCheckbox')\n], GroupCellRenderer.prototype, \"eCheckbox\", void 0);\n__decorate$21([\n RefSelector('eValue')\n], GroupCellRenderer.prototype, \"eValue\", void 0);\n__decorate$21([\n RefSelector('eChildCount')\n], GroupCellRenderer.prototype, \"eChildCount\", void 0);\n\nvar __decorate$20 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass LoadingCellRenderer extends Component {\n constructor() {\n super(LoadingCellRenderer.TEMPLATE);\n }\n init(params) {\n params.node.failedLoad ? this.setupFailed() : this.setupLoading();\n }\n setupFailed() {\n const localeTextFunc = this.localeService.getLocaleTextFunc();\n this.eLoadingText.innerText = localeTextFunc('loadingError', 'ERR');\n }\n setupLoading() {\n const eLoadingIcon = createIconNoSpan('groupLoading', this.gridOptionsService, null);\n if (eLoadingIcon) {\n this.eLoadingIcon.appendChild(eLoadingIcon);\n }\n const localeTextFunc = this.localeService.getLocaleTextFunc();\n this.eLoadingText.innerText = localeTextFunc('loadingOoo', 'Loading');\n }\n refresh(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 destroy() {\n super.destroy();\n }\n}\nLoadingCellRenderer.TEMPLATE = `
\n \n \n
`;\n__decorate$20([\n RefSelector('eLoadingIcon')\n], LoadingCellRenderer.prototype, \"eLoadingIcon\", void 0);\n__decorate$20([\n RefSelector('eLoadingText')\n], LoadingCellRenderer.prototype, \"eLoadingText\", void 0);\n\nclass LoadingOverlayComponent$1 extends Component {\n constructor() {\n super();\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 destroy() {\n super.destroy();\n }\n init(params) {\n var _a;\n const template = (_a = this.gridOptionsService.get('overlayLoadingTemplate')) !== null && _a !== void 0 ? _a : LoadingOverlayComponent$1.DEFAULT_LOADING_OVERLAY_TEMPLATE;\n const localeTextFunc = this.localeService.getLocaleTextFunc();\n const localisedTemplate = template.replace('[LOADING...]', localeTextFunc('loadingOoo', 'Loading...'));\n this.setTemplate(localisedTemplate);\n }\n}\nLoadingOverlayComponent$1.DEFAULT_LOADING_OVERLAY_TEMPLATE = '[LOADING...]';\n\nclass NoRowsOverlayComponent$1 extends Component {\n constructor() {\n super();\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 destroy() {\n super.destroy();\n }\n init(params) {\n var _a;\n const template = (_a = this.gridOptionsService.get('overlayNoRowsTemplate')) !== null && _a !== void 0 ? _a : NoRowsOverlayComponent$1.DEFAULT_NO_ROWS_TEMPLATE;\n const localeTextFunc = this.localeService.getLocaleTextFunc();\n const localisedTemplate = template.replace('[NO_ROWS_TO_SHOW]', localeTextFunc('noRowsToShow', 'No Rows To Show'));\n this.setTemplate(localisedTemplate);\n }\n}\nNoRowsOverlayComponent$1.DEFAULT_NO_ROWS_TEMPLATE = '[NO_ROWS_TO_SHOW]';\n\nclass TooltipComponent$1 extends PopupComponent {\n constructor() {\n super(/* html */ `
`);\n }\n // will need to type params\n init(params) {\n const { value } = params;\n this.getGui().innerHTML = escapeString(value);\n }\n}\n\nclass NumberCellEditorInput {\n getTemplate() {\n return /* html */ ``;\n }\n init(eInput, params) {\n this.eInput = eInput;\n this.params = params;\n if (params.max != null) {\n eInput.setMax(params.max);\n }\n if (params.min != null) {\n eInput.setMin(params.min);\n }\n if (params.precision != null) {\n eInput.setPrecision(params.precision);\n }\n if (params.step != null) {\n eInput.setStep(params.step);\n }\n if (params.showStepperButtons) {\n eInput.getInputElement().classList.add('ag-number-field-input-stepper');\n }\n }\n getValue() {\n const value = this.eInput.getValue();\n if (!exists(value) && !exists(this.params.value)) {\n return this.params.value;\n }\n let parsedValue = this.params.parseValue(value);\n if (parsedValue == null) {\n return parsedValue;\n }\n if (typeof parsedValue === 'string') {\n if (parsedValue === '') {\n return null;\n }\n parsedValue = Number(parsedValue);\n }\n return isNaN(parsedValue) ? null : parsedValue;\n }\n getStartValue() {\n return this.params.value;\n }\n}\nclass NumberCellEditor extends SimpleCellEditor {\n constructor() {\n super(new NumberCellEditorInput());\n }\n}\n\nclass DateCellEditorInput {\n getTemplate() {\n return /* html */ ``;\n }\n init(eInput, params) {\n this.eInput = eInput;\n this.params = params;\n if (params.min != null) {\n eInput.setMin(params.min);\n }\n if (params.max != null) {\n eInput.setMax(params.max);\n }\n if (params.step != null) {\n eInput.setStep(params.step);\n }\n }\n getValue() {\n const value = this.eInput.getDate();\n if (!exists(value) && !exists(this.params.value)) {\n return this.params.value;\n }\n return value !== null && value !== void 0 ? value : null;\n }\n getStartValue() {\n const { value } = this.params;\n if (!(value instanceof Date)) {\n return undefined;\n }\n return serialiseDate(value, false);\n }\n}\nclass DateCellEditor extends SimpleCellEditor {\n constructor() {\n super(new DateCellEditorInput());\n }\n}\n\nvar __decorate$1$ = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass DateStringCellEditorInput {\n constructor(getDataTypeService) {\n this.getDataTypeService = getDataTypeService;\n }\n getTemplate() {\n return /* html */ ``;\n }\n init(eInput, params) {\n this.eInput = eInput;\n this.params = params;\n if (params.min != null) {\n eInput.setMin(params.min);\n }\n if (params.max != null) {\n eInput.setMax(params.max);\n }\n if (params.step != null) {\n eInput.setStep(params.step);\n }\n }\n getValue() {\n const value = this.formatDate(this.eInput.getDate());\n if (!exists(value) && !exists(this.params.value)) {\n return this.params.value;\n }\n return this.params.parseValue(value !== null && value !== void 0 ? value : '');\n }\n getStartValue() {\n var _a, _b;\n return serialiseDate((_b = this.parseDate((_a = this.params.value) !== null && _a !== void 0 ? _a : undefined)) !== null && _b !== void 0 ? _b : null, false);\n }\n parseDate(value) {\n return this.getDataTypeService().getDateParserFunction()(value);\n }\n formatDate(value) {\n return this.getDataTypeService().getDateFormatterFunction()(value);\n }\n}\nclass DateStringCellEditor extends SimpleCellEditor {\n constructor() {\n super(new DateStringCellEditorInput(() => this.dataTypeService));\n }\n}\n__decorate$1$([\n Autowired('dataTypeService')\n], DateStringCellEditor.prototype, \"dataTypeService\", void 0);\n\nvar __decorate$1_ = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass CheckboxCellRenderer extends Component {\n constructor() {\n super(CheckboxCellRenderer.TEMPLATE);\n }\n init(params) {\n this.params = params;\n this.updateCheckbox(params);\n this.eCheckbox.getInputElement().setAttribute('tabindex', '-1');\n this.addManagedListener(this.eCheckbox.getInputElement(), 'click', (event) => {\n stopPropagationForAgGrid(event);\n if (this.eCheckbox.isDisabled()) {\n return;\n }\n const isSelected = this.eCheckbox.getValue();\n this.onCheckboxChanged(isSelected);\n });\n this.addManagedListener(this.eCheckbox.getInputElement(), 'dblclick', (event) => {\n stopPropagationForAgGrid(event);\n });\n const eDocument = this.gridOptionsService.getDocument();\n this.addManagedListener(this.params.eGridCell, 'keydown', (event) => {\n if (event.key === KeyCode.SPACE && !this.eCheckbox.isDisabled()) {\n if (this.params.eGridCell === eDocument.activeElement) {\n this.eCheckbox.toggle();\n }\n const isSelected = this.eCheckbox.getValue();\n this.onCheckboxChanged(isSelected);\n event.preventDefault();\n }\n });\n }\n refresh(params) {\n this.params = params;\n this.updateCheckbox(params);\n return true;\n }\n updateCheckbox(params) {\n var _a, _b, _c;\n let isSelected;\n let displayed = true;\n if (params.node.group && params.column) {\n const colId = params.column.getColId();\n if (colId.startsWith(GROUP_AUTO_COLUMN_ID)) {\n // if we're grouping by this column then the value is a string and we need to parse it\n isSelected = params.value == null || params.value === '' ? undefined : params.value === 'true';\n }\n else if (params.node.aggData && params.node.aggData[colId] !== undefined) {\n isSelected = (_a = params.value) !== null && _a !== void 0 ? _a : undefined;\n }\n else {\n displayed = false;\n }\n }\n else {\n isSelected = (_b = params.value) !== null && _b !== void 0 ? _b : undefined;\n }\n if (!displayed) {\n this.eCheckbox.setDisplayed(false);\n return;\n }\n this.eCheckbox.setValue(isSelected);\n const disabled = params.disabled != null ? params.disabled : !((_c = params.column) === null || _c === void 0 ? void 0 : _c.isCellEditable(params.node));\n this.eCheckbox.setDisabled(disabled);\n const translate = this.localeService.getLocaleTextFunc();\n const stateName = getAriaCheckboxStateName(translate, isSelected);\n const ariaLabel = disabled\n ? stateName\n : `${translate('ariaToggleCellValue', 'Press SPACE to toggle cell value')} (${stateName})`;\n this.eCheckbox.setInputAriaLabel(ariaLabel);\n }\n onCheckboxChanged(isSelected) {\n const { column, node, rowIndex, value } = this.params;\n const eventStarted = {\n type: Events.EVENT_CELL_EDITING_STARTED,\n column: column,\n colDef: column === null || column === void 0 ? void 0 : column.getColDef(),\n data: node.data,\n node,\n rowIndex,\n rowPinned: node.rowPinned,\n value\n };\n this.eventService.dispatchEvent(eventStarted);\n const valueChanged = this.params.node.setDataValue(this.params.column, isSelected, 'edit');\n const eventStopped = {\n type: Events.EVENT_CELL_EDITING_STOPPED,\n column: column,\n colDef: column === null || column === void 0 ? void 0 : column.getColDef(),\n data: node.data,\n node,\n rowIndex,\n rowPinned: node.rowPinned,\n value,\n oldValue: value,\n newValue: isSelected,\n valueChanged\n };\n this.eventService.dispatchEvent(eventStopped);\n }\n}\nCheckboxCellRenderer.TEMPLATE = `\n
\n \n
`;\n__decorate$1_([\n RefSelector('eCheckbox')\n], CheckboxCellRenderer.prototype, \"eCheckbox\", void 0);\n\nvar __decorate$1Z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass CheckboxCellEditor extends PopupComponent {\n constructor() {\n super(/* html */ `\n
\n \n
`);\n }\n init(params) {\n var _a;\n this.params = params;\n const isSelected = (_a = params.value) !== null && _a !== void 0 ? _a : undefined;\n this.eCheckbox.setValue(isSelected);\n this.eCheckbox.getInputElement().setAttribute('tabindex', '-1');\n this.setAriaLabel(isSelected);\n this.addManagedListener(this.eCheckbox, AgCheckbox.EVENT_CHANGED, (event) => this.setAriaLabel(event.selected));\n }\n getValue() {\n return this.eCheckbox.getValue();\n }\n focusIn() {\n this.eCheckbox.getFocusableElement().focus();\n }\n afterGuiAttached() {\n if (this.params.cellStartedEdit) {\n this.focusIn();\n }\n }\n isPopup() {\n return false;\n }\n setAriaLabel(isSelected) {\n const translate = this.localeService.getLocaleTextFunc();\n const stateName = getAriaCheckboxStateName(translate, isSelected);\n const ariaLabel = translate('ariaToggleCellValue', 'Press SPACE to toggle cell value');\n this.eCheckbox.setInputAriaLabel(`${ariaLabel} (${stateName})`);\n }\n}\n__decorate$1Z([\n RefSelector('eCheckbox')\n], CheckboxCellEditor.prototype, \"eCheckbox\", void 0);\n\nvar __decorate$1Y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet UserComponentRegistry = class UserComponentRegistry extends BeanStub {\n constructor() {\n super(...arguments);\n this.agGridDefaults = {\n //date\n agDateInput: DefaultDateComponent,\n //header\n agColumnHeader: HeaderComp,\n agColumnGroupHeader: HeaderGroupComp,\n agSortIndicator: SortIndicatorComp,\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 agCheckboxCellRenderer: CheckboxCellRenderer,\n //editors\n agCellEditor: TextCellEditor,\n agTextCellEditor: TextCellEditor,\n agNumberCellEditor: NumberCellEditor,\n agDateCellEditor: DateCellEditor,\n agDateStringCellEditor: DateStringCellEditor,\n agSelectCellEditor: SelectCellEditor,\n agLargeTextCellEditor: LargeTextCellEditor,\n agCheckboxCellEditor: CheckboxCellEditor,\n //filter\n agTextColumnFilter: TextFilter,\n agNumberColumnFilter: NumberFilter,\n agDateColumnFilter: DateFilter,\n //overlays\n agLoadingOverlay: LoadingOverlayComponent$1,\n agNoRowsOverlay: NoRowsOverlayComponent$1,\n // tooltips\n agTooltipComponent: TooltipComponent$1\n };\n /** Used to provide useful error messages if a user is trying to use an enterprise component without loading the module. */\n this.enterpriseAgDefaultCompsModule = {\n agSetColumnFilter: ModuleNames.SetFilterModule,\n agSetColumnFloatingFilter: ModuleNames.SetFilterModule,\n agMultiColumnFilter: ModuleNames.MultiFilterModule,\n agMultiColumnFloatingFilter: ModuleNames.MultiFilterModule,\n agGroupColumnFilter: ModuleNames.RowGroupingModule,\n agGroupColumnFloatingFilter: ModuleNames.RowGroupingModule,\n agRichSelect: ModuleNames.RichSelectModule,\n agRichSelectCellEditor: ModuleNames.RichSelectModule,\n agDetailCellRenderer: ModuleNames.MasterDetailModule,\n agSparklineCellRenderer: ModuleNames.SparklinesModule\n };\n this.jsComps = {};\n }\n init() {\n if (this.gridOptions.components != null) {\n iterateObject(this.gridOptions.components, (key, component) => this.registerJsComponent(key, component));\n }\n }\n registerDefaultComponent(name, component) {\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 registerJsComponent(name, component) {\n this.jsComps[name] = component;\n }\n retrieve(propertyName, name) {\n const createResult = (component, componentFromFramework) => ({ componentFromFramework, 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 const registeredViaFrameworkComp = this.getFrameworkOverrides().frameworkComponent(name, this.gridOptions.components);\n if (registeredViaFrameworkComp != null) {\n return createResult(registeredViaFrameworkComp, true);\n }\n const jsComponent = this.jsComps[name];\n if (jsComponent) {\n const isFwkComp = this.getFrameworkOverrides().isFrameworkComponent(jsComponent);\n return createResult(jsComponent, isFwkComp);\n }\n const defaultComponent = this.agGridDefaults[name];\n if (defaultComponent) {\n return createResult(defaultComponent, false);\n }\n const moduleForComponent = this.enterpriseAgDefaultCompsModule[name];\n if (moduleForComponent) {\n ModuleRegistry.__assertRegistered(moduleForComponent, `AG Grid '${propertyName}' component: ${name}`, this.context.getGridId());\n }\n else {\n doOnce(() => { this.warnAboutMissingComponent(propertyName, name); }, \"MissingComp\" + name);\n }\n return null;\n }\n warnAboutMissingComponent(propertyName, componentName) {\n const validComponents = [\n // Don't include the old names / internals in potential suggestions\n ...Object.keys(this.agGridDefaults).filter(k => !['agCellEditor', 'agGroupRowRenderer', 'agSortIndicator'].includes(k)),\n ...Object.keys(this.jsComps)\n ];\n const suggestions = fuzzySuggestions(componentName, validComponents, true, 0.8);\n console.warn(`AG Grid: Could not find '${componentName}' component. It was configured as \"${propertyName}: '${componentName}'\" but it wasn't found in the list of registered components.`);\n if (suggestions.length > 0) {\n console.warn(` Did you mean: [${suggestions.slice(0, 3)}]?`);\n }\n console.warn(`If using a custom component check it has been registered as described in: https://ag-grid.com/javascript-data-grid/components/`);\n }\n};\n__decorate$1Y([\n Autowired('gridOptions')\n], UserComponentRegistry.prototype, \"gridOptions\", void 0);\n__decorate$1Y([\n PostConstruct\n], UserComponentRegistry.prototype, \"init\", null);\nUserComponentRegistry = __decorate$1Y([\n Bean('userComponentRegistry')\n], UserComponentRegistry);\n\nconst DateComponent = {\n propertyName: 'dateComponent',\n cellRenderer: false\n};\nconst HeaderComponent = {\n propertyName: 'headerComponent',\n cellRenderer: false\n};\nconst HeaderGroupComponent = {\n propertyName: 'headerGroupComponent',\n cellRenderer: false\n};\nconst CellRendererComponent = {\n propertyName: 'cellRenderer',\n cellRenderer: true\n};\nconst CellEditorComponent = {\n propertyName: 'cellEditor',\n cellRenderer: false\n};\nconst InnerRendererComponent = {\n propertyName: 'innerRenderer',\n cellRenderer: true\n};\nconst LoadingOverlayComponent = {\n propertyName: 'loadingOverlayComponent',\n cellRenderer: false\n};\nconst NoRowsOverlayComponent = {\n propertyName: 'noRowsOverlayComponent',\n cellRenderer: false\n};\nconst TooltipComponent = {\n propertyName: 'tooltipComponent',\n cellRenderer: false\n};\nconst FilterComponent = {\n propertyName: 'filter',\n cellRenderer: false\n};\nconst FloatingFilterComponent = {\n propertyName: 'floatingFilterComponent',\n cellRenderer: false\n};\nconst ToolPanelComponent = {\n propertyName: 'toolPanel',\n cellRenderer: false\n};\nconst StatusPanelComponent = {\n propertyName: 'statusPanel',\n cellRenderer: false\n};\nconst FullWidth = {\n propertyName: 'fullWidthCellRenderer',\n cellRenderer: true\n};\nconst FullWidthLoading = {\n propertyName: 'loadingCellRenderer',\n cellRenderer: true\n};\nconst FullWidthGroup = {\n propertyName: 'groupRowRenderer',\n cellRenderer: true\n};\nconst FullWidthDetail = {\n propertyName: 'detailCellRenderer',\n cellRenderer: true\n};\n\nclass FloatingFilterMapper {\n static getFloatingFilterType(filterType) {\n return this.filterToFloatingFilterMapping[filterType];\n }\n}\nFloatingFilterMapper.filterToFloatingFilterMapping = {\n set: 'agSetColumnFloatingFilter',\n agSetColumnFilter: 'agSetColumnFloatingFilter',\n multi: 'agMultiColumnFloatingFilter',\n agMultiColumnFilter: 'agMultiColumnFloatingFilter',\n group: 'agGroupColumnFloatingFilter',\n agGroupColumnFilter: 'agGroupColumnFloatingFilter',\n number: 'agNumberColumnFloatingFilter',\n agNumberColumnFilter: 'agNumberColumnFloatingFilter',\n date: 'agDateColumnFloatingFilter',\n agDateColumnFilter: 'agDateColumnFloatingFilter',\n text: 'agTextColumnFloatingFilter',\n agTextColumnFilter: 'agTextColumnFloatingFilter'\n};\n\nvar __decorate$1X = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet UserComponentFactory = class UserComponentFactory extends BeanStub {\n getHeaderCompDetails(colDef, params) {\n return this.getCompDetails(colDef, HeaderComponent, 'agColumnHeader', params);\n }\n getHeaderGroupCompDetails(params) {\n const 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 getFullWidthCellRendererDetails(params) {\n return this.getCompDetails(this.gridOptions, FullWidth, null, params, true);\n }\n getFullWidthLoadingCellRendererDetails(params) {\n return this.getCompDetails(this.gridOptions, FullWidthLoading, 'agLoadingCellRenderer', params, true);\n }\n getFullWidthGroupCellRendererDetails(params) {\n return this.getCompDetails(this.gridOptions, FullWidthGroup, 'agGroupRowRenderer', params, true);\n }\n getFullWidthDetailCellRendererDetails(params) {\n return this.getCompDetails(this.gridOptions, FullWidthDetail, 'agDetailCellRenderer', params, true);\n }\n // CELL RENDERER\n getInnerRendererDetails(def, params) {\n return this.getCompDetails(def, InnerRendererComponent, null, params);\n }\n getFullWidthGroupRowInnerCellRenderer(def, params) {\n return this.getCompDetails(def, InnerRendererComponent, null, params);\n }\n getCellRendererDetails(def, params) {\n return this.getCompDetails(def, CellRendererComponent, null, params);\n }\n // CELL EDITOR\n getCellEditorDetails(def, params) {\n return this.getCompDetails(def, CellEditorComponent, 'agCellEditor', params, true);\n }\n // FILTER\n getFilterDetails(def, params, defaultFilter) {\n return this.getCompDetails(def, FilterComponent, defaultFilter, params, true);\n }\n getDateCompDetails(params) {\n return this.getCompDetails(this.gridOptions, DateComponent, 'agDateInput', params, true);\n }\n getLoadingOverlayCompDetails(params) {\n return this.getCompDetails(this.gridOptions, LoadingOverlayComponent, 'agLoadingOverlay', params, true);\n }\n getNoRowsOverlayCompDetails(params) {\n return this.getCompDetails(this.gridOptions, NoRowsOverlayComponent, 'agNoRowsOverlay', params, true);\n }\n getTooltipCompDetails(params) {\n return this.getCompDetails(params.colDef, TooltipComponent, 'agTooltipComponent', params, true);\n }\n getSetFilterCellRendererDetails(def, params) {\n return this.getCompDetails(def, CellRendererComponent, null, params);\n }\n getFloatingFilterCompDetails(def, params, defaultFloatingFilter) {\n return this.getCompDetails(def, FloatingFilterComponent, defaultFloatingFilter, params);\n }\n getToolPanelCompDetails(toolPanelDef, params) {\n return this.getCompDetails(toolPanelDef, ToolPanelComponent, null, params, true);\n }\n getStatusPanelCompDetails(def, params) {\n return this.getCompDetails(def, StatusPanelComponent, null, params, true);\n }\n getCompDetails(defObject, type, defaultName, params, mandatory = false) {\n const { propertyName, cellRenderer } = type;\n let { compName, jsComp, fwComp, paramsFromSelector, popupFromSelector, popupPositionFromSelector } = this.getCompKeys(defObject, type, params);\n const lookupFromRegistry = (key) => {\n const item = this.userComponentRegistry.retrieve(propertyName, 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(`AG Grid: Could not find component ${compName}, did you forget to configure this component?`);\n }\n return;\n }\n const paramsMerged = this.mergeParamsWithApplicationProvidedParams(defObject, type, params, paramsFromSelector);\n const componentFromFramework = jsComp == null;\n const componentClass = jsComp ? jsComp : fwComp;\n return {\n componentFromFramework,\n componentClass,\n params: paramsMerged,\n type: type,\n popupFromSelector,\n popupPositionFromSelector,\n newAgStackInstance: () => this.newAgStackInstance(componentClass, componentFromFramework, paramsMerged, type)\n };\n }\n getCompKeys(defObject, type, params) {\n const { propertyName } = type;\n let compName;\n let jsComp;\n let fwComp;\n let paramsFromSelector;\n let popupFromSelector;\n let 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 const defObjectAny = defObject;\n // if selector, use this\n const selectorFunc = defObjectAny[propertyName + 'Selector'];\n const selectorRes = selectorFunc ? selectorFunc(params) : null;\n const assignComp = (providedJsComp) => {\n if (typeof providedJsComp === 'string') {\n compName = providedJsComp;\n }\n else if (providedJsComp != null && providedJsComp !== true) {\n const isFwkComp = this.getFrameworkOverrides().isFrameworkComponent(providedJsComp);\n if (isFwkComp) {\n fwComp = providedJsComp;\n }\n else {\n jsComp = providedJsComp;\n }\n }\n };\n if (selectorRes) {\n assignComp(selectorRes.component);\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]);\n }\n }\n return { compName, jsComp, fwComp, paramsFromSelector, popupFromSelector, popupPositionFromSelector };\n }\n newAgStackInstance(ComponentClass, componentFromFramework, params, type) {\n const propertyName = type.propertyName;\n const jsComponent = !componentFromFramework;\n // using javascript component\n let instance;\n if (jsComponent) {\n instance = new ComponentClass();\n }\n else {\n // Using framework component\n const thisComponentConfig = this.componentMetadataProvider.retrieve(propertyName);\n instance = this.frameworkComponentWrapper.wrap(ComponentClass, thisComponentConfig.mandatoryMethodList, thisComponentConfig.optionalMethodList, type);\n }\n const deferredInit = this.initComponent(instance, params);\n if (deferredInit == null) {\n return AgPromise.resolve(instance);\n }\n return deferredInit.then(() => instance);\n }\n // used by Floating Filter\n mergeParamsWithApplicationProvidedParams(defObject, type, paramsFromGrid, paramsFromSelector = null) {\n const params = {\n context: this.gridOptionsService.context,\n columnApi: this.gridOptionsService.columnApi,\n api: this.gridOptionsService.api\n };\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 const defObjectAny = defObject;\n const userParams = defObjectAny && defObjectAny[type.propertyName + 'Params'];\n if (typeof userParams === 'function') {\n const 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 initComponent(component, params) {\n this.context.createBean(component);\n if (component.init == null) {\n return;\n }\n return component.init(params);\n }\n getDefaultFloatingFilterType(def, getFromDefault) {\n if (def == null) {\n return null;\n }\n let defaultFloatingFilterType = null;\n let { compName, jsComp, fwComp } = this.getCompKeys(def, FilterComponent);\n if (compName) {\n // will be undefined if not in the map\n defaultFloatingFilterType = FloatingFilterMapper.getFloatingFilterType(compName);\n }\n else {\n const usingDefaultFilter = (jsComp == null && fwComp == null) && (def.filter === true);\n if (usingDefaultFilter) {\n defaultFloatingFilterType = getFromDefault();\n }\n }\n return defaultFloatingFilterType;\n }\n};\n__decorate$1X([\n Autowired('gridOptions')\n], UserComponentFactory.prototype, \"gridOptions\", void 0);\n__decorate$1X([\n Autowired('agComponentUtils')\n], UserComponentFactory.prototype, \"agComponentUtils\", void 0);\n__decorate$1X([\n Autowired('componentMetadataProvider')\n], UserComponentFactory.prototype, \"componentMetadataProvider\", void 0);\n__decorate$1X([\n Autowired('userComponentRegistry')\n], UserComponentFactory.prototype, \"userComponentRegistry\", void 0);\n__decorate$1X([\n Optional('frameworkComponentWrapper')\n], UserComponentFactory.prototype, \"frameworkComponentWrapper\", void 0);\nUserComponentFactory = __decorate$1X([\n Bean('userComponentFactory')\n], UserComponentFactory);\n\n// Excel Export\nvar ExcelFactoryMode;\n(function (ExcelFactoryMode) {\n ExcelFactoryMode[ExcelFactoryMode[\"SINGLE_SHEET\"] = 0] = \"SINGLE_SHEET\";\n ExcelFactoryMode[ExcelFactoryMode[\"MULTI_SHEET\"] = 1] = \"MULTI_SHEET\";\n})(ExcelFactoryMode || (ExcelFactoryMode = {}));\n\nvar __decorate$1W = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/** 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. */\nlet DragService = class DragService extends BeanStub {\n constructor() {\n super(...arguments);\n this.dragEndFunctions = [];\n this.dragSources = [];\n }\n removeAllListeners() {\n this.dragSources.forEach(this.removeListener.bind(this));\n this.dragSources.length = 0;\n }\n removeListener(dragSourceAndListener) {\n const element = dragSourceAndListener.dragSource.eElement;\n const mouseDownListener = dragSourceAndListener.mouseDownListener;\n element.removeEventListener('mousedown', mouseDownListener);\n // remove touch listener only if it exists\n if (dragSourceAndListener.touchEnabled) {\n const touchStartListener = dragSourceAndListener.touchStartListener;\n element.removeEventListener('touchstart', touchStartListener, { passive: true });\n }\n }\n removeDragSource(params) {\n const dragSourceAndListener = this.dragSources.find(item => item.dragSource === params);\n if (!dragSourceAndListener) {\n return;\n }\n this.removeListener(dragSourceAndListener);\n removeFromArray(this.dragSources, dragSourceAndListener);\n }\n isDragging() {\n return this.dragging;\n }\n addDragSource(params) {\n const mouseListener = this.onMouseDown.bind(this, params);\n const { eElement, includeTouch, stopPropagationForTouch } = params;\n eElement.addEventListener('mousedown', mouseListener);\n let touchListener = null;\n const suppressTouch = this.gridOptionsService.is('suppressTouch');\n if (includeTouch && !suppressTouch) {\n touchListener = (touchEvent) => {\n if (isFocusableFormField(touchEvent.target)) {\n return;\n }\n if (touchEvent.cancelable) {\n touchEvent.preventDefault();\n if (stopPropagationForTouch) {\n touchEvent.stopPropagation();\n }\n }\n this.onTouchStart(params, touchEvent);\n };\n // we set passive=false, as we want to prevent default on this event\n eElement.addEventListener('touchstart', touchListener, { passive: false });\n }\n this.dragSources.push({\n dragSource: params,\n mouseDownListener: mouseListener,\n touchStartListener: touchListener,\n touchEnabled: !!includeTouch\n });\n }\n getStartTarget() {\n return this.startTarget;\n }\n // gets called whenever mouse down on any drag source\n onTouchStart(params, touchEvent) {\n this.currentDragParams = params;\n this.dragging = false;\n const touch = touchEvent.touches[0];\n this.touchLastTime = touch;\n this.touchStart = touch;\n const touchMoveEvent = (e) => this.onTouchMove(e, params.eElement);\n const touchEndEvent = (e) => this.onTouchUp(e, params.eElement);\n const documentTouchMove = (e) => { if (e.cancelable) {\n e.preventDefault();\n } };\n const target = touchEvent.target;\n const 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: this.gridOptionsService.getRootNode(), type: 'touchmove', listener: documentTouchMove, options: { passive: false } },\n { target, type: 'touchmove', listener: touchMoveEvent, options: { passive: true } },\n { target, type: 'touchend', listener: touchEndEvent, options: { passive: true } },\n { 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 onMouseDown(params, mouseEvent) {\n const 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 if (this.shouldPreventMouseEvent(mouseEvent)) {\n mouseEvent.preventDefault();\n }\n this.currentDragParams = params;\n this.dragging = false;\n this.mouseStartEvent = mouseEvent;\n this.startTarget = mouseEvent.target;\n const mouseMoveEvent = (event) => this.onMouseMove(event, params.eElement);\n const mouseUpEvent = (event) => this.onMouseUp(event, params.eElement);\n const contextEvent = (event) => event.preventDefault();\n const target = this.gridOptionsService.getRootNode();\n const events = [\n { target, type: 'mousemove', listener: mouseMoveEvent },\n { target, type: 'mouseup', listener: mouseUpEvent },\n { 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 addTemporaryEvents(events) {\n events.forEach((currentEvent) => {\n const { target, type, listener, options } = currentEvent;\n target.addEventListener(type, listener, options);\n });\n this.dragEndFunctions.push(() => {\n events.forEach((currentEvent) => {\n const { target, type, listener, options } = currentEvent;\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 isEventNearStartEvent(currentEvent, startEvent) {\n // by default, we wait 4 pixels before starting the drag\n const { dragStartPixels } = this.currentDragParams;\n const requiredPixelDiff = exists(dragStartPixels) ? dragStartPixels : 4;\n return areEventsNear(currentEvent, startEvent, requiredPixelDiff);\n }\n getFirstActiveTouch(touchList) {\n for (let 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 onCommonMove(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 const event = {\n type: Events.EVENT_DRAG_STARTED,\n target: el\n };\n this.eventService.dispatchEvent(event);\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 onTouchMove(touchEvent, el) {\n const 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 onMouseMove(mouseEvent, el) {\n if (this.shouldPreventMouseEvent(mouseEvent)) {\n mouseEvent.preventDefault();\n }\n this.onCommonMove(mouseEvent, this.mouseStartEvent, el);\n }\n shouldPreventMouseEvent(mouseEvent) {\n const isEnableCellTextSelect = this.gridOptionsService.is('enableCellTextSelection');\n const isSafari = isBrowserSafari();\n const isMouseMove = mouseEvent.type === 'mousemove';\n return (\n // when `isEnableCellTextSelect` is `true`, we need to preventDefault on mouseMove\n // to avoid the grid text being selected while dragging components.\n // Note: Safari also has an issue, where `user-select: none` is not being respected, so also\n // prevent it on MouseDown.\n ((isEnableCellTextSelect && isMouseMove) || isSafari) &&\n mouseEvent.cancelable &&\n this.mouseEventService.isEventFromThisGrid(mouseEvent) &&\n !this.isOverFormFieldElement(mouseEvent));\n }\n isOverFormFieldElement(mouseEvent) {\n const el = mouseEvent.target;\n const tagName = el === null || el === void 0 ? void 0 : el.tagName.toLocaleLowerCase();\n return !!(tagName === null || tagName === void 0 ? void 0 : tagName.match('^a$|textarea|input|select|button'));\n }\n onTouchUp(touchEvent, el) {\n let 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 onMouseUp(mouseEvent, el) {\n this.onUpCommon(mouseEvent, el);\n }\n onUpCommon(eventOrTouch, el) {\n if (this.dragging) {\n this.dragging = false;\n this.currentDragParams.onDragStop(eventOrTouch);\n const event = {\n type: Events.EVENT_DRAG_STOPPED,\n target: el\n };\n this.eventService.dispatchEvent(event);\n }\n this.mouseStartEvent = null;\n this.startTarget = null;\n this.touchStart = null;\n this.touchLastTime = null;\n this.currentDragParams = null;\n this.dragEndFunctions.forEach(func => func());\n this.dragEndFunctions.length = 0;\n }\n};\n__decorate$1W([\n Autowired('mouseEventService')\n], DragService.prototype, \"mouseEventService\", void 0);\n__decorate$1W([\n PreDestroy\n], DragService.prototype, \"removeAllListeners\", null);\nDragService = __decorate$1W([\n Bean('dragService')\n], DragService);\n\nvar RowHighlightPosition;\n(function (RowHighlightPosition) {\n RowHighlightPosition[RowHighlightPosition[\"Above\"] = 0] = \"Above\";\n RowHighlightPosition[RowHighlightPosition[\"Below\"] = 1] = \"Below\";\n})(RowHighlightPosition || (RowHighlightPosition = {}));\n\nvar 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[\"FILTER_AGGREGATES\"] = \"filter_aggregates\";\n ClientSideRowModelSteps[\"PIVOT\"] = \"pivot\";\n ClientSideRowModelSteps[\"NOTHING\"] = \"nothing\";\n})(ClientSideRowModelSteps || (ClientSideRowModelSteps = {}));\n\nvar __decorate$1V = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nfunction unwrapUserComp(comp) {\n const compAsAny = comp;\n const isProxy = compAsAny != null && compAsAny.getFrameworkComponentInstance != null;\n return isProxy ? compAsAny.getFrameworkComponentInstance() : comp;\n}\nlet GridApi = class GridApi {\n constructor() {\n this.detailGridInfoMap = {};\n this.destroyCalled = false;\n }\n registerOverlayWrapperComp(overlayWrapperComp) {\n this.overlayWrapperComp = overlayWrapperComp;\n }\n registerSideBarComp(sideBarComp) {\n this.sideBarComp = sideBarComp;\n }\n init() {\n switch (this.rowModel.getType()) {\n case 'clientSide':\n this.clientSideRowModel = this.rowModel;\n break;\n case 'infinite':\n this.infiniteRowModel = this.rowModel;\n break;\n case 'serverSide':\n this.serverSideRowModel = this.rowModel;\n break;\n }\n this.ctrlsService.whenReady(() => {\n this.gridBodyCtrl = this.ctrlsService.getGridBodyCtrl();\n });\n }\n /** Used internally by grid. Not intended to be used by the client. Interface may change between releases. */\n __getAlignedGridService() {\n return this.alignedGridsService;\n }\n /** Used internally by grid. Not intended to be used by the client. Interface may change between releases. */\n __getContext() {\n return this.context;\n }\n getSetterMethod(key) {\n return `set${key.charAt(0).toUpperCase()}${key.substring(1)}`;\n }\n /** Used internally by grid. Not intended to be used by the client. Interface may change between releases. */\n __setProperty(propertyName, value) {\n // Ensure the GridOptions property gets updated and fires the change event as we\n // cannot assume that the dynamic Api call will updated GridOptions.\n this.gridOptionsService.set(propertyName, value);\n // If the dynamic api does update GridOptions then change detection in the \n // GridOptionsService will prevent the event being fired twice.\n const setterName = this.getSetterMethod(propertyName);\n const dynamicApi = this;\n if (dynamicApi[setterName]) {\n dynamicApi[setterName](value);\n }\n }\n /** Returns the `gridId` for the current grid as specified via the gridOptions property `gridId` or the auto assigned grid id if none was provided. */\n getGridId() {\n return this.context.getGridId();\n }\n /** Register a detail grid with the master grid when it is created. */\n addDetailGridInfo(id, gridInfo) {\n this.detailGridInfoMap[id] = gridInfo;\n }\n /** Unregister a detail grid from the master grid when it is destroyed. */\n removeDetailGridInfo(id) {\n this.detailGridInfoMap[id] = undefined;\n }\n /** Returns the `DetailGridInfo` corresponding to the supplied `detailGridId`. */\n getDetailGridInfo(id) {\n return this.detailGridInfoMap[id];\n }\n /** Iterates through each `DetailGridInfo` in the grid and calls the supplied callback on each. */\n forEachDetailGridInfo(callback) {\n let index = 0;\n iterateObject(this.detailGridInfoMap, (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 getDataAsCsv(params) {\n if (ModuleRegistry.__assertRegistered(ModuleNames.CsvExportModule, 'api.getDataAsCsv', this.context.getGridId())) {\n return this.csvCreator.getDataAsCsv(params);\n }\n }\n /** Downloads a CSV export of the grid's data. */\n exportDataAsCsv(params) {\n if (ModuleRegistry.__assertRegistered(ModuleNames.CsvExportModule, 'api.exportDataAsCSv', this.context.getGridId())) {\n this.csvCreator.exportDataAsCsv(params);\n }\n }\n getExcelExportMode(params) {\n const baseParams = this.gridOptionsService.get('defaultExcelExportParams');\n const mergedParams = Object.assign({ exportMode: 'xlsx' }, baseParams, params);\n return mergedParams.exportMode;\n }\n assertNotExcelMultiSheet(method, params) {\n if (!ModuleRegistry.__assertRegistered(ModuleNames.ExcelExportModule, 'api.' + method, this.context.getGridId())) {\n return false;\n }\n const 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 false;\n }\n return true;\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 getDataAsExcel(params) {\n if (this.assertNotExcelMultiSheet('getDataAsExcel', params)) {\n return this.excelCreator.getDataAsExcel(params);\n }\n }\n /** Downloads an Excel export of the grid's data. */\n exportDataAsExcel(params) {\n if (this.assertNotExcelMultiSheet('exportDataAsExcel', params)) {\n this.excelCreator.exportDataAsExcel(params);\n }\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 getSheetDataForExcel(params) {\n if (!ModuleRegistry.__assertRegistered(ModuleNames.ExcelExportModule, 'api.getSheetDataForExcel', this.context.getGridId())) {\n return;\n }\n const 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 getMultipleSheetsAsExcel(params) {\n if (ModuleRegistry.__assertRegistered(ModuleNames.ExcelExportModule, 'api.getMultipleSheetsAsExcel', this.context.getGridId())) {\n return this.excelCreator.getMultipleSheetsAsExcel(params);\n }\n }\n /** Downloads an Excel export of multiple sheets in one file. */\n exportMultipleSheetsAsExcel(params) {\n if (ModuleRegistry.__assertRegistered(ModuleNames.ExcelExportModule, 'api.exportMultipleSheetsAsExcel', this.context.getGridId())) {\n return this.excelCreator.exportMultipleSheetsAsExcel(params);\n }\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 setGridAriaProperty(property, value) {\n if (!property) {\n return;\n }\n const eGrid = this.ctrlsService.getGridBodyCtrl().getGui();\n const ariaProperty = `aria-${property}`;\n if (value === null) {\n eGrid.removeAttribute(ariaProperty);\n }\n else {\n eGrid.setAttribute(ariaProperty, value);\n }\n }\n logMissingRowModel(apiMethod, ...requiredRowModels) {\n console.error(`AG Grid: api.${apiMethod} can only be called when gridOptions.rowModelType is ${requiredRowModels.join(' or ')}`);\n }\n /** Set new datasource for Server-Side Row Model. */\n setServerSideDatasource(datasource) {\n if (this.serverSideRowModel) {\n this.serverSideRowModel.setDatasource(datasource);\n }\n else {\n this.logMissingRowModel('setServerSideDatasource', 'serverSide');\n }\n }\n /**\n * Updates the `cacheBlockSize` when requesting data from the server if `suppressServerSideInfiniteScroll` is not enabled.\n *\n * Note this purges all the cached data and reloads all the rows of the grid.\n * */\n setCacheBlockSize(blockSize) {\n if (this.serverSideRowModel) {\n this.gridOptionsService.set('cacheBlockSize', blockSize);\n this.serverSideRowModel.resetRootStore();\n }\n else {\n this.logMissingRowModel('setCacheBlockSize', 'serverSide');\n }\n }\n /** Set new datasource for Infinite Row Model. */\n setDatasource(datasource) {\n if (this.gridOptionsService.isRowModelType('infinite')) {\n this.rowModel.setDatasource(datasource);\n }\n else {\n this.logMissingRowModel('setDatasource', 'infinite');\n }\n }\n /** Set new datasource for Viewport Row Model. */\n setViewportDatasource(viewportDatasource) {\n if (this.gridOptionsService.isRowModelType('viewport')) {\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 this.logMissingRowModel('setViewportDatasource', 'viewport');\n }\n }\n /** Set the row data. */\n setRowData(rowData) {\n // immutable service is part of the CSRM module, if missing, no CSRM\n const missingImmutableService = this.immutableService == null;\n if (missingImmutableService) {\n this.logMissingRowModel('setRowData', 'clientSide');\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 /** Set the top pinned rows. Call with no rows / undefined to clear top pinned rows. */\n setPinnedTopRowData(rows) {\n this.pinnedRowModel.setPinnedTopRowData(rows);\n }\n /** Set the bottom pinned rows. Call with no rows / undefined to clear bottom pinned rows. */\n setPinnedBottomRowData(rows) {\n this.pinnedRowModel.setPinnedBottomRowData(rows);\n }\n /** Gets the number of top pinned rows. */\n getPinnedTopRowCount() {\n return this.pinnedRowModel.getPinnedTopRowCount();\n }\n /** Gets the number of bottom pinned rows. */\n getPinnedBottomRowCount() {\n return this.pinnedRowModel.getPinnedBottomRowCount();\n }\n /** Gets the top pinned row with the specified index. */\n getPinnedTopRow(index) {\n return this.pinnedRowModel.getPinnedTopRow(index);\n }\n /** Gets the bottom pinned row with the specified index. */\n getPinnedBottomRow(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 setColumnDefs(colDefs, source = \"api\") {\n this.columnModel.setColumnDefs(colDefs, source);\n // Keep gridOptions.columnDefs in sync\n this.gridOptionsService.set('columnDefs', colDefs, true, { source });\n }\n /** Call to set new auto group column definition. The grid will recreate any auto-group columns if present. */\n setAutoGroupColumnDef(colDef, source = \"api\") {\n this.gridOptionsService.set('autoGroupColumnDef', colDef, true, { source });\n }\n /** Call to set new Default Column Definition. */\n setDefaultColDef(colDef, source = \"api\") {\n this.gridOptionsService.set('defaultColDef', colDef, true, { source });\n }\n /** Call to set new Column Types. */\n setColumnTypes(columnTypes, source = \"api\") {\n this.gridOptionsService.set('columnTypes', columnTypes, true, { source });\n }\n expireValueCache() {\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 getVerticalPixelRange() {\n return this.gridBodyCtrl.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 getHorizontalPixelRange() {\n return this.gridBodyCtrl.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 setAlwaysShowHorizontalScroll(show) {\n this.gridOptionsService.set('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 setAlwaysShowVerticalScroll(show) {\n this.gridOptionsService.set('alwaysShowVerticalScroll', show);\n }\n /** Performs change detection on all cells, refreshing cells where required. */\n refreshCells(params = {}) {\n this.rowRenderer.refreshCells(params);\n }\n /** Flash rows, columns or individual cells. */\n flashCells(params = {}) {\n this.rowRenderer.flashCells(params);\n }\n /** Remove row(s) from the DOM and recreate them again from scratch. */\n redrawRows(params = {}) {\n const rowNodes = params ? params.rowNodes : undefined;\n this.rowRenderer.redrawRows(rowNodes);\n }\n setFunctionsReadOnly(readOnly) {\n this.gridOptionsService.set('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 refreshHeader() {\n this.ctrlsService.getHeaderRowContainerCtrls().forEach(c => c.refresh());\n }\n /** Returns `true` if any filter is set. This includes quick filter, advanced filter or external filter. */\n isAnyFilterPresent() {\n return this.filterManager.isAnyFilterPresent();\n }\n /** Returns `true` if any column filter is set, otherwise `false`. */\n isColumnFilterPresent() {\n return this.filterManager.isColumnFilterPresent() || this.filterManager.isAggregateFilterPresent();\n }\n /** Returns `true` if the Quick Filter is set, otherwise `false`. */\n isQuickFilterPresent() {\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 getModel() {\n return this.rowModel;\n }\n /** Expand or collapse a specific row node, optionally expanding/collapsing all of its parent nodes. */\n setRowNodeExpanded(rowNode, expanded, expandParents) {\n if (rowNode) {\n // expand all parents recursively, except root node.\n if (expandParents && rowNode.parent && rowNode.parent.level !== -1) {\n this.setRowNodeExpanded(rowNode.parent, expanded, expandParents);\n }\n rowNode.setExpanded(expanded);\n }\n }\n /**\n * Informs the grid that row group expanded state has changed and it needs to rerender the group nodes.\n * Typically called after updating the row node expanded state explicitly, i.e `rowNode.expanded = false`,\n * across multiple groups and you want to update the grid view in a single rerender instead of on every group change.\n */\n onGroupExpandedOrCollapsed() {\n if (missing(this.clientSideRowModel)) {\n this.logMissingRowModel('onGroupExpandedOrCollapsed', 'clientSide');\n return;\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 /**\n * Refresh the Client-Side Row Model, executing the grouping, filtering and sorting again.\n * Optionally provide the step you wish the refresh to apply from. Defaults to `everything`.\n */\n refreshClientSideRowModel(step) {\n if (missing(this.clientSideRowModel)) {\n this.logMissingRowModel('refreshClientSideRowModel', 'clientSide');\n return;\n }\n this.clientSideRowModel.refreshModel(step);\n }\n /** Returns `true` when there are no more animation frames left to process. */\n isAnimationFrameQueueEmpty() {\n return this.animationFrameService.isQueueEmpty();\n }\n flushAllAnimationFrames() {\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 `getRowId(params)`,\n * otherwise the ID is a number (cast as string) auto-generated by the grid when\n * the row data is set.\n */\n getRowNode(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 getSizesForCurrentTheme() {\n return {\n rowHeight: this.gridOptionsService.getRowHeightAsNumber(),\n headerHeight: this.columnModel.getHeaderHeight()\n };\n }\n /** Expand all groups. */\n expandAll() {\n if (this.clientSideRowModel) {\n this.clientSideRowModel.expandOrCollapseAll(true);\n }\n else if (this.serverSideRowModel) {\n this.serverSideRowModel.expandAll(true);\n }\n else {\n this.logMissingRowModel('expandAll', 'clientSide', 'serverSide');\n }\n }\n /** Collapse all groups. */\n collapseAll() {\n if (this.clientSideRowModel) {\n this.clientSideRowModel.expandOrCollapseAll(false);\n }\n else if (this.serverSideRowModel) {\n this.serverSideRowModel.expandAll(false);\n }\n else {\n this.logMissingRowModel('expandAll', 'clientSide', 'serverSide');\n }\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 * listen for this event if your `cellRenderer` needs to do cleanup when the row no longer exists.\n */\n addRenderedRowListener(eventName, rowIndex, callback) {\n this.rowRenderer.addRenderedRowListener(eventName, rowIndex, callback);\n }\n /** Get the current Quick Filter text from the grid, or `undefined` if none is set. */\n getQuickFilter() {\n return this.gridOptionsService.get('quickFilterText');\n }\n /** Pass a Quick Filter text into the grid for filtering. */\n setQuickFilter(newFilter) {\n this.gridOptionsService.set('quickFilterText', newFilter);\n }\n /**\n * @deprecated As of v30, hidden columns are excluded from the Quick Filter by default. To include hidden columns, use `setIncludeHiddenColumnsInQuickFilter` instead.\n */\n setExcludeHiddenColumnsFromQuickFilter(value) {\n logDeprecation('30', 'setExcludeHiddenColumnsFromQuickFilter', undefined, 'Hidden columns are now excluded from the Quick Filter by default. This can be toggled using `setIncludeHiddenColumnsInQuickFilter`');\n this.setIncludeHiddenColumnsInQuickFilter(!value);\n }\n /**\n * Updates the `includeHiddenColumnsInQuickFilter` grid option.\n * By default hidden columns are excluded from the Quick Filter.\n * Set to `true` to include them.\n */\n setIncludeHiddenColumnsInQuickFilter(value) {\n this.gridOptionsService.set('includeHiddenColumnsInQuickFilter', value);\n }\n /**\n * Set all of the provided nodes selection state to the provided value.\n */\n setNodesSelected(params) {\n const allNodesValid = params.nodes.every(node => {\n if (node.rowPinned) {\n console.warn('AG Grid: cannot select pinned rows');\n return false;\n }\n if (node.id === undefined) {\n console.warn('AG Grid: cannot select node until id for node is known');\n return false;\n }\n return true;\n });\n if (!allNodesValid) {\n return;\n }\n const { nodes, source, newValue } = params;\n const nodesAsRowNode = nodes;\n this.selectionService.setNodesSelected({ nodes: nodesAsRowNode, source: source !== null && source !== void 0 ? source : 'api', newValue });\n }\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 * @param source Source property that will appear in the `selectionChanged` event, defaults to `'apiSelectAll'`\n */\n selectAll(source = 'apiSelectAll') {\n this.selectionService.selectAllRowNodes({ source });\n }\n /**\n * Clear all row selections, regardless of filtering.\n * @param source Source property that will appear in the `selectionChanged` event, defaults to `'apiSelectAll'`\n */\n deselectAll(source = 'apiSelectAll') {\n this.selectionService.deselectAllRowNodes({ source });\n }\n /**\n * Select all filtered rows.\n * @param source Source property that will appear in the `selectionChanged` event, defaults to `'apiSelectAllFiltered'`\n */\n selectAllFiltered(source = 'apiSelectAllFiltered') {\n this.selectionService.selectAllRowNodes({ source, justFiltered: true });\n }\n /**\n * Clear all filtered selections.\n * @param source Source property that will appear in the `selectionChanged` event, defaults to `'apiSelectAllFiltered'`\n */\n deselectAllFiltered(source = 'apiSelectAllFiltered') {\n this.selectionService.deselectAllRowNodes({ source, justFiltered: true });\n }\n /**\n * Returns an object containing rules matching the selected rows in the SSRM.\n *\n * If `groupSelectsChildren=false` the returned object will be flat, and will conform to IServerSideSelectionState.\n * If `groupSelectsChildren=true` the retuned object will be hierarchical, and will conform to IServerSideGroupSelectionState.\n */\n getServerSideSelectionState() {\n if (missing(this.serverSideRowModel)) {\n this.logMissingRowModel('getServerSideSelectionState', 'serverSide');\n return null;\n }\n return this.selectionService.getServerSideSelectionState();\n }\n /**\n * Set the rules matching the selected rows in the SSRM.\n *\n * If `groupSelectsChildren=false` the param will be flat, and should conform to IServerSideSelectionState.\n * If `groupSelectsChildren=true` the param will be hierarchical, and should conform to IServerSideGroupSelectionState.\n */\n setServerSideSelectionState(state) {\n if (missing(this.serverSideRowModel)) {\n this.logMissingRowModel('setServerSideSelectionState', 'serverSide');\n return;\n }\n this.selectionService.setServerSideSelectionState(state);\n }\n /**\n * Select all rows on the current page.\n * @param source Source property that will appear in the `selectionChanged` event, defaults to `'apiSelectAllCurrentPage'`\n */\n selectAllOnCurrentPage(source = 'apiSelectAllCurrentPage') {\n this.selectionService.selectAllRowNodes({ source, justCurrentPage: true });\n }\n /**\n * Clear all filtered on the current page.\n * @param source Source property that will appear in the `selectionChanged` event, defaults to `'apiSelectAllCurrentPage'`\n */\n deselectAllOnCurrentPage(source = 'apiSelectAllCurrentPage') {\n this.selectionService.deselectAllRowNodes({ source, justCurrentPage: true });\n }\n /**\n * Sets columns to adjust in size to fit the grid horizontally. If inferring cell data types with custom column types\n * and row data is provided asynchronously, the column sizing will happen asynchronously when row data is added.\n * To always perform this synchronously, set `cellDataType = false` on the default column definition.\n **/\n sizeColumnsToFit(params) {\n this.gridBodyCtrl.sizeColumnsToFit(params);\n }\n /** Show the 'loading' overlay. */\n showLoadingOverlay() {\n this.overlayWrapperComp.showLoadingOverlay();\n }\n /** Show the 'no rows' overlay. */\n showNoRowsOverlay() {\n this.overlayWrapperComp.showNoRowsOverlay();\n }\n /** Hides the overlay if showing. */\n hideOverlay() {\n this.overlayWrapperComp.hideOverlay();\n }\n /**\n * Returns an unsorted 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 getSelectedNodes() {\n return this.selectionService.getSelectedNodes();\n }\n /** Returns an unsorted list of selected rows (i.e. row data that you provided). */\n getSelectedRows() {\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 getBestCostNodeSelection() {\n if (missing(this.clientSideRowModel)) {\n this.logMissingRowModel('getBestCostNodeSelection', 'clientSide');\n return;\n }\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 getRenderedNodes() {\n return this.rowRenderer.getRenderedNodes();\n }\n /**\n * Ensures the column is visible by scrolling the table if needed.\n *\n * This will have no effect before the firstDataRendered event has fired.\n *\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 ensureColumnVisible(key, position = 'auto') {\n this.gridBodyCtrl.getScrollFeature().ensureColumnVisible(key, position);\n }\n /**\n * Vertically scrolls the grid until the provided row index is inside the visible viewport.\n * If a position is provided, the grid will attempt to scroll until the row is at the given position within the viewport.\n * This will have no effect before the firstDataRendered event has fired.\n */\n ensureIndexVisible(index, position) {\n this.gridBodyCtrl.getScrollFeature().ensureIndexVisible(index, position);\n }\n /**\n * Vertically scrolls the grid until the provided row (or a row matching the provided comparator) is inside the visible viewport.\n * If a position is provided, the grid will attempt to scroll until the row is at the given position within the viewport.\n * This will have no effect before the firstDataRendered event has fired.\n */\n ensureNodeVisible(nodeSelector, position = null) {\n this.gridBodyCtrl.getScrollFeature().ensureNodeVisible(nodeSelector, 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 forEachLeafNode(callback) {\n if (missing(this.clientSideRowModel)) {\n this.logMissingRowModel('forEachLeafNode', 'clientSide');\n return;\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 forEachNode(callback, includeFooterNodes) {\n this.rowModel.forEachNode(callback, includeFooterNodes);\n }\n /** Similar to `forEachNode`, except skips any filtered out data. */\n forEachNodeAfterFilter(callback) {\n if (missing(this.clientSideRowModel)) {\n this.logMissingRowModel('forEachNodeAfterFilter', 'clientSide');\n return;\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 forEachNodeAfterFilterAndSort(callback) {\n if (missing(this.clientSideRowModel)) {\n this.logMissingRowModel('forEachNodeAfterFilterAndSort', 'clientSide');\n return;\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 getFilterInstance(key, callback) {\n const res = this.getFilterInstanceImpl(key, instance => {\n if (!callback) {\n return;\n }\n const unwrapped = unwrapUserComp(instance);\n callback(unwrapped);\n });\n const unwrapped = unwrapUserComp(res);\n return unwrapped;\n }\n getFilterInstanceImpl(key, callback) {\n const column = this.columnModel.getPrimaryColumn(key);\n if (!column) {\n return undefined;\n }\n const filterPromise = this.filterManager.getFilterComponent(column, 'NO_UI');\n const currentValue = filterPromise && filterPromise.resolveNow(null, filterComp => filterComp);\n if (currentValue) {\n setTimeout(callback, 0, currentValue);\n }\n else if (filterPromise) {\n filterPromise.then(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 destroyFilter(key) {\n const column = this.columnModel.getPrimaryColumn(key);\n if (column) {\n return this.filterManager.destroyFilter(column, 'api');\n }\n }\n /** Gets the status panel instance corresponding to the supplied `id`. */\n getStatusPanel(key) {\n if (!ModuleRegistry.__assertRegistered(ModuleNames.StatusBarModule, 'api.getStatusPanel', this.context.getGridId())) {\n return;\n }\n const comp = this.statusBarService.getStatusPanel(key);\n return unwrapUserComp(comp);\n }\n getColumnDef(key) {\n const 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 getColumnDefs() { 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 onFilterChanged() {\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 onSortChanged() {\n this.sortController.onSortChanged('api');\n }\n /** Sets the state of all the advanced filters. Provide it with what you get from `getFilterModel()` to restore filter state. */\n setFilterModel(model) {\n this.filterManager.setFilterModel(model);\n }\n /** Gets the current state of all the advanced filters. Used for saving filter state. */\n getFilterModel() {\n return this.filterManager.getFilterModel();\n }\n /** Returns the focused cell (or the last focused cell if the grid lost focus). */\n getFocusedCell() {\n return this.focusService.getFocusedCell();\n }\n /** Clears the focused cell. */\n clearFocusedCell() {\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 setFocusedCell(rowIndex, colKey, rowPinned) {\n this.focusService.setFocusedCell({ rowIndex, column: colKey, rowPinned, forceBrowserFocus: true });\n }\n /** Sets the `suppressRowDrag` property. */\n setSuppressRowDrag(value) {\n this.gridOptionsService.set('suppressRowDrag', value);\n }\n /** Sets the `suppressMoveWhenRowDragging` property. */\n setSuppressMoveWhenRowDragging(value) {\n this.gridOptionsService.set('suppressMoveWhenRowDragging', value);\n }\n /** Sets the `suppressRowClickSelection` property. */\n setSuppressRowClickSelection(value) {\n this.gridOptionsService.set('suppressRowClickSelection', value);\n }\n /** Adds a drop zone outside of the grid where rows can be dropped. */\n addRowDropZone(params) {\n this.gridBodyCtrl.getRowDragFeature().addRowDropZone(params);\n }\n /** Removes an external drop zone added by `addRowDropZone`. */\n removeRowDropZone(params) {\n const 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 getRowDropZoneParams(events) {\n return this.gridBodyCtrl.getRowDragFeature().getRowDropZone(events);\n }\n /** Sets the height in pixels for the row containing the column label header. */\n setHeaderHeight(headerHeight) {\n this.gridOptionsService.set('headerHeight', headerHeight);\n }\n /**\n * Switch between layout options: `normal`, `autoHeight`, `print`.\n * Defaults to `normal` if no domLayout provided.\n */\n setDomLayout(domLayout) {\n this.gridOptionsService.set('domLayout', domLayout);\n }\n /** Sets the `enableCellTextSelection` property. */\n setEnableCellTextSelection(selectable) {\n this.gridBodyCtrl.setCellTextSelection(selectable);\n }\n /** Sets the preferred direction for the selection fill handle. */\n setFillHandleDirection(direction) {\n this.gridOptionsService.set('fillHandleDirection', direction);\n }\n /** Sets the height in pixels for the rows containing header column groups. */\n setGroupHeaderHeight(headerHeight) {\n this.gridOptionsService.set('groupHeaderHeight', headerHeight);\n }\n /** Sets the height in pixels for the row containing the floating filters. */\n setFloatingFiltersHeight(headerHeight) {\n this.gridOptionsService.set('floatingFiltersHeight', headerHeight);\n }\n /** Sets the height in pixels for the row containing the columns when in pivot mode. */\n setPivotHeaderHeight(headerHeight) {\n this.gridOptionsService.set('pivotHeaderHeight', headerHeight);\n }\n /** Sets the height in pixels for the row containing header column groups when in pivot mode. */\n setPivotGroupHeaderHeight(headerHeight) {\n this.gridOptionsService.set('pivotGroupHeaderHeight', headerHeight);\n }\n setPivotMode(pivotMode) {\n this.columnModel.setPivotMode(pivotMode);\n }\n setAnimateRows(animateRows) {\n this.gridOptionsService.set('animateRows', animateRows);\n }\n setIsExternalFilterPresent(isExternalFilterPresentFunc) {\n this.gridOptionsService.set('isExternalFilterPresent', isExternalFilterPresentFunc);\n }\n setDoesExternalFilterPass(doesExternalFilterPassFunc) {\n this.gridOptionsService.set('doesExternalFilterPass', doesExternalFilterPassFunc);\n }\n setNavigateToNextCell(navigateToNextCellFunc) {\n this.gridOptionsService.set('navigateToNextCell', navigateToNextCellFunc);\n }\n setTabToNextCell(tabToNextCellFunc) {\n this.gridOptionsService.set('tabToNextCell', tabToNextCellFunc);\n }\n setTabToNextHeader(tabToNextHeaderFunc) {\n this.gridOptionsService.set('tabToNextHeader', tabToNextHeaderFunc);\n }\n setNavigateToNextHeader(navigateToNextHeaderFunc) {\n this.gridOptionsService.set('navigateToNextHeader', navigateToNextHeaderFunc);\n }\n setRowGroupPanelShow(rowGroupPanelShow) {\n this.gridOptionsService.set('rowGroupPanelShow', rowGroupPanelShow);\n }\n setGetGroupRowAgg(getGroupRowAggFunc) {\n this.gridOptionsService.set('getGroupRowAgg', getGroupRowAggFunc);\n }\n setGetBusinessKeyForNode(getBusinessKeyForNodeFunc) {\n this.gridOptionsService.set('getBusinessKeyForNode', getBusinessKeyForNodeFunc);\n }\n setGetChildCount(getChildCountFunc) {\n this.gridOptionsService.set('getChildCount', getChildCountFunc);\n }\n setProcessRowPostCreate(processRowPostCreateFunc) {\n this.gridOptionsService.set('processRowPostCreate', processRowPostCreateFunc);\n }\n setGetRowId(getRowIdFunc) {\n this.gridOptionsService.set('getRowId', getRowIdFunc);\n }\n setGetRowClass(rowClassFunc) {\n this.gridOptionsService.set('getRowClass', rowClassFunc);\n }\n setIsFullWidthRow(isFullWidthRowFunc) {\n this.gridOptionsService.set('isFullWidthRow', isFullWidthRowFunc);\n }\n setIsRowSelectable(isRowSelectableFunc) {\n this.gridOptionsService.set('isRowSelectable', isRowSelectableFunc);\n }\n setIsRowMaster(isRowMasterFunc) {\n this.gridOptionsService.set('isRowMaster', isRowMasterFunc);\n }\n setPostSortRows(postSortRowsFunc) {\n this.gridOptionsService.set('postSortRows', postSortRowsFunc);\n }\n setGetDocument(getDocumentFunc) {\n this.gridOptionsService.set('getDocument', getDocumentFunc);\n }\n setGetContextMenuItems(getContextMenuItemsFunc) {\n this.gridOptionsService.set('getContextMenuItems', getContextMenuItemsFunc);\n }\n setGetMainMenuItems(getMainMenuItemsFunc) {\n this.gridOptionsService.set('getMainMenuItems', getMainMenuItemsFunc);\n }\n setProcessCellForClipboard(processCellForClipboardFunc) {\n this.gridOptionsService.set('processCellForClipboard', processCellForClipboardFunc);\n }\n setSendToClipboard(sendToClipboardFunc) {\n this.gridOptionsService.set('sendToClipboard', sendToClipboardFunc);\n }\n setProcessCellFromClipboard(processCellFromClipboardFunc) {\n this.gridOptionsService.set('processCellFromClipboard', processCellFromClipboardFunc);\n }\n /** @deprecated v28 use `setProcessPivotResultColDef` instead */\n setProcessSecondaryColDef(processSecondaryColDefFunc) {\n logDeprecation('28.0', 'setProcessSecondaryColDef', 'setProcessPivotResultColDef');\n this.setProcessPivotResultColDef(processSecondaryColDefFunc);\n }\n /** @deprecated v28 use `setProcessPivotResultColGroupDef` instead */\n setProcessSecondaryColGroupDef(processSecondaryColGroupDefFunc) {\n logDeprecation('28.0', 'setProcessSecondaryColGroupDef', 'setProcessPivotResultColGroupDef');\n this.setProcessPivotResultColGroupDef(processSecondaryColGroupDefFunc);\n }\n setProcessPivotResultColDef(processPivotResultColDefFunc) {\n this.gridOptionsService.set('processPivotResultColDef', processPivotResultColDefFunc);\n }\n setProcessPivotResultColGroupDef(processPivotResultColGroupDefFunc) {\n this.gridOptionsService.set('processPivotResultColGroupDef', processPivotResultColGroupDefFunc);\n }\n setPostProcessPopup(postProcessPopupFunc) {\n this.gridOptionsService.set('postProcessPopup', postProcessPopupFunc);\n }\n setInitialGroupOrderComparator(initialGroupOrderComparatorFunc) {\n this.gridOptionsService.set('initialGroupOrderComparator', initialGroupOrderComparatorFunc);\n }\n setGetChartToolbarItems(getChartToolbarItemsFunc) {\n this.gridOptionsService.set('getChartToolbarItems', getChartToolbarItemsFunc);\n }\n setPaginationNumberFormatter(paginationNumberFormatterFunc) {\n this.gridOptionsService.set('paginationNumberFormatter', paginationNumberFormatterFunc);\n }\n /** @deprecated v28 use setGetServerSideGroupLevelParams instead */\n setGetServerSideStoreParams(getServerSideStoreParamsFunc) {\n logDeprecation('28.0', 'setGetServerSideStoreParams', 'setGetServerSideGroupLevelParams');\n this.setGetServerSideGroupLevelParams(getServerSideStoreParamsFunc);\n }\n setGetServerSideGroupLevelParams(getServerSideGroupLevelParamsFunc) {\n this.gridOptionsService.set('getServerSideGroupLevelParams', getServerSideGroupLevelParamsFunc);\n }\n setIsServerSideGroupOpenByDefault(isServerSideGroupOpenByDefaultFunc) {\n this.gridOptionsService.set('isServerSideGroupOpenByDefault', isServerSideGroupOpenByDefaultFunc);\n }\n setIsApplyServerSideTransaction(isApplyServerSideTransactionFunc) {\n this.gridOptionsService.set('isApplyServerSideTransaction', isApplyServerSideTransactionFunc);\n }\n setIsServerSideGroup(isServerSideGroupFunc) {\n this.gridOptionsService.set('isServerSideGroup', isServerSideGroupFunc);\n }\n setGetServerSideGroupKey(getServerSideGroupKeyFunc) {\n this.gridOptionsService.set('getServerSideGroupKey', getServerSideGroupKeyFunc);\n }\n setGetRowStyle(rowStyleFunc) {\n this.gridOptionsService.set('getRowStyle', rowStyleFunc);\n }\n setGetRowHeight(rowHeightFunc) {\n this.gridOptionsService.set('getRowHeight', rowHeightFunc);\n }\n assertSideBarLoaded(apiMethod) {\n return ModuleRegistry.__assertRegistered(ModuleNames.SideBarModule, 'api.' + apiMethod, this.context.getGridId());\n }\n /** Returns `true` if the side bar is visible. */\n isSideBarVisible() {\n return this.assertSideBarLoaded('isSideBarVisible') && this.sideBarComp.isDisplayed();\n }\n /** Show/hide the entire side bar, including any visible panel and the tab buttons. */\n setSideBarVisible(show) {\n if (this.assertSideBarLoaded('setSideBarVisible')) {\n this.sideBarComp.setDisplayed(show);\n }\n }\n /** Sets the side bar position relative to the grid. Possible values are `'left'` or `'right'`. */\n setSideBarPosition(position) {\n if (this.assertSideBarLoaded('setSideBarPosition')) {\n this.sideBarComp.setSideBarPosition(position);\n }\n }\n /** Opens a particular tool panel. Provide the ID of the tool panel to open. */\n openToolPanel(key) {\n if (this.assertSideBarLoaded('openToolPanel')) {\n this.sideBarComp.openToolPanel(key, 'api');\n }\n }\n /** Closes the currently open tool panel (if any). */\n closeToolPanel() {\n if (this.assertSideBarLoaded('closeToolPanel')) {\n this.sideBarComp.close('api');\n }\n }\n /** Returns the ID of the currently shown tool panel if any, otherwise `null`. */\n getOpenedToolPanel() {\n if (this.assertSideBarLoaded('getOpenedToolPanel')) {\n return this.sideBarComp.openedItem();\n }\n return null;\n }\n /** Force refresh all tool panels by calling their `refresh` method. */\n refreshToolPanel() {\n if (this.assertSideBarLoaded('refreshToolPanel')) {\n this.sideBarComp.refresh();\n }\n }\n /** Returns `true` if the tool panel is showing, otherwise `false`. */\n isToolPanelShowing() {\n return this.assertSideBarLoaded('isToolPanelShowing') && this.sideBarComp.isToolPanelShowing();\n }\n /** Gets the tool panel instance corresponding to the supplied `id`. */\n getToolPanelInstance(id) {\n if (this.assertSideBarLoaded('getToolPanelInstance')) {\n const comp = this.sideBarComp.getToolPanelInstance(id);\n return unwrapUserComp(comp);\n }\n }\n /** Returns the current side bar configuration. If a shortcut was used, returns the detailed long form. */\n getSideBar() {\n if (this.assertSideBarLoaded('getSideBar')) {\n return this.sideBarComp.getDef();\n }\n return undefined;\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 setSideBar(def) {\n this.gridOptionsService.set('sideBar', def);\n }\n setSuppressClipboardPaste(value) {\n this.gridOptionsService.set('suppressClipboardPaste', value);\n }\n /** Tells the grid to recalculate the row heights. */\n resetRowHeights() {\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 setGroupRemoveSingleChildren(value) {\n this.gridOptionsService.set('groupRemoveSingleChildren', value);\n }\n setGroupRemoveLowestSingleChildren(value) {\n this.gridOptionsService.set('groupRemoveLowestSingleChildren', value);\n }\n setGroupDisplayType(value) {\n this.gridOptionsService.set('groupDisplayType', value);\n }\n setRowClass(className) {\n this.gridOptionsService.set('rowClass', className);\n }\n /** Sets the `deltaSort` property */\n setDeltaSort(enable) {\n this.gridOptionsService.set('deltaSort', enable);\n }\n /**\n * Sets the `rowCount` and `maxRowFound` properties.\n * The second parameter, `maxRowFound`, is optional and if left out, only `rowCount` is set.\n * Set `rowCount` to adjust the height of the vertical scroll.\n * Set `maxRowFound` 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 instruct the grid that the entire row count is no longer known.\n */\n setRowCount(rowCount, maxRowFound) {\n if (this.serverSideRowModel) {\n if (this.columnModel.isRowGroupEmpty()) {\n this.serverSideRowModel.setRowCount(rowCount, maxRowFound);\n return;\n }\n console.error('AG Grid: setRowCount cannot be used while using row grouping.');\n return;\n }\n if (this.infiniteRowModel) {\n this.infiniteRowModel.setRowCount(rowCount, maxRowFound);\n return;\n }\n this.logMissingRowModel('setRowCount', 'infinite', 'serverSide');\n }\n /** Tells the grid a row height has changed. To be used after calling `rowNode.setRowHeight(newHeight)`. */\n onRowHeightChanged() {\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 getValue(colKey, rowNode) {\n let 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 addEventListener(eventType, listener) {\n const async = this.gridOptionsService.useAsyncEvents();\n this.eventService.addEventListener(eventType, listener, async);\n }\n /** Add an event listener for all event types coming from the grid. */\n addGlobalListener(listener) {\n const async = this.gridOptionsService.useAsyncEvents();\n this.eventService.addGlobalListener(listener, async);\n }\n /** Remove an event listener. */\n removeEventListener(eventType, listener) {\n const async = this.gridOptionsService.useAsyncEvents();\n this.eventService.removeEventListener(eventType, listener, async);\n }\n /** Remove a global event listener. */\n removeGlobalListener(listener) {\n const async = this.gridOptionsService.useAsyncEvents();\n this.eventService.removeGlobalListener(listener, async);\n }\n dispatchEvent(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 destroy() {\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 const gridCtrl = this.ctrlsService.getGridCtrl();\n if (gridCtrl) {\n gridCtrl.destroyGridUi();\n }\n // destroy the services\n this.context.destroy();\n }\n cleanDownReferencesToAvoidMemoryLeakInCaseApplicationIsKeepingReferenceToDestroyedGrid() {\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 warnIfDestroyed(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 resetQuickFilter() {\n if (this.warnIfDestroyed('resetQuickFilter')) {\n return;\n }\n this.filterManager.resetQuickFilterCache();\n }\n /** Returns the list of selected cell ranges. */\n getCellRanges() {\n if (this.rangeService) {\n return this.rangeService.getCellRanges();\n }\n ModuleRegistry.__assertRegistered(ModuleNames.RangeSelectionModule, 'api.getCellRanges', this.context.getGridId());\n return null;\n }\n /** Adds the provided cell range to the selected ranges. */\n addCellRange(params) {\n if (this.rangeService) {\n this.rangeService.addCellRange(params);\n return;\n }\n ModuleRegistry.__assertRegistered(ModuleNames.RangeSelectionModule, 'api.addCellRange', this.context.getGridId());\n }\n /** Clears the selected ranges. */\n clearRangeSelection() {\n if (this.rangeService) {\n this.rangeService.removeAllCellRanges();\n }\n ModuleRegistry.__assertRegistered(ModuleNames.RangeSelectionModule, 'gridApi.clearRangeSelection', this.context.getGridId());\n }\n /** Reverts the last cell edit. */\n undoCellEditing() {\n this.undoRedoService.undo('api');\n }\n /** Re-applies the most recently undone cell edit. */\n redoCellEditing() {\n this.undoRedoService.redo('api');\n }\n /** Returns current number of available cell edit undo operations. */\n getCurrentUndoSize() {\n return this.undoRedoService.getCurrentUndoStackSize();\n }\n /** Returns current number of available cell edit redo operations. */\n getCurrentRedoSize() {\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 getChartModels() {\n if (ModuleRegistry.__assertRegistered(ModuleNames.GridChartsModule, 'api.getChartModels', this.context.getGridId())) {\n return this.chartService.getChartModels();\n }\n }\n /** Returns the `ChartRef` using the supplied `chartId`. */\n getChartRef(chartId) {\n if (ModuleRegistry.__assertRegistered(ModuleNames.GridChartsModule, 'api.getChartRef', this.context.getGridId())) {\n return this.chartService.getChartRef(chartId);\n }\n }\n /** Returns a base64-encoded image data URL for the referenced chartId. */\n getChartImageDataURL(params) {\n if (ModuleRegistry.__assertRegistered(ModuleNames.GridChartsModule, 'api.getChartImageDataURL', this.context.getGridId())) {\n return this.chartService.getChartImageDataURL(params);\n }\n }\n /** Starts a browser-based image download for the referenced chartId. */\n downloadChart(params) {\n if (ModuleRegistry.__assertRegistered(ModuleNames.GridChartsModule, 'api.downloadChart', this.context.getGridId())) {\n return this.chartService.downloadChart(params);\n }\n }\n /** Open the Chart Tool Panel. */\n openChartToolPanel(params) {\n if (ModuleRegistry.__assertRegistered(ModuleNames.GridChartsModule, 'api.openChartToolPanel', this.context.getGridId())) {\n return this.chartService.openChartToolPanel(params);\n }\n }\n /** Close the Chart Tool Panel. */\n closeChartToolPanel(params) {\n if (ModuleRegistry.__assertRegistered(ModuleNames.GridChartsModule, 'api.closeChartToolPanel', this.context.getGridId())) {\n return this.chartService.closeChartToolPanel(params.chartId);\n }\n }\n /** Used to programmatically create charts from a range. */\n createRangeChart(params) {\n if (ModuleRegistry.__assertRegistered(ModuleNames.GridChartsModule, 'api.createRangeChart', this.context.getGridId())) {\n return this.chartService.createRangeChart(params);\n }\n }\n /** Used to programmatically create pivot charts from a grid. */\n createPivotChart(params) {\n if (ModuleRegistry.__assertRegistered(ModuleNames.GridChartsModule, 'api.createPivotChart', this.context.getGridId())) {\n return this.chartService.createPivotChart(params);\n }\n }\n /** Used to programmatically create cross filter charts from a range. */\n createCrossFilterChart(params) {\n if (ModuleRegistry.__assertRegistered(ModuleNames.GridChartsModule, 'api.createCrossFilterChart', this.context.getGridId())) {\n return this.chartService.createCrossFilterChart(params);\n }\n }\n /** Used to programmatically update a chart. */\n updateChart(params) {\n if (ModuleRegistry.__assertRegistered(ModuleNames.GridChartsModule, 'api.updateChart', this.context.getGridId())) {\n this.chartService.updateChart(params);\n }\n }\n /** Restores a chart using the `ChartModel` that was previously obtained from `getChartModels()`. */\n restoreChart(chartModel, chartContainer) {\n if (ModuleRegistry.__assertRegistered(ModuleNames.GridChartsModule, 'api.restoreChart', this.context.getGridId())) {\n return this.chartService.restoreChart(chartModel, chartContainer);\n }\n }\n /** Copies data to clipboard by following the same rules as pressing Ctrl+C. */\n copyToClipboard(params) {\n if (ModuleRegistry.__assertRegistered(ModuleNames.ClipboardModule, 'api.copyToClipboard', this.context.getGridId())) {\n this.clipboardService.copyToClipboard(params);\n }\n }\n /** Cuts data to clipboard by following the same rules as pressing Ctrl+X. */\n cutToClipboard(params) {\n if (ModuleRegistry.__assertRegistered(ModuleNames.ClipboardModule, 'api.cutToClipboard', this.context.getGridId())) {\n this.clipboardService.cutToClipboard(params, 'api');\n }\n }\n /** Copies the selected rows to the clipboard. */\n copySelectedRowsToClipboard(params) {\n if (ModuleRegistry.__assertRegistered(ModuleNames.ClipboardModule, 'api.copySelectedRowsToClipboard', this.context.getGridId())) {\n this.clipboardService.copySelectedRowsToClipboard(params);\n }\n }\n /** Copies the selected ranges to the clipboard. */\n copySelectedRangeToClipboard(params) {\n if (ModuleRegistry.__assertRegistered(ModuleNames.ClipboardModule, 'api.copySelectedRangeToClipboard', this.context.getGridId())) {\n this.clipboardService.copySelectedRangeToClipboard(params);\n }\n }\n /** Copies the selected range down, similar to `Ctrl + D` in Excel. */\n copySelectedRangeDown() {\n if (ModuleRegistry.__assertRegistered(ModuleNames.ClipboardModule, 'api.copySelectedRangeDown', this.context.getGridId())) {\n this.clipboardService.copyRangeDown();\n }\n }\n /** Pastes the data from the Clipboard into the focused cell of the grid. If no grid cell is focused, calling this method has no effect. */\n pasteFromClipboard() {\n if (ModuleRegistry.__assertRegistered(ModuleNames.ClipboardModule, 'api.pasteFromClipboard', this.context.getGridId())) {\n this.clipboardService.pasteFromClipboard();\n }\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 showColumnMenuAfterButtonClick(colKey, buttonElement) {\n // use grid column so works with pivot mode\n const 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 showColumnMenuAfterMouseClick(colKey, mouseEvent) {\n // use grid column so works with pivot mode\n let 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 hidePopupMenu() {\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 setPopupParent(ePopupParent) {\n this.gridOptionsService.set('popupParent', ePopupParent);\n }\n /** Navigates the grid focus to the next cell, as if tabbing. */\n tabToNextCell(event) {\n return this.navigationService.tabToNextCell(false, event);\n }\n /** Navigates the grid focus to the previous cell, as if shift-tabbing. */\n tabToPreviousCell(event) {\n return this.navigationService.tabToNextCell(true, event);\n }\n /** Returns the list of active cell renderer instances. */\n getCellRendererInstances(params = {}) {\n const res = this.rowRenderer.getCellRendererInstances(params);\n const 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 getCellEditorInstances(params = {}) {\n const res = this.rowRenderer.getCellEditorInstances(params);\n const unwrapped = res.map(unwrapUserComp);\n return unwrapped;\n }\n /** If the grid is editing, returns back details of the editing cell(s). */\n getEditingCells() {\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 stopEditing(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 startEditingCell(params) {\n const column = this.columnModel.getGridColumn(params.colKey);\n if (!column) {\n console.warn(`AG Grid: no column found for ${params.colKey}`);\n return;\n }\n const cellPosition = {\n rowIndex: params.rowIndex,\n rowPinned: params.rowPinned || null,\n column: column\n };\n const notPinned = params.rowPinned == null;\n if (notPinned) {\n this.gridBodyCtrl.getScrollFeature().ensureIndexVisible(params.rowIndex);\n }\n const cell = this.navigationService.getCellByPosition(cellPosition);\n if (!cell) {\n return;\n }\n cell.startRowOrCellEdit(params.key);\n }\n /** Add an aggregation function with the specified key. */\n addAggFunc(key, aggFunc) {\n if (this.aggFuncService) {\n this.aggFuncService.addAggFunc(key, aggFunc);\n }\n }\n /** Add aggregations function with the specified keys. */\n addAggFuncs(aggFuncs) {\n if (this.aggFuncService) {\n this.aggFuncService.addAggFuncs(aggFuncs);\n }\n }\n /** Clears all aggregation functions (including those provided by the grid). */\n clearAggFuncs() {\n if (this.aggFuncService) {\n this.aggFuncService.clear();\n }\n }\n /** Apply transactions to the server side row model. */\n applyServerSideTransaction(transaction) {\n if (!this.serverSideTransactionManager) {\n this.logMissingRowModel('applyServerSideTransaction', 'serverSide');\n return;\n }\n return this.serverSideTransactionManager.applyTransaction(transaction);\n }\n /** Batch apply transactions to the server side row model. */\n applyServerSideTransactionAsync(transaction, callback) {\n if (!this.serverSideTransactionManager) {\n this.logMissingRowModel('applyServerSideTransactionAsync', 'serverSide');\n return;\n }\n return this.serverSideTransactionManager.applyTransactionAsync(transaction, callback);\n }\n /** Gets all failed server side loads to retry. */\n retryServerSideLoads() {\n if (!this.serverSideRowModel) {\n this.logMissingRowModel('retryServerSideLoads', 'serverSide');\n return;\n }\n this.serverSideRowModel.retryLoads();\n }\n flushServerSideAsyncTransactions() {\n if (!this.serverSideTransactionManager) {\n this.logMissingRowModel('flushServerSideAsyncTransactions', 'serverSide');\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 applyTransaction(rowDataTransaction) {\n if (!this.clientSideRowModel) {\n this.logMissingRowModel('applyTransaction', 'clientSide');\n return;\n }\n return this.clientSideRowModel.updateRowData(rowDataTransaction);\n }\n /** Same as `applyTransaction` except executes asynchronously for efficiency. */\n applyTransactionAsync(rowDataTransaction, callback) {\n if (!this.clientSideRowModel) {\n this.logMissingRowModel('applyTransactionAsync', 'clientSide');\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 flushAsyncTransactions() {\n if (!this.clientSideRowModel) {\n this.logMissingRowModel('flushAsyncTransactions', 'clientSide');\n return;\n }\n this.clientSideRowModel.flushAsyncTransactions();\n }\n setSuppressModelUpdateAfterUpdateTransaction(value) {\n this.gridOptionsService.set('suppressModelUpdateAfterUpdateTransaction', value);\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 refreshInfiniteCache() {\n if (this.infiniteRowModel) {\n this.infiniteRowModel.refreshCache();\n }\n else {\n this.logMissingRowModel('refreshInfiniteCache', 'infinite');\n }\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 purgeInfiniteCache() {\n if (this.infiniteRowModel) {\n this.infiniteRowModel.purgeCache();\n }\n else {\n this.logMissingRowModel('purgeInfiniteCache', 'infinite');\n }\n }\n /**\n * Refresh a server-side store level.\n * If you pass no parameters, then the top level store is refreshed.\n * To refresh a child level, pass in the string of keys to get to the desired level.\n * Once the store refresh is complete, the storeRefreshed event is fired.\n */\n refreshServerSide(params) {\n if (!this.serverSideRowModel) {\n this.logMissingRowModel('refreshServerSide', 'serverSide');\n return;\n }\n this.serverSideRowModel.refreshStore(params);\n }\n /** @deprecated v28 use `refreshServerSide` instead */\n refreshServerSideStore(params) {\n logDeprecation('28.0', 'refreshServerSideStore', 'refreshServerSide');\n return this.refreshServerSide(params);\n }\n /** @deprecated v28 use `getServerSideGroupLevelState` instead */\n getServerSideStoreState() {\n logDeprecation('28.0', 'getServerSideStoreState', 'getServerSideGroupLevelState');\n return this.getServerSideGroupLevelState();\n }\n /** Returns info on all server side group levels. */\n getServerSideGroupLevelState() {\n if (!this.serverSideRowModel) {\n this.logMissingRowModel('getServerSideGroupLevelState', 'serverSide');\n return [];\n }\n return this.serverSideRowModel.getStoreState();\n }\n /** The row count defines how many rows the grid allows scrolling to. */\n getInfiniteRowCount() {\n if (this.infiniteRowModel) {\n return this.infiniteRowModel.getRowCount();\n }\n else {\n this.logMissingRowModel('getInfiniteRowCount', 'infinite');\n }\n }\n /** Returns `true` if grid allows for scrolling past the last row to load more rows, thus providing infinite scroll. */\n isLastRowIndexKnown() {\n if (this.infiniteRowModel) {\n return this.infiniteRowModel.isLastRowIndexKnown();\n }\n else {\n this.logMissingRowModel('isLastRowIndexKnown', 'infinite');\n }\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 getCacheBlockState() {\n return this.rowNodeBlockLoader.getBlockState();\n }\n /** Get the index of the first displayed row due to scrolling (includes invisible rendered rows in the buffer). */\n getFirstDisplayedRow() {\n return this.rowRenderer.getFirstVirtualRenderedRow();\n }\n /** Get the index of the last displayed row due to scrolling (includes invisible rendered rows in the buffer). */\n getLastDisplayedRow() {\n return this.rowRenderer.getLastVirtualRenderedRow();\n }\n /** Returns the displayed `RowNode` at the given `index`. */\n getDisplayedRowAtIndex(index) {\n return this.rowModel.getRow(index);\n }\n /** Returns the total number of displayed rows. */\n getDisplayedRowCount() {\n return this.rowModel.getRowCount();\n }\n /** Resets the data type definitions. This will update the columns in the grid. */\n setDataTypeDefinitions(dataTypeDefinitions) {\n this.gridOptionsService.set('dataTypeDefinitions', dataTypeDefinitions);\n }\n /**\n * Set whether the grid paginates the data or not.\n * - `true` to enable pagination\n * - `false` to disable pagination\n */\n setPagination(value) {\n this.gridOptionsService.set('pagination', value);\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 paginationIsLastPageFound() {\n return this.paginationProxy.isLastPageFound();\n }\n /** Returns how many rows are being shown per page. */\n paginationGetPageSize() {\n return this.paginationProxy.getPageSize();\n }\n /** Sets the `paginationPageSize`, then re-paginates the grid so the changes are applied immediately. */\n paginationSetPageSize(size) {\n this.gridOptionsService.set('paginationPageSize', size);\n }\n /** Returns the 0-based index of the page which is showing. */\n paginationGetCurrentPage() {\n return this.paginationProxy.getCurrentPage();\n }\n /** Returns the total number of pages. Returns `null` if `paginationIsLastPageFound() === false`. */\n paginationGetTotalPages() {\n return this.paginationProxy.getTotalPages();\n }\n /** The total number of rows. Returns `null` if `paginationIsLastPageFound() === false`. */\n paginationGetRowCount() {\n return this.paginationProxy.getMasterRowCount();\n }\n /** Navigates to the next page. */\n paginationGoToNextPage() {\n this.paginationProxy.goToNextPage();\n }\n /** Navigates to the previous page. */\n paginationGoToPreviousPage() {\n this.paginationProxy.goToPreviousPage();\n }\n /** Navigates to the first page. */\n paginationGoToFirstPage() {\n this.paginationProxy.goToFirstPage();\n }\n /** Navigates to the last page. */\n paginationGoToLastPage() {\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 paginationGoToPage(page) {\n this.paginationProxy.goToPage(page);\n }\n};\n__decorate$1V([\n Optional('immutableService')\n], GridApi.prototype, \"immutableService\", void 0);\n__decorate$1V([\n Optional('csvCreator')\n], GridApi.prototype, \"csvCreator\", void 0);\n__decorate$1V([\n Optional('excelCreator')\n], GridApi.prototype, \"excelCreator\", void 0);\n__decorate$1V([\n Autowired('rowRenderer')\n], GridApi.prototype, \"rowRenderer\", void 0);\n__decorate$1V([\n Autowired('navigationService')\n], GridApi.prototype, \"navigationService\", void 0);\n__decorate$1V([\n Autowired('filterManager')\n], GridApi.prototype, \"filterManager\", void 0);\n__decorate$1V([\n Autowired('columnModel')\n], GridApi.prototype, \"columnModel\", void 0);\n__decorate$1V([\n Autowired('selectionService')\n], GridApi.prototype, \"selectionService\", void 0);\n__decorate$1V([\n Autowired('gridOptionsService')\n], GridApi.prototype, \"gridOptionsService\", void 0);\n__decorate$1V([\n Autowired('valueService')\n], GridApi.prototype, \"valueService\", void 0);\n__decorate$1V([\n Autowired('alignedGridsService')\n], GridApi.prototype, \"alignedGridsService\", void 0);\n__decorate$1V([\n Autowired('eventService')\n], GridApi.prototype, \"eventService\", void 0);\n__decorate$1V([\n Autowired('pinnedRowModel')\n], GridApi.prototype, \"pinnedRowModel\", void 0);\n__decorate$1V([\n Autowired('context')\n], GridApi.prototype, \"context\", void 0);\n__decorate$1V([\n Autowired('rowModel')\n], GridApi.prototype, \"rowModel\", void 0);\n__decorate$1V([\n Autowired('sortController')\n], GridApi.prototype, \"sortController\", void 0);\n__decorate$1V([\n Autowired('paginationProxy')\n], GridApi.prototype, \"paginationProxy\", void 0);\n__decorate$1V([\n Autowired('focusService')\n], GridApi.prototype, \"focusService\", void 0);\n__decorate$1V([\n Autowired('dragAndDropService')\n], GridApi.prototype, \"dragAndDropService\", void 0);\n__decorate$1V([\n Optional('rangeService')\n], GridApi.prototype, \"rangeService\", void 0);\n__decorate$1V([\n Optional('clipboardService')\n], GridApi.prototype, \"clipboardService\", void 0);\n__decorate$1V([\n Optional('aggFuncService')\n], GridApi.prototype, \"aggFuncService\", void 0);\n__decorate$1V([\n Autowired('menuFactory')\n], GridApi.prototype, \"menuFactory\", void 0);\n__decorate$1V([\n Optional('contextMenuFactory')\n], GridApi.prototype, \"contextMenuFactory\", void 0);\n__decorate$1V([\n Autowired('valueCache')\n], GridApi.prototype, \"valueCache\", void 0);\n__decorate$1V([\n Autowired('animationFrameService')\n], GridApi.prototype, \"animationFrameService\", void 0);\n__decorate$1V([\n Optional('statusBarService')\n], GridApi.prototype, \"statusBarService\", void 0);\n__decorate$1V([\n Optional('chartService')\n], GridApi.prototype, \"chartService\", void 0);\n__decorate$1V([\n Optional('undoRedoService')\n], GridApi.prototype, \"undoRedoService\", void 0);\n__decorate$1V([\n Optional('rowNodeBlockLoader')\n], GridApi.prototype, \"rowNodeBlockLoader\", void 0);\n__decorate$1V([\n Optional('ssrmTransactionManager')\n], GridApi.prototype, \"serverSideTransactionManager\", void 0);\n__decorate$1V([\n Autowired('ctrlsService')\n], GridApi.prototype, \"ctrlsService\", void 0);\n__decorate$1V([\n PostConstruct\n], GridApi.prototype, \"init\", null);\n__decorate$1V([\n PreDestroy\n], GridApi.prototype, \"cleanDownReferencesToAvoidMemoryLeakInCaseApplicationIsKeepingReferenceToDestroyedGrid\", null);\nGridApi = __decorate$1V([\n Bean('gridApi')\n], GridApi);\n\nvar __decorate$1U = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 FilterManager_1;\nlet FilterManager = FilterManager_1 = class FilterManager extends BeanStub {\n constructor() {\n super(...arguments);\n this.allColumnFilters = new Map();\n this.allColumnListeners = new Map();\n this.activeAggregateFilters = [];\n this.activeColumnFilters = [];\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 }\n init() {\n this.addManagedListener(this.eventService, Events.EVENT_GRID_COLUMNS_CHANGED, () => this.onColumnsChanged());\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VALUE_CHANGED, () => this.refreshFiltersForAggregations());\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_CHANGED, () => this.refreshFiltersForAggregations());\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, () => {\n this.refreshFiltersForAggregations();\n this.resetQuickFilterCache();\n });\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, () => this.resetQuickFilterCache());\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, () => this.resetQuickFilterCache());\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VISIBLE, () => {\n if (!this.gridOptionsService.is('includeHiddenColumnsInQuickFilter')) {\n this.resetQuickFilterCache();\n }\n });\n this.addManagedPropertyListener('quickFilterText', (e) => this.setQuickFilter(e.currentValue));\n this.addManagedPropertyListener('includeHiddenColumnsInQuickFilter', () => this.onIncludeHiddenColumnsInQuickFilterChanged());\n this.quickFilter = this.parseQuickFilter(this.gridOptionsService.get('quickFilterText'));\n this.setQuickFilterParts();\n this.allowShowChangeAfterFilter = this.gridOptionsService.is('allowShowChangeAfterFilter');\n this.externalFilterPresent = this.isExternalFilterPresentCallback();\n this.updateAggFiltering();\n this.addManagedPropertyListener('groupAggFiltering', () => this.updateAggFiltering());\n }\n isExternalFilterPresentCallback() {\n const isFilterPresent = this.gridOptionsService.getCallback('isExternalFilterPresent');\n if (typeof isFilterPresent === 'function') {\n return isFilterPresent({});\n }\n return false;\n }\n doesExternalFilterPass(node) {\n const doesFilterPass = this.gridOptionsService.get('doesExternalFilterPass');\n if (typeof doesFilterPass === 'function') {\n return doesFilterPass(node);\n }\n return false;\n }\n setQuickFilterParts() {\n this.quickFilterParts = this.quickFilter ? this.quickFilter.split(' ') : null;\n }\n setFilterModel(model) {\n const allPromises = [];\n const previousModel = this.getFilterModel();\n if (model) {\n // mark the filters as we set them, so any active filters left over we stop\n const modelKeys = convertToSet(Object.keys(model));\n this.allColumnFilters.forEach((filterWrapper, colId) => {\n const newModel = model[colId];\n allPromises.push(this.setModelOnFilterWrapper(filterWrapper.filterPromise, newModel));\n modelKeys.delete(colId);\n });\n // at this point, processedFields contains data for which we don't have a filter working yet\n modelKeys.forEach(colId => {\n const column = this.columnModel.getPrimaryColumn(colId) || this.columnModel.getGridColumn(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 const 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.allColumnFilters.forEach(filterWrapper => {\n allPromises.push(this.setModelOnFilterWrapper(filterWrapper.filterPromise, null));\n });\n }\n AgPromise.all(allPromises).then(() => {\n const currentModel = this.getFilterModel();\n const columns = [];\n this.allColumnFilters.forEach((filterWrapper, colId) => {\n const before = previousModel ? previousModel[colId] : null;\n const 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 });\n }\n });\n }\n setModelOnFilterWrapper(filterPromise, newModel) {\n return new AgPromise(resolve => {\n filterPromise.then(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(() => resolve());\n });\n });\n }\n getFilterModel() {\n const result = {};\n this.allColumnFilters.forEach((filterWrapper, key) => {\n // because user can provide filters, we provide useful error checking and messages\n const filterPromise = filterWrapper.filterPromise;\n const filter = filterPromise.resolveNow(null, promiseFilter => 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 const model = filter.getModel();\n if (exists(model)) {\n result[key] = model;\n }\n });\n return result;\n }\n isColumnFilterPresent() {\n return this.activeColumnFilters.length > 0;\n }\n isAggregateFilterPresent() {\n return !!this.activeAggregateFilters.length;\n }\n isExternalFilterPresent() {\n return this.externalFilterPresent;\n }\n doAggregateFiltersPass(node, filterToSkip) {\n return this.doColumnFiltersPass(node, filterToSkip, true);\n }\n // called by:\n // 1) onFilterChanged()\n // 2) onNewRowsLoaded()\n updateActiveFilters() {\n this.activeColumnFilters.length = 0;\n this.activeAggregateFilters.length = 0;\n const isFilterActive = (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 const groupFilterEnabled = !!this.gridOptionsService.getGroupAggFiltering();\n const isAggFilter = (column) => {\n const isSecondary = !column.isPrimary();\n // the only filters that can appear on secondary columns are groupAgg filters\n if (isSecondary) {\n return true;\n }\n const isShowingPrimaryColumns = !this.columnModel.isPivotActive();\n const isValueActive = column.isValueActive();\n // primary columns are only ever groupAgg filters if a) value is active and b) showing primary columns\n if (!isValueActive || !isShowingPrimaryColumns) {\n return false;\n }\n // from here on we know: isPrimary=true, isValueActive=true, isShowingPrimaryColumns=true\n if (this.columnModel.isPivotMode()) {\n // primary column is pretending to be a pivot column, ie pivotMode=true, but we are\n // still showing primary columns\n return true;\n }\n // we are not pivoting, so we groupFilter when it's an agg column\n return groupFilterEnabled;\n };\n this.allColumnFilters.forEach(filterWrapper => {\n if (filterWrapper.filterPromise.resolveNow(false, isFilterActive)) {\n const filterComp = filterWrapper.filterPromise.resolveNow(null, filter => filter);\n if (isAggFilter(filterWrapper.column)) {\n this.activeAggregateFilters.push(filterComp);\n }\n else {\n this.activeColumnFilters.push(filterComp);\n }\n }\n });\n }\n updateFilterFlagInColumns(source, additionalEventAttributes) {\n this.allColumnFilters.forEach(filterWrapper => {\n const isFilterActive = filterWrapper.filterPromise.resolveNow(false, filter => filter.isFilterActive());\n filterWrapper.column.setFilterActive(isFilterActive, source, additionalEventAttributes);\n });\n }\n isAnyFilterPresent() {\n return this.isQuickFilterPresent() || this.isColumnFilterPresent() || this.isAggregateFilterPresent() || this.isExternalFilterPresent();\n }\n doColumnFiltersPass(node, filterToSkip, targetAggregates) {\n const { data, aggData } = node;\n const targetedFilters = targetAggregates ? this.activeAggregateFilters : this.activeColumnFilters;\n const targetedData = targetAggregates ? aggData : data;\n for (let i = 0; i < targetedFilters.length; i++) {\n const filter = targetedFilters[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, data: targetedData })) {\n return false;\n }\n }\n return true;\n }\n parseQuickFilter(newFilter) {\n if (!exists(newFilter)) {\n return null;\n }\n if (!this.gridOptionsService.isRowModelType('clientSide')) {\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 setQuickFilter(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 const parsedFilter = this.parseQuickFilter(newFilter);\n if (this.quickFilter !== parsedFilter) {\n this.quickFilter = parsedFilter;\n this.setQuickFilterParts();\n this.onFilterChanged();\n }\n }\n resetQuickFilterCache() {\n this.rowModel.forEachNode(node => node.quickFilterAggregateText = null);\n }\n onIncludeHiddenColumnsInQuickFilterChanged() {\n this.columnModel.refreshQuickFilterColumns();\n this.resetQuickFilterCache();\n if (this.isQuickFilterPresent()) {\n this.onFilterChanged();\n }\n }\n refreshFiltersForAggregations() {\n const isAggFiltering = this.gridOptionsService.getGroupAggFiltering();\n if (isAggFiltering) {\n this.onFilterChanged();\n }\n }\n // sometimes (especially in React) the filter can call onFilterChanged when we are in the middle\n // of a render cycle. this would be bad, so we wait for render cycle to complete when this happens.\n // this happens in react when we change React State in the grid (eg setting RowCtrl's in RowContainer)\n // which results in React State getting applied in the main application, triggering a useEffect() to\n // be kicked off adn then the application calling the grid's API. in AG-6554, the custom filter was\n // getting it's useEffect() triggered in this way.\n callOnFilterChangedOutsideRenderCycle(params = {}) {\n const action = () => this.onFilterChanged(params);\n if (this.rowRenderer.isRefreshInProgress()) {\n setTimeout(action, 0);\n }\n else {\n action();\n }\n }\n onFilterChanged(params = {}) {\n const { filterInstance, additionalEventAttributes, columns } = params;\n this.updateDependantFilters();\n this.updateActiveFilters();\n this.updateFilterFlagInColumns('filterChanged', additionalEventAttributes);\n this.externalFilterPresent = this.isExternalFilterPresentCallback();\n this.allColumnFilters.forEach(filterWrapper => {\n if (!filterWrapper.filterPromise) {\n return;\n }\n filterWrapper.filterPromise.then(filter => {\n if (filter && filter !== filterInstance && filter.onAnyFilterChanged) {\n filter.onAnyFilterChanged();\n }\n });\n });\n const filterChangedEvent = {\n type: Events.EVENT_FILTER_CHANGED,\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 isSuppressFlashingCellsBecauseFiltering() {\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 isQuickFilterPresent() {\n return this.quickFilter !== null;\n }\n updateAggFiltering() {\n this.aggFiltering = !!this.gridOptionsService.getGroupAggFiltering();\n }\n isAggregateQuickFilterPresent() {\n return this.isQuickFilterPresent() && (this.aggFiltering || this.columnModel.isPivotMode());\n }\n isNonAggregateQuickFilterPresent() {\n return this.isQuickFilterPresent() && !(this.aggFiltering || this.columnModel.isPivotMode());\n }\n doesRowPassOtherFilters(filterToSkip, node) {\n return this.doesRowPassFilter({ rowNode: node, filterInstanceToSkip: filterToSkip });\n }\n doesRowPassQuickFilterNoCache(node, filterPart) {\n const columns = this.columnModel.getAllColumnsForQuickFilter();\n return columns.some(column => {\n const part = this.getQuickFilterTextForColumn(column, node);\n return exists(part) && part.indexOf(filterPart) >= 0;\n });\n }\n doesRowPassQuickFilterCache(node, filterPart) {\n if (!node.quickFilterAggregateText) {\n this.aggregateRowForQuickFilter(node);\n }\n return node.quickFilterAggregateText.indexOf(filterPart) >= 0;\n }\n doesRowPassQuickFilter(node) {\n const usingCache = this.gridOptionsService.is('cacheQuickFilter');\n // each part must pass, if any fails, then the whole filter fails\n return this.quickFilterParts.every(part => usingCache ? this.doesRowPassQuickFilterCache(node, part) : this.doesRowPassQuickFilterNoCache(node, part));\n }\n doesRowPassAggregateFilters(params) {\n // check quick filter\n if (this.isAggregateQuickFilterPresent() && !this.doesRowPassQuickFilter(params.rowNode)) {\n return false;\n }\n if (this.isAggregateFilterPresent() && !this.doAggregateFiltersPass(params.rowNode, params.filterInstanceToSkip)) {\n return false;\n }\n // got this far, all filters pass\n return true;\n }\n doesRowPassFilter(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.isNonAggregateQuickFilterPresent() && !this.doesRowPassQuickFilter(params.rowNode)) {\n return false;\n }\n // secondly, give the client a chance to reject this row\n if (this.isExternalFilterPresent() && !this.doesExternalFilterPass(params.rowNode)) {\n return false;\n }\n // lastly, check column filter\n if (this.isColumnFilterPresent() && !this.doColumnFiltersPass(params.rowNode, params.filterInstanceToSkip)) {\n return false;\n }\n // got this far, all filters pass\n return true;\n }\n getQuickFilterTextForColumn(column, node) {\n let value = this.valueService.getValue(column, node, true);\n const colDef = column.getColDef();\n if (colDef.getQuickFilterText) {\n const params = {\n value,\n node,\n data: node.data,\n column,\n colDef,\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context\n };\n value = colDef.getQuickFilterText(params);\n }\n return exists(value) ? value.toString().toUpperCase() : null;\n }\n aggregateRowForQuickFilter(node) {\n const stringParts = [];\n const columns = this.columnModel.getAllColumnsForQuickFilter();\n columns.forEach(column => {\n const 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 onNewRowsLoaded(source) {\n this.allColumnFilters.forEach(filterWrapper => {\n filterWrapper.filterPromise.then(filter => {\n if (filter.onNewRowsLoaded) {\n filter.onNewRowsLoaded();\n }\n });\n });\n this.updateFilterFlagInColumns(source, { afterDataChange: true });\n this.updateActiveFilters();\n }\n createValueGetter(column) {\n return ({ node }) => this.valueService.getValue(column, node, true);\n }\n getFilterComponent(column, source, 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 const filterWrapper = this.cachedFilter(column);\n return filterWrapper ? filterWrapper.filterPromise : null;\n }\n isFilterActive(column) {\n const filterWrapper = this.cachedFilter(column);\n return !!filterWrapper && filterWrapper.filterPromise.resolveNow(false, filter => filter.isFilterActive());\n }\n getOrCreateFilterWrapper(column, source) {\n if (!column.isFilterAllowed()) {\n return null;\n }\n let filterWrapper = this.cachedFilter(column);\n if (!filterWrapper) {\n filterWrapper = this.createFilterWrapper(column, source);\n const colId = column.getColId();\n this.allColumnFilters.set(colId, filterWrapper);\n this.allColumnListeners.set(colId, this.addManagedListener(column, Column.EVENT_COL_DEF_CHANGED, () => this.checkDestroyFilter(colId)));\n }\n else if (source !== 'NO_UI') {\n this.putIntoGui(filterWrapper, source);\n }\n return filterWrapper;\n }\n cachedFilter(column) {\n return this.allColumnFilters.get(column.getColId());\n }\n getDefaultFilter(column) {\n let defaultFilter;\n if (ModuleRegistry.__isRegistered(ModuleNames.SetFilterModule, this.context.getGridId())) {\n defaultFilter = 'agSetColumnFilter';\n }\n else {\n const cellDataType = column.getColDef().cellDataType;\n if (cellDataType === 'number') {\n defaultFilter = 'agNumberColumnFilter';\n }\n else if (cellDataType === 'date' || cellDataType === 'dateString') {\n defaultFilter = 'agDateColumnFilter';\n }\n else {\n defaultFilter = 'agTextColumnFilter';\n }\n }\n return defaultFilter;\n }\n getDefaultFloatingFilter(column) {\n let defaultFloatingFilterType;\n if (ModuleRegistry.__isRegistered(ModuleNames.SetFilterModule, this.context.getGridId())) {\n defaultFloatingFilterType = 'agSetColumnFloatingFilter';\n }\n else {\n const cellDataType = column.getColDef().cellDataType;\n if (cellDataType === 'number') {\n defaultFloatingFilterType = 'agNumberColumnFloatingFilter';\n }\n else if (cellDataType === 'date' || cellDataType === 'dateString') {\n defaultFloatingFilterType = 'agDateColumnFloatingFilter';\n }\n else {\n defaultFloatingFilterType = 'agTextColumnFloatingFilter';\n }\n }\n return defaultFloatingFilterType;\n }\n createFilterInstance(column) {\n const defaultFilter = this.getDefaultFilter(column);\n const colDef = column.getColDef();\n let filterInstance;\n const params = Object.assign(Object.assign({}, this.createFilterParams(column, colDef)), { filterModifiedCallback: () => {\n const event = {\n type: Events.EVENT_FILTER_MODIFIED,\n column,\n filterInstance\n };\n this.eventService.dispatchEvent(event);\n }, filterChangedCallback: (additionalEventAttributes) => {\n const params = { filterInstance, additionalEventAttributes, columns: [column] };\n this.callOnFilterChangedOutsideRenderCycle(params);\n }, doesRowPassOtherFilter: node => this.doesRowPassOtherFilters(filterInstance, node) });\n const compDetails = this.userComponentFactory.getFilterDetails(colDef, params, defaultFilter);\n if (!compDetails) {\n return { filterPromise: null, compDetails: null };\n }\n return {\n filterPromise: () => {\n const filterPromise = compDetails.newAgStackInstance();\n if (filterPromise) {\n filterPromise.then(r => filterInstance = r);\n }\n return filterPromise;\n },\n compDetails\n };\n }\n createFilterParams(column, colDef) {\n const params = {\n column,\n colDef: cloneObject(colDef),\n rowModel: this.rowModel,\n filterChangedCallback: () => { },\n filterModifiedCallback: () => { },\n valueGetter: this.createValueGetter(column),\n doesRowPassOtherFilter: () => true,\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context,\n };\n return params;\n }\n createFilterWrapper(column, source) {\n var _a;\n const filterWrapper = {\n column: column,\n filterPromise: null,\n compiledElement: null,\n guiPromise: AgPromise.resolve(null),\n compDetails: null\n };\n const { filterPromise, compDetails } = this.createFilterInstance(column);\n filterWrapper.filterPromise = (_a = filterPromise === null || filterPromise === void 0 ? void 0 : filterPromise()) !== null && _a !== void 0 ? _a : null;\n filterWrapper.compDetails = compDetails;\n if (filterPromise) {\n this.putIntoGui(filterWrapper, source);\n }\n return filterWrapper;\n }\n putIntoGui(filterWrapper, source) {\n const eFilterGui = document.createElement('div');\n eFilterGui.className = 'ag-filter';\n filterWrapper.guiPromise = new AgPromise(resolve => {\n filterWrapper.filterPromise.then(filter => {\n let 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 resolve(eFilterGui);\n const event = {\n type: Events.EVENT_FILTER_OPENED,\n column: filterWrapper.column,\n source,\n eGui: eFilterGui\n };\n this.eventService.dispatchEvent(event);\n });\n });\n }\n onColumnsChanged() {\n const columns = [];\n this.allColumnFilters.forEach((wrapper, colId) => {\n let currentColumn;\n if (wrapper.column.isPrimary()) {\n currentColumn = this.columnModel.getPrimaryColumn(colId);\n }\n else {\n currentColumn = this.columnModel.getGridColumn(colId);\n }\n if (currentColumn) {\n return;\n }\n columns.push(wrapper.column);\n this.disposeFilterWrapper(wrapper, 'columnChanged');\n this.disposeColumnListener(colId);\n });\n if (columns.length > 0) {\n this.onFilterChanged({ columns });\n }\n else {\n // onFilterChanged does this already\n this.updateDependantFilters();\n }\n }\n updateDependantFilters() {\n // Group column filters can be dependant on underlying column filters, but don't normally get created until they're used for the first time.\n // Instead, create them by default when any filter changes.\n const groupColumns = this.columnModel.getGroupAutoColumns();\n groupColumns === null || groupColumns === void 0 ? void 0 : groupColumns.forEach(groupColumn => {\n if (groupColumn.getColDef().filter === 'agGroupColumnFilter') {\n this.getOrCreateFilterWrapper(groupColumn, 'NO_UI');\n }\n });\n }\n // for group filters, can change dynamically whether they are allowed or not\n isFilterAllowed(column) {\n var _a, _b;\n const isFilterAllowed = column.isFilterAllowed();\n if (!isFilterAllowed) {\n return false;\n }\n const filterWrapper = this.allColumnFilters.get(column.getColId());\n return (_b = (_a = filterWrapper === null || filterWrapper === void 0 ? void 0 : filterWrapper.filterPromise) === null || _a === void 0 ? void 0 : _a.resolveNow(true, \n // defer to filter component isFilterAllowed if it exists\n filter => {\n var _a, _b;\n return (typeof ((_a = filter) === null || _a === void 0 ? void 0 : _a.isFilterAllowed) === 'function')\n ? (_b = filter) === null || _b === void 0 ? void 0 : _b.isFilterAllowed()\n : true;\n })) !== null && _b !== void 0 ? _b : true;\n }\n getFloatingFilterCompDetails(column, showParentFilter) {\n const colDef = column.getColDef();\n const filterParams = this.createFilterParams(column, colDef);\n const finalFilterParams = this.userComponentFactory.mergeParamsWithApplicationProvidedParams(colDef, FilterComponent, filterParams);\n let defaultFloatingFilterType = this.userComponentFactory.getDefaultFloatingFilterType(colDef, () => this.getDefaultFloatingFilter(column));\n if (defaultFloatingFilterType == null) {\n defaultFloatingFilterType = 'agReadOnlyFloatingFilter';\n }\n const parentFilterInstance = (callback) => {\n const filterComponent = this.getFilterComponent(column, 'NO_UI');\n if (filterComponent == null) {\n return;\n }\n filterComponent.then(instance => {\n callback(unwrapUserComp(instance));\n });\n };\n const params = {\n column: column,\n filterParams: finalFilterParams,\n currentParentModel: () => this.getCurrentFloatingFilterParentModel(column),\n parentFilterInstance,\n showParentFilter,\n suppressFilterButton: false // This one might be overridden from the colDef\n };\n return this.userComponentFactory.getFloatingFilterCompDetails(colDef, params, defaultFloatingFilterType);\n }\n getCurrentFloatingFilterParentModel(column) {\n const filterComponent = this.getFilterComponent(column, 'NO_UI', false);\n return filterComponent ? filterComponent.resolveNow(null, filter => filter && filter.getModel()) : null;\n }\n // destroys the filter, so it no longer takes part\n destroyFilter(column, source = 'api') {\n const colId = column.getColId();\n const filterWrapper = this.allColumnFilters.get(colId);\n this.disposeColumnListener(colId);\n if (filterWrapper) {\n this.disposeFilterWrapper(filterWrapper, source);\n this.onFilterChanged({ columns: [column] });\n }\n }\n disposeColumnListener(colId) {\n const columnListener = this.allColumnListeners.get(colId);\n if (columnListener) {\n this.allColumnListeners.delete(colId);\n columnListener();\n }\n }\n disposeFilterWrapper(filterWrapper, source) {\n filterWrapper.filterPromise.then(filter => {\n (filter.setModel(null) || AgPromise.resolve()).then(() => {\n this.getContext().destroyBean(filter);\n filterWrapper.column.setFilterActive(false, 'filterDestroyed');\n this.allColumnFilters.delete(filterWrapper.column.getColId());\n const event = {\n type: Events.EVENT_FILTER_DESTROYED,\n source,\n column: filterWrapper.column,\n };\n this.eventService.dispatchEvent(event);\n });\n });\n }\n checkDestroyFilter(colId) {\n const filterWrapper = this.allColumnFilters.get(colId);\n if (!filterWrapper) {\n return;\n }\n const column = filterWrapper.column;\n const { compDetails } = column.isFilterAllowed()\n ? this.createFilterInstance(column)\n : { compDetails: null };\n const areFilterCompsDifferent = (oldCompDetails, newCompDetails) => {\n if (!newCompDetails || !oldCompDetails) {\n return true;\n }\n const { componentClass: oldComponentClass } = oldCompDetails;\n const { componentClass: newComponentClass } = newCompDetails;\n const isSameComponentClass = oldComponentClass === newComponentClass ||\n // react hooks returns new wrappers, so check nested render method\n ((oldComponentClass === null || oldComponentClass === void 0 ? void 0 : oldComponentClass.render) && (newComponentClass === null || newComponentClass === void 0 ? void 0 : newComponentClass.render) &&\n oldComponentClass.render === newComponentClass.render);\n return !isSameComponentClass;\n };\n if (areFilterCompsDifferent(filterWrapper.compDetails, compDetails)) {\n this.destroyFilter(column, 'columnChanged');\n }\n }\n destroy() {\n super.destroy();\n this.allColumnFilters.forEach(filterWrapper => this.disposeFilterWrapper(filterWrapper, 'gridDestroyed'));\n // don't need to destroy the listeners as they are managed listeners\n this.allColumnListeners.clear();\n }\n};\nFilterManager.QUICK_FILTER_SEPARATOR = '\\n';\n__decorate$1U([\n Autowired('valueService')\n], FilterManager.prototype, \"valueService\", void 0);\n__decorate$1U([\n Autowired('columnModel')\n], FilterManager.prototype, \"columnModel\", void 0);\n__decorate$1U([\n Autowired('rowModel')\n], FilterManager.prototype, \"rowModel\", void 0);\n__decorate$1U([\n Autowired('userComponentFactory')\n], FilterManager.prototype, \"userComponentFactory\", void 0);\n__decorate$1U([\n Autowired('rowRenderer')\n], FilterManager.prototype, \"rowRenderer\", void 0);\n__decorate$1U([\n PostConstruct\n], FilterManager.prototype, \"init\", null);\nFilterManager = FilterManager_1 = __decorate$1U([\n Bean('filterManager')\n], FilterManager);\n\nclass AbstractHeaderCellComp extends Component {\n constructor(template, ctrl) {\n super(template);\n this.ctrl = ctrl;\n }\n getCtrl() {\n return this.ctrl;\n }\n}\n\nvar __decorate$1T = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass HeaderFilterCellComp extends AbstractHeaderCellComp {\n constructor(ctrl) {\n super(HeaderFilterCellComp.TEMPLATE, ctrl);\n }\n postConstruct() {\n const eGui = this.getGui();\n const compProxy = {\n addOrRemoveCssClass: (cssClassName, on) => this.addOrRemoveCssClass(cssClassName, on),\n addOrRemoveBodyCssClass: (cssClassName, on) => this.eFloatingFilterBody.classList.toggle(cssClassName, on),\n setButtonWrapperDisplayed: (displayed) => setDisplayed(this.eButtonWrapper, displayed),\n setCompDetails: compDetails => this.setCompDetails(compDetails),\n getFloatingFilterComp: () => this.compPromise,\n setWidth: width => eGui.style.width = width,\n setMenuIcon: eIcon => this.eButtonShowMainFilter.appendChild(eIcon)\n };\n this.ctrl.setComp(compProxy, eGui, this.eButtonShowMainFilter, this.eFloatingFilterBody);\n }\n setCompDetails(compDetails) {\n if (!compDetails) {\n this.destroyFloatingFilterComp();\n this.compPromise = null;\n return;\n }\n // because we are providing defaultFloatingFilterType, we know it will never be undefined;\n this.compPromise = compDetails.newAgStackInstance();\n this.compPromise.then(comp => this.afterCompCreated(comp));\n }\n destroyFloatingFilterComp() {\n if (this.floatingFilterComp) {\n this.eFloatingFilterBody.removeChild(this.floatingFilterComp.getGui());\n this.floatingFilterComp = this.destroyBean(this.floatingFilterComp);\n }\n }\n afterCompCreated(comp) {\n if (!comp) {\n return;\n }\n if (!this.isAlive()) {\n this.destroyBean(comp);\n return;\n }\n this.destroyFloatingFilterComp();\n this.floatingFilterComp = comp;\n this.eFloatingFilterBody.appendChild(comp.getGui());\n if (comp.afterGuiAttached) {\n comp.afterGuiAttached();\n }\n }\n}\nHeaderFilterCellComp.TEMPLATE = `
\n
\n
\n \n
\n
`;\n__decorate$1T([\n RefSelector('eFloatingFilterBody')\n], HeaderFilterCellComp.prototype, \"eFloatingFilterBody\", void 0);\n__decorate$1T([\n RefSelector('eButtonWrapper')\n], HeaderFilterCellComp.prototype, \"eButtonWrapper\", void 0);\n__decorate$1T([\n RefSelector('eButtonShowMainFilter')\n], HeaderFilterCellComp.prototype, \"eButtonShowMainFilter\", void 0);\n__decorate$1T([\n PostConstruct\n], HeaderFilterCellComp.prototype, \"postConstruct\", null);\n__decorate$1T([\n PreDestroy\n], HeaderFilterCellComp.prototype, \"destroyFloatingFilterComp\", null);\n\nvar __decorate$1S = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 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 = {}));\nclass LayoutFeature extends BeanStub {\n constructor(view) {\n super();\n this.view = view;\n }\n postConstruct() {\n this.addManagedPropertyListener('domLayout', this.updateLayoutClasses.bind(this));\n this.updateLayoutClasses();\n }\n updateLayoutClasses() {\n const domLayout = this.getDomLayout();\n const params = {\n autoHeight: domLayout === 'autoHeight',\n normal: domLayout === 'normal',\n print: domLayout === 'print'\n };\n const cssClass = params.autoHeight ? LayoutCssClasses.AUTO_HEIGHT :\n params.print ? LayoutCssClasses.PRINT : LayoutCssClasses.NORMAL;\n this.view.updateLayoutClasses(cssClass, params);\n }\n // returns either 'print', 'autoHeight' or 'normal' (normal is the default)\n getDomLayout() {\n var _a;\n const domLayout = (_a = this.gridOptionsService.get('domLayout')) !== null && _a !== void 0 ? _a : 'normal';\n const validLayouts = ['normal', 'print', 'autoHeight'];\n if (validLayouts.indexOf(domLayout) === -1) {\n doOnce(() => console.warn(`AG Grid: ${domLayout} is not valid for DOM Layout, valid values are 'normal', 'autoHeight', 'print'.`), 'warn about dom layout values');\n return 'normal';\n }\n return domLayout;\n }\n}\n__decorate$1S([\n PostConstruct\n], LayoutFeature.prototype, \"postConstruct\", null);\n\nvar __decorate$1R = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 ScrollDirection;\n(function (ScrollDirection) {\n ScrollDirection[ScrollDirection[\"Vertical\"] = 0] = \"Vertical\";\n ScrollDirection[ScrollDirection[\"Horizontal\"] = 1] = \"Horizontal\";\n})(ScrollDirection || (ScrollDirection = {}));\nvar ScrollSource;\n(function (ScrollSource) {\n ScrollSource[ScrollSource[\"Container\"] = 0] = \"Container\";\n ScrollSource[ScrollSource[\"FakeContainer\"] = 1] = \"FakeContainer\";\n})(ScrollSource || (ScrollSource = {}));\nclass GridBodyScrollFeature extends BeanStub {\n constructor(eBodyViewport) {\n super();\n this.lastScrollSource = [null, null];\n this.scrollLeft = -1;\n this.nextScrollTop = -1;\n this.scrollTop = -1;\n this.eBodyViewport = eBodyViewport;\n this.resetLastHScrollDebounced = debounce(() => this.lastScrollSource[ScrollDirection.Horizontal] = null, 500);\n this.resetLastVScrollDebounced = debounce(() => this.lastScrollSource[ScrollDirection.Vertical] = null, 500);\n }\n postConstruct() {\n this.enableRtl = this.gridOptionsService.is('enableRtl');\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onDisplayedColumnsWidthChanged.bind(this));\n this.ctrlsService.whenReady(p => {\n this.centerRowContainerCtrl = p.centerRowContainerCtrl;\n this.onDisplayedColumnsWidthChanged();\n this.addScrollListener();\n });\n }\n addScrollListener() {\n const fakeHScroll = this.ctrlsService.getFakeHScrollComp();\n const fakeVScroll = this.ctrlsService.getFakeVScrollComp();\n this.addManagedListener(this.centerRowContainerCtrl.getViewportElement(), 'scroll', this.onHScroll.bind(this));\n fakeHScroll.onScrollCallback(this.onFakeHScroll.bind(this));\n const isDebounce = this.gridOptionsService.is('debounceVerticalScrollbar');\n const onVScroll = isDebounce ?\n debounce(this.onVScroll.bind(this), 100) : this.onVScroll.bind(this);\n const onFakeVScroll = isDebounce ?\n debounce(this.onFakeVScroll.bind(this), 100) : this.onFakeVScroll.bind(this);\n this.addManagedListener(this.eBodyViewport, 'scroll', onVScroll);\n fakeVScroll.onScrollCallback(onFakeVScroll);\n }\n onDisplayedColumnsWidthChanged() {\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 horizontallyScrollHeaderCenterAndFloatingCenter(scrollLeft) {\n // when doing RTL, this method gets called once prematurely\n const notYetInitialised = this.centerRowContainerCtrl == null;\n if (notYetInitialised) {\n return;\n }\n if (scrollLeft === undefined) {\n scrollLeft = this.centerRowContainerCtrl.getCenterViewportScrollLeft();\n }\n const offset = this.enableRtl ? scrollLeft : -scrollLeft;\n const topCenterContainer = this.ctrlsService.getTopCenterRowContainerCtrl();\n const stickyTopCenterContainer = this.ctrlsService.getStickyTopCenterRowContainerCtrl();\n const bottomCenterContainer = this.ctrlsService.getBottomCenterRowContainerCtrl();\n const fakeHScroll = this.ctrlsService.getFakeHScrollComp();\n const centerHeaderContainer = this.ctrlsService.getHeaderRowContainerCtrl();\n centerHeaderContainer.setHorizontalScroll(-offset);\n bottomCenterContainer.setContainerTranslateX(offset);\n topCenterContainer.setContainerTranslateX(offset);\n stickyTopCenterContainer.setContainerTranslateX(offset);\n const centerViewport = this.centerRowContainerCtrl.getViewportElement();\n const isCenterViewportLastHorizontal = this.lastScrollSource[ScrollDirection.Horizontal] === ScrollSource.Container;\n scrollLeft = Math.abs(scrollLeft);\n if (isCenterViewportLastHorizontal) {\n fakeHScroll.setScrollPosition(scrollLeft);\n }\n else {\n setScrollLeft(centerViewport, scrollLeft, this.enableRtl);\n }\n }\n isControllingScroll(source, direction) {\n if (this.lastScrollSource[direction] == null) {\n this.lastScrollSource[direction] = source;\n return true;\n }\n return this.lastScrollSource[direction] === source;\n }\n onFakeHScroll() {\n if (!this.isControllingScroll(ScrollSource.FakeContainer, ScrollDirection.Horizontal)) {\n return;\n }\n this.onHScrollCommon(ScrollSource.FakeContainer);\n }\n onHScroll() {\n if (!this.isControllingScroll(ScrollSource.Container, ScrollDirection.Horizontal)) {\n return;\n }\n this.onHScrollCommon(ScrollSource.Container);\n }\n onHScrollCommon(source) {\n const centerContainerViewport = this.centerRowContainerCtrl.getViewportElement();\n const { scrollLeft } = centerContainerViewport;\n if (this.shouldBlockScrollUpdate(ScrollDirection.Horizontal, scrollLeft, true)) {\n return;\n }\n let newScrollLeft;\n if (source === ScrollSource.Container) {\n newScrollLeft = getScrollLeft(centerContainerViewport, this.enableRtl);\n }\n else {\n newScrollLeft = this.ctrlsService.getFakeHScrollComp().getScrollPosition();\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(newScrollLeft));\n this.resetLastHScrollDebounced();\n }\n onFakeVScroll() {\n if (!this.isControllingScroll(ScrollSource.FakeContainer, ScrollDirection.Vertical)) {\n return;\n }\n this.onVScrollCommon(ScrollSource.FakeContainer);\n }\n onVScroll() {\n if (!this.isControllingScroll(ScrollSource.Container, ScrollDirection.Vertical)) {\n return;\n }\n this.onVScrollCommon(ScrollSource.Container);\n }\n onVScrollCommon(source) {\n let scrollTop;\n if (source === ScrollSource.Container) {\n scrollTop = this.eBodyViewport.scrollTop;\n }\n else {\n scrollTop = this.ctrlsService.getFakeVScrollComp().getScrollPosition();\n }\n if (this.shouldBlockScrollUpdate(ScrollDirection.Vertical, scrollTop, true)) {\n return;\n }\n this.animationFrameService.setScrollTop(scrollTop);\n this.nextScrollTop = scrollTop;\n if (source === ScrollSource.Container) {\n this.ctrlsService.getFakeVScrollComp().setScrollPosition(scrollTop);\n }\n else {\n this.eBodyViewport.scrollTop = scrollTop;\n }\n // the `scrollGridIfNeeded` will recalculate the rows to be rendered by the grid\n // so it should only be called after `eBodyViewport` has been scrolled to the correct\n // position, otherwise the `first` and `last` row could be miscalculated.\n if (this.gridOptionsService.is('suppressAnimationFrame')) {\n this.scrollGridIfNeeded();\n }\n else {\n this.animationFrameService.schedule();\n }\n this.resetLastVScrollDebounced();\n }\n doHorizontalScroll(scrollLeft) {\n const fakeScrollLeft = this.ctrlsService.getFakeHScrollComp().getScrollPosition();\n if (this.scrollLeft === scrollLeft && scrollLeft === fakeScrollLeft) {\n return;\n }\n this.scrollLeft = scrollLeft;\n this.fireScrollEvent(ScrollDirection.Horizontal);\n this.horizontallyScrollHeaderCenterAndFloatingCenter(scrollLeft);\n this.onHorizontalViewportChanged();\n }\n fireScrollEvent(direction) {\n const bodyScrollEvent = {\n type: Events.EVENT_BODY_SCROLL,\n direction: direction === ScrollDirection.Horizontal ? 'horizontal' : 'vertical',\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(() => {\n const bodyScrollEndEvent = Object.assign(Object.assign({}, bodyScrollEvent), { type: Events.EVENT_BODY_SCROLL_END });\n this.eventService.dispatchEvent(bodyScrollEndEvent);\n }, 100);\n }\n shouldBlockScrollUpdate(direction, scrollTo, touchOnly = false) {\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 // 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 === ScrollDirection.Vertical) {\n return this.shouldBlockVerticalScroll(scrollTo);\n }\n return this.shouldBlockHorizontalScroll(scrollTo);\n }\n shouldBlockVerticalScroll(scrollTo) {\n const clientHeight = getInnerHeight(this.eBodyViewport);\n const { scrollHeight } = this.eBodyViewport;\n if (scrollTo < 0 || (scrollTo + clientHeight > scrollHeight)) {\n return true;\n }\n return false;\n }\n shouldBlockHorizontalScroll(scrollTo) {\n const clientWidth = this.centerRowContainerCtrl.getCenterWidth();\n const { scrollWidth } = this.centerRowContainerCtrl.getViewportElement();\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 return false;\n }\n redrawRowsAfterScroll() {\n this.fireScrollEvent(ScrollDirection.Vertical);\n }\n onHorizontalViewportChanged() {\n this.centerRowContainerCtrl.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 checkScrollLeft() {\n if (this.scrollLeft !== this.centerRowContainerCtrl.getCenterViewportScrollLeft()) {\n this.onHScrollCommon(ScrollSource.Container);\n }\n }\n scrollGridIfNeeded() {\n const 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 setHorizontalScrollPosition(hScrollPosition, fromAlignedGridsService = false) {\n const minScrollLeft = 0;\n const maxScrollLeft = this.centerRowContainerCtrl.getViewportElement().scrollWidth - this.centerRowContainerCtrl.getCenterWidth();\n // if this is call is coming from the alignedGridsService, we don't need to validate the\n // scroll, because it has already been validated by the grid firing the scroll event.\n if (!fromAlignedGridsService && this.shouldBlockScrollUpdate(ScrollDirection.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.centerRowContainerCtrl.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 setVerticalScrollPosition(vScrollPosition) {\n this.eBodyViewport.scrollTop = vScrollPosition;\n }\n getVScrollPosition() {\n const result = {\n top: this.eBodyViewport.scrollTop,\n bottom: this.eBodyViewport.scrollTop + this.eBodyViewport.offsetHeight\n };\n return result;\n }\n getHScrollPosition() {\n return this.centerRowContainerCtrl.getHScrollPosition();\n }\n isHorizontalScrollShowing() {\n return this.centerRowContainerCtrl.isHorizontalScrollShowing();\n }\n // called by the headerRootComp and moveColumnController\n scrollHorizontally(pixels) {\n const oldScrollPosition = this.centerRowContainerCtrl.getViewportElement().scrollLeft;\n this.setHorizontalScrollPosition(oldScrollPosition + pixels);\n return this.centerRowContainerCtrl.getViewportElement().scrollLeft - oldScrollPosition;\n }\n // gets called by rowRenderer when new data loaded, as it will want to scroll to the top\n scrollToTop() {\n this.eBodyViewport.scrollTop = 0;\n }\n // Valid values for position are bottom, middle and top\n ensureNodeVisible(comparator, position = null) {\n // look for the node index we want to display\n const rowCount = this.rowModel.getRowCount();\n let indexToSelect = -1;\n // go through all the nodes, find the one we want to show\n for (let i = 0; i < rowCount; i++) {\n const node = this.rowModel.getRow(i);\n if (typeof comparator === 'function') {\n // Have to assert type here, as type could be TData & Function\n const predicate = comparator;\n if (node && predicate(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 ensureIndexVisible(index, position) {\n // if for print or auto height, everything is always visible\n if (this.gridOptionsService.isDomLayout('print')) {\n return;\n }\n const rowCount = this.paginationProxy.getRowCount();\n if (typeof index !== 'number' || index < 0 || index >= rowCount) {\n console.warn('AG Grid: Invalid row index for ensureIndexVisible: ' + index);\n return;\n }\n const isPaging = this.gridOptionsService.is('pagination');\n const paginationPanelEnabled = isPaging && !this.gridOptionsService.is('suppressPaginationPanel');\n if (!paginationPanelEnabled) {\n this.paginationProxy.goToPageWithIndex(index);\n }\n const gridBodyCtrl = this.ctrlsService.getGridBodyCtrl();\n const stickyTopHeight = gridBodyCtrl.getStickyTopHeight();\n const rowNode = this.paginationProxy.getRow(index);\n let rowGotShiftedDuringOperation;\n do {\n const startingRowTop = rowNode.rowTop;\n const startingRowHeight = rowNode.rowHeight;\n const paginationOffset = this.paginationProxy.getPixelOffset();\n const rowTopPixel = rowNode.rowTop - paginationOffset;\n const rowBottomPixel = rowTopPixel + rowNode.rowHeight;\n const scrollPosition = this.getVScrollPosition();\n const heightOffset = this.heightScaler.getDivStretchOffset();\n const vScrollTop = scrollPosition.top + heightOffset;\n const vScrollBottom = scrollPosition.bottom + heightOffset;\n const 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 const pxTop = this.heightScaler.getScrollPositionForPixel(rowTopPixel);\n const pxBottom = this.heightScaler.getScrollPositionForPixel(rowBottomPixel - viewportHeight);\n // make sure if middle, the row is not outside the top of the grid\n const pxMiddle = Math.min((pxTop + pxBottom) / 2, rowTopPixel);\n const rowAboveViewport = (vScrollTop + stickyTopHeight) > rowTopPixel;\n const rowBelowViewport = vScrollBottom < rowBottomPixel;\n let 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 (rowAboveViewport) {\n // if row is before, scroll up with row at top\n newScrollPosition = pxTop - stickyTopHeight;\n }\n else if (rowBelowViewport) {\n // if row is after, scroll down with row at bottom\n newScrollPosition = pxBottom;\n }\n if (newScrollPosition !== null) {\n this.setVerticalScrollPosition(newScrollPosition);\n this.rowRenderer.redraw();\n }\n // the row can get shifted if during the rendering (during rowRenderer.redraw()),\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 ensureColumnVisible(key, position = 'auto') {\n const 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 const newHorizontalScroll = this.getPositionedHorizontalScroll(column, position);\n if (newHorizontalScroll !== null) {\n this.centerRowContainerCtrl.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.centerRowContainerCtrl.onHorizontalViewportChanged();\n // so when we return back to user, the cells have rendered\n this.animationFrameService.flushAllFrames();\n }\n getPositionedHorizontalScroll(column, position) {\n const { columnBeforeStart, columnAfterEnd } = this.isColumnOutsideViewport(column);\n const viewportTooSmallForColumn = this.centerRowContainerCtrl.getCenterWidth() < column.getActualWidth();\n const viewportWidth = this.centerRowContainerCtrl.getCenterWidth();\n const isRtl = this.enableRtl;\n let alignColToStart = (isRtl ? columnBeforeStart : columnAfterEnd) || viewportTooSmallForColumn;\n let alignColToEnd = isRtl ? columnAfterEnd : columnBeforeStart;\n if (position !== 'auto') {\n alignColToStart = position === 'start';\n alignColToEnd = position === 'end';\n }\n const isMiddle = position === 'middle';\n if (alignColToStart || alignColToEnd || isMiddle) {\n const { colLeft, colMiddle, colRight } = this.getColumnBounds(column);\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 isColumnOutsideViewport(column) {\n const { start: viewportStart, end: viewportEnd } = this.getViewportBounds();\n const { colLeft, colRight } = this.getColumnBounds(column);\n const isRtl = this.enableRtl;\n const columnBeforeStart = isRtl ? (viewportStart > colRight) : (viewportEnd < colRight);\n const columnAfterEnd = isRtl ? (viewportEnd < colLeft) : (viewportStart > colLeft);\n return { columnBeforeStart, columnAfterEnd };\n }\n getColumnBounds(column) {\n const isRtl = this.enableRtl;\n const bodyWidth = this.columnModel.getBodyContainerWidth();\n const colWidth = column.getActualWidth();\n const colLeft = column.getLeft();\n const multiplier = isRtl ? -1 : 1;\n const colLeftPixel = isRtl ? (bodyWidth - colLeft) : colLeft;\n const colRightPixel = colLeftPixel + colWidth * multiplier;\n const colMidPixel = colLeftPixel + colWidth / 2 * multiplier;\n return { colLeft: colLeftPixel, colMiddle: colMidPixel, colRight: colRightPixel };\n }\n getViewportBounds() {\n const viewportWidth = this.centerRowContainerCtrl.getCenterWidth();\n const scrollPosition = this.centerRowContainerCtrl.getCenterViewportScrollLeft();\n const viewportStartPixel = scrollPosition;\n const viewportEndPixel = viewportWidth + scrollPosition;\n return { start: viewportStartPixel, end: viewportEndPixel, width: viewportWidth };\n }\n}\n__decorate$1R([\n Autowired('ctrlsService')\n], GridBodyScrollFeature.prototype, \"ctrlsService\", void 0);\n__decorate$1R([\n Autowired('animationFrameService')\n], GridBodyScrollFeature.prototype, \"animationFrameService\", void 0);\n__decorate$1R([\n Autowired('paginationProxy')\n], GridBodyScrollFeature.prototype, \"paginationProxy\", void 0);\n__decorate$1R([\n Autowired('rowModel')\n], GridBodyScrollFeature.prototype, \"rowModel\", void 0);\n__decorate$1R([\n Autowired('rowContainerHeightService')\n], GridBodyScrollFeature.prototype, \"heightScaler\", void 0);\n__decorate$1R([\n Autowired('rowRenderer')\n], GridBodyScrollFeature.prototype, \"rowRenderer\", void 0);\n__decorate$1R([\n Autowired('columnModel')\n], GridBodyScrollFeature.prototype, \"columnModel\", void 0);\n__decorate$1R([\n PostConstruct\n], GridBodyScrollFeature.prototype, \"postConstruct\", null);\n\nclass AutoScrollService {\n constructor(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 || (() => false);\n this.shouldSkipHorizontalScroll = params.shouldSkipHorizontalScroll || (() => false);\n }\n check(mouseEvent, forceSkipVerticalScroll = false) {\n const skipVerticalScroll = forceSkipVerticalScroll || this.shouldSkipVerticalScroll();\n if (skipVerticalScroll && this.shouldSkipHorizontalScroll()) {\n return;\n }\n const rect = this.scrollContainer.getBoundingClientRect();\n const 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 ensureTickingStarted() {\n if (this.tickingInterval === null) {\n this.tickingInterval = window.setInterval(this.doTick.bind(this), 100);\n this.tickCount = 0;\n }\n }\n doTick() {\n this.tickCount++;\n let tickAmount;\n tickAmount = this.tickCount > 20 ? 200 : (this.tickCount > 10 ? 80 : 40);\n if (this.scrollVertically) {\n const 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 const 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 ensureCleared() {\n if (this.tickingInterval) {\n window.clearInterval(this.tickingInterval);\n this.tickingInterval = null;\n }\n }\n}\n\nvar __decorate$1Q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass RowDragFeature extends BeanStub {\n constructor(eContainer) {\n super();\n this.isMultiRowDrag = false;\n this.isGridSorted = false;\n this.isGridFiltered = false;\n this.isRowGroupActive = false;\n this.eContainer = eContainer;\n }\n postConstruct() {\n if (this.gridOptionsService.isRowModelType('clientSide')) {\n this.clientSideRowModel = this.rowModel;\n }\n const refreshStatus = () => {\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, () => {\n refreshStatus();\n });\n refreshStatus();\n this.ctrlsService.whenReady(() => {\n const gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n this.autoScrollService = new AutoScrollService({\n scrollContainer: gridBodyCon.getBodyViewportElement(),\n scrollAxis: 'y',\n getVerticalPosition: () => gridBodyCon.getScrollFeature().getVScrollPosition().top,\n setVerticalPosition: (position) => gridBodyCon.getScrollFeature().setVerticalScrollPosition(position),\n onScrollCallback: () => { this.onDragging(this.lastDraggingEvent); }\n });\n });\n }\n onSortChanged() {\n this.isGridSorted = this.sortController.isSortActive();\n }\n onFilterChanged() {\n this.isGridFiltered = this.filterManager.isAnyFilterPresent();\n }\n onRowGroupChanged() {\n const rowGroups = this.columnModel.getRowGroupColumns();\n this.isRowGroupActive = !missingOrEmpty(rowGroups);\n }\n getContainer() {\n return this.eContainer;\n }\n isInterestedIn(type) {\n return type === DragSourceType.RowDrag;\n }\n getIconName() {\n const managedDrag = this.gridOptionsService.is('rowDragManaged');\n if (managedDrag && this.shouldPreventRowMove()) {\n return DragAndDropService.ICON_NOT_ALLOWED;\n }\n return DragAndDropService.ICON_MOVE;\n }\n shouldPreventRowMove() {\n return this.isGridSorted || this.isGridFiltered || this.isRowGroupActive;\n }\n getRowNodes(draggingEvent) {\n if (!this.isFromThisGrid(draggingEvent)) {\n return (draggingEvent.dragItem.rowNodes || []);\n }\n const isRowDragMultiRow = this.gridOptionsService.is('rowDragMultiRow');\n const selectedNodes = [...this.selectionService.getSelectedNodes()].sort((a, b) => {\n if (a.rowIndex == null || b.rowIndex == null) {\n return 0;\n }\n return this.getRowIndexNumber(a) - this.getRowIndexNumber(b);\n });\n const 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 onDragEnter(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(rowNode => {\n rowNode.setDragging(true);\n });\n this.onEnterOrDragging(draggingEvent);\n }\n onDragging(draggingEvent) {\n this.onEnterOrDragging(draggingEvent);\n }\n isFromThisGrid(draggingEvent) {\n const { dragSourceDomDataKey } = draggingEvent.dragSource;\n return dragSourceDomDataKey === this.gridOptionsService.getDomDataKey();\n }\n isDropZoneWithinThisGrid(draggingEvent) {\n const gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n const gridGui = gridBodyCon.getGui();\n const { dropZoneTarget } = draggingEvent;\n return !gridGui.contains(dropZoneTarget);\n }\n onEnterOrDragging(draggingEvent) {\n // this event is fired for enter and move\n this.dispatchGridEvent(Events.EVENT_ROW_DRAG_MOVE, draggingEvent);\n this.lastDraggingEvent = draggingEvent;\n const pixel = this.mouseEventService.getNormalisedPosition(draggingEvent).y;\n const managedDrag = this.gridOptionsService.is('rowDragManaged');\n if (managedDrag) {\n this.doManagedDrag(draggingEvent, pixel);\n }\n this.autoScrollService.check(draggingEvent.event);\n }\n doManagedDrag(draggingEvent, pixel) {\n const isFromThisGrid = this.isFromThisGrid(draggingEvent);\n const managedDrag = this.gridOptionsService.is('rowDragManaged');\n const rowNodes = draggingEvent.dragItem.rowNodes;\n if (managedDrag && this.shouldPreventRowMove()) {\n return;\n }\n if (this.gridOptionsService.is('suppressMoveWhenRowDragging') || !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 getRowIndexNumber(rowNode) {\n return parseInt(last(rowNode.getRowIndexString().split('-')), 10);\n }\n moveRowAndClearHighlight(draggingEvent) {\n const lastHighlightedRowNode = this.clientSideRowModel.getLastHighlightedRowNode();\n const isBelow = lastHighlightedRowNode && lastHighlightedRowNode.highlighted === RowHighlightPosition.Below;\n const pixel = this.mouseEventService.getNormalisedPosition(draggingEvent).y;\n const rowNodes = draggingEvent.dragItem.rowNodes;\n let increment = isBelow ? 1 : 0;\n if (this.isFromThisGrid(draggingEvent)) {\n rowNodes.forEach(rowNode => {\n if (rowNode.rowTop < pixel) {\n increment -= 1;\n }\n });\n this.moveRows(rowNodes, pixel, increment);\n }\n else {\n const getRowIdFunc = this.gridOptionsService.getCallback('getRowId');\n let 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(node => node.data)\n .filter(data => !this.clientSideRowModel.getRowNode(getRowIdFunc ? getRowIdFunc({ data, level: 0 }) : data.id)),\n addIndex\n });\n }\n this.clearRowHighlight();\n }\n clearRowHighlight() {\n this.clientSideRowModel.highlightRowAtPixel(null);\n }\n moveRows(rowNodes, pixel, increment = 0) {\n const 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 addRowDropZone(params) {\n if (!params.getContainer()) {\n doOnce(() => 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 let 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 = (e) => {\n params.onDragEnter(this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_ENTER, e));\n };\n }\n if (params.onDragLeave) {\n processedParams.onDragLeave = (e) => {\n params.onDragLeave(this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_LEAVE, e));\n };\n }\n if (params.onDragging) {\n processedParams.onDragging = (e) => {\n params.onDragging(this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_MOVE, e));\n };\n }\n if (params.onDragStop) {\n processedParams.onDragStop = (e) => {\n params.onDragStop(this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_END, e));\n };\n }\n }\n this.dragAndDropService.addDropTarget(Object.assign({ isInterestedIn: (type) => type === DragSourceType.RowDrag, getIconName: () => DragAndDropService.ICON_MOVE, external: true }, processedParams));\n }\n getRowDropZone(events) {\n const getContainer = this.getContainer.bind(this);\n const onDragEnter = this.onDragEnter.bind(this);\n const onDragLeave = this.onDragLeave.bind(this);\n const onDragging = this.onDragging.bind(this);\n const onDragStop = this.onDragStop.bind(this);\n if (!events) {\n return { getContainer, onDragEnter, onDragLeave, onDragging, onDragStop, /* @private */ fromGrid: true };\n }\n return {\n getContainer,\n onDragEnter: events.onDragEnter\n ? ((e) => {\n onDragEnter(e);\n events.onDragEnter(this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_ENTER, e));\n })\n : onDragEnter,\n onDragLeave: events.onDragLeave\n ? ((e) => {\n onDragLeave(e);\n events.onDragLeave(this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_LEAVE, e));\n })\n : onDragLeave,\n onDragging: events.onDragging\n ? ((e) => {\n onDragging(e);\n events.onDragging(this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_MOVE, e));\n })\n : onDragging,\n onDragStop: events.onDragStop\n ? ((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 draggingToRowDragEvent(type, draggingEvent) {\n const yNormalised = this.mouseEventService.getNormalisedPosition(draggingEvent).y;\n const mouseIsPastLastRow = yNormalised > this.paginationProxy.getCurrentPageHeight();\n let overIndex = -1;\n let overNode;\n if (!mouseIsPastLastRow) {\n overIndex = this.rowModel.getRowIndexAtPixel(yNormalised);\n overNode = this.rowModel.getRow(overIndex);\n }\n let 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 const event = {\n type: type,\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context,\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 dispatchGridEvent(type, draggingEvent) {\n const event = this.draggingToRowDragEvent(type, draggingEvent);\n this.eventService.dispatchEvent(event);\n }\n onDragLeave(draggingEvent) {\n this.dispatchGridEvent(Events.EVENT_ROW_DRAG_LEAVE, draggingEvent);\n this.stopDragging(draggingEvent);\n if (this.gridOptionsService.is('rowDragManaged')) {\n this.clearRowHighlight();\n }\n if (this.isFromThisGrid(draggingEvent)) {\n this.isMultiRowDrag = false;\n }\n }\n onDragStop(draggingEvent) {\n this.dispatchGridEvent(Events.EVENT_ROW_DRAG_END, draggingEvent);\n this.stopDragging(draggingEvent);\n if (this.gridOptionsService.is('rowDragManaged') &&\n (this.gridOptionsService.is('suppressMoveWhenRowDragging') || !this.isFromThisGrid(draggingEvent)) &&\n !this.isDropZoneWithinThisGrid(draggingEvent)) {\n this.moveRowAndClearHighlight(draggingEvent);\n }\n }\n stopDragging(draggingEvent) {\n this.autoScrollService.ensureCleared();\n this.getRowNodes(draggingEvent).forEach(rowNode => {\n rowNode.setDragging(false);\n });\n }\n}\n__decorate$1Q([\n Autowired('dragAndDropService')\n], RowDragFeature.prototype, \"dragAndDropService\", void 0);\n__decorate$1Q([\n Autowired('rowModel')\n], RowDragFeature.prototype, \"rowModel\", void 0);\n__decorate$1Q([\n Autowired('paginationProxy')\n], RowDragFeature.prototype, \"paginationProxy\", void 0);\n__decorate$1Q([\n Autowired('columnModel')\n], RowDragFeature.prototype, \"columnModel\", void 0);\n__decorate$1Q([\n Autowired('focusService')\n], RowDragFeature.prototype, \"focusService\", void 0);\n__decorate$1Q([\n Autowired('sortController')\n], RowDragFeature.prototype, \"sortController\", void 0);\n__decorate$1Q([\n Autowired('filterManager')\n], RowDragFeature.prototype, \"filterManager\", void 0);\n__decorate$1Q([\n Autowired('selectionService')\n], RowDragFeature.prototype, \"selectionService\", void 0);\n__decorate$1Q([\n Autowired('mouseEventService')\n], RowDragFeature.prototype, \"mouseEventService\", void 0);\n__decorate$1Q([\n Autowired('ctrlsService')\n], RowDragFeature.prototype, \"ctrlsService\", void 0);\n__decorate$1Q([\n Optional('rangeService')\n], RowDragFeature.prototype, \"rangeService\", void 0);\n__decorate$1Q([\n PostConstruct\n], RowDragFeature.prototype, \"postConstruct\", null);\n\nvar __decorate$1P = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 RowAnimationCssClasses;\n(function (RowAnimationCssClasses) {\n RowAnimationCssClasses[\"ANIMATION_ON\"] = \"ag-row-animation\";\n RowAnimationCssClasses[\"ANIMATION_OFF\"] = \"ag-row-no-animation\";\n})(RowAnimationCssClasses || (RowAnimationCssClasses = {}));\nconst CSS_CLASS_FORCE_VERTICAL_SCROLL = 'ag-force-vertical-scroll';\nconst CSS_CLASS_CELL_SELECTABLE = 'ag-selectable';\nconst CSS_CLASS_COLUMN_MOVING = 'ag-column-moving';\nclass GridBodyCtrl extends BeanStub {\n constructor() {\n super(...arguments);\n this.stickyTopHeight = 0;\n }\n getScrollFeature() {\n return this.bodyScrollFeature;\n }\n getBodyViewportElement() {\n return this.eBodyViewport;\n }\n setComp(comp, eGridBody, eBodyViewport, eTop, eBottom, eStickyTop) {\n this.comp = comp;\n this.eGridBody = eGridBody;\n this.eBodyViewport = eBodyViewport;\n this.eTop = eTop;\n this.eBottom = eBottom;\n this.eStickyTop = eStickyTop;\n this.setCellTextSelection(this.gridOptionsService.is('enableCellTextSelection'));\n this.createManagedBean(new LayoutFeature(this.comp));\n this.bodyScrollFeature = this.createManagedBean(new GridBodyScrollFeature(this.eBodyViewport));\n this.addRowDragListener();\n this.setupRowAnimationCssClass();\n this.addEventListeners();\n this.addFocusListeners([eTop, eBodyViewport, eBottom, eStickyTop]);\n this.onGridColumnsChanged();\n this.addBodyViewportListener();\n this.setFloatingHeights();\n this.disableBrowserDragging();\n this.addStopEditingWhenGridLosesFocus();\n this.ctrlsService.registerGridBodyCtrl(this);\n }\n getComp() {\n return this.comp;\n }\n addEventListeners() {\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.onPinnedRowDataChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_HEADER_HEIGHT_CHANGED, this.onHeaderHeightChanged.bind(this));\n }\n addFocusListeners(elements) {\n elements.forEach(element => {\n this.addManagedListener(element, 'focusin', (e) => {\n const { target } = e;\n // element being focused is nested?\n const isFocusedElementNested = isElementChildOfClass(target, 'ag-root', element);\n element.classList.toggle('ag-has-focus', !isFocusedElementNested);\n });\n this.addManagedListener(element, 'focusout', (e) => {\n const { target, relatedTarget } = e;\n const gridContainRelatedTarget = element.contains(relatedTarget);\n const isNestedRelatedTarget = isElementChildOfClass(relatedTarget, 'ag-root', element);\n const isNestedTarget = isElementChildOfClass(target, 'ag-root', element);\n // element losing focus belongs to a nested grid,\n // it should not be handled here.\n if (isNestedTarget) {\n return;\n }\n // the grid does not contain, or the focus element is within\n // a nested grid\n if (!gridContainRelatedTarget || isNestedRelatedTarget) {\n element.classList.remove('ag-has-focus');\n }\n });\n });\n }\n // used by ColumnAnimationService\n setColumnMovingCss(moving) {\n this.comp.setColumnMovingCss(CSS_CLASS_COLUMN_MOVING, moving);\n }\n setCellTextSelection(selectable = false) {\n this.comp.setCellSelectableCss(CSS_CLASS_CELL_SELECTABLE, selectable);\n }\n onScrollVisibilityChanged() {\n const visible = this.scrollVisibleService.isVerticalScrollShowing();\n this.setVerticalScrollPaddingVisible(visible);\n this.setStickyTopWidth(visible);\n const scrollbarWidth = visible ? (this.gridOptionsService.getScrollbarWidth() || 0) : 0;\n const pad = isInvisibleScrollbar() ? 16 : 0;\n const width = `calc(100% + ${scrollbarWidth + pad}px)`;\n this.animationFrameService.requestAnimationFrame(() => this.comp.setBodyViewportWidth(width));\n }\n onGridColumnsChanged() {\n const 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 disableBrowserDragging() {\n this.addManagedListener(this.eGridBody, 'dragstart', (event) => {\n if (event.target instanceof HTMLImageElement) {\n event.preventDefault();\n return false;\n }\n });\n }\n addStopEditingWhenGridLosesFocus() {\n if (!this.gridOptionsService.is('stopEditingWhenCellsLoseFocus')) {\n return;\n }\n const focusOutListener = (event) => {\n // this is the element the focus is moving to\n const elementWithFocus = event.relatedTarget;\n if (getTabIndex(elementWithFocus) === null) {\n this.rowRenderer.stopEditing();\n return;\n }\n let clickInsideGrid = \n // see if click came from inside the viewports\n viewports.some(viewport => viewport.contains(elementWithFocus))\n // and also that it's not from a detail grid\n && this.mouseEventService.isElementInThisGrid(elementWithFocus);\n if (!clickInsideGrid) {\n const popupService = this.popupService;\n clickInsideGrid =\n popupService.getActivePopups().some(popup => popup.contains(elementWithFocus)) ||\n popupService.isElementWithinCustomPopup(elementWithFocus);\n }\n if (!clickInsideGrid) {\n this.rowRenderer.stopEditing();\n }\n };\n const viewports = [this.eBodyViewport, this.eBottom, this.eTop, this.eStickyTop];\n viewports.forEach(viewport => this.addManagedListener(viewport, 'focusout', focusOutListener));\n }\n updateRowCount() {\n const headerCount = this.headerNavigationService.getHeaderRowCount();\n const rowCount = this.rowModel.isLastRowIndexKnown() ? this.rowModel.getRowCount() : -1;\n const total = rowCount === -1 ? -1 : (headerCount + rowCount);\n this.comp.setRowCount(total);\n }\n registerBodyViewportResizeListener(listener) {\n this.comp.registerBodyViewportResizeListener(listener);\n }\n setVerticalScrollPaddingVisible(visible) {\n const overflowY = visible ? 'scroll' : 'hidden';\n this.comp.setPinnedTopBottomOverflowY(overflowY);\n }\n isVerticalScrollShowing() {\n const show = this.gridOptionsService.is('alwaysShowVerticalScroll');\n const cssClass = show ? CSS_CLASS_FORCE_VERTICAL_SCROLL : null;\n const allowVerticalScroll = this.gridOptionsService.isDomLayout('normal');\n this.comp.setAlwaysVerticalScrollClass(cssClass, show);\n return show || (allowVerticalScroll && isVerticalScrollShowing(this.eBodyViewport));\n }\n setupRowAnimationCssClass() {\n const listener = () => {\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 const animateRows = this.gridOptionsService.isAnimateRows() && !this.rowContainerHeightService.isStretching();\n const 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 this.addManagedPropertyListener('animateRows', listener);\n }\n getGridBodyElement() {\n return this.eGridBody;\n }\n addBodyViewportListener() {\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 const listener = this.onBodyViewportContextMenu.bind(this);\n this.addManagedListener(this.eBodyViewport, 'contextmenu', listener);\n this.mockContextMenuForIPad(listener);\n this.addManagedListener(this.eBodyViewport, 'wheel', this.onBodyViewportWheel.bind(this));\n this.addManagedListener(this.eStickyTop, 'wheel', this.onStickyTopWheel.bind(this));\n // allow mouseWheel on the Full Width Container to Scroll the Viewport\n this.addFullWidthContainerWheelListener();\n }\n addFullWidthContainerWheelListener() {\n const fullWidthContainer = this.eBodyViewport.querySelector('.ag-full-width-container');\n const eCenterColsViewport = this.eBodyViewport.querySelector('.ag-center-cols-viewport');\n if (fullWidthContainer && eCenterColsViewport) {\n this.addManagedListener(fullWidthContainer, 'wheel', (e) => this.onFullWidthContainerWheel(e, eCenterColsViewport));\n }\n }\n onFullWidthContainerWheel(e, eCenterColsViewport) {\n if (!e.deltaX ||\n Math.abs(e.deltaY) > Math.abs(e.deltaX) ||\n !this.mouseEventService.isEventFromThisGrid(e)) {\n return;\n }\n e.preventDefault();\n eCenterColsViewport.scrollBy({ left: e.deltaX });\n }\n onBodyViewportContextMenu(mouseEvent, touch, touchEvent) {\n if (!mouseEvent && !touchEvent) {\n return;\n }\n if (this.gridOptionsService.is('preventDefaultOnContextMenu')) {\n const event = (mouseEvent || touchEvent);\n event.preventDefault();\n }\n const { target } = (mouseEvent || touch);\n if (target === this.eBodyViewport || target === this.ctrlsService.getCenterRowContainerCtrl().getViewportElement()) {\n // show it\n if (!this.contextMenuFactory) {\n return;\n }\n if (mouseEvent) {\n this.contextMenuFactory.onContextMenu(mouseEvent, null, null, null, null, this.eGridBody);\n }\n else if (touchEvent) {\n this.contextMenuFactory.onContextMenu(null, touchEvent, null, null, null, this.eGridBody);\n }\n }\n }\n mockContextMenuForIPad(listener) {\n // we do NOT want this when not in iPad\n if (!isIOSUserAgent()) {\n return;\n }\n const touchListener = new TouchListener(this.eBodyViewport);\n const longTapListener = (event) => {\n listener(undefined, event.touchStart, event.touchEvent);\n };\n this.addManagedListener(touchListener, TouchListener.EVENT_LONG_TAP, longTapListener);\n this.addDestroyFunc(() => touchListener.destroy());\n }\n onBodyViewportWheel(e) {\n if (!this.gridOptionsService.is('suppressScrollWhenPopupsAreOpen')) {\n return;\n }\n if (this.popupService.hasAnchoredPopup()) {\n e.preventDefault();\n }\n }\n onStickyTopWheel(e) {\n e.preventDefault();\n if (e.offsetY) {\n this.scrollVertically(e.deltaY);\n }\n }\n getGui() {\n return this.eGridBody;\n }\n // called by rowDragFeature\n scrollVertically(pixels) {\n const oldScrollPosition = this.eBodyViewport.scrollTop;\n this.bodyScrollFeature.setVerticalScrollPosition(oldScrollPosition + pixels);\n return this.eBodyViewport.scrollTop - oldScrollPosition;\n }\n addRowDragListener() {\n this.rowDragFeature = this.createManagedBean(new RowDragFeature(this.eBodyViewport));\n this.dragAndDropService.addDropTarget(this.rowDragFeature);\n }\n getRowDragFeature() {\n return this.rowDragFeature;\n }\n onPinnedRowDataChanged() {\n this.setFloatingHeights();\n }\n setFloatingHeights() {\n const { pinnedRowModel } = this;\n let floatingTopHeight = pinnedRowModel.getPinnedTopTotalHeight();\n if (floatingTopHeight) {\n // adding 1px for cell bottom border\n floatingTopHeight += 1;\n }\n let 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 this.setStickyTopOffsetTop();\n }\n setStickyTopHeight(height = 0) {\n // console.log('setting sticky top height ' + height);\n this.comp.setStickyTopHeight(`${height}px`);\n this.stickyTopHeight = height;\n }\n getStickyTopHeight() {\n return this.stickyTopHeight;\n }\n setStickyTopWidth(vScrollVisible) {\n if (!vScrollVisible) {\n this.comp.setStickyTopWidth('100%');\n }\n else {\n const scrollbarWidth = this.gridOptionsService.getScrollbarWidth();\n this.comp.setStickyTopWidth(`calc(100% - ${scrollbarWidth}px)`);\n }\n }\n onHeaderHeightChanged() {\n this.setStickyTopOffsetTop();\n }\n setStickyTopOffsetTop() {\n const headerCtrl = this.ctrlsService.getGridHeaderCtrl();\n const headerHeight = headerCtrl.getHeaderHeight();\n const pinnedTopHeight = this.pinnedRowModel.getPinnedTopTotalHeight();\n let height = 0;\n if (headerHeight > 0) {\n height += headerHeight + 1;\n }\n if (pinnedTopHeight > 0) {\n height += pinnedTopHeight + 1;\n }\n this.comp.setStickyTopTop(`${height}px`);\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 sizeColumnsToFit(params, nextTimeout) {\n const removeScrollWidth = this.isVerticalScrollShowing();\n const scrollWidthToRemove = removeScrollWidth ? this.gridOptionsService.getScrollbarWidth() : 0;\n // bodyViewportWidth should be calculated from eGridBody, not eBodyViewport\n // because we change the width of the bodyViewport to hide the real browser scrollbar\n const bodyViewportWidth = getInnerWidth(this.eGridBody);\n const availableWidth = bodyViewportWidth - scrollWidthToRemove;\n if (availableWidth > 0) {\n this.columnModel.sizeColumnsToFit(availableWidth, \"sizeColumnsToFit\", false, params);\n return;\n }\n if (nextTimeout === undefined) {\n window.setTimeout(() => {\n this.sizeColumnsToFit(params, 100);\n }, 0);\n }\n else if (nextTimeout === 100) {\n window.setTimeout(() => {\n this.sizeColumnsToFit(params, 500);\n }, 100);\n }\n else if (nextTimeout === 500) {\n window.setTimeout(() => {\n this.sizeColumnsToFit(params, -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 addScrollEventListener(listener) {\n this.eBodyViewport.addEventListener('scroll', listener, { passive: true });\n }\n // + focusService\n removeScrollEventListener(listener) {\n this.eBodyViewport.removeEventListener('scroll', listener);\n }\n}\n__decorate$1P([\n Autowired('animationFrameService')\n], GridBodyCtrl.prototype, \"animationFrameService\", void 0);\n__decorate$1P([\n Autowired('rowContainerHeightService')\n], GridBodyCtrl.prototype, \"rowContainerHeightService\", void 0);\n__decorate$1P([\n Autowired('ctrlsService')\n], GridBodyCtrl.prototype, \"ctrlsService\", void 0);\n__decorate$1P([\n Autowired('columnModel')\n], GridBodyCtrl.prototype, \"columnModel\", void 0);\n__decorate$1P([\n Autowired('scrollVisibleService')\n], GridBodyCtrl.prototype, \"scrollVisibleService\", void 0);\n__decorate$1P([\n Optional('contextMenuFactory')\n], GridBodyCtrl.prototype, \"contextMenuFactory\", void 0);\n__decorate$1P([\n Autowired('headerNavigationService')\n], GridBodyCtrl.prototype, \"headerNavigationService\", void 0);\n__decorate$1P([\n Autowired('dragAndDropService')\n], GridBodyCtrl.prototype, \"dragAndDropService\", void 0);\n__decorate$1P([\n Autowired('pinnedRowModel')\n], GridBodyCtrl.prototype, \"pinnedRowModel\", void 0);\n__decorate$1P([\n Autowired('rowRenderer')\n], GridBodyCtrl.prototype, \"rowRenderer\", void 0);\n__decorate$1P([\n Autowired('popupService')\n], GridBodyCtrl.prototype, \"popupService\", void 0);\n__decorate$1P([\n Autowired('mouseEventService')\n], GridBodyCtrl.prototype, \"mouseEventService\", void 0);\n__decorate$1P([\n Autowired('rowModel')\n], GridBodyCtrl.prototype, \"rowModel\", void 0);\n\nvar SelectionHandleType;\n(function (SelectionHandleType) {\n SelectionHandleType[SelectionHandleType[\"FILL\"] = 0] = \"FILL\";\n SelectionHandleType[SelectionHandleType[\"RANGE\"] = 1] = \"RANGE\";\n})(SelectionHandleType || (SelectionHandleType = {}));\nvar CellRangeType;\n(function (CellRangeType) {\n CellRangeType[CellRangeType[\"VALUE\"] = 0] = \"VALUE\";\n CellRangeType[CellRangeType[\"DIMENSION\"] = 1] = \"DIMENSION\";\n})(CellRangeType || (CellRangeType = {}));\n\nconst CSS_CELL_RANGE_SELECTED = 'ag-cell-range-selected';\nconst CSS_CELL_RANGE_CHART = 'ag-cell-range-chart';\nconst CSS_CELL_RANGE_SINGLE_CELL = 'ag-cell-range-single-cell';\nconst CSS_CELL_RANGE_CHART_CATEGORY = 'ag-cell-range-chart-category';\nconst CSS_CELL_RANGE_HANDLE = 'ag-cell-range-handle';\nconst CSS_CELL_RANGE_TOP = 'ag-cell-range-top';\nconst CSS_CELL_RANGE_RIGHT = 'ag-cell-range-right';\nconst CSS_CELL_RANGE_BOTTOM = 'ag-cell-range-bottom';\nconst CSS_CELL_RANGE_LEFT = 'ag-cell-range-left';\nclass CellRangeFeature {\n constructor(beans, ctrl) {\n this.beans = beans;\n this.cellCtrl = ctrl;\n }\n setComp(cellComp, eGui) {\n this.cellComp = cellComp;\n this.eGui = eGui;\n this.onRangeSelectionChanged();\n }\n onRangeSelectionChanged() {\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 updateRangeBorders() {\n const rangeBorders = this.getRangeBorders();\n const isSingleCell = this.isSingleCell();\n const isTop = !isSingleCell && rangeBorders.top;\n const isRight = !isSingleCell && rangeBorders.right;\n const isBottom = !isSingleCell && rangeBorders.bottom;\n const 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 isSingleCell() {\n const { rangeService } = this.beans;\n return this.rangeCount === 1 && rangeService && !rangeService.isMoreThanOneCell();\n }\n getHasChartRange() {\n const { rangeService } = this.beans;\n if (!this.rangeCount || !rangeService) {\n return false;\n }\n const cellRanges = rangeService.getCellRanges();\n return cellRanges.length > 0 && cellRanges.every(range => includes([CellRangeType.DIMENSION, CellRangeType.VALUE], range.type));\n }\n updateRangeBordersIfRangeCount() {\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 getRangeBorders() {\n const isRtl = this.beans.gridOptionsService.is('enableRtl');\n let top = false;\n let right = false;\n let bottom = false;\n let left = false;\n const thisCol = this.cellCtrl.getCellPosition().column;\n const { rangeService, columnModel } = this.beans;\n let leftCol;\n let 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 const ranges = rangeService.getCellRanges().filter(range => 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 (let i = 0; i < ranges.length; i++) {\n if (top && right && bottom && left) {\n break;\n }\n const range = ranges[i];\n const startRow = rangeService.getRangeStartRow(range);\n const 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, right, bottom, left };\n }\n refreshHandle() {\n if (!this.beans.rangeService) {\n return;\n }\n const 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 shouldHaveSelectionHandle() {\n const { gridOptionsService, rangeService } = this.beans;\n const cellRanges = rangeService.getCellRanges();\n const rangesLen = cellRanges.length;\n if (this.rangeCount < 1 || rangesLen < 1) {\n return false;\n }\n const cellRange = last(cellRanges);\n const cellPosition = this.cellCtrl.getCellPosition();\n const isFillHandleAvailable = gridOptionsService.is('enableFillHandle') && !this.cellCtrl.isSuppressFillHandle();\n const isRangeHandleAvailable = gridOptionsService.is('enableRangeHandle');\n let handleIsAvailable = rangesLen === 1 && !this.cellCtrl.isEditing() && (isFillHandleAvailable || isRangeHandleAvailable);\n if (this.hasChartRange) {\n const hasCategoryRange = cellRanges[0].type === CellRangeType.DIMENSION;\n const 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 addSelectionHandle() {\n const { gridOptionsService, rangeService } = this.beans;\n const cellRangeType = last(rangeService.getCellRanges()).type;\n const selectionHandleFill = gridOptionsService.is('enableFillHandle') && missing(cellRangeType);\n const 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 destroy() {\n this.beans.context.destroyBean(this.selectionHandle);\n }\n}\n\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 */\nclass CellPositionFeature extends BeanStub {\n constructor(ctrl, beans) {\n super();\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 }\n setupRowSpan() {\n this.rowSpan = this.column.getRowSpan(this.rowNode);\n }\n setComp(eGui) {\n this.eGui = eGui;\n this.onLeftChanged();\n this.onWidthChanged();\n this.applyRowSpan();\n }\n onDisplayColumnsChanged() {\n const 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 setupColSpan() {\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 onWidthChanged() {\n if (!this.eGui) {\n return;\n }\n const width = this.getCellWidth();\n this.eGui.style.width = `${width}px`;\n }\n getCellWidth() {\n if (!this.colsSpanning) {\n return this.column.getActualWidth();\n }\n return this.colsSpanning.reduce((width, col) => width + col.getActualWidth(), 0);\n }\n getColSpanningList() {\n const colSpan = this.column.getColSpan(this.rowNode);\n const 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 let pointer = this.column;\n const pinned = this.column.getPinned();\n for (let 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 onLeftChanged() {\n if (!this.eGui) {\n return;\n }\n const left = this.modifyLeftForPrintLayout(this.getCellLeft());\n this.eGui.style.left = left + 'px';\n }\n getCellLeft() {\n let mostLeftCol;\n if (this.beans.gridOptionsService.is('enableRtl') && this.colsSpanning) {\n mostLeftCol = last(this.colsSpanning);\n }\n else {\n mostLeftCol = this.column;\n }\n return mostLeftCol.getLeft();\n }\n modifyLeftForPrintLayout(leftPosition) {\n if (!this.cellCtrl.isPrintLayout() || this.column.getPinned() === 'left') {\n return leftPosition;\n }\n const leftWidth = this.beans.columnModel.getDisplayedColumnsLeftWidth();\n if (this.column.getPinned() === 'right') {\n const bodyWidth = this.beans.columnModel.getBodyContainerWidth();\n return leftWidth + bodyWidth + (leftPosition || 0);\n }\n // is in body\n return leftWidth + (leftPosition || 0);\n }\n applyRowSpan() {\n if (this.rowSpan === 1) {\n return;\n }\n const singleRowHeight = this.beans.gridOptionsService.getRowHeightAsNumber();\n const 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 destroy() {\n super.destroy();\n }\n}\n\nclass CellCustomStyleFeature extends BeanStub {\n constructor(ctrl, beans) {\n super();\n this.staticClasses = [];\n this.cellCtrl = ctrl;\n this.beans = beans;\n this.column = ctrl.getColumn();\n this.rowNode = ctrl.getRowNode();\n }\n setComp(comp) {\n this.cellComp = comp;\n this.applyUserStyles();\n this.applyCellClassRules();\n this.applyClassesFromColDef();\n }\n applyCellClassRules() {\n const colDef = this.column.getColDef();\n const cellClassParams = {\n value: this.cellCtrl.getValue(),\n data: this.rowNode.data,\n node: this.rowNode,\n colDef: colDef,\n column: this.column,\n rowIndex: this.rowNode.rowIndex,\n api: this.beans.gridOptionsService.api,\n columnApi: this.beans.gridOptionsService.columnApi,\n context: this.beans.gridOptionsService.context\n };\n this.beans.stylingService.processClassRules(colDef.cellClassRules, cellClassParams, className => this.cellComp.addOrRemoveCssClass(className, true), className => this.cellComp.addOrRemoveCssClass(className, false));\n }\n applyUserStyles() {\n const colDef = this.column.getColDef();\n if (!colDef.cellStyle) {\n return;\n }\n let styles;\n if (typeof colDef.cellStyle === 'function') {\n const 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 api: this.beans.gridOptionsService.api,\n columnApi: this.beans.gridOptionsService.columnApi,\n context: this.beans.gridOptionsService.context,\n };\n const cellStyleFunc = colDef.cellStyle;\n styles = cellStyleFunc(cellStyleParams);\n }\n else {\n styles = colDef.cellStyle;\n }\n if (styles) {\n this.cellComp.setUserStyles(styles);\n }\n }\n applyClassesFromColDef() {\n const colDef = this.column.getColDef();\n const cellClassParams = {\n value: this.cellCtrl.getValue(),\n data: this.rowNode.data,\n node: this.rowNode,\n column: this.column,\n colDef: colDef,\n rowIndex: this.rowNode.rowIndex,\n api: this.beans.gridOptionsService.api,\n columnApi: this.beans.gridOptionsService.columnApi,\n context: this.beans.gridOptionsService.context\n };\n if (this.staticClasses.length) {\n this.staticClasses.forEach(className => this.cellComp.addOrRemoveCssClass(className, false));\n }\n this.staticClasses = this.beans.stylingService.getStaticCellClasses(colDef, cellClassParams);\n if (this.staticClasses.length) {\n this.staticClasses.forEach(className => this.cellComp.addOrRemoveCssClass(className, true));\n }\n }\n // overriding to make public, as we don't dispose this bean via context\n destroy() {\n super.destroy();\n }\n}\n\nclass TooltipFeature extends BeanStub {\n constructor(ctrl, beans) {\n super();\n this.ctrl = ctrl;\n this.beans = beans;\n }\n setComp(comp) {\n this.comp = comp;\n this.setupTooltip();\n }\n setupTooltip() {\n this.browserTooltips = this.beans.gridOptionsService.is('enableBrowserTooltips');\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 updateTooltipText() {\n this.tooltip = this.ctrl.getTooltipValue();\n }\n createTooltipFeatureIfNeeded() {\n if (this.genericTooltipFeature != null) {\n return;\n }\n const parent = {\n getTooltipParams: () => this.getTooltipParams(),\n getGui: () => this.ctrl.getGui()\n };\n this.genericTooltipFeature = this.createManagedBean(new CustomTooltipFeature(parent), this.beans.context);\n }\n refreshToolTip() {\n this.updateTooltipText();\n if (this.browserTooltips) {\n this.comp.setTitle(this.tooltip != null ? this.tooltip : undefined);\n }\n }\n getTooltipParams() {\n const ctrl = this.ctrl;\n const column = ctrl.getColumn ? ctrl.getColumn() : undefined;\n const colDef = ctrl.getColDef ? ctrl.getColDef() : undefined;\n const 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 getTooltipText() {\n return this.tooltip;\n }\n // overriding to make public, as we don't dispose this bean via context\n destroy() {\n super.destroy();\n }\n}\n\nvar __decorate$1O = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/** 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. */\nlet Beans = class Beans {\n postConstruct() {\n this.doingMasterDetail = this.gridOptionsService.isMasterDetail();\n if (this.gridOptionsService.isRowModelType('clientSide')) {\n this.clientSideRowModel = this.rowModel;\n }\n if (this.gridOptionsService.isRowModelType('serverSide')) {\n this.serverSideRowModel = this.rowModel;\n }\n }\n};\n__decorate$1O([\n Autowired('resizeObserverService')\n], Beans.prototype, \"resizeObserverService\", void 0);\n__decorate$1O([\n Autowired('paginationProxy')\n], Beans.prototype, \"paginationProxy\", void 0);\n__decorate$1O([\n Autowired('context')\n], Beans.prototype, \"context\", void 0);\n__decorate$1O([\n Autowired('columnApi')\n], Beans.prototype, \"columnApi\", void 0);\n__decorate$1O([\n Autowired('gridApi')\n], Beans.prototype, \"gridApi\", void 0);\n__decorate$1O([\n Autowired('gridOptionsService')\n], Beans.prototype, \"gridOptionsService\", void 0);\n__decorate$1O([\n Autowired('expressionService')\n], Beans.prototype, \"expressionService\", void 0);\n__decorate$1O([\n Autowired('environment')\n], Beans.prototype, \"environment\", void 0);\n__decorate$1O([\n Autowired('rowRenderer')\n], Beans.prototype, \"rowRenderer\", void 0);\n__decorate$1O([\n Autowired('templateService')\n], Beans.prototype, \"templateService\", void 0);\n__decorate$1O([\n Autowired('valueService')\n], Beans.prototype, \"valueService\", void 0);\n__decorate$1O([\n Autowired('eventService')\n], Beans.prototype, \"eventService\", void 0);\n__decorate$1O([\n Autowired('columnModel')\n], Beans.prototype, \"columnModel\", void 0);\n__decorate$1O([\n Autowired('headerNavigationService')\n], Beans.prototype, \"headerNavigationService\", void 0);\n__decorate$1O([\n Autowired('navigationService')\n], Beans.prototype, \"navigationService\", void 0);\n__decorate$1O([\n Autowired('columnAnimationService')\n], Beans.prototype, \"columnAnimationService\", void 0);\n__decorate$1O([\n Optional('rangeService')\n], Beans.prototype, \"rangeService\", void 0);\n__decorate$1O([\n Autowired('focusService')\n], Beans.prototype, \"focusService\", void 0);\n__decorate$1O([\n Optional('contextMenuFactory')\n], Beans.prototype, \"contextMenuFactory\", void 0);\n__decorate$1O([\n Autowired('popupService')\n], Beans.prototype, \"popupService\", void 0);\n__decorate$1O([\n Autowired('valueFormatterService')\n], Beans.prototype, \"valueFormatterService\", void 0);\n__decorate$1O([\n Autowired('stylingService')\n], Beans.prototype, \"stylingService\", void 0);\n__decorate$1O([\n Autowired('columnHoverService')\n], Beans.prototype, \"columnHoverService\", void 0);\n__decorate$1O([\n Autowired('userComponentFactory')\n], Beans.prototype, \"userComponentFactory\", void 0);\n__decorate$1O([\n Autowired('userComponentRegistry')\n], Beans.prototype, \"userComponentRegistry\", void 0);\n__decorate$1O([\n Autowired('animationFrameService')\n], Beans.prototype, \"animationFrameService\", void 0);\n__decorate$1O([\n Autowired('dragService')\n], Beans.prototype, \"dragService\", void 0);\n__decorate$1O([\n Autowired('dragAndDropService')\n], Beans.prototype, \"dragAndDropService\", void 0);\n__decorate$1O([\n Autowired('sortController')\n], Beans.prototype, \"sortController\", void 0);\n__decorate$1O([\n Autowired('filterManager')\n], Beans.prototype, \"filterManager\", void 0);\n__decorate$1O([\n Autowired('rowContainerHeightService')\n], Beans.prototype, \"rowContainerHeightService\", void 0);\n__decorate$1O([\n Autowired('frameworkOverrides')\n], Beans.prototype, \"frameworkOverrides\", void 0);\n__decorate$1O([\n Autowired('cellPositionUtils')\n], Beans.prototype, \"cellPositionUtils\", void 0);\n__decorate$1O([\n Autowired('rowPositionUtils')\n], Beans.prototype, \"rowPositionUtils\", void 0);\n__decorate$1O([\n Autowired('selectionService')\n], Beans.prototype, \"selectionService\", void 0);\n__decorate$1O([\n Optional('selectionHandleFactory')\n], Beans.prototype, \"selectionHandleFactory\", void 0);\n__decorate$1O([\n Autowired('rowCssClassCalculator')\n], Beans.prototype, \"rowCssClassCalculator\", void 0);\n__decorate$1O([\n Autowired('rowModel')\n], Beans.prototype, \"rowModel\", void 0);\n__decorate$1O([\n Autowired('ctrlsService')\n], Beans.prototype, \"ctrlsService\", void 0);\n__decorate$1O([\n Autowired('ctrlsFactory')\n], Beans.prototype, \"ctrlsFactory\", void 0);\n__decorate$1O([\n Autowired('agStackComponentsRegistry')\n], Beans.prototype, \"agStackComponentsRegistry\", void 0);\n__decorate$1O([\n Autowired('valueCache')\n], Beans.prototype, \"valueCache\", void 0);\n__decorate$1O([\n Autowired('rowNodeEventThrottle')\n], Beans.prototype, \"rowNodeEventThrottle\", void 0);\n__decorate$1O([\n Autowired('localeService')\n], Beans.prototype, \"localeService\", void 0);\n__decorate$1O([\n Autowired('valueParserService')\n], Beans.prototype, \"valueParserService\", void 0);\n__decorate$1O([\n PostConstruct\n], Beans.prototype, \"postConstruct\", null);\nBeans = __decorate$1O([\n Bean('beans')\n], Beans);\n\nclass CellMouseListenerFeature extends Beans {\n constructor(ctrl, beans, column) {\n super();\n this.cellCtrl = ctrl;\n this.beans = beans;\n this.column = column;\n }\n onMouseEvent(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 onCellClicked(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 const { eventService, rangeService, gridOptionsService } = this.beans;\n const isMultiKey = mouseEvent.ctrlKey || mouseEvent.metaKey;\n if (rangeService && isMultiKey) {\n // the mousedown event has created the range already, so we only intersect if there is more than one\n // range on this cell\n if (rangeService.getCellRangeCount(this.cellCtrl.getCellPosition()) > 1) {\n rangeService.intersectLastRange(true);\n }\n }\n const cellClickedEvent = this.cellCtrl.createEvent(mouseEvent, Events.EVENT_CELL_CLICKED);\n eventService.dispatchEvent(cellClickedEvent);\n const colDef = this.column.getColDef();\n if (colDef.onCellClicked) {\n // to make callback async, do in a timeout\n window.setTimeout(() => colDef.onCellClicked(cellClickedEvent), 0);\n }\n const editOnSingleClick = (gridOptionsService.is('singleClickEdit') || colDef.singleClickEdit)\n && !gridOptionsService.is('suppressClickEdit');\n if (editOnSingleClick) {\n this.cellCtrl.startRowOrCellEdit();\n }\n }\n // returns true if on iPad and this is second 'click' event in 200ms\n isDoubleClickOnIPad() {\n if (!isIOSUserAgent() || isEventSupported('dblclick')) {\n return false;\n }\n const nowMillis = new Date().getTime();\n const res = nowMillis - this.lastIPadMouseClickEvent < 200;\n this.lastIPadMouseClickEvent = nowMillis;\n return res;\n }\n onCellDoubleClicked(mouseEvent) {\n const colDef = this.column.getColDef();\n // always dispatch event to eventService\n const 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(() => colDef.onCellDoubleClicked(cellDoubleClickedEvent), 0);\n }\n const editOnDoubleClick = !this.beans.gridOptionsService.is('singleClickEdit')\n && !this.beans.gridOptionsService.is('suppressClickEdit');\n if (editOnDoubleClick) {\n this.cellCtrl.startRowOrCellEdit(null, mouseEvent);\n }\n }\n onMouseDown(mouseEvent) {\n const { ctrlKey, metaKey, shiftKey } = mouseEvent;\n const target = mouseEvent.target;\n const { eventService, rangeService } = this.beans;\n // do not change the range for right-clicks inside an existing range\n if (this.isRightClickInExistingRange(mouseEvent)) {\n return;\n }\n const ranges = rangeService && rangeService.getCellRanges().length != 0;\n if (!shiftKey || !ranges) {\n // We only need to pass true to focusCell when the browser is Safari 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 const forceBrowserFocus = (isBrowserSafari()) && !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 const thisCell = this.cellCtrl.getCellPosition();\n if (shiftKey) {\n rangeService.extendLatestRangeToCell(thisCell);\n }\n else {\n const isMultiKey = ctrlKey || metaKey;\n rangeService.setRangeToCell(thisCell, isMultiKey);\n }\n }\n eventService.dispatchEvent(this.cellCtrl.createEvent(mouseEvent, Events.EVENT_CELL_MOUSE_DOWN));\n }\n isRightClickInExistingRange(mouseEvent) {\n const { rangeService } = this.beans;\n if (rangeService) {\n const cellInRange = rangeService.isCellInAnyRange(this.cellCtrl.getCellPosition());\n if (cellInRange && mouseEvent.button === 2) {\n return true;\n }\n }\n return false;\n }\n containsWidget(target) {\n return isElementChildOfClass(target, 'ag-selection-checkbox', 3);\n }\n onMouseOut(mouseEvent) {\n if (this.mouseStayingInsideCell(mouseEvent)) {\n return;\n }\n const cellMouseOutEvent = this.cellCtrl.createEvent(mouseEvent, Events.EVENT_CELL_MOUSE_OUT);\n this.beans.eventService.dispatchEvent(cellMouseOutEvent);\n this.beans.columnHoverService.clearMouseOver();\n }\n onMouseOver(mouseEvent) {\n if (this.mouseStayingInsideCell(mouseEvent)) {\n return;\n }\n const 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 mouseStayingInsideCell(e) {\n if (!e.target || !e.relatedTarget) {\n return false;\n }\n const eGui = this.cellCtrl.getGui();\n const cellContainsTarget = eGui.contains(e.target);\n const cellContainsRelatedTarget = eGui.contains(e.relatedTarget);\n return cellContainsTarget && cellContainsRelatedTarget;\n }\n destroy() {\n }\n}\n\nclass CellKeyboardListenerFeature extends BeanStub {\n constructor(ctrl, beans, column, rowNode, rowCtrl) {\n super();\n this.cellCtrl = ctrl;\n this.beans = beans;\n this.rowNode = rowNode;\n this.rowCtrl = rowCtrl;\n }\n setComp(eGui) {\n this.eGui = eGui;\n }\n onKeyDown(event) {\n const 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.onBackspaceOrDeleteKeyDown(key, event);\n break;\n case KeyCode.DOWN:\n case KeyCode.UP:\n case KeyCode.RIGHT:\n case KeyCode.LEFT:\n this.onNavigationKeyDown(event, key);\n break;\n }\n }\n onNavigationKeyDown(event, key) {\n if (this.cellCtrl.isEditing()) {\n return;\n }\n if (event.shiftKey && this.cellCtrl.isRangeSelectionEnabled()) {\n this.onShiftRangeSelect(event);\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 onShiftRangeSelect(event) {\n if (!this.beans.rangeService) {\n return;\n }\n const endCell = this.beans.rangeService.extendLatestRangeInDirection(event);\n if (endCell) {\n this.beans.navigationService.ensureCellVisible(endCell);\n }\n }\n onTabKeyDown(event) {\n this.beans.navigationService.onTabKeyDown(this.cellCtrl, event);\n }\n onBackspaceOrDeleteKeyDown(key, event) {\n const { cellCtrl, beans, rowNode } = this;\n const { gridOptionsService, rangeService, eventService } = beans;\n if (cellCtrl.isEditing()) {\n return;\n }\n eventService.dispatchEvent({ type: Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_START });\n if (isDeleteKey(key, gridOptionsService.is('enableCellEditingOnBackspace'))) {\n if (rangeService && gridOptionsService.isEnableRangeSelection()) {\n rangeService.clearCellRangeCellValues({ dispatchWrapperEvents: true, wrapperEventSource: 'deleteKey' });\n }\n else if (cellCtrl.isCellEditable()) {\n rowNode.setDataValue(cellCtrl.getColumn(), null, 'cellClear');\n }\n }\n else {\n cellCtrl.startRowOrCellEdit(key, event);\n }\n eventService.dispatchEvent({ type: Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_END });\n }\n onEnterKeyDown(e) {\n if (this.cellCtrl.isEditing() || this.rowCtrl.isEditing()) {\n this.cellCtrl.stopEditingAndFocus(false, e.shiftKey);\n }\n else {\n if (this.beans.gridOptionsService.is('enterNavigatesVertically')) {\n const key = e.shiftKey ? KeyCode.UP : KeyCode.DOWN;\n this.beans.navigationService.navigateToNextCell(null, key, this.cellCtrl.getCellPosition(), false);\n }\n else {\n this.cellCtrl.startRowOrCellEdit(KeyCode.ENTER, 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 onF2KeyDown(event) {\n if (!this.cellCtrl.isEditing()) {\n this.cellCtrl.startRowOrCellEdit(KeyCode.F2, event);\n }\n }\n onEscapeKeyDown(event) {\n if (this.cellCtrl.isEditing()) {\n this.cellCtrl.stopRowOrCellEdit(true);\n this.cellCtrl.focusCell(true);\n }\n }\n processCharacter(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 const eventTarget = event.target;\n const eventOnChildComponent = eventTarget !== this.eGui;\n if (eventOnChildComponent || this.cellCtrl.isEditing()) {\n return;\n }\n const key = event.key;\n if (key === ' ') {\n this.onSpaceKeyDown(event);\n }\n else {\n this.cellCtrl.startRowOrCellEdit(key, event);\n // if we don't prevent default, then the event 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 onSpaceKeyDown(event) {\n const { gridOptionsService } = this.beans;\n if (!this.cellCtrl.isEditing() && gridOptionsService.isRowSelection()) {\n const currentSelection = this.rowNode.isSelected();\n const newSelection = !currentSelection;\n if (newSelection || !gridOptionsService.is('suppressRowDeselection')) {\n const groupSelectsFiltered = this.beans.gridOptionsService.is('groupSelectsFiltered');\n const updatedCount = this.rowNode.setSelectedParams({\n newValue: newSelection,\n rangeSelect: event.shiftKey,\n groupSelectsFiltered: groupSelectsFiltered,\n event,\n source: 'spaceKey',\n });\n if (currentSelection === undefined && updatedCount === 0) {\n this.rowNode.setSelectedParams({\n newValue: false,\n rangeSelect: event.shiftKey,\n groupSelectsFiltered: groupSelectsFiltered,\n event,\n source: 'spaceKey',\n });\n }\n }\n }\n // prevent default as space key, by default, moves browser scroll down\n event.preventDefault();\n }\n destroy() {\n super.destroy();\n }\n}\n\nvar __decorate$1N = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass DndSourceComp extends Component {\n constructor(rowNode, column, eCell) {\n super(/* html */ `
`);\n this.rowNode = rowNode;\n this.column = column;\n this.eCell = eCell;\n }\n postConstruct() {\n const eGui = this.getGui();\n eGui.appendChild(createIconNoSpan('rowDrag', this.gridOptionsService, null));\n // we need to stop the event propagation here to avoid starting a range selection while dragging\n this.addGuiEventListener('mousedown', (e) => {\n e.stopPropagation();\n });\n this.addDragSource();\n this.checkVisibility();\n }\n addDragSource() {\n this.addGuiEventListener('dragstart', this.onDragStart.bind(this));\n }\n onDragStart(dragEvent) {\n const 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 const defaultOnRowDrag = () => {\n try {\n const 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 const params = {\n rowNode: this.rowNode, dragEvent: dragEvent,\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context\n };\n providedOnRowDrag(params);\n }\n else {\n defaultOnRowDrag();\n }\n }\n checkVisibility() {\n const visible = this.column.isDndSource(this.rowNode);\n this.setDisplayed(visible);\n }\n}\n__decorate$1N([\n PostConstruct\n], DndSourceComp.prototype, \"postConstruct\", null);\n\nconst CSS_CELL = 'ag-cell';\nconst CSS_AUTO_HEIGHT = 'ag-cell-auto-height';\nconst CSS_NORMAL_HEIGHT = 'ag-cell-normal-height';\nconst CSS_CELL_FOCUS = 'ag-cell-focus';\nconst CSS_CELL_FIRST_RIGHT_PINNED = 'ag-cell-first-right-pinned';\nconst CSS_CELL_LAST_LEFT_PINNED = 'ag-cell-last-left-pinned';\nconst CSS_CELL_NOT_INLINE_EDITING = 'ag-cell-not-inline-editing';\nconst CSS_COLUMN_HOVER = 'ag-column-hover';\nconst CSS_CELL_WRAP_TEXT = 'ag-cell-wrap-text';\nlet instanceIdSequence$3 = 0;\nclass CellCtrl extends BeanStub {\n constructor(column, rowNode, beans, rowCtrl) {\n super();\n this.cellRangeFeature = null;\n this.cellPositionFeature = null;\n this.cellCustomStyleFeature = null;\n this.tooltipFeature = null;\n this.cellMouseListenerFeature = null;\n this.cellKeyboardListenerFeature = null;\n this.suppressRefreshCell = false;\n this.onCellCompAttachedFuncs = [];\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$3++;\n this.createCellPosition();\n this.addFeatures();\n }\n shouldRestoreFocus() {\n return this.beans.focusService.shouldRestoreFocus(this.cellPosition);\n }\n addFeatures() {\n this.cellPositionFeature = new CellPositionFeature(this, this.beans);\n this.addDestroyFunc(() => { var _a; (_a = this.cellPositionFeature) === null || _a === void 0 ? void 0 : _a.destroy(); this.cellPositionFeature = null; });\n this.cellCustomStyleFeature = new CellCustomStyleFeature(this, this.beans);\n this.addDestroyFunc(() => { var _a; (_a = this.cellCustomStyleFeature) === null || _a === void 0 ? void 0 : _a.destroy(); this.cellCustomStyleFeature = null; });\n this.cellMouseListenerFeature = new CellMouseListenerFeature(this, this.beans, this.column);\n this.addDestroyFunc(() => { var _a; (_a = this.cellMouseListenerFeature) === null || _a === void 0 ? void 0 : _a.destroy(); this.cellMouseListenerFeature = null; });\n this.cellKeyboardListenerFeature = new CellKeyboardListenerFeature(this, this.beans, this.column, this.rowNode, this.rowCtrl);\n this.addDestroyFunc(() => { var _a; (_a = this.cellKeyboardListenerFeature) === null || _a === void 0 ? void 0 : _a.destroy(); this.cellKeyboardListenerFeature = null; });\n const rangeSelectionEnabled = this.beans.rangeService && this.beans.gridOptionsService.isEnableRangeSelection();\n if (rangeSelectionEnabled) {\n this.cellRangeFeature = new CellRangeFeature(this.beans, this);\n this.addDestroyFunc(() => { var _a; (_a = this.cellRangeFeature) === null || _a === void 0 ? void 0 : _a.destroy(); this.cellRangeFeature = null; });\n }\n if (this.column.isTooltipEnabled()) {\n this.addTooltipFeature();\n }\n }\n addTooltipFeature() {\n const getTooltipValue = () => {\n const colDef = this.column.getColDef();\n const data = this.rowNode.data;\n if (colDef.tooltipField && exists(data)) {\n return getValueUsingField(data, colDef.tooltipField, this.column.isTooltipFieldContainsDots());\n }\n const valueGetter = colDef.tooltipValueGetter;\n if (valueGetter) {\n return valueGetter({\n location: 'cell',\n api: this.beans.gridOptionsService.api,\n columnApi: this.beans.gridOptionsService.columnApi,\n context: this.beans.gridOptionsService.context,\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 const tooltipCtrl = {\n getColumn: () => this.column,\n getColDef: () => this.column.getColDef(),\n getRowIndex: () => this.cellPosition.rowIndex,\n getRowNode: () => this.rowNode,\n getGui: () => this.getGui(),\n getLocation: () => 'cell',\n getTooltipValue: getTooltipValue,\n // this makes no sense, why is the cell formatted value passed to the tooltip???\n getValueFormatted: () => this.valueFormatted\n };\n this.tooltipFeature = new TooltipFeature(tooltipCtrl, this.beans);\n this.addDestroyFunc(() => { var _a; (_a = this.tooltipFeature) === null || _a === void 0 ? void 0 : _a.destroy(); this.tooltipFeature = null; });\n }\n setComp(comp, eGui, eCellWrapper, printLayout, startEditing) {\n var _a, _b, _c, _d;\n this.cellComp = comp;\n this.eGui = eGui;\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 if (eCellWrapper) {\n this.setupAutoHeight(eCellWrapper);\n }\n this.setAriaColIndex();\n if (!this.beans.gridOptionsService.is('suppressCellFocus')) {\n this.cellComp.setTabIndex(-1);\n }\n const colIdSanitised = escapeString(this.column.getId());\n this.cellComp.setColId(colIdSanitised);\n this.cellComp.setRole('gridcell');\n (_a = this.cellPositionFeature) === null || _a === void 0 ? void 0 : _a.setComp(eGui);\n (_b = this.cellCustomStyleFeature) === null || _b === void 0 ? void 0 : _b.setComp(comp);\n (_c = this.tooltipFeature) === null || _c === void 0 ? void 0 : _c.setComp(comp);\n (_d = this.cellKeyboardListenerFeature) === null || _d === void 0 ? void 0 : _d.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 if (this.onCellCompAttachedFuncs.length) {\n this.onCellCompAttachedFuncs.forEach(func => func());\n this.onCellCompAttachedFuncs = [];\n }\n }\n setupAutoHeight(eCellWrapper) {\n if (!this.column.isAutoHeight()) {\n return;\n }\n const eParentCell = eCellWrapper.parentElement;\n // taking minRowHeight from getRowHeightForNode means the getRowHeight() callback is used,\n // thus allowing different min heights for different rows.\n const minRowHeight = this.beans.gridOptionsService.getRowHeightForNode(this.rowNode).height;\n const measureHeight = (timesCalled) => {\n if (this.editing) {\n return;\n }\n // because of the retry's below, it's possible the retry's go beyond\n // the rows life.\n if (!this.isAlive()) {\n return;\n }\n const { paddingTop, paddingBottom, borderBottomWidth, borderTopWidth } = getElementSize(eParentCell);\n const extraHeight = paddingTop + paddingBottom + borderBottomWidth + borderTopWidth;\n const wrapperHeight = eCellWrapper.offsetHeight;\n const autoHeight = wrapperHeight + extraHeight;\n if (timesCalled < 5) {\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 const doc = this.beans.gridOptionsService.getDocument();\n const notYetInDom = !doc || !doc.contains(eCellWrapper);\n // this happens in React, where React hasn't put any content in. we say 'possibly'\n // as a) may not be React and b) the cell could be empty anyway\n const possiblyNoContentYet = autoHeight == 0;\n if (notYetInDom || possiblyNoContentYet) {\n this.beans.frameworkOverrides.setTimeout(() => measureHeight(timesCalled + 1), 0);\n return;\n }\n }\n const newHeight = Math.max(autoHeight, minRowHeight);\n this.rowNode.setRowAutoHeight(newHeight, this.column);\n };\n const listener = () => measureHeight(0);\n // do once to set size in case size doesn't change, common when cell is blank\n listener();\n const destroyResizeObserver = this.beans.resizeObserverService.observeResize(eCellWrapper, listener);\n this.addDestroyFunc(() => {\n destroyResizeObserver();\n this.rowNode.setRowAutoHeight(undefined, this.column);\n });\n }\n getInstanceId() {\n return this.instanceId;\n }\n showValue(forceNewCellRendererInstance = false) {\n const valueToDisplay = this.valueFormatted != null ? this.valueFormatted : this.value;\n const params = this.createCellRendererParams();\n const compDetails = this.beans.userComponentFactory.getCellRendererDetails(this.column.getColDef(), params);\n this.cellComp.setRenderDetails(compDetails, valueToDisplay, forceNewCellRendererInstance);\n this.refreshHandle();\n }\n setupControlComps() {\n const 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 isForceWrapper() {\n // text selection requires the value to be wrapped in another element\n const forceWrapper = this.beans.gridOptionsService.is('enableCellTextSelection') || this.column.isAutoHeight();\n return forceWrapper;\n }\n isIncludeControl(value) {\n const rowNodePinned = this.rowNode.rowPinned != null;\n const isFunc = typeof value === 'function';\n const res = rowNodePinned ? false : isFunc || value === true;\n return res;\n }\n refreshShouldDestroy() {\n const colDef = this.column.getColDef();\n const selectionChanged = this.includeSelection != this.isIncludeControl(colDef.checkboxSelection);\n const rowDragChanged = this.includeRowDrag != this.isIncludeControl(colDef.rowDrag);\n const 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 startEditing(key = null, cellStartedEdit = false, event = null) {\n if (!this.isCellEditable() || this.editing) {\n return;\n }\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 we re-schedule this operation for when celLComp is attached\n if (!this.cellComp) {\n this.onCellCompAttachedFuncs.push(() => { this.startEditing(key, cellStartedEdit, event); });\n return;\n }\n const editorParams = this.createCellEditorParams(key, cellStartedEdit);\n const colDef = this.column.getColDef();\n const compDetails = this.beans.userComponentFactory.getCellEditorDetails(colDef, editorParams);\n // if cellEditorSelector was used, we give preference to popup and popupPosition from the selector\n const popup = (compDetails === null || compDetails === void 0 ? void 0 : compDetails.popupFromSelector) != null ? compDetails.popupFromSelector : !!colDef.cellEditorPopup;\n const position = (compDetails === null || compDetails === void 0 ? void 0 : compDetails.popupPositionFromSelector) != null ? compDetails.popupPositionFromSelector : colDef.cellEditorPopupPosition;\n this.setEditing(true);\n this.cellComp.setEditDetails(compDetails, popup, position);\n const e = this.createEvent(event, Events.EVENT_CELL_EDITING_STARTED);\n this.beans.eventService.dispatchEvent(e);\n }\n setEditing(editing) {\n if (this.editing === editing) {\n return;\n }\n this.editing = editing;\n this.refreshHandle();\n }\n // pass in 'true' to cancel the editing.\n stopRowOrCellEdit(cancel = false) {\n if (this.beans.gridOptionsService.get('editType') === 'fullRow') {\n this.rowCtrl.stopRowEditing(cancel);\n }\n else {\n this.stopEditing(cancel);\n }\n }\n onPopupEditorClosed() {\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 takeValueFromCellEditor(cancel) {\n const noValueResult = { newValueExists: false };\n if (cancel) {\n return noValueResult;\n }\n const cellEditor = this.cellComp.getCellEditor();\n if (!cellEditor) {\n return noValueResult;\n }\n const userWantsToCancel = cellEditor.isCancelAfterEnd && cellEditor.isCancelAfterEnd();\n if (userWantsToCancel) {\n return noValueResult;\n }\n const newValue = cellEditor.getValue();\n return {\n newValue: newValue,\n newValueExists: true\n };\n }\n /**\n * @returns `True` if the value changes, otherwise `False`.\n */\n saveNewValue(oldValue, newValue) {\n if (newValue === oldValue) {\n return false;\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 const valueChanged = this.rowNode.setDataValue(this.column, newValue, 'edit');\n this.suppressRefreshCell = false;\n return valueChanged;\n }\n /**\n * Ends the Cell Editing\n * @param cancel `True` if the edit process is being canceled.\n * @returns `True` if the value of the `GridCell` has been updated, otherwise `False`.\n */\n stopEditing(cancel = false) {\n if (!this.editing) {\n return false;\n }\n const { newValue, newValueExists } = this.takeValueFromCellEditor(cancel);\n const oldValue = this.rowNode.getValueFromValueService(this.column);\n let valueChanged = false;\n if (newValueExists) {\n valueChanged = 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, !cancel && !!valueChanged);\n return valueChanged;\n }\n dispatchEditingStoppedEvent(oldValue, newValue, valueChanged) {\n const editingStoppedEvent = Object.assign(Object.assign({}, this.createEvent(null, Events.EVENT_CELL_EDITING_STOPPED)), { oldValue,\n newValue,\n valueChanged });\n this.beans.eventService.dispatchEvent(editingStoppedEvent);\n }\n createCellEditorParams(key, cellStartedEdit) {\n return {\n value: this.rowNode.getValueFromValueService(this.column),\n eventKey: key,\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.gridOptionsService.api,\n cellStartedEdit: cellStartedEdit,\n columnApi: this.beans.gridOptionsService.columnApi,\n context: this.beans.gridOptionsService.context,\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 }\n createCellRendererParams() {\n const res = {\n value: this.value,\n valueFormatted: this.valueFormatted,\n getValue: () => this.rowNode.getValueFromValueService(this.column),\n setValue: (value) => 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 pinned: this.column.getPinned(),\n colDef: this.column.getColDef(),\n column: this.column,\n rowIndex: this.getCellPosition().rowIndex,\n api: this.beans.gridOptionsService.api,\n columnApi: this.beans.gridOptionsService.columnApi,\n context: this.beans.gridOptionsService.context,\n refreshCell: this.refreshCell.bind(this),\n eGridCell: this.getGui(),\n eParentOfValue: this.cellComp.getParentOfValue(),\n registerRowDragger: (rowDraggerElement, dragStartPixels, value, suppressVisibilityChange) => this.registerRowDragger(rowDraggerElement, dragStartPixels, suppressVisibilityChange),\n };\n return res;\n }\n parseValue(newValue) {\n return this.beans.valueParserService.parseValue(this.column, this.rowNode, newValue, this.getValue());\n }\n setFocusOutOnEditor() {\n if (!this.editing) {\n return;\n }\n const cellEditor = this.cellComp.getCellEditor();\n if (cellEditor && cellEditor.focusOut) {\n cellEditor.focusOut();\n }\n }\n setFocusInOnEditor() {\n if (!this.editing) {\n return;\n }\n const 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 onCellChanged(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 const 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 refreshCell(params) {\n var _a, _b, _c;\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 // In React, due to async, it's possible a refresh was asked for before the CellComp\n // has been set. If this happens, we skip the refresh, as the cell is going to be\n // initialised anyway once the CellComp is set.\n if (!this.cellComp) {\n return;\n }\n const colDef = this.column.getColDef();\n const newData = params != null && !!params.newData;\n const 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 const noValueProvided = colDef.field == null && colDef.valueGetter == null && colDef.showRowGroup == null;\n const forceRefresh = (params && params.forceRefresh) || noValueProvided || newData;\n const valuesDifferent = this.updateAndFormatValue();\n const 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 const processingFilterChange = this.beans.filterManager.isSuppressFlashingCellsBecauseFiltering();\n const flashCell = !suppressFlash && !processingFilterChange &&\n (this.beans.gridOptionsService.is('enableCellChangeFlash') || colDef.enableCellChangeFlash);\n if (flashCell) {\n this.flashCell();\n }\n (_a = this.cellCustomStyleFeature) === null || _a === void 0 ? void 0 : _a.applyUserStyles();\n (_b = this.cellCustomStyleFeature) === null || _b === void 0 ? void 0 : _b.applyClassesFromColDef();\n }\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 (_c = this.cellCustomStyleFeature) === null || _c === void 0 ? void 0 : _c.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 stopEditingAndFocus(suppressNavigateAfterEdit = false, shiftKey = false) {\n this.stopRowOrCellEdit();\n this.focusCell(true);\n if (!suppressNavigateAfterEdit) {\n this.navigateAfterEdit(shiftKey);\n }\n }\n navigateAfterEdit(shiftKey) {\n const enterNavigatesVerticallyAfterEdit = this.beans.gridOptionsService.is('enterNavigatesVerticallyAfterEdit');\n if (enterNavigatesVerticallyAfterEdit) {\n const key = shiftKey ? KeyCode.UP : KeyCode.DOWN;\n this.beans.navigationService.navigateToNextCell(null, key, this.getCellPosition(), false);\n }\n }\n // user can also call this via API\n flashCell(delays) {\n const flashDelay = delays && delays.flashDelay;\n const fadeDelay = delays && delays.fadeDelay;\n this.animateCell('data-changed', flashDelay, fadeDelay);\n }\n animateCell(cssName, flashDelay, fadeDelay) {\n var _a, _b;\n const fullName = `ag-cell-${cssName}`;\n const animationFullName = `ag-cell-${cssName}-animation`;\n const { gridOptionsService } = this.beans;\n if (!flashDelay) {\n flashDelay = (_a = gridOptionsService.getNum('cellFlashDelay')) !== null && _a !== void 0 ? _a : 500;\n }\n if (!exists(fadeDelay)) {\n fadeDelay = (_b = gridOptionsService.getNum('cellFadeDelay')) !== null && _b !== void 0 ? _b : 1000;\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(() => {\n if (!this.isAlive()) {\n return;\n }\n this.cellComp.addOrRemoveCssClass(fullName, false);\n this.cellComp.addOrRemoveCssClass(animationFullName, true);\n this.eGui.style.transition = `background-color ${fadeDelay}ms`;\n window.setTimeout(() => {\n if (!this.isAlive()) {\n return;\n }\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 onFlashCells(event) {\n if (!this.cellComp) {\n return;\n }\n const cellId = this.beans.cellPositionUtils.createId(this.getCellPosition());\n const shouldFlash = event.cells[cellId];\n if (shouldFlash) {\n this.animateCell('highlight');\n }\n }\n isCellEditable() {\n return this.column.isCellEditable(this.rowNode);\n }\n isSuppressFillHandle() {\n return this.column.isSuppressFillHandle();\n }\n formatValue(value) {\n const res = this.callValueFormatter(value);\n return res != null ? res : value;\n }\n callValueFormatter(value) {\n return this.beans.valueFormatterService.formatValue(this.column, this.rowNode, value);\n }\n updateAndFormatValue(force = false) {\n const oldValue = this.value;\n const oldValueFormatted = this.valueFormatted;\n this.value = this.rowNode.getValueFromValueService(this.column);\n this.valueFormatted = this.callValueFormatter(this.value);\n const valuesDifferent = force ? true :\n !this.valuesAreEqual(oldValue, this.value) || this.valueFormatted != oldValueFormatted;\n return valuesDifferent;\n }\n valuesAreEqual(val1, val2) {\n // if the user provided an equals method, use that, otherwise do simple comparison\n const colDef = this.column.getColDef();\n return colDef.equals ? colDef.equals(val1, val2) : val1 === val2;\n }\n getComp() {\n return this.cellComp;\n }\n getValue() {\n return this.value;\n }\n getValueFormatted() {\n return this.valueFormatted;\n }\n addDomData() {\n const element = this.getGui();\n this.beans.gridOptionsService.setDomData(element, CellCtrl.DOM_DATA_KEY_CELL_CTRL, this);\n this.addDestroyFunc(() => this.beans.gridOptionsService.setDomData(element, CellCtrl.DOM_DATA_KEY_CELL_CTRL, null));\n }\n createEvent(domEvent, eventType) {\n const 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.gridOptionsService.context,\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 return event;\n }\n processCharacter(event) {\n var _a;\n (_a = this.cellKeyboardListenerFeature) === null || _a === void 0 ? void 0 : _a.processCharacter(event);\n }\n onKeyDown(event) {\n var _a;\n (_a = this.cellKeyboardListenerFeature) === null || _a === void 0 ? void 0 : _a.onKeyDown(event);\n }\n onMouseEvent(eventName, mouseEvent) {\n var _a;\n (_a = this.cellMouseListenerFeature) === null || _a === void 0 ? void 0 : _a.onMouseEvent(eventName, mouseEvent);\n }\n getGui() {\n return this.eGui;\n }\n refreshToolTip() {\n var _a;\n (_a = this.tooltipFeature) === null || _a === void 0 ? void 0 : _a.refreshToolTip();\n }\n getColSpanningList() {\n return this.cellPositionFeature.getColSpanningList();\n }\n onLeftChanged() {\n var _a;\n if (!this.cellComp) {\n return;\n }\n (_a = this.cellPositionFeature) === null || _a === void 0 ? void 0 : _a.onLeftChanged();\n }\n onDisplayedColumnsChanged() {\n if (!this.eGui) {\n return;\n }\n this.setAriaColIndex();\n }\n setAriaColIndex() {\n const 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 isSuppressNavigable() {\n return this.column.isSuppressNavigable(this.rowNode);\n }\n onWidthChanged() {\n var _a;\n return (_a = this.cellPositionFeature) === null || _a === void 0 ? void 0 : _a.onWidthChanged();\n }\n getColumn() {\n return this.column;\n }\n getRowNode() {\n return this.rowNode;\n }\n getBeans() {\n return this.beans;\n }\n isPrintLayout() {\n return this.printLayout;\n }\n appendChild(htmlElement) {\n this.eGui.appendChild(htmlElement);\n }\n refreshHandle() {\n if (this.cellRangeFeature) {\n this.cellRangeFeature.refreshHandle();\n }\n }\n getCellPosition() {\n return this.cellPosition;\n }\n isEditing() {\n return this.editing;\n }\n // called by rowRenderer when user navigates via tab key\n startRowOrCellEdit(key, event = null) {\n if (!this.cellComp) {\n return;\n }\n if (this.beans.gridOptionsService.get('editType') === 'fullRow') {\n this.rowCtrl.startRowEditing(key, this);\n }\n else {\n this.startEditing(key, true, event);\n }\n }\n getRowCtrl() {\n return this.rowCtrl;\n }\n getRowPosition() {\n return {\n rowIndex: this.cellPosition.rowIndex,\n rowPinned: this.cellPosition.rowPinned\n };\n }\n updateRangeBordersIfRangeCount() {\n if (!this.cellComp) {\n return;\n }\n if (this.cellRangeFeature) {\n this.cellRangeFeature.updateRangeBordersIfRangeCount();\n }\n }\n onRangeSelectionChanged() {\n if (!this.cellComp) {\n return;\n }\n if (this.cellRangeFeature) {\n this.cellRangeFeature.onRangeSelectionChanged();\n }\n }\n isRangeSelectionEnabled() {\n return this.cellRangeFeature != null;\n }\n focusCell(forceBrowserFocus = false) {\n this.beans.focusService.setFocusedCell({\n rowIndex: this.getCellPosition().rowIndex,\n column: this.column,\n rowPinned: this.rowNode.rowPinned,\n forceBrowserFocus\n });\n }\n onRowIndexChanged() {\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 onFirstRightPinnedChanged() {\n if (!this.cellComp) {\n return;\n }\n const firstRightPinned = this.column.isFirstRightPinned();\n this.cellComp.addOrRemoveCssClass(CSS_CELL_FIRST_RIGHT_PINNED, firstRightPinned);\n }\n onLastLeftPinnedChanged() {\n if (!this.cellComp) {\n return;\n }\n const lastLeftPinned = this.column.isLastLeftPinned();\n this.cellComp.addOrRemoveCssClass(CSS_CELL_LAST_LEFT_PINNED, lastLeftPinned);\n }\n onCellFocused(event) {\n if (!this.cellComp || this.beans.gridOptionsService.is('suppressCellFocus')) {\n return;\n }\n const 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 const focusEl = this.cellComp.getFocusableElement();\n focusEl.focus({ preventScroll: !!event.preventScrollOnBrowserFocus });\n }\n // if another cell was focused, and we are editing, then stop editing\n const fullRowEdit = this.beans.gridOptionsService.get('editType') === 'fullRow';\n if (!cellFocused && !fullRowEdit && this.editing) {\n this.stopRowOrCellEdit();\n }\n }\n createCellPosition() {\n this.cellPosition = {\n rowIndex: this.rowNode.rowIndex,\n rowPinned: makeNull(this.rowNode.rowPinned),\n column: this.column\n };\n }\n // CSS Classes that only get applied once, they never change\n applyStaticCssClasses() {\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 const autoHeight = this.column.isAutoHeight() == true;\n this.cellComp.addOrRemoveCssClass(CSS_AUTO_HEIGHT, autoHeight);\n this.cellComp.addOrRemoveCssClass(CSS_NORMAL_HEIGHT, !autoHeight);\n }\n onColumnHover() {\n if (!this.cellComp) {\n return;\n }\n if (!this.beans.gridOptionsService.is('columnHoverHighlight')) {\n return;\n }\n const isHovered = this.beans.columnHoverService.isHovered(this.column);\n this.cellComp.addOrRemoveCssClass(CSS_COLUMN_HOVER, isHovered);\n }\n onColDefChanged() {\n if (!this.cellComp) {\n return;\n }\n this.setWrapText();\n if (!this.editing) {\n this.refreshCell({ forceRefresh: true, suppressFlash: true });\n }\n }\n setWrapText() {\n const value = this.column.getColDef().wrapText == true;\n this.cellComp.addOrRemoveCssClass(CSS_CELL_WRAP_TEXT, value);\n }\n dispatchCellContextMenuEvent(event) {\n const colDef = this.column.getColDef();\n const 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(() => colDef.onCellContextMenu(cellContextMenuEvent), 0);\n }\n }\n getCellRenderer() {\n return this.cellComp ? this.cellComp.getCellRenderer() : null;\n }\n getCellEditor() {\n return this.cellComp ? this.cellComp.getCellEditor() : null;\n }\n destroy() {\n this.onCellCompAttachedFuncs = [];\n super.destroy();\n }\n createSelectionCheckbox() {\n const 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 createDndSource() {\n const dndSourceComp = new DndSourceComp(this.rowNode, this.column, this.eGui);\n this.beans.context.createBean(dndSourceComp);\n return dndSourceComp;\n }\n registerRowDragger(customElement, dragStartPixels, suppressVisibilityChange) {\n // if previously existed, then we are only updating\n if (this.customRowDragComp) {\n this.customRowDragComp.setDragElement(customElement, dragStartPixels);\n return;\n }\n const newComp = this.createRowDragComp(customElement, dragStartPixels, suppressVisibilityChange);\n if (newComp) {\n this.customRowDragComp = newComp;\n this.addDestroyFunc(() => { this.beans.context.destroyBean(newComp); this.customRowDragComp = null; });\n }\n }\n createRowDragComp(customElement, dragStartPixels, suppressVisibilityChange) {\n const pagination = this.beans.gridOptionsService.is('pagination');\n const rowDragManaged = this.beans.gridOptionsService.is('rowDragManaged');\n const clientSideRowModelActive = this.beans.gridOptionsService.isRowModelType('clientSide');\n if (rowDragManaged) {\n // row dragging only available in default row model\n if (!clientSideRowModelActive) {\n doOnce(() => 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(() => 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 const rowDragComp = new RowDragComp(() => this.value, this.rowNode, this.column, customElement, dragStartPixels, suppressVisibilityChange);\n this.beans.context.createBean(rowDragComp);\n return rowDragComp;\n }\n}\nCellCtrl.DOM_DATA_KEY_CELL_CTRL = 'cellCtrl';\n\nvar RowType$1;\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$1 || (RowType$1 = {}));\nlet instanceIdSequence$2 = 0;\nclass RowCtrl extends BeanStub {\n constructor(rowNode, beans, animateIn, useAnimationFrameForCreate, printLayout) {\n super();\n this.allRowGuis = [];\n this.active = true;\n this.centerCellCtrls = { list: [], map: {} };\n this.leftCellCtrls = { list: [], map: {} };\n this.rightCellCtrls = { list: [], map: {} };\n this.slideInAnimation = {\n left: false,\n center: false,\n right: false,\n fullWidth: false\n };\n this.fadeInAnimation = {\n left: false,\n center: false,\n right: false,\n fullWidth: false\n };\n this.lastMouseDownOnDragger = false;\n this.updateColumnListsPending = false;\n this.businessKeySanitised = null;\n this.beans = beans;\n this.gridOptionsService = beans.gridOptionsService;\n this.rowNode = rowNode;\n this.paginationPage = beans.paginationProxy.getCurrentPage();\n this.useAnimationFrameForCreate = useAnimationFrameForCreate;\n this.printLayout = printLayout;\n this.instanceId = rowNode.id + '-' + instanceIdSequence$2++;\n this.setAnimateFlags(animateIn);\n this.initRowBusinessKey();\n this.rowFocused = beans.focusService.isRowFocused(this.rowNode.rowIndex, this.rowNode.rowPinned);\n this.rowLevel = beans.rowCssClassCalculator.calculateRowLevel(this.rowNode);\n this.setRowType();\n this.addListeners();\n }\n initRowBusinessKey() {\n this.businessKeyForNodeFunc = this.gridOptionsService.get('getBusinessKeyForNode');\n this.updateRowBusinessKey();\n }\n updateRowBusinessKey() {\n if (typeof this.businessKeyForNodeFunc !== 'function') {\n return;\n }\n const businessKey = this.businessKeyForNodeFunc(this.rowNode);\n this.businessKeySanitised = escapeString(businessKey);\n }\n isSticky() {\n return this.rowNode.sticky;\n }\n getBeans() {\n return this.beans;\n }\n getInstanceId() {\n return this.instanceId;\n }\n setComp(rowComp, element, containerType) {\n const gui = { rowComp, element, 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 this.initialiseRowComp(gui);\n // pinned rows render before the main grid body in the SSRM, only fire the event after the main body has rendered.\n if (this.rowType !== 'FullWidthLoading' && !this.rowNode.rowPinned) {\n // this is fired within setComp as we know that the component renderer is now trying to render.\n // linked with the fact the function implementation queues behind requestAnimationFrame should allow\n // us to be certain that all rendering is done by the time the event fires.\n this.beans.rowRenderer.dispatchFirstDataRenderedEvent();\n }\n }\n unsetComp(containerType) {\n this.allRowGuis = this.allRowGuis\n .filter(rowGui => rowGui.containerType !== containerType);\n if (containerType === RowContainerType.LEFT) {\n this.leftGui = undefined;\n }\n else if (containerType === RowContainerType.RIGHT) {\n this.rightGui = undefined;\n }\n else if (containerType === RowContainerType.FULL_WIDTH) {\n this.fullWidthGui = undefined;\n }\n }\n isCacheable() {\n return this.rowType === RowType$1.FullWidthDetail\n && this.gridOptionsService.is('keepDetailRows');\n }\n setCached(cached) {\n const displayValue = cached ? 'none' : '';\n this.allRowGuis.forEach(rg => rg.element.style.display = displayValue);\n }\n initialiseRowComp(gui) {\n const gos = this.gridOptionsService;\n this.listenOnDomOrder(gui);\n this.onRowHeightChanged(gui);\n this.updateRowIndexes(gui);\n this.setFocusedClasses(gui);\n this.setStylesFromGridOptions(gui);\n if (gos.isRowSelection() && this.rowNode.selectable) {\n this.onRowSelected(gui);\n }\n this.updateColumnLists(!this.useAnimationFrameForCreate);\n const comp = gui.rowComp;\n comp.setRole('row');\n const initialRowClasses = this.getInitialRowClasses(gui.containerType);\n initialRowClasses.forEach(name => comp.addOrRemoveCssClass(name, true));\n this.executeSlideAndFadeAnimations(gui);\n if (this.rowNode.group) {\n setAriaExpanded(gui.element, this.rowNode.expanded == true);\n }\n this.setRowCompRowId(comp);\n this.setRowCompRowBusinessKey(comp);\n if (this.isFullWidth() && !this.gridOptionsService.is('suppressCellFocus')) {\n comp.setTabIndex(-1);\n }\n // DOM DATA\n gos.setDomData(gui.element, RowCtrl.DOM_DATA_KEY_ROW_CTRL, this);\n this.addDestroyFunc(() => gos.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 (gos.is('rowDragEntireRow')) {\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 created. 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(() => {\n if (!this.isAlive()) {\n return;\n }\n gui.rowComp.addOrRemoveCssClass('ag-after-created', true);\n });\n }\n this.executeProcessRowPostCreateFunc();\n }\n setRowCompRowBusinessKey(comp) {\n if (this.businessKeySanitised == null) {\n return;\n }\n comp.setRowBusinessKey(this.businessKeySanitised);\n }\n setRowCompRowId(comp) {\n const rowId = escapeString(this.rowNode.id);\n if (rowId == null) {\n return;\n }\n comp.setRowId(rowId);\n }\n executeSlideAndFadeAnimations(gui) {\n const { containerType } = gui;\n const shouldSlide = this.slideInAnimation[containerType];\n if (shouldSlide) {\n executeNextVMTurn(() => {\n this.onTopChanged();\n });\n this.slideInAnimation[containerType] = false;\n }\n const shouldFade = this.fadeInAnimation[containerType];\n if (shouldFade) {\n executeNextVMTurn(() => {\n gui.rowComp.addOrRemoveCssClass('ag-opacity-zero', false);\n });\n this.fadeInAnimation[containerType] = false;\n }\n }\n addRowDraggerToRow(gui) {\n if (this.gridOptionsService.isEnableRangeSelection()) {\n doOnce(() => {\n console.warn('AG Grid: Setting `rowDragEntireRow: true` in the gridOptions doesn\\'t work with `enableRangeSelection: true`');\n }, 'rowDragAndRangeSelectionEnabled');\n return;\n }\n const translate = this.beans.localeService.getLocaleTextFunc();\n const rowDragComp = new RowDragComp(() => `1 ${translate('rowDragRow', 'row')}`, this.rowNode, undefined, gui.element, undefined, true);\n this.createManagedBean(rowDragComp, this.beans.context);\n }\n setupFullWidth(gui) {\n const pinned = this.getPinnedForContainer(gui.containerType);\n const params = this.createFullWidthParams(gui.element, pinned);\n if (this.rowType == RowType$1.FullWidthDetail) {\n if (!ModuleRegistry.__assertRegistered(ModuleNames.MasterDetailModule, \"cell renderer 'agDetailCellRenderer' (for master detail)\", this.beans.context.getGridId())) {\n return;\n }\n }\n let compDetails;\n switch (this.rowType) {\n case RowType$1.FullWidthDetail:\n compDetails = this.beans.userComponentFactory.getFullWidthDetailCellRendererDetails(params);\n break;\n case RowType$1.FullWidthGroup:\n compDetails = this.beans.userComponentFactory.getFullWidthGroupCellRendererDetails(params);\n break;\n case RowType$1.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 isPrintLayout() {\n return this.printLayout;\n }\n getFullWidthCellRenderer() {\n var _a, _b;\n return (_b = (_a = this.fullWidthGui) === null || _a === void 0 ? void 0 : _a.rowComp) === null || _b === void 0 ? void 0 : _b.getFullWidthCellRenderer();\n }\n // use by autoWidthCalculator, as it clones the elements\n getCellElement(column) {\n const cellCtrl = this.getCellCtrl(column);\n return cellCtrl ? cellCtrl.getGui() : null;\n }\n executeProcessRowPostCreateFunc() {\n var _a;\n const func = this.gridOptionsService.getCallback('processRowPostCreate');\n if (!func || !this.areAllContainersReady()) {\n return;\n }\n const params = {\n eRow: (_a = this.centerGui) === null || _a === void 0 ? void 0 : _a.element,\n ePinnedLeftRow: this.leftGui ? this.leftGui.element : undefined,\n ePinnedRightRow: this.rightGui ? this.rightGui.element : undefined,\n node: this.rowNode,\n rowIndex: this.rowNode.rowIndex,\n addRenderedRowListener: this.addEventListener.bind(this),\n };\n func(params);\n }\n areAllContainersReady() {\n const isLeftReady = !!this.leftGui || !this.beans.columnModel.isPinningLeft();\n const isCenterReady = !!this.centerGui;\n const isRightReady = !!this.rightGui || !this.beans.columnModel.isPinningRight();\n return isLeftReady && isCenterReady && isRightReady;\n }\n setRowType() {\n const isStub = this.rowNode.stub;\n const isFullWidthCell = this.rowNode.isFullWidthCell();\n const isDetailCell = this.beans.doingMasterDetail && this.rowNode.detail;\n const 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 const isGroupRow = !!this.rowNode.group && !this.rowNode.footer;\n const isFullWidthGroup = isGroupRow && this.gridOptionsService.isGroupUseEntireRow(pivotMode);\n if (isStub) {\n this.rowType = RowType$1.FullWidthLoading;\n }\n else if (isDetailCell) {\n this.rowType = RowType$1.FullWidthDetail;\n }\n else if (isFullWidthCell) {\n this.rowType = RowType$1.FullWidth;\n }\n else if (isFullWidthGroup) {\n this.rowType = RowType$1.FullWidthGroup;\n }\n else {\n this.rowType = RowType$1.Normal;\n }\n }\n updateColumnLists(suppressAnimationFrame = false, useFlushSync = false) {\n if (this.isFullWidth()) {\n return;\n }\n const noAnimation = suppressAnimationFrame\n || this.gridOptionsService.is('suppressAnimationFrame')\n || this.printLayout;\n if (noAnimation) {\n this.updateColumnListsImpl(useFlushSync);\n return;\n }\n if (this.updateColumnListsPending) {\n return;\n }\n this.beans.animationFrameService.createTask(() => {\n if (!this.active) {\n return;\n }\n this.updateColumnListsImpl(true);\n }, this.rowNode.rowIndex, 'createTasksP1');\n this.updateColumnListsPending = true;\n }\n createCellCtrls(prev, cols, pinned = null) {\n const res = {\n list: [],\n map: {}\n };\n const addCell = (colInstanceId, cellCtrl) => {\n res.list.push(cellCtrl);\n res.map[colInstanceId] = cellCtrl;\n };\n cols.forEach(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 const colInstanceId = col.getInstanceId();\n let 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(prevCellCtrl => {\n const cellInResult = res.map[prevCellCtrl.getColumn().getInstanceId()] != null;\n if (cellInResult) {\n return;\n }\n const 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 updateColumnListsImpl(useFlushSync = false) {\n this.updateColumnListsPending = false;\n const 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 const centerCols = columnModel.getViewportCenterColumnsForRow(this.rowNode);\n this.centerCellCtrls = this.createCellCtrls(this.centerCellCtrls, centerCols);\n const leftCols = columnModel.getDisplayedLeftColumnsForRow(this.rowNode);\n this.leftCellCtrls = this.createCellCtrls(this.leftCellCtrls, leftCols, 'left');\n const rightCols = columnModel.getDisplayedRightColumnsForRow(this.rowNode);\n this.rightCellCtrls = this.createCellCtrls(this.rightCellCtrls, rightCols, 'right');\n }\n this.allRowGuis.forEach(item => {\n const cellControls = item.containerType === RowContainerType.LEFT ? this.leftCellCtrls :\n item.containerType === RowContainerType.RIGHT ? this.rightCellCtrls : this.centerCellCtrls;\n item.rowComp.setCellCtrls(cellControls.list, useFlushSync);\n });\n }\n isCellEligibleToBeRemoved(cellCtrl, nextContainerPinned) {\n const REMOVE_CELL = true;\n const KEEP_CELL = false;\n // always remove the cell if it's not rendered or if it's in the wrong pinned location\n const 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 const editing = cellCtrl.isEditing();\n const focused = this.beans.focusService.isCellFocused(cellCtrl.getCellPosition());\n const mightWantToKeepCell = editing || focused;\n if (mightWantToKeepCell) {\n const column = cellCtrl.getColumn();\n const displayedColumns = this.beans.columnModel.getAllDisplayedColumns();\n const cellStillDisplayed = displayedColumns.indexOf(column) >= 0;\n return cellStillDisplayed ? KEEP_CELL : REMOVE_CELL;\n }\n return REMOVE_CELL;\n }\n listenOnDomOrder(gui) {\n const listener = () => {\n const isEnsureDomOrder = this.gridOptionsService.is('ensureDomOrder');\n const isPrintLayout = this.gridOptionsService.isDomLayout('print');\n gui.rowComp.setDomOrder(isEnsureDomOrder || isPrintLayout);\n };\n this.addManagedPropertyListener('domLayout', listener);\n listener();\n }\n setAnimateFlags(animateIn) {\n if (this.isSticky() || !animateIn) {\n return;\n }\n const oldRowTopExists = exists(this.rowNode.oldRowTop);\n const pinningLeft = this.beans.columnModel.isPinningLeft();\n const pinningRight = this.beans.columnModel.isPinningRight();\n if (oldRowTopExists) {\n // if the row had a previous position, we slide it in\n this.slideInAnimation.center = true;\n this.slideInAnimation.left = pinningLeft;\n this.slideInAnimation.right = pinningRight;\n }\n else {\n // if the row had no previous position, we fade it in\n this.fadeInAnimation.center = true;\n this.fadeInAnimation.left = pinningLeft;\n this.fadeInAnimation.right = pinningRight;\n }\n }\n isEditing() {\n return this.editingRow;\n }\n stopRowEditing(cancel) {\n this.stopEditing(cancel);\n }\n isFullWidth() {\n return this.rowType !== RowType$1.Normal;\n }\n getRowType() {\n return this.rowType;\n }\n refreshFullWidth() {\n // returns 'true' if refresh succeeded\n const tryRefresh = (gui, pinned) => {\n if (!gui) {\n return true;\n } // no refresh needed\n const 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 const params = this.createFullWidthParams(gui.element, pinned);\n const refreshSucceeded = cellRenderer.refresh(params);\n return refreshSucceeded;\n };\n const fullWidthSuccess = tryRefresh(this.fullWidthGui, null);\n const centerSuccess = tryRefresh(this.centerGui, null);\n const leftSuccess = tryRefresh(this.leftGui, 'left');\n const rightSuccess = tryRefresh(this.rightGui, 'right');\n const allFullWidthRowsRefreshed = fullWidthSuccess && centerSuccess && leftSuccess && rightSuccess;\n return allFullWidthRowsRefreshed;\n }\n addListeners() {\n this.addManagedListener(this.rowNode, RowNode.EVENT_HEIGHT_CHANGED, () => this.onRowHeightChanged());\n this.addManagedListener(this.rowNode, RowNode.EVENT_ROW_SELECTED, () => this.onRowSelected());\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 const 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.onCellFocused.bind(this));\n this.addManagedListener(eventService, Events.EVENT_CELL_FOCUS_CLEARED, this.onCellFocusCleared.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 onColumnMoved() {\n this.updateColumnLists();\n }\n addListenersForCellComps() {\n this.addManagedListener(this.rowNode, RowNode.EVENT_ROW_INDEX_CHANGED, () => {\n this.getAllCellCtrls().forEach(cellCtrl => cellCtrl.onRowIndexChanged());\n });\n this.addManagedListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, event => {\n this.getAllCellCtrls().forEach(cellCtrl => cellCtrl.onCellChanged(event));\n });\n }\n onRowNodeDataChanged(event) {\n // if master row has updated, then need to also try to refresh the detail node\n if (this.rowNode.detailNode) {\n this.beans.rowRenderer.refreshFullWidthRow(this.rowNode.detailNode);\n }\n if (this.isFullWidth()) {\n this.beans.rowRenderer.refreshFullWidthRow(this.rowNode);\n return;\n }\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(cellCtrl => cellCtrl.refreshCell({\n suppressFlash: !event.update,\n newData: !event.update\n }));\n // as data has changed update the dom row id attributes\n this.allRowGuis.forEach(gui => {\n this.setRowCompRowId(gui.rowComp);\n this.updateRowBusinessKey();\n this.setRowCompRowBusinessKey(gui.rowComp);\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 onRowNodeCellChanged() {\n // as data has changed, then the style and class needs to be recomputed\n this.postProcessCss();\n }\n postProcessCss() {\n this.setStylesFromGridOptions();\n this.postProcessClassesFromGridOptions();\n this.postProcessRowClassRules();\n this.postProcessRowDragging();\n }\n onRowNodeHighlightChanged() {\n const highlighted = this.rowNode.highlighted;\n this.allRowGuis.forEach(gui => {\n const aboveOn = highlighted === RowHighlightPosition.Above;\n const 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 onRowNodeDraggingChanged() {\n this.postProcessRowDragging();\n }\n postProcessRowDragging() {\n const dragging = this.rowNode.dragging;\n this.allRowGuis.forEach(gui => gui.rowComp.addOrRemoveCssClass('ag-row-dragging', dragging));\n }\n updateExpandedCss() {\n const expandable = this.rowNode.isExpandable();\n const expanded = this.rowNode.expanded == true;\n this.allRowGuis.forEach(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 onDisplayedColumnsChanged() {\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 onVirtualColumnsChanged() {\n this.updateColumnLists(false, true);\n }\n getRowPosition() {\n return {\n rowPinned: makeNull(this.rowNode.rowPinned),\n rowIndex: this.rowNode.rowIndex\n };\n }\n onKeyboardNavigate(keyboardEvent) {\n const currentFullWidthComp = this.allRowGuis.find(c => c.element.contains(keyboardEvent.target));\n const currentFullWidthContainer = currentFullWidthComp ? currentFullWidthComp.element : null;\n const isFullWidthContainerFocused = currentFullWidthContainer === keyboardEvent.target;\n if (!isFullWidthContainerFocused) {\n return;\n }\n const node = this.rowNode;\n const lastFocusedCell = this.beans.focusService.getFocusedCell();\n const 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 onTabKeyDown(keyboardEvent) {\n if (keyboardEvent.defaultPrevented || isStopPropagationForAgGrid(keyboardEvent)) {\n return;\n }\n const currentFullWidthComp = this.allRowGuis.find(c => c.element.contains(keyboardEvent.target));\n const currentFullWidthContainer = currentFullWidthComp ? currentFullWidthComp.element : null;\n const isFullWidthContainerFocused = currentFullWidthContainer === keyboardEvent.target;\n let 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 onFullWidthRowFocused(event) {\n var _a;\n const node = this.rowNode;\n const isFocused = !event ? false : this.isFullWidth() && event.rowIndex === node.rowIndex && event.rowPinned == node.rowPinned;\n const 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 refreshCell(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 removeCellCtrl(prev, cellCtrlToRemove) {\n const res = {\n list: [],\n map: {}\n };\n prev.list.forEach(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 onMouseEvent(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 createRowEvent(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.gridOptionsService.context,\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n event: domEvent\n };\n }\n createRowEventWithSource(type, domEvent) {\n const 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 onRowDblClick(mouseEvent) {\n if (isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n const agEvent = this.createRowEventWithSource(Events.EVENT_ROW_DOUBLE_CLICKED, mouseEvent);\n this.beans.eventService.dispatchEvent(agEvent);\n }\n onRowMouseDown(mouseEvent) {\n this.lastMouseDownOnDragger = isElementChildOfClass(mouseEvent.target, 'ag-row-drag', 3);\n if (!this.isFullWidth()) {\n return;\n }\n const node = this.rowNode;\n const columnModel = this.beans.columnModel;\n if (this.beans.rangeService) {\n this.beans.rangeService.removeAllCellRanges();\n }\n this.beans.focusService.setFocusedCell({\n rowIndex: node.rowIndex,\n column: columnModel.getAllDisplayedColumns()[0],\n rowPinned: node.rowPinned,\n forceBrowserFocus: true\n });\n }\n onRowClick(mouseEvent) {\n const stop = isStopPropagationForAgGrid(mouseEvent) || this.lastMouseDownOnDragger;\n if (stop) {\n return;\n }\n const agEvent = this.createRowEventWithSource(Events.EVENT_ROW_CLICKED, mouseEvent);\n this.beans.eventService.dispatchEvent(agEvent);\n // ctrlKey for windows, metaKey for Apple\n const isMultiKey = mouseEvent.ctrlKey || mouseEvent.metaKey;\n const isShiftKey = 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 subsequently un-selected.\n const groupSelectsChildren = this.gridOptionsService.is('groupSelectsChildren');\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.gridOptionsService.isRowSelection() ||\n // if click selection suppressed, do nothing\n this.gridOptionsService.is('suppressRowClickSelection')) {\n return;\n }\n const multiSelectOnClick = this.gridOptionsService.is('rowMultiSelectWithClick');\n const rowDeselectionWithCtrl = !this.gridOptionsService.is('suppressRowDeselection');\n const source = 'rowClicked';\n if (this.rowNode.isSelected()) {\n if (multiSelectOnClick) {\n this.rowNode.setSelectedParams({ newValue: false, event: mouseEvent, source });\n }\n else if (isMultiKey) {\n if (rowDeselectionWithCtrl) {\n this.rowNode.setSelectedParams({ newValue: false, event: mouseEvent, source });\n }\n }\n else {\n // selected with no multi key, must make sure anything else is unselected\n this.rowNode.setSelectedParams({ newValue: true, clearSelection: !isShiftKey, rangeSelect: isShiftKey, event: mouseEvent, source });\n }\n }\n else {\n const clearSelection = multiSelectOnClick ? false : !isMultiKey;\n this.rowNode.setSelectedParams({ newValue: true, clearSelection: clearSelection, rangeSelect: isShiftKey, event: mouseEvent, source });\n }\n }\n setupDetailRowAutoHeight(eDetailGui) {\n if (this.rowType !== RowType$1.FullWidthDetail) {\n return;\n }\n if (!this.gridOptionsService.is('detailRowAutoHeight')) {\n return;\n }\n const checkRowSizeFunc = () => {\n const 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 const updateRowHeightFunc = () => {\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 const resizeObserverDestroyFunc = this.beans.resizeObserverService.observeResize(eDetailGui, checkRowSizeFunc);\n this.addDestroyFunc(resizeObserverDestroyFunc);\n checkRowSizeFunc();\n }\n createFullWidthParams(eRow, pinned) {\n const params = {\n fullWidth: true,\n data: this.rowNode.data,\n node: this.rowNode,\n value: this.rowNode.key,\n valueFormatted: this.rowNode.key,\n rowIndex: this.rowNode.rowIndex,\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context,\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: (rowDraggerElement, dragStartPixels, value, suppressVisibilityChange) => this.addFullWidthRowDragging(rowDraggerElement, dragStartPixels, value, suppressVisibilityChange)\n };\n return params;\n }\n addFullWidthRowDragging(rowDraggerElement, dragStartPixels, value = '', suppressVisibilityChange) {\n if (!this.isFullWidth()) {\n return;\n }\n const rowDragComp = new RowDragComp(() => value, this.rowNode, undefined, rowDraggerElement, dragStartPixels, suppressVisibilityChange);\n this.createManagedBean(rowDragComp, this.beans.context);\n }\n onUiLevelChanged() {\n const newLevel = this.beans.rowCssClassCalculator.calculateRowLevel(this.rowNode);\n if (this.rowLevel != newLevel) {\n const classToAdd = 'ag-row-level-' + newLevel;\n const classToRemove = 'ag-row-level-' + this.rowLevel;\n this.allRowGuis.forEach(gui => {\n gui.rowComp.addOrRemoveCssClass(classToAdd, true);\n gui.rowComp.addOrRemoveCssClass(classToRemove, false);\n });\n }\n this.rowLevel = newLevel;\n }\n isFirstRowOnPage() {\n return this.rowNode.rowIndex === this.beans.paginationProxy.getPageFirstRow();\n }\n isLastRowOnPage() {\n return this.rowNode.rowIndex === this.beans.paginationProxy.getPageLastRow();\n }\n onModelUpdated() {\n this.refreshFirstAndLastRowStyles();\n }\n refreshFirstAndLastRowStyles() {\n const newFirst = this.isFirstRowOnPage();\n const newLast = this.isLastRowOnPage();\n if (this.firstRowOnPage !== newFirst) {\n this.firstRowOnPage = newFirst;\n this.allRowGuis.forEach(gui => gui.rowComp.addOrRemoveCssClass('ag-row-first', newFirst));\n }\n if (this.lastRowOnPage !== newLast) {\n this.lastRowOnPage = newLast;\n this.allRowGuis.forEach(gui => gui.rowComp.addOrRemoveCssClass('ag-row-last', newLast));\n }\n }\n stopEditing(cancel = false) {\n // if we are already stopping row edit, there is\n // no need to start this process again.\n if (this.stoppingRowEdit) {\n return;\n }\n const cellControls = this.getAllCellCtrls();\n const isRowEdit = this.editingRow;\n this.stoppingRowEdit = true;\n let fireRowEditEvent = false;\n for (const ctrl of cellControls) {\n const valueChanged = ctrl.stopEditing(cancel);\n if (isRowEdit && !cancel && !fireRowEditEvent && valueChanged) {\n fireRowEditEvent = true;\n }\n }\n if (fireRowEditEvent) {\n const event = this.createRowEvent(Events.EVENT_ROW_VALUE_CHANGED);\n this.beans.eventService.dispatchEvent(event);\n }\n if (isRowEdit) {\n this.setEditingRow(false);\n }\n this.stoppingRowEdit = false;\n }\n setInlineEditingCss(editing) {\n this.allRowGuis.forEach(gui => {\n gui.rowComp.addOrRemoveCssClass(\"ag-row-inline-editing\", editing);\n gui.rowComp.addOrRemoveCssClass(\"ag-row-not-inline-editing\", !editing);\n });\n }\n setEditingRow(value) {\n this.editingRow = value;\n this.allRowGuis.forEach(gui => gui.rowComp.addOrRemoveCssClass('ag-row-editing', value));\n const 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 startRowEditing(key = null, sourceRenderedCell = null, event = null) {\n // don't do it if already editing\n if (this.editingRow) {\n return;\n }\n const atLeastOneEditing = this.getAllCellCtrls().reduce((prev, cellCtrl) => {\n const cellStartedEdit = cellCtrl === sourceRenderedCell;\n if (cellStartedEdit) {\n cellCtrl.startEditing(key, cellStartedEdit, event);\n }\n else {\n cellCtrl.startEditing(null, cellStartedEdit, event);\n }\n if (prev) {\n return true;\n }\n return cellCtrl.isEditing();\n }, false);\n if (atLeastOneEditing) {\n this.setEditingRow(true);\n }\n }\n getAllCellCtrls() {\n if (this.leftCellCtrls.list.length === 0 && this.rightCellCtrls.list.length === 0) {\n return this.centerCellCtrls.list;\n }\n const res = [...this.centerCellCtrls.list, ...this.leftCellCtrls.list, ...this.rightCellCtrls.list];\n return res;\n }\n postProcessClassesFromGridOptions() {\n const cssClasses = this.beans.rowCssClassCalculator.processClassesFromGridOptions(this.rowNode);\n if (!cssClasses || !cssClasses.length) {\n return;\n }\n cssClasses.forEach(classStr => {\n this.allRowGuis.forEach(c => c.rowComp.addOrRemoveCssClass(classStr, true));\n });\n }\n postProcessRowClassRules() {\n this.beans.rowCssClassCalculator.processRowClassRules(this.rowNode, (className) => {\n this.allRowGuis.forEach(gui => gui.rowComp.addOrRemoveCssClass(className, true));\n }, (className) => {\n this.allRowGuis.forEach(gui => gui.rowComp.addOrRemoveCssClass(className, false));\n });\n }\n setStylesFromGridOptions(gui) {\n const rowStyles = this.processStylesFromGridOptions();\n this.forEachGui(gui, gui => gui.rowComp.setUserStyles(rowStyles));\n }\n getPinnedForContainer(rowContainerType) {\n const pinned = rowContainerType === RowContainerType.LEFT\n ? 'left'\n : rowContainerType === RowContainerType.RIGHT\n ? 'right'\n : null;\n return pinned;\n }\n getInitialRowClasses(rowContainerType) {\n const pinned = this.getPinnedForContainer(rowContainerType);\n const params = {\n rowNode: this.rowNode,\n rowFocused: this.rowFocused,\n fadeRowIn: this.fadeInAnimation[rowContainerType],\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 pinned: pinned\n };\n return this.beans.rowCssClassCalculator.getInitialRowClasses(params);\n }\n processStylesFromGridOptions() {\n // part 1 - rowStyle\n const rowStyle = this.gridOptionsService.get('rowStyle');\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 const rowStyleFunc = this.gridOptionsService.getCallback('getRowStyle');\n let rowStyleFuncResult;\n if (rowStyleFunc) {\n const params = {\n data: this.rowNode.data,\n node: this.rowNode,\n rowIndex: this.rowNode.rowIndex\n };\n rowStyleFuncResult = rowStyleFunc(params);\n }\n return Object.assign({}, rowStyle, rowStyleFuncResult);\n }\n onRowSelected(gui) {\n // Treat undefined as false, if we pass undefined down it gets treated as toggle class, rather than explicitly\n // setting the required value\n const selected = !!this.rowNode.isSelected();\n this.forEachGui(gui, gui => {\n gui.rowComp.addOrRemoveCssClass('ag-row-selected', selected);\n setAriaSelected(gui.element, selected ? true : undefined);\n const ariaLabel = this.createAriaLabel();\n setAriaLabel(gui.element, ariaLabel == null ? '' : ariaLabel);\n });\n }\n createAriaLabel() {\n const selected = this.rowNode.isSelected();\n if (selected && this.gridOptionsService.is('suppressRowDeselection')) {\n return undefined;\n }\n const translate = this.beans.localeService.getLocaleTextFunc();\n const label = translate(selected ? 'ariaRowDeselect' : 'ariaRowSelect', `Press SPACE to ${selected ? 'deselect' : 'select'} this row.`);\n return label;\n }\n isUseAnimationFrameForCreate() {\n return this.useAnimationFrameForCreate;\n }\n addHoverFunctionality(eRow) {\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', () => this.rowNode.onMouseEnter());\n this.addManagedListener(eRow, 'mouseleave', () => 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, () => {\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. Also, do not highlight while dragging elements around.\n if (!this.beans.dragService.isDragging() &&\n !this.gridOptionsService.is('suppressRowHoverHighlight')) {\n eRow.classList.add('ag-row-hover');\n this.rowNode.setHovered(true);\n }\n });\n this.addManagedListener(this.rowNode, RowNode.EVENT_MOUSE_LEAVE, () => {\n eRow.classList.remove('ag-row-hover');\n this.rowNode.setHovered(false);\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 roundRowTopToBounds(rowTop) {\n const gridBodyCon = this.beans.ctrlsService.getGridBodyCtrl();\n const range = gridBodyCon.getScrollFeature().getVScrollPosition();\n const minPixel = this.applyPaginationOffset(range.top, true) - 100;\n const maxPixel = this.applyPaginationOffset(range.bottom, true) + 100;\n return Math.min(Math.max(minPixel, rowTop), maxPixel);\n }\n getFrameworkOverrides() {\n return this.beans.frameworkOverrides;\n }\n forEachGui(gui, callback) {\n const list = gui ? [gui] : this.allRowGuis;\n list.forEach(callback);\n }\n onRowHeightChanged(gui) {\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 const rowHeight = this.rowNode.rowHeight;\n const defaultRowHeight = this.beans.environment.getDefaultRowHeight();\n const isHeightFromFunc = this.gridOptionsService.isGetRowHeightFunction();\n const heightFromFunc = isHeightFromFunc ? this.gridOptionsService.getRowHeightForNode(this.rowNode).height : undefined;\n const lineHeight = heightFromFunc ? `${Math.min(defaultRowHeight, heightFromFunc) - 2}px` : undefined;\n this.forEachGui(gui, gui => {\n gui.element.style.height = `${rowHeight}px`;\n // If the row height is coming from a function, this means some rows can\n // be smaller than the theme had intended. so we set --ag-line-height on\n // the row, which is picked up by the theme CSS and is used in a calc\n // for the CSS line-height property, which makes sure the line-height is\n // not bigger than the row height, otherwise the row text would not fit.\n // We do not use rowNode.rowHeight here, as this could be the result of autoHeight,\n // and we found using the autoHeight result causes a loop, where changing the\n // line-height them impacts the cell height, resulting in a new autoHeight,\n // resulting in a new line-height and so on loop.\n // const heightFromFunc = this.gridOptionsService.getRowHeightForNode(this.rowNode).height;\n if (lineHeight) {\n gui.element.style.setProperty('--ag-line-height', lineHeight);\n }\n });\n }\n addEventListener(eventType, listener) {\n super.addEventListener(eventType, listener);\n }\n removeEventListener(eventType, listener) {\n super.removeEventListener(eventType, listener);\n }\n // note - this is NOT called by context, as we don't wire / unwire the CellComp for performance reasons.\n destroyFirstPass() {\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 if (this.gridOptionsService.isAnimateRows()) {\n this.setupRemoveAnimation();\n }\n this.rowNode.setHovered(false);\n const event = this.createRowEvent(Events.EVENT_VIRTUAL_ROW_REMOVED);\n this.dispatchEvent(event);\n this.beans.eventService.dispatchEvent(event);\n super.destroy();\n }\n setupRemoveAnimation() {\n // we don't animate sticky rows\n if (this.isSticky()) {\n return;\n }\n const 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 const rowTop = this.roundRowTopToBounds(this.rowNode.rowTop);\n this.setRowTop(rowTop);\n }\n else {\n this.allRowGuis.forEach(gui => gui.rowComp.addOrRemoveCssClass('ag-opacity-zero', true));\n }\n }\n destroySecondPass() {\n this.allRowGuis.length = 0;\n const destroyCellCtrls = (ctrls) => {\n ctrls.list.forEach(c => 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 setFocusedClasses(gui) {\n this.forEachGui(gui, gui => {\n gui.rowComp.addOrRemoveCssClass('ag-row-focus', this.rowFocused);\n gui.rowComp.addOrRemoveCssClass('ag-row-no-focus', !this.rowFocused);\n });\n }\n onCellFocused() {\n this.onCellFocusChanged();\n }\n onCellFocusCleared() {\n this.onCellFocusChanged();\n }\n onCellFocusChanged() {\n const 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 onPaginationChanged() {\n const 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 onTopChanged() {\n this.setRowTop(this.rowNode.rowTop);\n }\n onPaginationPixelOffsetChanged() {\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 applyPaginationOffset(topPx, reverse = false) {\n if (this.rowNode.isRowPinned() || this.rowNode.sticky) {\n return topPx;\n }\n const pixelOffset = this.beans.paginationProxy.getPixelOffset();\n const multiplier = reverse ? 1 : -1;\n return topPx + (pixelOffset * multiplier);\n }\n setRowTop(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 const afterPaginationPixels = this.applyPaginationOffset(pixels);\n const skipScaling = this.rowNode.isRowPinned() || this.rowNode.sticky;\n const afterScalingPixels = skipScaling ? afterPaginationPixels : this.beans.rowContainerHeightService.getRealPixelPosition(afterPaginationPixels);\n const topPx = `${afterScalingPixels}px`;\n this.setRowTopStyle(topPx);\n }\n }\n // the top needs to be set into the DOM element when the element is created, not updated afterwards.\n // otherwise the transition would not work, as it would be transitioning from zero (the unset value).\n // for example, suppose a row that is outside the viewport, then user does a filter to remove other rows\n // and this row now appears in the viewport, and the row moves up (ie it was under the viewport and not rendered,\n // but now is in the viewport) then a new RowComp is created, however it should have it's position initialised\n // to below the viewport, so the row will appear to animate up. if we didn't set the initial position at creation\n // time, the row would animate down (ie from position zero).\n getInitialRowTop(rowContainerType) {\n const suppressRowTransform = this.gridOptionsService.is('suppressRowTransform');\n return suppressRowTransform ? this.getInitialRowTopShared(rowContainerType) : undefined;\n }\n getInitialTransform(rowContainerType) {\n const suppressRowTransform = this.gridOptionsService.is('suppressRowTransform');\n return suppressRowTransform ? undefined : `translateY(${this.getInitialRowTopShared(rowContainerType)})`;\n }\n getInitialRowTopShared(rowContainerType) {\n // print layout uses normal flow layout for row positioning\n if (this.printLayout) {\n return '';\n }\n let rowTop;\n if (this.isSticky()) {\n rowTop = this.rowNode.stickyRowTop;\n }\n else {\n // if sliding in, we take the old row top. otherwise we just set the current row top.\n const pixels = this.slideInAnimation[rowContainerType] ? this.roundRowTopToBounds(this.rowNode.oldRowTop) : this.rowNode.rowTop;\n const afterPaginationPixels = this.applyPaginationOffset(pixels);\n // we don't apply scaling if row is pinned\n rowTop = this.rowNode.isRowPinned() ? afterPaginationPixels : this.beans.rowContainerHeightService.getRealPixelPosition(afterPaginationPixels);\n }\n return rowTop + 'px';\n }\n setRowTopStyle(topPx) {\n const suppressRowTransform = this.gridOptionsService.is('suppressRowTransform');\n this.allRowGuis.forEach(gui => suppressRowTransform ?\n gui.rowComp.setTop(topPx) :\n gui.rowComp.setTransform(`translateY(${topPx})`));\n }\n getRowNode() {\n return this.rowNode;\n }\n getCellCtrl(column) {\n // first up, check for cell directly linked to this column\n let res = null;\n this.getAllCellCtrls().forEach(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(cellCtrl => {\n if (cellCtrl.getColSpanningList().indexOf(column) >= 0) {\n res = cellCtrl;\n }\n });\n return res;\n }\n onRowIndexChanged() {\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 updateRowIndexes(gui) {\n const rowIndexStr = this.rowNode.getRowIndexString();\n const headerRowCount = this.beans.headerNavigationService.getHeaderRowCount();\n const rowIsEven = this.rowNode.rowIndex % 2 === 0;\n const ariaRowIndex = headerRowCount + this.rowNode.rowIndex + 1;\n this.forEachGui(gui, 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 getPinnedLeftRowElement() {\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 getPinnedRightRowElement() {\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 getBodyRowElement() {\n return this.centerGui ? this.centerGui.element : undefined;\n }\n // returns the full width container\n getFullWidthRowElement() {\n return this.fullWidthGui ? this.fullWidthGui.element : undefined;\n }\n}\nRowCtrl.DOM_DATA_KEY_ROW_CTRL = 'renderedRow';\n\nvar __decorate$1M = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass RowContainerEventsFeature extends BeanStub {\n constructor(element) {\n super();\n this.element = element;\n }\n postConstruct() {\n this.addKeyboardListeners();\n this.addMouseListeners();\n this.mockContextMenuForIPad();\n }\n addKeyboardListeners() {\n const eventName = 'keydown';\n const listener = this.processKeyboardEvent.bind(this, eventName);\n this.addManagedListener(this.element, eventName, listener);\n }\n addMouseListeners() {\n const mouseDownEvent = isEventSupported('touchstart') ? 'touchstart' : 'mousedown';\n const eventNames = ['dblclick', 'contextmenu', 'mouseover', 'mouseout', 'click', mouseDownEvent];\n eventNames.forEach(eventName => {\n const listener = this.processMouseEvent.bind(this, eventName);\n this.addManagedListener(this.element, eventName, listener);\n });\n }\n processMouseEvent(eventName, mouseEvent) {\n if (!this.mouseEventService.isEventFromThisGrid(mouseEvent) ||\n isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n const rowComp = this.getRowForEvent(mouseEvent);\n const 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 mockContextMenuForIPad() {\n // we do NOT want this when not in iPad, otherwise we will be doing\n if (!isIOSUserAgent()) {\n return;\n }\n const touchListener = new TouchListener(this.element);\n const longTapListener = (event) => {\n const rowComp = this.getRowForEvent(event.touchEvent);\n const 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(() => touchListener.destroy());\n }\n getRowForEvent(event) {\n let sourceElement = event.target;\n while (sourceElement) {\n const rowCon = this.gridOptionsService.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 handleContextMenuMouseEvent(mouseEvent, touchEvent, rowComp, cellCtrl) {\n const rowNode = rowComp ? rowComp.getRowNode() : null;\n const column = cellCtrl ? cellCtrl.getColumn() : null;\n let value = null;\n if (column) {\n const event = mouseEvent ? mouseEvent : touchEvent;\n cellCtrl.dispatchCellContextMenuEvent(event);\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 const gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n const anchorToElement = cellCtrl ? cellCtrl.getGui() : gridBodyCon.getGridBodyElement();\n if (this.contextMenuFactory) {\n this.contextMenuFactory.onContextMenu(mouseEvent, touchEvent, rowNode, column, value, anchorToElement);\n }\n }\n getControlsForEventTarget(target) {\n return {\n cellCtrl: getCtrlForEventTarget(this.gridOptionsService, target, CellCtrl.DOM_DATA_KEY_CELL_CTRL),\n rowCtrl: getCtrlForEventTarget(this.gridOptionsService, target, RowCtrl.DOM_DATA_KEY_ROW_CTRL)\n };\n }\n processKeyboardEvent(eventName, keyboardEvent) {\n const { cellCtrl, rowCtrl } = this.getControlsForEventTarget(keyboardEvent.target);\n if (keyboardEvent.defaultPrevented) {\n return;\n }\n if (cellCtrl) {\n this.processCellKeyboardEvent(cellCtrl, eventName, keyboardEvent);\n }\n else if (rowCtrl && rowCtrl.isFullWidth()) {\n this.processFullWidthRowKeyboardEvent(rowCtrl, eventName, keyboardEvent);\n }\n }\n processCellKeyboardEvent(cellCtrl, eventName, keyboardEvent) {\n const rowNode = cellCtrl.getRowNode();\n const column = cellCtrl.getColumn();\n const editing = cellCtrl.isEditing();\n const gridProcessingAllowed = !isUserSuppressingKeyboardEvent(this.gridOptionsService, keyboardEvent, rowNode, column, editing);\n if (gridProcessingAllowed) {\n if (eventName === 'keydown') {\n // first see if it's a scroll key, page up / down, home / end etc\n const 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 if (isEventFromPrintableCharacter(keyboardEvent)) {\n cellCtrl.processCharacter(keyboardEvent);\n }\n }\n }\n if (eventName === 'keydown') {\n const cellKeyDownEvent = cellCtrl.createEvent(keyboardEvent, Events.EVENT_CELL_KEY_DOWN);\n this.eventService.dispatchEvent(cellKeyDownEvent);\n }\n }\n processFullWidthRowKeyboardEvent(rowComp, eventName, keyboardEvent) {\n const rowNode = rowComp.getRowNode();\n const focusedCell = this.focusService.getFocusedCell();\n const column = (focusedCell && focusedCell.column);\n const gridProcessingAllowed = !isUserSuppressingKeyboardEvent(this.gridOptionsService, keyboardEvent, rowNode, column, false);\n if (gridProcessingAllowed) {\n const key = keyboardEvent.key;\n if (eventName === 'keydown') {\n switch (key) {\n case KeyCode.PAGE_HOME:\n case KeyCode.PAGE_END:\n case KeyCode.PAGE_UP:\n case KeyCode.PAGE_DOWN:\n this.navigationService.handlePageScrollingKey(keyboardEvent, true);\n break;\n case KeyCode.UP:\n case KeyCode.DOWN:\n rowComp.onKeyboardNavigate(keyboardEvent);\n break;\n case KeyCode.TAB:\n rowComp.onTabKeyDown(keyboardEvent);\n break;\n }\n }\n }\n if (eventName === 'keydown') {\n const cellKeyDownEvent = rowComp.createRowEvent(Events.EVENT_CELL_KEY_DOWN, keyboardEvent);\n this.eventService.dispatchEvent(cellKeyDownEvent);\n }\n }\n doGridOperations(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 const keyCode = normaliseQwertyAzerty(keyboardEvent);\n if (keyCode === KeyCode.A) {\n return this.onCtrlAndA(keyboardEvent);\n }\n if (keyCode === KeyCode.C) {\n return this.onCtrlAndC(keyboardEvent);\n }\n if (keyCode === KeyCode.D) {\n return this.onCtrlAndD(keyboardEvent);\n }\n if (keyCode === KeyCode.V) {\n return this.onCtrlAndV(keyboardEvent);\n }\n if (keyCode === KeyCode.X) {\n return this.onCtrlAndX(keyboardEvent);\n }\n if (keyCode === KeyCode.Y) {\n return this.onCtrlAndY();\n }\n if (keyCode === KeyCode.Z) {\n return this.onCtrlAndZ(keyboardEvent);\n }\n }\n onCtrlAndA(event) {\n const { pinnedRowModel, paginationProxy, rangeService } = this;\n if (rangeService && paginationProxy.isRowsToRender()) {\n const [isEmptyPinnedTop, isEmptyPinnedBottom] = [\n pinnedRowModel.isEmpty('top'),\n pinnedRowModel.isEmpty('bottom')\n ];\n const floatingStart = isEmptyPinnedTop ? null : 'top';\n let floatingEnd;\n let rowEnd;\n if (isEmptyPinnedBottom) {\n floatingEnd = null;\n rowEnd = this.paginationProxy.getRowCount() - 1;\n }\n else {\n floatingEnd = 'bottom';\n rowEnd = pinnedRowModel.getPinnedBottomRowData().length - 1;\n }\n const 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 onCtrlAndC(event) {\n if (!this.clipboardService || this.gridOptionsService.is('enableCellTextSelection')) {\n return;\n }\n const { cellCtrl, rowCtrl } = this.getControlsForEventTarget(event.target);\n if ((cellCtrl === null || cellCtrl === void 0 ? void 0 : cellCtrl.isEditing()) || (rowCtrl === null || rowCtrl === void 0 ? void 0 : rowCtrl.isEditing())) {\n return;\n }\n event.preventDefault();\n this.clipboardService.copyToClipboard();\n }\n onCtrlAndX(event) {\n if (!this.clipboardService ||\n this.gridOptionsService.is('enableCellTextSelection') ||\n this.gridOptionsService.is('suppressCutToClipboard')) {\n return;\n }\n const { cellCtrl, rowCtrl } = this.getControlsForEventTarget(event.target);\n if ((cellCtrl === null || cellCtrl === void 0 ? void 0 : cellCtrl.isEditing()) || (rowCtrl === null || rowCtrl === void 0 ? void 0 : rowCtrl.isEditing())) {\n return;\n }\n event.preventDefault();\n this.clipboardService.cutToClipboard(undefined, 'ui');\n }\n onCtrlAndV(event) {\n const { cellCtrl, rowCtrl } = this.getControlsForEventTarget(event.target);\n if ((cellCtrl === null || cellCtrl === void 0 ? void 0 : cellCtrl.isEditing()) || (rowCtrl === null || rowCtrl === void 0 ? void 0 : rowCtrl.isEditing())) {\n return;\n }\n if (this.clipboardService && !this.gridOptionsService.is('suppressClipboardPaste')) {\n this.clipboardService.pasteFromClipboard();\n }\n }\n onCtrlAndD(event) {\n if (this.clipboardService && !this.gridOptionsService.is('suppressClipboardPaste')) {\n this.clipboardService.copyRangeDown();\n }\n event.preventDefault();\n }\n onCtrlAndZ(event) {\n if (!this.gridOptionsService.is('undoRedoCellEditing')) {\n return;\n }\n event.preventDefault();\n if (event.shiftKey) {\n this.undoRedoService.redo('ui');\n }\n else {\n this.undoRedoService.undo('ui');\n }\n }\n onCtrlAndY() {\n this.undoRedoService.redo('ui');\n }\n}\n__decorate$1M([\n Autowired('mouseEventService')\n], RowContainerEventsFeature.prototype, \"mouseEventService\", void 0);\n__decorate$1M([\n Autowired('valueService')\n], RowContainerEventsFeature.prototype, \"valueService\", void 0);\n__decorate$1M([\n Optional('contextMenuFactory')\n], RowContainerEventsFeature.prototype, \"contextMenuFactory\", void 0);\n__decorate$1M([\n Autowired('ctrlsService')\n], RowContainerEventsFeature.prototype, \"ctrlsService\", void 0);\n__decorate$1M([\n Autowired('navigationService')\n], RowContainerEventsFeature.prototype, \"navigationService\", void 0);\n__decorate$1M([\n Autowired('focusService')\n], RowContainerEventsFeature.prototype, \"focusService\", void 0);\n__decorate$1M([\n Autowired('undoRedoService')\n], RowContainerEventsFeature.prototype, \"undoRedoService\", void 0);\n__decorate$1M([\n Autowired('columnModel')\n], RowContainerEventsFeature.prototype, \"columnModel\", void 0);\n__decorate$1M([\n Autowired('paginationProxy')\n], RowContainerEventsFeature.prototype, \"paginationProxy\", void 0);\n__decorate$1M([\n Autowired('pinnedRowModel')\n], RowContainerEventsFeature.prototype, \"pinnedRowModel\", void 0);\n__decorate$1M([\n Optional('rangeService')\n], RowContainerEventsFeature.prototype, \"rangeService\", void 0);\n__decorate$1M([\n Optional('clipboardService')\n], RowContainerEventsFeature.prototype, \"clipboardService\", void 0);\n__decorate$1M([\n PostConstruct\n], RowContainerEventsFeature.prototype, \"postConstruct\", null);\n\nvar __decorate$1L = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// 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.\nclass ViewportSizeFeature extends BeanStub {\n constructor(centerContainerCtrl) {\n super();\n this.centerContainerCtrl = centerContainerCtrl;\n }\n postConstruct() {\n this.ctrlsService.whenReady(() => {\n this.gridBodyCtrl = this.ctrlsService.getGridBodyCtrl();\n this.listenForResize();\n });\n this.addManagedListener(this.eventService, Events.EVENT_SCROLLBAR_WIDTH_CHANGED, this.onScrollbarWidthChanged.bind(this));\n }\n listenForResize() {\n const listener = () => this.onCenterViewportResized();\n // centerContainer gets horizontal resizes\n this.centerContainerCtrl.registerViewportResizeListener(listener);\n // eBodyViewport gets vertical resizes\n this.gridBodyCtrl.registerBodyViewportResizeListener(listener);\n }\n onScrollbarWidthChanged() {\n this.checkViewportAndScrolls();\n }\n onCenterViewportResized() {\n if (this.centerContainerCtrl.isViewportVisible()) {\n this.checkViewportAndScrolls();\n const newWidth = this.centerContainerCtrl.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 checkViewportAndScrolls() {\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.gridBodyCtrl.getScrollFeature().checkScrollLeft();\n }\n getBodyHeight() {\n return this.bodyHeight;\n }\n checkBodyHeight() {\n const eBodyViewport = this.gridBodyCtrl.getBodyViewportElement();\n const bodyHeight = getInnerHeight(eBodyViewport);\n if (this.bodyHeight !== bodyHeight) {\n this.bodyHeight = bodyHeight;\n const event = {\n type: Events.EVENT_BODY_HEIGHT_CHANGED\n };\n this.eventService.dispatchEvent(event);\n }\n }\n updateScrollVisibleService() {\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 updateScrollVisibleServiceImpl() {\n const params = {\n horizontalScrollShowing: this.isHorizontalScrollShowing(),\n verticalScrollShowing: this.gridBodyCtrl.isVerticalScrollShowing()\n };\n this.scrollVisibleService.setScrollsVisible(params);\n }\n isHorizontalScrollShowing() {\n return this.centerContainerCtrl.isHorizontalScrollShowing();\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\n onHorizontalViewportChanged() {\n const scrollWidth = this.centerContainerCtrl.getCenterWidth();\n const scrollPosition = this.centerContainerCtrl.getViewportScrollLeft();\n this.columnModel.setViewportPosition(scrollWidth, scrollPosition);\n }\n}\n__decorate$1L([\n Autowired('ctrlsService')\n], ViewportSizeFeature.prototype, \"ctrlsService\", void 0);\n__decorate$1L([\n Autowired('columnModel')\n], ViewportSizeFeature.prototype, \"columnModel\", void 0);\n__decorate$1L([\n Autowired('scrollVisibleService')\n], ViewportSizeFeature.prototype, \"scrollVisibleService\", void 0);\n__decorate$1L([\n PostConstruct\n], ViewportSizeFeature.prototype, \"postConstruct\", null);\n\nvar __decorate$1K = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass SetPinnedLeftWidthFeature extends BeanStub {\n constructor(element) {\n super();\n this.element = element;\n }\n postConstruct() {\n this.addManagedListener(this.eventService, Events.EVENT_LEFT_PINNED_WIDTH_CHANGED, this.onPinnedLeftWidthChanged.bind(this));\n }\n onPinnedLeftWidthChanged() {\n const leftWidth = this.pinnedWidthService.getPinnedLeftWidth();\n const displayed = leftWidth > 0;\n setDisplayed(this.element, displayed);\n setFixedWidth(this.element, leftWidth);\n }\n getWidth() {\n return this.pinnedWidthService.getPinnedLeftWidth();\n }\n}\n__decorate$1K([\n Autowired('pinnedWidthService')\n], SetPinnedLeftWidthFeature.prototype, \"pinnedWidthService\", void 0);\n__decorate$1K([\n PostConstruct\n], SetPinnedLeftWidthFeature.prototype, \"postConstruct\", null);\n\nvar __decorate$1J = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass SetPinnedRightWidthFeature extends BeanStub {\n constructor(element) {\n super();\n this.element = element;\n }\n postConstruct() {\n this.addManagedListener(this.eventService, Events.EVENT_RIGHT_PINNED_WIDTH_CHANGED, this.onPinnedRightWidthChanged.bind(this));\n }\n onPinnedRightWidthChanged() {\n const rightWidth = this.pinnedWidthService.getPinnedRightWidth();\n const displayed = rightWidth > 0;\n setDisplayed(this.element, displayed);\n setFixedWidth(this.element, rightWidth);\n }\n getWidth() {\n return this.pinnedWidthService.getPinnedRightWidth();\n }\n}\n__decorate$1J([\n Autowired('pinnedWidthService')\n], SetPinnedRightWidthFeature.prototype, \"pinnedWidthService\", void 0);\n__decorate$1J([\n PostConstruct\n], SetPinnedRightWidthFeature.prototype, \"postConstruct\", null);\n\nvar __decorate$1I = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass SetHeightFeature extends BeanStub {\n constructor(eContainer, eWrapper) {\n super();\n this.eContainer = eContainer;\n this.eWrapper = eWrapper;\n }\n postConstruct() {\n this.addManagedListener(this.eventService, Events.EVENT_ROW_CONTAINER_HEIGHT_CHANGED, this.onHeightChanged.bind(this));\n }\n onHeightChanged() {\n const height = this.maxDivHeightScaler.getUiContainerHeight();\n const heightString = height != null ? `${height}px` : ``;\n this.eContainer.style.height = heightString;\n if (this.eWrapper) {\n this.eWrapper.style.height = heightString;\n }\n }\n}\n__decorate$1I([\n Autowired(\"rowContainerHeightService\")\n], SetHeightFeature.prototype, \"maxDivHeightScaler\", void 0);\n__decorate$1I([\n PostConstruct\n], SetHeightFeature.prototype, \"postConstruct\", null);\n\nvar __decorate$1H = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass DragListenerFeature extends BeanStub {\n constructor(eContainer) {\n super();\n this.eContainer = eContainer;\n }\n postConstruct() {\n if (!this.gridOptionsService.isEnableRangeSelection() || // no range selection if no property\n missing(this.rangeService) // no range selection if not enterprise version\n ) {\n return;\n }\n const params = {\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(() => this.dragService.removeDragSource(params));\n }\n}\n__decorate$1H([\n Optional('rangeService')\n], DragListenerFeature.prototype, \"rangeService\", void 0);\n__decorate$1H([\n Autowired('dragService')\n], DragListenerFeature.prototype, \"dragService\", void 0);\n__decorate$1H([\n PostConstruct\n], DragListenerFeature.prototype, \"postConstruct\", null);\n\nvar __decorate$1G = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass CenterWidthFeature extends BeanStub {\n constructor(callback, addSpacer = false) {\n super();\n this.callback = callback;\n this.addSpacer = addSpacer;\n }\n postConstruct() {\n const listener = this.setWidth.bind(this);\n this.addManagedPropertyListener('domLayout', 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.addManagedListener(this.eventService, Events.EVENT_LEFT_PINNED_WIDTH_CHANGED, listener);\n if (this.addSpacer) {\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 this.setWidth();\n }\n setWidth() {\n const { columnModel } = this;\n const printLayout = this.gridOptionsService.isDomLayout('print');\n const centerWidth = columnModel.getBodyContainerWidth();\n const leftWidth = columnModel.getDisplayedColumnsLeftWidth();\n const rightWidth = columnModel.getDisplayedColumnsRightWidth();\n let totalWidth;\n if (printLayout) {\n totalWidth = centerWidth + leftWidth + rightWidth;\n }\n else {\n totalWidth = centerWidth;\n if (this.addSpacer) {\n const relevantWidth = this.gridOptionsService.is('enableRtl') ? leftWidth : rightWidth;\n if (relevantWidth === 0 && this.scrollVisibleService.isVerticalScrollShowing()) {\n totalWidth += this.gridOptionsService.getScrollbarWidth();\n }\n }\n }\n this.callback(totalWidth);\n }\n}\n__decorate$1G([\n Autowired('columnModel')\n], CenterWidthFeature.prototype, \"columnModel\", void 0);\n__decorate$1G([\n Autowired('scrollVisibleService')\n], CenterWidthFeature.prototype, \"scrollVisibleService\", void 0);\n__decorate$1G([\n PostConstruct\n], CenterWidthFeature.prototype, \"postConstruct\", null);\n\nvar __decorate$1F = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 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[\"STICKY_TOP_LEFT\"] = \"stickyTopLeft\";\n RowContainerName[\"STICKY_TOP_RIGHT\"] = \"stickyTopRight\";\n RowContainerName[\"STICKY_TOP_CENTER\"] = \"stickyTopCenter\";\n RowContainerName[\"STICKY_TOP_FULL_WIDTH\"] = \"stickyTopFullWidth\";\n RowContainerName[\"BOTTOM_LEFT\"] = \"bottomLeft\";\n RowContainerName[\"BOTTOM_RIGHT\"] = \"bottomRight\";\n RowContainerName[\"BOTTOM_CENTER\"] = \"bottomCenter\";\n RowContainerName[\"BOTTOM_FULL_WIDTH\"] = \"bottomFullWidth\";\n})(RowContainerName || (RowContainerName = {}));\nvar RowContainerType;\n(function (RowContainerType) {\n RowContainerType[\"LEFT\"] = \"left\";\n RowContainerType[\"RIGHT\"] = \"right\";\n RowContainerType[\"CENTER\"] = \"center\";\n RowContainerType[\"FULL_WIDTH\"] = \"fullWidth\";\n})(RowContainerType || (RowContainerType = {}));\nfunction getRowContainerTypeForName(name) {\n switch (name) {\n case RowContainerName.CENTER:\n case RowContainerName.TOP_CENTER:\n case RowContainerName.STICKY_TOP_CENTER:\n case RowContainerName.BOTTOM_CENTER:\n return RowContainerType.CENTER;\n case RowContainerName.LEFT:\n case RowContainerName.TOP_LEFT:\n case RowContainerName.STICKY_TOP_LEFT:\n case RowContainerName.BOTTOM_LEFT:\n return RowContainerType.LEFT;\n case RowContainerName.RIGHT:\n case RowContainerName.TOP_RIGHT:\n case RowContainerName.STICKY_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.STICKY_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}\nconst 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.STICKY_TOP_CENTER, 'ag-sticky-top-container'],\n [RowContainerName.STICKY_TOP_LEFT, 'ag-pinned-left-sticky-top'],\n [RowContainerName.STICKY_TOP_RIGHT, 'ag-pinned-right-sticky-top'],\n [RowContainerName.STICKY_TOP_FULL_WIDTH, 'ag-sticky-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]);\nconst ViewportCssClasses = convertToMap([\n [RowContainerName.CENTER, 'ag-center-cols-viewport'],\n [RowContainerName.TOP_CENTER, 'ag-floating-top-viewport'],\n [RowContainerName.STICKY_TOP_CENTER, 'ag-sticky-top-viewport'],\n [RowContainerName.BOTTOM_CENTER, 'ag-floating-bottom-viewport'],\n]);\nconst WrapperCssClasses = convertToMap([\n [RowContainerName.CENTER, 'ag-center-cols-clipper'],\n]);\nclass RowContainerCtrl extends BeanStub {\n constructor(name) {\n super();\n this.visible = true;\n // Maintaining a constant reference enables optimization in React.\n this.EMPTY_CTRLS = [];\n this.name = name;\n this.isFullWithContainer =\n this.name === RowContainerName.TOP_FULL_WIDTH\n || this.name === RowContainerName.STICKY_TOP_FULL_WIDTH\n || this.name === RowContainerName.BOTTOM_FULL_WIDTH\n || this.name === RowContainerName.FULL_WIDTH;\n }\n static getRowContainerCssClasses(name) {\n const containerClass = ContainerCssClasses.get(name);\n const viewportClass = ViewportCssClasses.get(name);\n const wrapperClass = WrapperCssClasses.get(name);\n return { container: containerClass, viewport: viewportClass, wrapper: wrapperClass };\n }\n static getPinned(name) {\n switch (name) {\n case RowContainerName.BOTTOM_LEFT:\n case RowContainerName.TOP_LEFT:\n case RowContainerName.STICKY_TOP_LEFT:\n case RowContainerName.LEFT:\n return 'left';\n case RowContainerName.BOTTOM_RIGHT:\n case RowContainerName.TOP_RIGHT:\n case RowContainerName.STICKY_TOP_RIGHT:\n case RowContainerName.RIGHT:\n return 'right';\n default:\n return null;\n }\n }\n postConstruct() {\n this.enableRtl = this.gridOptionsService.is('enableRtl');\n this.embedFullWidthRows = this.gridOptionsService.is('embedFullWidthRows');\n this.forContainers([RowContainerName.CENTER], () => this.viewportSizeFeature = this.createManagedBean(new ViewportSizeFeature(this)));\n }\n registerWithCtrlsService() {\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.STICKY_TOP_CENTER:\n this.ctrlsService.registerStickyTopCenterRowContainerCtrl(this);\n break;\n case RowContainerName.STICKY_TOP_LEFT:\n this.ctrlsService.registerStickyTopLeftRowContainerCon(this);\n break;\n case RowContainerName.STICKY_TOP_RIGHT:\n this.ctrlsService.registerStickyTopRightRowContainerCtrl(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 forContainers(names, callback) {\n if (names.indexOf(this.name) >= 0) {\n callback();\n }\n }\n getContainerElement() {\n return this.eContainer;\n }\n getViewportSizeFeature() {\n return this.viewportSizeFeature;\n }\n setComp(view, eContainer, eViewport, eWrapper) {\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 const allTopNoFW = [RowContainerName.TOP_CENTER, RowContainerName.TOP_LEFT, RowContainerName.TOP_RIGHT];\n const allStickyTopNoFW = [RowContainerName.STICKY_TOP_CENTER, RowContainerName.STICKY_TOP_LEFT, RowContainerName.STICKY_TOP_RIGHT];\n const allBottomNoFW = [RowContainerName.BOTTOM_CENTER, RowContainerName.BOTTOM_LEFT, RowContainerName.BOTTOM_RIGHT];\n const allMiddleNoFW = [RowContainerName.CENTER, RowContainerName.LEFT, RowContainerName.RIGHT];\n const allNoFW = [...allTopNoFW, ...allBottomNoFW, ...allMiddleNoFW, ...allStickyTopNoFW];\n const allMiddle = [RowContainerName.CENTER, RowContainerName.LEFT, RowContainerName.RIGHT, RowContainerName.FULL_WIDTH];\n const allCenter = [RowContainerName.CENTER, RowContainerName.TOP_CENTER, RowContainerName.STICKY_TOP_CENTER, RowContainerName.BOTTOM_CENTER];\n const allLeft = [RowContainerName.LEFT, RowContainerName.BOTTOM_LEFT, RowContainerName.TOP_LEFT, RowContainerName.STICKY_TOP_LEFT];\n const allRight = [RowContainerName.RIGHT, RowContainerName.BOTTOM_RIGHT, RowContainerName.TOP_RIGHT, RowContainerName.STICKY_TOP_RIGHT];\n this.forContainers(allLeft, () => {\n this.pinnedWidthFeature = this.createManagedBean(new SetPinnedLeftWidthFeature(this.eContainer));\n this.addManagedListener(this.eventService, Events.EVENT_LEFT_PINNED_WIDTH_CHANGED, () => this.onPinnedWidthChanged());\n });\n this.forContainers(allRight, () => {\n this.pinnedWidthFeature = this.createManagedBean(new SetPinnedRightWidthFeature(this.eContainer));\n this.addManagedListener(this.eventService, Events.EVENT_RIGHT_PINNED_WIDTH_CHANGED, () => this.onPinnedWidthChanged());\n });\n this.forContainers(allMiddle, () => this.createManagedBean(new SetHeightFeature(this.eContainer, this.eWrapper)));\n this.forContainers(allNoFW, () => this.createManagedBean(new DragListenerFeature(this.eContainer)));\n this.forContainers(allCenter, () => this.createManagedBean(new CenterWidthFeature(width => this.comp.setContainerWidth(`${width}px`))));\n if (isInvisibleScrollbar()) {\n this.forContainers([RowContainerName.CENTER], () => {\n const pinnedWidthChangedEvent = this.enableRtl ? Events.EVENT_LEFT_PINNED_WIDTH_CHANGED : Events.EVENT_RIGHT_PINNED_WIDTH_CHANGED;\n this.addManagedListener(this.eventService, pinnedWidthChangedEvent, () => this.refreshPaddingForFakeScrollbar());\n });\n this.refreshPaddingForFakeScrollbar();\n }\n this.addListeners();\n this.registerWithCtrlsService();\n }\n refreshPaddingForFakeScrollbar() {\n const { enableRtl, columnModel, name, eWrapper, eContainer } = this;\n const sideToCheck = enableRtl ? RowContainerName.LEFT : RowContainerName.RIGHT;\n this.forContainers([RowContainerName.CENTER, sideToCheck], () => {\n const pinnedWidth = columnModel.getContainerWidth(sideToCheck);\n const marginSide = enableRtl ? 'marginLeft' : 'marginRight';\n if (name === RowContainerName.CENTER) {\n eWrapper.style[marginSide] = pinnedWidth ? '0px' : '16px';\n }\n else {\n eContainer.style[marginSide] = pinnedWidth ? '16px' : '0px';\n }\n });\n }\n addListeners() {\n this.addManagedListener(this.eventService, Events.EVENT_SCROLL_VISIBILITY_CHANGED, () => this.onScrollVisibilityChanged());\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, () => this.onDisplayedColumnsChanged());\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, () => this.onDisplayedColumnsWidthChanged());\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_ROWS_CHANGED, (params) => this.onDisplayedRowsChanged(params.afterScroll));\n this.onScrollVisibilityChanged();\n this.onDisplayedColumnsChanged();\n this.onDisplayedColumnsWidthChanged();\n this.onDisplayedRowsChanged();\n }\n listenOnDomOrder() {\n // sticky section must show rows in set order\n const allStickyContainers = [RowContainerName.STICKY_TOP_CENTER, RowContainerName.STICKY_TOP_LEFT, RowContainerName.STICKY_TOP_RIGHT, RowContainerName.STICKY_TOP_FULL_WIDTH];\n const isStickContainer = allStickyContainers.indexOf(this.name) >= 0;\n if (isStickContainer) {\n this.comp.setDomOrder(true);\n return;\n }\n const listener = () => {\n const isEnsureDomOrder = this.gridOptionsService.is('ensureDomOrder');\n const isPrintLayout = this.gridOptionsService.isDomLayout('print');\n this.comp.setDomOrder(isEnsureDomOrder || isPrintLayout);\n };\n this.addManagedPropertyListener('domLayout', 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 stopHScrollOnPinnedRows() {\n this.forContainers([RowContainerName.TOP_CENTER, RowContainerName.STICKY_TOP_CENTER, RowContainerName.BOTTOM_CENTER], () => {\n const resetScrollLeft = () => this.eViewport.scrollLeft = 0;\n this.addManagedListener(this.eViewport, 'scroll', resetScrollLeft);\n });\n }\n onDisplayedColumnsChanged() {\n this.forContainers([RowContainerName.CENTER], () => this.onHorizontalViewportChanged());\n }\n onDisplayedColumnsWidthChanged() {\n this.forContainers([RowContainerName.CENTER], () => this.onHorizontalViewportChanged());\n }\n onScrollVisibilityChanged() {\n const scrollWidth = this.gridOptionsService.getScrollbarWidth() || 0;\n if (this.name === RowContainerName.CENTER) {\n const visible = this.scrollVisibleService.isHorizontalScrollShowing();\n const scrollbarWidth = visible ? scrollWidth : 0;\n const size = scrollbarWidth == 0 ? '100%' : `calc(100% + ${scrollbarWidth}px)`;\n this.animationFrameService.requestAnimationFrame(() => this.comp.setViewportHeight(size));\n }\n if (this.name === RowContainerName.FULL_WIDTH) {\n const pad = isInvisibleScrollbar() ? 16 : 0;\n const size = `calc(100% - ${pad}px)`;\n this.eContainer.style.setProperty('width', size);\n }\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 addPreventScrollWhileDragging() {\n const preventScroll = (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(() => 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\n onHorizontalViewportChanged() {\n const scrollWidth = this.getCenterWidth();\n const scrollPosition = this.getCenterViewportScrollLeft();\n this.columnModel.setViewportPosition(scrollWidth, scrollPosition);\n }\n getCenterWidth() {\n return getInnerWidth(this.eViewport);\n }\n getCenterViewportScrollLeft() {\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 registerViewportResizeListener(listener) {\n const unsubscribeFromResize = this.resizeObserverService.observeResize(this.eViewport, listener);\n this.addDestroyFunc(() => unsubscribeFromResize());\n }\n isViewportVisible() {\n return isVisible(this.eViewport);\n }\n getViewportScrollLeft() {\n return getScrollLeft(this.eViewport, this.enableRtl);\n }\n isHorizontalScrollShowing() {\n const isAlwaysShowHorizontalScroll = this.gridOptionsService.is('alwaysShowHorizontalScroll');\n return isAlwaysShowHorizontalScroll || isHorizontalScrollShowing(this.eViewport);\n }\n getViewportElement() {\n return this.eViewport;\n }\n setContainerTranslateX(amount) {\n this.eContainer.style.transform = `translateX(${amount}px)`;\n }\n getHScrollPosition() {\n const res = {\n left: this.eViewport.scrollLeft,\n right: this.eViewport.scrollLeft + this.eViewport.offsetWidth\n };\n return res;\n }\n setCenterViewportScrollLeft(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 isContainerVisible() {\n const pinned = RowContainerCtrl.getPinned(this.name);\n return !pinned || (!!this.pinnedWidthFeature && this.pinnedWidthFeature.getWidth() > 0);\n }\n onPinnedWidthChanged() {\n const visible = this.isContainerVisible();\n if (this.visible != visible) {\n this.visible = visible;\n this.onDisplayedRowsChanged();\n }\n if (isInvisibleScrollbar()) {\n this.refreshPaddingForFakeScrollbar();\n }\n }\n onDisplayedRowsChanged(useFlushSync = false) {\n if (this.visible) {\n const printLayout = this.gridOptionsService.isDomLayout('print');\n // this just justifies if the ctrl is in the correct place, this will be fed with zombie rows by the\n // row renderer, so should not block them as they still need to animate - the row renderer\n // will clean these up when they finish animating\n const doesRowMatch = (rowCtrl) => {\n const fullWidthRow = rowCtrl.isFullWidth();\n const embedFW = this.embedFullWidthRows || printLayout;\n const match = this.isFullWithContainer ?\n !embedFW && fullWidthRow\n : embedFW || !fullWidthRow;\n return match;\n };\n // this list contains either all pinned top, center or pinned bottom rows\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 const rowsThisContainer = this.getRowCtrls().filter(doesRowMatch);\n this.comp.setRowCtrls(rowsThisContainer, useFlushSync);\n }\n else {\n this.comp.setRowCtrls(this.EMPTY_CTRLS, false);\n }\n }\n getRowCtrls() {\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.STICKY_TOP_CENTER:\n case RowContainerName.STICKY_TOP_LEFT:\n case RowContainerName.STICKY_TOP_RIGHT:\n case RowContainerName.STICKY_TOP_FULL_WIDTH:\n return this.rowRenderer.getStickyTopRowCtrls();\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}\n__decorate$1F([\n Autowired('scrollVisibleService')\n], RowContainerCtrl.prototype, \"scrollVisibleService\", void 0);\n__decorate$1F([\n Autowired('dragService')\n], RowContainerCtrl.prototype, \"dragService\", void 0);\n__decorate$1F([\n Autowired('ctrlsService')\n], RowContainerCtrl.prototype, \"ctrlsService\", void 0);\n__decorate$1F([\n Autowired('columnModel')\n], RowContainerCtrl.prototype, \"columnModel\", void 0);\n__decorate$1F([\n Autowired('resizeObserverService')\n], RowContainerCtrl.prototype, \"resizeObserverService\", void 0);\n__decorate$1F([\n Autowired('animationFrameService')\n], RowContainerCtrl.prototype, \"animationFrameService\", void 0);\n__decorate$1F([\n Autowired('rowRenderer')\n], RowContainerCtrl.prototype, \"rowRenderer\", void 0);\n__decorate$1F([\n PostConstruct\n], RowContainerCtrl.prototype, \"postConstruct\", null);\n\nvar __decorate$1E = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst 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 \n \n
\n
\n \n \n \n \n
\n \n \n
`;\nclass GridBodyComp extends Component {\n constructor() {\n super(GRID_BODY_TEMPLATE);\n }\n init() {\n const setHeight = (height, element) => {\n const heightString = `${height}px`;\n element.style.minHeight = heightString;\n element.style.height = heightString;\n };\n const compProxy = {\n setRowAnimationCssOnBodyViewport: (cssClass, animate) => this.setRowAnimationCssOnBodyViewport(cssClass, animate),\n setColumnCount: count => setAriaColCount(this.getGui(), count),\n setRowCount: count => setAriaRowCount(this.getGui(), count),\n setTopHeight: height => setHeight(height, this.eTop),\n setBottomHeight: height => setHeight(height, this.eBottom),\n setTopDisplay: display => this.eTop.style.display = display,\n setBottomDisplay: display => this.eBottom.style.display = display,\n setStickyTopHeight: height => this.eStickyTop.style.height = height,\n setStickyTopTop: top => this.eStickyTop.style.top = top,\n setStickyTopWidth: width => this.eStickyTop.style.width = width,\n setColumnMovingCss: (cssClass, flag) => this.addOrRemoveCssClass(cssClass, flag),\n updateLayoutClasses: (cssClass, params) => {\n const classLists = [\n this.eBodyViewport.classList,\n this.eBodyClipper.classList,\n this.eBody.classList\n ];\n classLists.forEach(classList => {\n classList.toggle(LayoutCssClasses.AUTO_HEIGHT, params.autoHeight);\n classList.toggle(LayoutCssClasses.NORMAL, params.normal);\n classList.toggle(LayoutCssClasses.PRINT, params.print);\n });\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: (cssClass, on) => this.eBodyViewport.classList.toggle(CSS_CLASS_FORCE_VERTICAL_SCROLL, on),\n registerBodyViewportResizeListener: listener => {\n const unsubscribeFromResize = this.resizeObserverService.observeResize(this.eBodyViewport, listener);\n this.addDestroyFunc(() => unsubscribeFromResize());\n },\n setPinnedTopBottomOverflowY: overflow => this.eTop.style.overflowY = this.eBottom.style.overflowY = overflow,\n setCellSelectableCss: (cssClass, selectable) => {\n [this.eTop, this.eBodyViewport, this.eBottom]\n .forEach(ct => ct.classList.toggle(cssClass, selectable));\n },\n setBodyViewportWidth: width => this.eBodyViewport.style.width = width\n };\n this.ctrl = this.createManagedBean(new GridBodyCtrl());\n this.ctrl.setComp(compProxy, this.getGui(), this.eBodyViewport, this.eTop, this.eBottom, this.eStickyTop);\n if (this.rangeService || this.gridOptionsService.get('rowSelection') === 'multiple') {\n setAriaMultiSelectable(this.getGui(), true);\n }\n }\n setRowAnimationCssOnBodyViewport(cssClass, animateRows) {\n const bodyViewportClassList = this.eBodyViewport.classList;\n bodyViewportClassList.toggle(RowAnimationCssClasses.ANIMATION_ON, animateRows);\n bodyViewportClassList.toggle(RowAnimationCssClasses.ANIMATION_OFF, !animateRows);\n }\n getFloatingTopBottom() {\n return [this.eTop, this.eBottom];\n }\n}\n__decorate$1E([\n Autowired('resizeObserverService')\n], GridBodyComp.prototype, \"resizeObserverService\", void 0);\n__decorate$1E([\n Optional('rangeService')\n], GridBodyComp.prototype, \"rangeService\", void 0);\n__decorate$1E([\n RefSelector('eBodyViewport')\n], GridBodyComp.prototype, \"eBodyViewport\", void 0);\n__decorate$1E([\n RefSelector('eStickyTop')\n], GridBodyComp.prototype, \"eStickyTop\", void 0);\n__decorate$1E([\n RefSelector('eTop')\n], GridBodyComp.prototype, \"eTop\", void 0);\n__decorate$1E([\n RefSelector('eBottom')\n], GridBodyComp.prototype, \"eBottom\", void 0);\n__decorate$1E([\n RefSelector('gridHeader')\n], GridBodyComp.prototype, \"headerRootComp\", void 0);\n__decorate$1E([\n RefSelector('eBodyClipper')\n], GridBodyComp.prototype, \"eBodyClipper\", void 0);\n__decorate$1E([\n RefSelector('eBody')\n], GridBodyComp.prototype, \"eBody\", void 0);\n__decorate$1E([\n PostConstruct\n], GridBodyComp.prototype, \"init\", null);\n\nvar __decorate$1D = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet ScrollVisibleService = class ScrollVisibleService extends BeanStub {\n postConstruct() {\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 onDisplayedColumnsChanged() {\n this.update();\n }\n onDisplayedColumnsWidthChanged() {\n this.update();\n }\n update() {\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 updateImpl() {\n const centerRowCtrl = this.ctrlsService.getCenterRowContainerCtrl();\n if (!centerRowCtrl) {\n return;\n }\n const params = {\n horizontalScrollShowing: centerRowCtrl.isHorizontalScrollShowing(),\n verticalScrollShowing: this.isVerticalScrollShowing()\n };\n this.setScrollsVisible(params);\n }\n setScrollsVisible(params) {\n const atLeastOneDifferent = this.horizontalScrollShowing !== params.horizontalScrollShowing ||\n this.verticalScrollShowing !== params.verticalScrollShowing;\n if (atLeastOneDifferent) {\n this.horizontalScrollShowing = params.horizontalScrollShowing;\n this.verticalScrollShowing = params.verticalScrollShowing;\n const event = {\n type: Events.EVENT_SCROLL_VISIBILITY_CHANGED\n };\n this.eventService.dispatchEvent(event);\n }\n }\n // used by pagination service - to know page height\n isHorizontalScrollShowing() {\n return this.horizontalScrollShowing;\n }\n // used by header container\n isVerticalScrollShowing() {\n return this.verticalScrollShowing;\n }\n};\n__decorate$1D([\n Autowired('ctrlsService')\n], ScrollVisibleService.prototype, \"ctrlsService\", void 0);\n__decorate$1D([\n PostConstruct\n], ScrollVisibleService.prototype, \"postConstruct\", null);\nScrollVisibleService = __decorate$1D([\n Bean('scrollVisibleService')\n], ScrollVisibleService);\n\nvar __decorate$1C = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 MouseEventService_1;\nlet MouseEventService = MouseEventService_1 = class MouseEventService extends BeanStub {\n constructor() {\n super(...arguments);\n this.gridInstanceId = MouseEventService_1.gridInstanceSequence.next();\n }\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 stampTopLevelGridCompWithGridInstance(eGridDiv) {\n eGridDiv[MouseEventService_1.GRID_DOM_KEY] = this.gridInstanceId;\n }\n getRenderedCellForEvent(event) {\n return getCtrlForEventTarget(this.gridOptionsService, event.target, 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 isEventFromThisGrid(event) {\n const res = this.isElementInThisGrid(event.target);\n return res;\n }\n isElementInThisGrid(element) {\n let pointer = element;\n while (pointer) {\n const instanceId = pointer[MouseEventService_1.GRID_DOM_KEY];\n if (exists(instanceId)) {\n const eventFromThisGrid = instanceId === this.gridInstanceId;\n return eventFromThisGrid;\n }\n pointer = pointer.parentElement;\n }\n return false;\n }\n getCellPositionForEvent(event) {\n const cellComp = this.getRenderedCellForEvent(event);\n return cellComp ? cellComp.getCellPosition() : null;\n }\n getNormalisedPosition(event) {\n const gridPanelHasScrolls = this.gridOptionsService.isDomLayout('normal');\n const e = event;\n let x;\n let 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 const gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n const vRange = gridBodyCon.getScrollFeature().getVScrollPosition();\n const hRange = gridBodyCon.getScrollFeature().getHScrollPosition();\n x += hRange.left;\n y += vRange.top;\n }\n return { x, y };\n }\n};\nMouseEventService.gridInstanceSequence = new NumberSequence();\nMouseEventService.GRID_DOM_KEY = '__ag_grid_instance';\n__decorate$1C([\n Autowired('ctrlsService')\n], MouseEventService.prototype, \"ctrlsService\", void 0);\nMouseEventService = MouseEventService_1 = __decorate$1C([\n Bean('mouseEventService')\n], MouseEventService);\n\nvar __decorate$1B = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet NavigationService = class NavigationService extends BeanStub {\n constructor() {\n super();\n this.onPageDown = throttle(this.onPageDown, 100);\n this.onPageUp = throttle(this.onPageUp, 100);\n }\n postConstruct() {\n this.ctrlsService.whenReady(p => {\n this.gridBodyCon = p.gridBodyCtrl;\n });\n }\n handlePageScrollingKey(event, fromFullWidth = false) {\n const key = event.key;\n const alt = event.altKey;\n const ctrl = event.ctrlKey || event.metaKey;\n const rangeServiceShouldHandleShift = !!this.rangeService && event.shiftKey;\n // home and end can be processed without knowing the currently selected cell, this can occur for full width rows.\n const currentCell = this.mouseEventService.getCellPositionForEvent(event);\n let 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 case KeyCode.UP:\n case KeyCode.DOWN:\n if (!currentCell) {\n return false;\n }\n // handle when ctrl is pressed only, if shift is pressed\n // it will be handled by the rangeService\n if (ctrl && !alt && !rangeServiceShouldHandleShift) {\n this.onCtrlUpDownLeftRight(key, currentCell);\n processed = true;\n }\n break;\n case KeyCode.PAGE_DOWN:\n case KeyCode.PAGE_UP:\n // handle page up and page down when ctrl & alt are NOT pressed\n if (!ctrl && !alt) {\n processed = this.handlePageUpDown(key, currentCell, fromFullWidth);\n }\n break;\n }\n if (processed) {\n event.preventDefault();\n }\n return processed;\n }\n handlePageUpDown(key, currentCell, fromFullWidth) {\n if (fromFullWidth) {\n currentCell = this.focusService.getFocusedCell();\n }\n if (!currentCell) {\n return false;\n }\n if (key === KeyCode.PAGE_UP) {\n this.onPageUp(currentCell);\n }\n else {\n this.onPageDown(currentCell);\n }\n return true;\n }\n navigateTo(navigateParams) {\n const { scrollIndex, scrollType, scrollColumn, focusIndex, focusColumn } = navigateParams;\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 // setFocusedCell relies on the browser default focus behavior to scroll the focused cell into view,\n // however, this behavior will cause the cell border to be cut off, or if we have sticky rows, the\n // cell will be completely hidden, so we call ensureIndexVisible without a position to guarantee\n // minimal scroll to get the row into view.\n if (!navigateParams.isAsync) {\n this.gridBodyCon.getScrollFeature().ensureIndexVisible(focusIndex);\n }\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({ rowIndex: focusIndex, column: focusColumn, rowPinned: null, forceBrowserFocus: true });\n if (this.rangeService) {\n const cellPosition = { rowIndex: focusIndex, rowPinned: null, column: focusColumn };\n this.rangeService.setRangeToCell(cellPosition);\n }\n }\n // this method is throttled, see the `constructor`\n onPageDown(gridCell) {\n const gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n const scrollPosition = gridBodyCon.getScrollFeature().getVScrollPosition();\n const pixelsInOnePage = this.getViewportHeight();\n const pagingPixelOffset = this.paginationProxy.getPixelOffset();\n const currentPageBottomPixel = scrollPosition.top + pixelsInOnePage;\n const currentPageBottomRow = this.paginationProxy.getRowIndexAtPixel(currentPageBottomPixel + pagingPixelOffset);\n if (this.columnModel.isAutoRowHeightActive()) {\n this.navigateToNextPageWithAutoHeight(gridCell, currentPageBottomRow);\n }\n else {\n this.navigateToNextPage(gridCell, currentPageBottomRow);\n }\n }\n // this method is throttled, see the `constructor`\n onPageUp(gridCell) {\n const gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n const scrollPosition = gridBodyCon.getScrollFeature().getVScrollPosition();\n const pagingPixelOffset = this.paginationProxy.getPixelOffset();\n const currentPageTopPixel = scrollPosition.top;\n const currentPageTopRow = this.paginationProxy.getRowIndexAtPixel(currentPageTopPixel + pagingPixelOffset);\n if (this.columnModel.isAutoRowHeightActive()) {\n this.navigateToNextPageWithAutoHeight(gridCell, currentPageTopRow, true);\n }\n else {\n this.navigateToNextPage(gridCell, currentPageTopRow, true);\n }\n }\n navigateToNextPage(gridCell, scrollIndex, up = false) {\n const pixelsInOnePage = this.getViewportHeight();\n const firstRow = this.paginationProxy.getPageFirstRow();\n const lastRow = this.paginationProxy.getPageLastRow();\n const pagingPixelOffset = this.paginationProxy.getPixelOffset();\n const currentRowNode = this.paginationProxy.getRow(gridCell.rowIndex);\n const rowPixelDiff = up\n ? ((currentRowNode === null || currentRowNode === void 0 ? void 0 : currentRowNode.rowHeight) - pixelsInOnePage - pagingPixelOffset)\n : (pixelsInOnePage - pagingPixelOffset);\n const nextCellPixel = (currentRowNode === null || currentRowNode === void 0 ? void 0 : currentRowNode.rowTop) + rowPixelDiff;\n let focusIndex = this.paginationProxy.getRowIndexAtPixel(nextCellPixel + pagingPixelOffset);\n if (focusIndex === gridCell.rowIndex) {\n const diff = up ? -1 : 1;\n scrollIndex = focusIndex = gridCell.rowIndex + diff;\n }\n let scrollType;\n if (up) {\n scrollType = 'bottom';\n if (focusIndex < firstRow) {\n focusIndex = firstRow;\n }\n if (scrollIndex < firstRow) {\n scrollIndex = firstRow;\n }\n }\n else {\n scrollType = 'top';\n if (focusIndex > lastRow) {\n focusIndex = lastRow;\n }\n if (scrollIndex > lastRow) {\n scrollIndex = lastRow;\n }\n }\n if (this.isRowTallerThanView(focusIndex)) {\n scrollIndex = focusIndex;\n scrollType = 'top';\n }\n this.navigateTo({\n scrollIndex,\n scrollType,\n scrollColumn: null,\n focusIndex,\n focusColumn: gridCell.column\n });\n }\n navigateToNextPageWithAutoHeight(gridCell, scrollIndex, up = false) {\n // because autoHeight will calculate the height of rows after scroll\n // first we scroll towards the required point, then we add a small\n // delay to allow the height to be recalculated, check which index\n // should be focused and then finally navigate to that index.\n // TODO: we should probably have an event fired once to scrollbar has\n // settled and all rowHeights have been calculated instead of relying\n // on a setTimeout of 50ms.\n this.navigateTo({\n scrollIndex: scrollIndex,\n scrollType: up ? 'bottom' : 'top',\n scrollColumn: null,\n focusIndex: scrollIndex,\n focusColumn: gridCell.column\n });\n setTimeout(() => {\n const focusIndex = this.getNextFocusIndexForAutoHeight(gridCell, up);\n this.navigateTo({\n scrollIndex: scrollIndex,\n scrollType: up ? 'bottom' : 'top',\n scrollColumn: null,\n focusIndex: focusIndex,\n focusColumn: gridCell.column,\n isAsync: true\n });\n }, 50);\n }\n getNextFocusIndexForAutoHeight(gridCell, up = false) {\n var _a;\n const step = up ? -1 : 1;\n const pixelsInOnePage = this.getViewportHeight();\n const lastRowIndex = this.paginationProxy.getPageLastRow();\n let pixelSum = 0;\n let currentIndex = gridCell.rowIndex;\n while (currentIndex >= 0 && currentIndex <= lastRowIndex) {\n const currentCell = this.paginationProxy.getRow(currentIndex);\n if (currentCell) {\n const currentCellHeight = (_a = currentCell.rowHeight) !== null && _a !== void 0 ? _a : 0;\n if (pixelSum + currentCellHeight > pixelsInOnePage) {\n break;\n }\n pixelSum += currentCellHeight;\n }\n currentIndex += step;\n }\n return Math.max(0, Math.min(currentIndex, lastRowIndex));\n }\n getViewportHeight() {\n const gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n const scrollPosition = gridBodyCon.getScrollFeature().getVScrollPosition();\n const scrollbarWidth = this.gridOptionsService.getScrollbarWidth();\n let pixelsInOnePage = scrollPosition.bottom - scrollPosition.top;\n if (this.ctrlsService.getCenterRowContainerCtrl().isHorizontalScrollShowing()) {\n pixelsInOnePage -= scrollbarWidth;\n }\n return pixelsInOnePage;\n }\n isRowTallerThanView(rowIndex) {\n const rowNode = this.paginationProxy.getRow(rowIndex);\n if (!rowNode) {\n return false;\n }\n const rowHeight = rowNode.rowHeight;\n if (typeof rowHeight !== 'number') {\n return false;\n }\n return rowHeight > this.getViewportHeight();\n }\n onCtrlUpDownLeftRight(key, gridCell) {\n const cellToFocus = this.cellNavigationService.getNextCellToFocus(key, gridCell, true);\n const { rowIndex, column } = cellToFocus;\n this.navigateTo({\n scrollIndex: rowIndex,\n scrollType: null,\n scrollColumn: column,\n focusIndex: rowIndex,\n focusColumn: column\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 onHomeOrEndKey(key) {\n const homeKey = key === KeyCode.PAGE_HOME;\n const allColumns = this.columnModel.getAllDisplayedColumns();\n const columnToSelect = homeKey ? allColumns[0] : last(allColumns);\n const scrollIndex = homeKey ? this.paginationProxy.getPageFirstRow() : this.paginationProxy.getPageLastRow();\n this.navigateTo({\n scrollIndex: scrollIndex,\n scrollType: null,\n scrollColumn: columnToSelect,\n focusIndex: scrollIndex,\n focusColumn: columnToSelect\n });\n }\n // result of keyboard event\n onTabKeyDown(previous, keyboardEvent) {\n const backwards = keyboardEvent.shiftKey;\n const 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 const { rowIndex, rowPinned } = previous.getRowPosition();\n const firstRow = rowPinned ? rowIndex === 0 : rowIndex === this.paginationProxy.getPageFirstRow();\n if (firstRow) {\n if (this.gridOptionsService.getNum('headerHeight') === 0) {\n this.focusService.focusNextGridCoreContainer(true, true);\n }\n else {\n keyboardEvent.preventDefault();\n this.focusService.focusLastHeader(keyboardEvent);\n }\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 tabToNextCell(backwards, event) {\n const focusedCell = this.focusService.getFocusedCell();\n // if no focus, then cannot navigate\n if (!focusedCell) {\n return false;\n }\n let 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 tabToNextCellCommon(previous, backwards, event) {\n let 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 const cell = previous;\n const row = cell.getRowCtrl();\n if (row) {\n editing = row.isEditing();\n }\n }\n let res;\n if (editing) {\n // if we are editing, we know it's not a Full Width Row (RowComp)\n if (this.gridOptionsService.get('editType') === 'fullRow') {\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 moveToNextEditingCell(previousCell, backwards, event = null) {\n const previousPos = previousCell.getCellPosition();\n // before we stop editing, we need to focus the cell element\n // so the grid doesn't detect that focus has left the grid\n previousCell.getGui().focus();\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 const 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, true, event);\n nextCell.focusCell(false);\n return true;\n }\n moveToNextEditingRow(previousCell, backwards, event = null) {\n const previousPos = previousCell.getCellPosition();\n // find the next cell to start editing\n const nextCell = this.findNextCellToFocusOn(previousPos, backwards, true);\n if (nextCell == null) {\n return false;\n }\n const nextPos = nextCell.getCellPosition();\n const previousEditable = this.isCellEditable(previousPos);\n const nextEditable = this.isCellEditable(nextPos);\n const rowsMatch = nextPos && previousPos.rowIndex === nextPos.rowIndex && previousPos.rowPinned === nextPos.rowPinned;\n if (previousEditable) {\n previousCell.setFocusOutOnEditor();\n }\n if (!rowsMatch) {\n const pRow = previousCell.getRowCtrl();\n pRow.stopEditing();\n const nRow = nextCell.getRowCtrl();\n nRow.startRowEditing(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 moveToNextCellNotEditing(previousCell, backwards) {\n const displayedColumns = this.columnModel.getAllDisplayedColumns();\n let cellPos;\n if (previousCell instanceof RowCtrl) {\n cellPos = Object.assign(Object.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 const 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 findNextCellToFocusOn(previousPosition, backwards, startEditing) {\n let 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 const userFunc = this.gridOptionsService.getCallback('tabToNextCell');\n if (exists(userFunc)) {\n const params = {\n backwards: backwards,\n editing: startEditing,\n previousCellPosition: previousPosition,\n nextCellPosition: nextPosition ? nextPosition : null\n };\n const userCell = userFunc(params);\n if (exists(userCell)) {\n if (userCell.floating) {\n doOnce(() => { 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 const 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 const fullRowEdit = this.gridOptionsService.get('editType') === 'fullRow';\n if (startEditing && !fullRowEdit) {\n const 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 const 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 const row = this.rowRenderer.getRowByPosition(nextPosition);\n if (!row || !row.isFullWidth() || startEditing) {\n continue;\n }\n return row;\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 isCellEditable(cell) {\n const rowNode = this.lookupRowNodeForCell(cell);\n if (rowNode) {\n return cell.column.isCellEditable(rowNode);\n }\n return false;\n }\n getCellByPosition(cellPosition) {\n const rowCtrl = this.rowRenderer.getRowByPosition(cellPosition);\n if (!rowCtrl) {\n return null;\n }\n return rowCtrl.getCellCtrl(cellPosition.column);\n }\n lookupRowNodeForCell(cell) {\n if (cell.rowPinned === 'top') {\n return this.pinnedRowModel.getPinnedTopRow(cell.rowIndex);\n }\n if (cell.rowPinned === '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 navigateToNextCell(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 let nextCell = currentCell;\n let 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.gridOptionsService.is('enableRtl')) {\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 const userFunc = this.gridOptionsService.getCallback('navigateToNextCell');\n if (exists(userFunc)) {\n const params = {\n key: key,\n previousCellPosition: currentCell,\n nextCellPosition: nextCell ? nextCell : null,\n event: event\n };\n const userCell = userFunc(params);\n if (exists(userCell)) {\n if (userCell.floating) {\n doOnce(() => { 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 const 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 const normalisedPosition = this.getNormalisedPosition(nextCell);\n if (normalisedPosition) {\n this.focusPosition(normalisedPosition);\n }\n else {\n this.tryToFocusFullWidthRow(nextCell);\n }\n }\n getNormalisedPosition(cellPosition) {\n // ensureCellVisible first, to make sure cell at position is rendered.\n this.ensureCellVisible(cellPosition);\n const cellCtrl = this.getCellByPosition(cellPosition);\n // not guaranteed to have a cellComp when using the SSRM as blocks are loading.\n if (!cellCtrl) {\n return null;\n }\n cellPosition = cellCtrl.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 tryToFocusFullWidthRow(position, backwards = false) {\n const displayedColumns = this.columnModel.getAllDisplayedColumns();\n const rowComp = this.rowRenderer.getRowByPosition(position);\n if (!rowComp || !rowComp.isFullWidth()) {\n return false;\n }\n const currentCellFocused = this.focusService.getFocusedCell();\n const cellPosition = {\n rowIndex: position.rowIndex,\n rowPinned: position.rowPinned,\n column: position.column || (backwards ? last(displayedColumns) : displayedColumns[0])\n };\n this.focusPosition(cellPosition);\n const fromBelow = currentCellFocused != null ? this.rowPositionUtils.before(cellPosition, currentCellFocused) : false;\n const focusEvent = {\n type: Events.EVENT_FULL_WIDTH_ROW_FOCUSED,\n rowIndex: cellPosition.rowIndex,\n rowPinned: cellPosition.rowPinned,\n column: cellPosition.column,\n isFullWidthCell: true,\n floating: cellPosition.rowPinned,\n fromBelow\n };\n this.eventService.dispatchEvent(focusEvent);\n return true;\n }\n focusPosition(cellPosition) {\n this.focusService.setFocusedCell({\n rowIndex: cellPosition.rowIndex,\n column: cellPosition.column,\n rowPinned: cellPosition.rowPinned,\n forceBrowserFocus: true\n });\n if (this.rangeService) {\n this.rangeService.setRangeToCell(cellPosition);\n }\n }\n isValidNavigateCell(cell) {\n const rowNode = this.rowPositionUtils.getRowNode(cell);\n // we do not allow focusing on detail rows and full width rows\n return !!rowNode;\n }\n getLastCellOfColSpan(cell) {\n const cellCtrl = this.getCellByPosition(cell);\n if (!cellCtrl) {\n return cell;\n }\n const 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 ensureCellVisible(gridCell) {\n const isGroupStickyEnabled = this.gridOptionsService.isGroupRowsSticky();\n const rowNode = this.rowModel.getRow(gridCell.rowIndex);\n // sticky rows are always visible, so the grid shouldn't scroll to focus them.\n const skipScrollToRow = isGroupStickyEnabled && (rowNode === null || rowNode === void 0 ? void 0 : rowNode.sticky);\n // this scrolls the row into view\n if (!skipScrollToRow && 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 }\n};\n__decorate$1B([\n Autowired('mouseEventService')\n], NavigationService.prototype, \"mouseEventService\", void 0);\n__decorate$1B([\n Autowired('paginationProxy')\n], NavigationService.prototype, \"paginationProxy\", void 0);\n__decorate$1B([\n Autowired('focusService')\n], NavigationService.prototype, \"focusService\", void 0);\n__decorate$1B([\n Optional('rangeService')\n], NavigationService.prototype, \"rangeService\", void 0);\n__decorate$1B([\n Autowired('columnModel')\n], NavigationService.prototype, \"columnModel\", void 0);\n__decorate$1B([\n Autowired('rowModel')\n], NavigationService.prototype, \"rowModel\", void 0);\n__decorate$1B([\n Autowired('ctrlsService')\n], NavigationService.prototype, \"ctrlsService\", void 0);\n__decorate$1B([\n Autowired('rowRenderer')\n], NavigationService.prototype, \"rowRenderer\", void 0);\n__decorate$1B([\n Autowired('headerNavigationService')\n], NavigationService.prototype, \"headerNavigationService\", void 0);\n__decorate$1B([\n Autowired(\"rowPositionUtils\")\n], NavigationService.prototype, \"rowPositionUtils\", void 0);\n__decorate$1B([\n Autowired(\"cellNavigationService\")\n], NavigationService.prototype, \"cellNavigationService\", void 0);\n__decorate$1B([\n Autowired(\"pinnedRowModel\")\n], NavigationService.prototype, \"pinnedRowModel\", void 0);\n__decorate$1B([\n PostConstruct\n], NavigationService.prototype, \"postConstruct\", null);\nNavigationService = __decorate$1B([\n Bean('navigationService')\n], NavigationService);\n\nvar __decorate$1A = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass PopupEditorWrapper extends PopupComponent {\n constructor(params) {\n super(/* html */ `
`);\n this.params = params;\n }\n postConstruct() {\n this.gridOptionsService.setDomData(this.getGui(), PopupEditorWrapper.DOM_KEY_POPUP_EDITOR_WRAPPER, true);\n this.addKeyDownListener();\n }\n addKeyDownListener() {\n const eGui = this.getGui();\n const params = this.params;\n const listener = (event) => {\n if (!isUserSuppressingKeyboardEvent(this.gridOptionsService, event, params.node, params.column, true)) {\n params.onKeyDown(event);\n }\n };\n this.addManagedListener(eGui, 'keydown', listener);\n }\n}\nPopupEditorWrapper.DOM_KEY_POPUP_EDITOR_WRAPPER = 'popupEditorWrapper';\n__decorate$1A([\n PostConstruct\n], PopupEditorWrapper.prototype, \"postConstruct\", null);\n\nclass CellComp extends Component {\n constructor(beans, cellCtrl, printLayout, eRow, editingRow) {\n super();\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.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 const eGui = this.getGui();\n this.forceWrapper = cellCtrl.isForceWrapper();\n this.refreshWrapper(false);\n const setAttribute = (name, value, element) => {\n const actualElement = element ? element : eGui;\n if (value != null && value != '') {\n actualElement.setAttribute(name, value);\n }\n else {\n actualElement.removeAttribute(name);\n }\n };\n const compProxy = {\n addOrRemoveCssClass: (cssClassName, on) => this.addOrRemoveCssClass(cssClassName, on),\n setUserStyles: (styles) => addStylesToElement(eGui, styles),\n getFocusableElement: () => this.getFocusableElement(),\n setTabIndex: tabIndex => setAttribute('tabindex', tabIndex.toString()),\n setRole: role => setAriaRole(eGui, role),\n setColId: colId => setAttribute('col-id', colId),\n setTitle: title => setAttribute('title', title),\n setIncludeSelection: include => this.includeSelection = include,\n setIncludeRowDrag: include => this.includeRowDrag = include,\n setIncludeDndSource: include => this.includeDndSource = include,\n setRenderDetails: (compDetails, valueToDisplay, force) => this.setRenderDetails(compDetails, valueToDisplay, force),\n setEditDetails: (compDetails, popup, position) => this.setEditDetails(compDetails, popup, position),\n getCellEditor: () => this.cellEditor || null,\n getCellRenderer: () => this.cellRenderer || null,\n getParentOfValue: () => this.getParentOfValue()\n };\n this.cellCtrl = cellCtrl;\n cellCtrl.setComp(compProxy, this.getGui(), this.eCellWrapper, printLayout, editingRow);\n }\n getParentOfValue() {\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 setRenderDetails(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 const 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 // if display template has changed, means any previous Cell Renderer is in the wrong location\n const controlWrapperChanged = this.refreshWrapper(false);\n this.refreshEditStyles(false);\n // all of these have dependencies on the eGui, so only do them after eGui is set\n if (compDetails) {\n const neverRefresh = forceNewCellRendererInstance || controlWrapperChanged;\n const cellRendererRefreshSuccessful = neverRefresh ? false : this.refreshCellRenderer(compDetails);\n if (!cellRendererRefreshSuccessful) {\n this.destroyRenderer();\n this.createCellRendererInstance(compDetails);\n }\n }\n else {\n this.destroyRenderer();\n this.insertValueWithoutCellRenderer(valueToDisplay);\n }\n }\n setEditDetails(compDetails, popup, position) {\n if (compDetails) {\n this.createCellEditorInstance(compDetails, popup, position);\n }\n else {\n this.destroyEditor();\n }\n }\n removeControls() {\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 refreshWrapper(editing) {\n const providingControls = this.includeRowDrag || this.includeDndSource || this.includeSelection;\n const usingWrapper = providingControls || this.forceWrapper;\n const putWrapperIn = usingWrapper && this.eCellWrapper == null;\n if (putWrapperIn) {\n this.eCellWrapper = loadTemplate(/* html */ `
`);\n this.getGui().appendChild(this.eCellWrapper);\n }\n const 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 const usingCellValue = !editing && usingWrapper;\n const putCellValueIn = usingCellValue && this.eCellValue == null;\n if (putCellValueIn) {\n this.eCellValue = loadTemplate(/* html */ ``);\n this.eCellWrapper.appendChild(this.eCellValue);\n }\n const takeCellValueOut = !usingCellValue && this.eCellValue != null;\n if (takeCellValueOut) {\n removeFromParent(this.eCellValue);\n this.eCellValue = undefined;\n }\n const templateChanged = putWrapperIn || takeWrapperOut || putCellValueIn || takeCellValueOut;\n if (templateChanged) {\n this.removeControls();\n }\n if (!editing) {\n if (providingControls) {\n this.addControls();\n }\n }\n return templateChanged;\n }\n addControls() {\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 }\n }\n createCellEditorInstance(compDetails, popup, position) {\n const versionCopy = this.editorVersion;\n const cellEditorPromise = compDetails.newAgStackInstance();\n if (!cellEditorPromise) {\n return;\n } // if empty, userComponentFactory already did a console message\n const { params } = compDetails;\n cellEditorPromise.then(c => 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 const cellEditorAsync = missing(this.cellEditor);\n if (cellEditorAsync && params.cellStartedEdit) {\n this.cellCtrl.focusCell(true);\n }\n }\n insertValueWithoutCellRenderer(valueToDisplay) {\n const eParent = this.getParentOfValue();\n clearElement(eParent);\n const escapedValue = valueToDisplay != null ? escapeString(valueToDisplay) : null;\n if (escapedValue != null) {\n eParent.innerHTML = escapedValue;\n }\n }\n destroyEditorAndRenderer() {\n this.destroyRenderer();\n this.destroyEditor();\n }\n destroyRenderer() {\n const { context } = this.beans;\n this.cellRenderer = context.destroyBean(this.cellRenderer);\n removeFromParent(this.cellRendererGui);\n this.cellRendererGui = null;\n this.rendererVersion++;\n }\n destroyEditor() {\n const { context } = this.beans;\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 refreshCellRenderer(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 const 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 createCellRendererInstance(compDetails) {\n // never use task service if animation frame service 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 const suppressAnimationFrame = this.beans.gridOptionsService.is('suppressAnimationFrame');\n const useTaskService = !suppressAnimationFrame;\n const displayComponentVersionCopy = this.rendererVersion;\n const { componentClass } = compDetails;\n const createCellRendererFunc = () => {\n const 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 const componentPromise = compDetails.newAgStackInstance();\n const 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 getCtrl() {\n return this.cellCtrl;\n }\n getRowCtrl() {\n return this.rowCtrl;\n }\n getCellRenderer() {\n return this.cellRenderer;\n }\n getCellEditor() {\n return this.cellEditor;\n }\n afterCellRendererCreated(cellRendererVersion, cellRendererClass, cellRenderer) {\n const 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 const eParent = this.getParentOfValue();\n clearElement(eParent);\n eParent.appendChild(this.cellRendererGui);\n }\n }\n afterCellEditorCreated(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 const staleComp = requestVersion !== this.editorVersion;\n if (staleComp) {\n this.beans.context.destroyBean(cellEditor);\n return;\n }\n const editingCancelledByUserComp = cellEditor.isCancelBeforeStart && cellEditor.isCancelBeforeStart();\n if (editingCancelledByUserComp) {\n this.beans.context.destroyBean(cellEditor);\n this.cellCtrl.stopEditing(true);\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 const cellEditorInPopup = popup || (cellEditor.isPopup !== undefined && cellEditor.isPopup());\n if (cellEditorInPopup) {\n this.addPopupCellEditor(params, position);\n }\n else {\n this.addInCellEditor();\n }\n this.refreshEditStyles(true, cellEditorInPopup);\n if (cellEditor.afterGuiAttached) {\n cellEditor.afterGuiAttached();\n }\n }\n refreshEditStyles(editing, isPopup) {\n var _a;\n this.addOrRemoveCssClass('ag-cell-inline-editing', editing && !isPopup);\n this.addOrRemoveCssClass('ag-cell-popup-editing', editing && !!isPopup);\n this.addOrRemoveCssClass('ag-cell-not-inline-editing', !editing || !!isPopup);\n (_a = this.rowCtrl) === null || _a === void 0 ? void 0 : _a.setInlineEditingCss(editing);\n }\n addInCellEditor() {\n const 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 const eDocument = this.beans.gridOptionsService.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 const eParent = this.getParentOfValue();\n eParent.appendChild(this.cellEditorGui);\n }\n }\n addPopupCellEditor(params, position) {\n if (this.beans.gridOptionsService.get('editType') === 'fullRow') {\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 const 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 const ePopupGui = this.cellEditorPopupWrapper.getGui();\n if (this.cellEditorGui) {\n ePopupGui.appendChild(this.cellEditorGui);\n }\n const popupService = this.beans.popupService;\n const useModelPopup = this.beans.gridOptionsService.is('stopEditingWhenCellsLoseFocus');\n // see if position provided by colDef, if not then check old way of method on cellComp\n const positionToUse = position != null\n ? position\n : cellEditor.getPopupPosition\n ? cellEditor.getPopupPosition()\n : 'over';\n const isRtl = this.beans.gridOptionsService.is('enableRtl');\n const positionParams = {\n ePopup: ePopupGui,\n column: this.column,\n rowNode: this.rowNode,\n type: 'popupCellEditor',\n eventSource: this.getGui(),\n position: positionToUse,\n alignSide: isRtl ? 'right' : 'left',\n keepWithinBounds: true\n };\n const positionCallback = popupService.positionPopupByComponent.bind(popupService, positionParams);\n const translate = this.beans.localeService.getLocaleTextFunc();\n const addPopupRes = popupService.addPopup({\n modal: useModelPopup,\n eChild: ePopupGui,\n closeOnEsc: true,\n closedCallback: () => { this.cellCtrl.onPopupEditorClosed(); },\n anchorToElement: this.getGui(),\n positionCallback,\n ariaLabel: translate('ariaLabelCellEditor', 'Cell Editor')\n });\n if (addPopupRes) {\n this.hideEditorPopup = addPopupRes.hideFunc;\n }\n }\n detach() {\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 destroy() {\n this.cellCtrl.stopEditing();\n this.destroyEditorAndRenderer();\n this.removeControls();\n super.destroy();\n }\n clearParentOfValue() {\n const 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 const eDocument = this.beans.gridOptionsService.getDocument();\n if (eGui.contains(eDocument.activeElement) && browserSupportsPreventScroll()) {\n eGui.focus({ preventScroll: true });\n }\n clearElement(this.getParentOfValue());\n }\n}\n\nclass RowComp extends Component {\n constructor(ctrl, beans, containerType) {\n super();\n this.cellComps = {};\n this.beans = beans;\n this.rowCtrl = ctrl;\n this.setTemplate(/* html */ `
`);\n const eGui = this.getGui();\n const style = eGui.style;\n const compProxy = {\n setDomOrder: domOrder => this.domOrder = domOrder,\n setCellCtrls: cellCtrls => this.setCellCtrls(cellCtrls),\n showFullWidth: compDetails => this.showFullWidth(compDetails),\n getFullWidthCellRenderer: () => this.getFullWidthCellRenderer(),\n addOrRemoveCssClass: (name, on) => this.addOrRemoveCssClass(name, on),\n setUserStyles: (styles) => addStylesToElement(eGui, styles),\n setTop: top => style.top = top,\n setTransform: transform => style.transform = transform,\n setRowIndex: rowIndex => eGui.setAttribute('row-index', rowIndex),\n setRole: role => setAriaRole(eGui, role),\n setRowId: (rowId) => eGui.setAttribute('row-id', rowId),\n setRowBusinessKey: businessKey => eGui.setAttribute('row-business-key', businessKey),\n setTabIndex: tabIndex => eGui.setAttribute('tabindex', tabIndex.toString())\n };\n ctrl.setComp(compProxy, this.getGui(), containerType);\n this.addDestroyFunc(() => {\n ctrl.unsetComp(containerType);\n });\n }\n getInitialStyle(containerType) {\n const transform = this.rowCtrl.getInitialTransform(containerType);\n const top = this.rowCtrl.getInitialRowTop(containerType);\n return transform ? `transform: ${transform}` : `top: ${top}`;\n }\n showFullWidth(compDetails) {\n const callback = (cellRenderer) => {\n if (this.isAlive()) {\n const 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 const res = compDetails.newAgStackInstance();\n if (!res) {\n return;\n }\n res.then(callback);\n }\n setCellCtrls(cellCtrls) {\n const cellsToRemove = Object.assign({}, this.cellComps);\n cellCtrls.forEach(cellCtrl => {\n const key = cellCtrl.getInstanceId();\n const existingCellComp = this.cellComps[key];\n if (existingCellComp == null) {\n this.newCellComp(cellCtrl);\n }\n else {\n cellsToRemove[key] = null;\n }\n });\n const cellCompsToRemove = getAllValuesInObject(cellsToRemove)\n .filter(cellComp => cellComp != null);\n this.destroyCells(cellCompsToRemove);\n this.ensureDomOrder(cellCtrls);\n }\n ensureDomOrder(cellCtrls) {\n if (!this.domOrder) {\n return;\n }\n const elementsInOrder = [];\n cellCtrls.forEach(cellCtrl => {\n const cellComp = this.cellComps[cellCtrl.getInstanceId()];\n if (cellComp) {\n elementsInOrder.push(cellComp.getGui());\n }\n });\n setDomChildOrder(this.getGui(), elementsInOrder);\n }\n newCellComp(cellCtrl) {\n const cellComp = new CellComp(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 destroy() {\n super.destroy();\n this.destroyAllCells();\n }\n destroyAllCells() {\n const cellsToDestroy = getAllValuesInObject(this.cellComps).filter(cp => cp != null);\n this.destroyCells(cellsToDestroy);\n }\n setFullWidthRowComp(fullWidthRowComponent) {\n if (this.fullWidthCellRenderer) {\n console.error('AG Grid - should not be setting fullWidthRowComponent twice');\n }\n this.fullWidthCellRenderer = fullWidthRowComponent;\n this.addDestroyFunc(() => {\n this.fullWidthCellRenderer = this.beans.context.destroyBean(this.fullWidthCellRenderer);\n });\n }\n getFullWidthCellRenderer() {\n return this.fullWidthCellRenderer;\n }\n destroyCells(cellComps) {\n cellComps.forEach(cellComp => {\n // could be old reference, ie removed cell\n if (!cellComp) {\n return;\n }\n // check cellComp belongs in this container\n const 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}\n\nvar __decorate$1z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nfunction templateFactory() {\n const name = Component.elementGettingCreated.getAttribute('name');\n const cssClasses = RowContainerCtrl.getRowContainerCssClasses(name);\n let res;\n const template1 = name === RowContainerName.CENTER;\n const template2 = name === RowContainerName.TOP_CENTER\n || name === RowContainerName.STICKY_TOP_CENTER\n || 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}\nclass RowContainerComp extends Component {\n constructor() {\n super(templateFactory());\n this.rowComps = {};\n this.name = Component.elementGettingCreated.getAttribute('name');\n this.type = getRowContainerTypeForName(this.name);\n }\n postConstruct() {\n const compProxy = {\n setViewportHeight: height => this.eViewport.style.height = height,\n setRowCtrls: rowCtrls => this.setRowCtrls(rowCtrls),\n setDomOrder: domOrder => {\n this.domOrder = domOrder;\n },\n setContainerWidth: width => this.eContainer.style.width = width\n };\n const ctrl = this.createManagedBean(new RowContainerCtrl(this.name));\n ctrl.setComp(compProxy, this.eContainer, this.eViewport, this.eWrapper);\n }\n preDestroy() {\n // destroys all row comps\n this.setRowCtrls([]);\n }\n setRowCtrls(rowCtrls) {\n const oldRows = Object.assign({}, this.rowComps);\n this.rowComps = {};\n this.lastPlacedElement = null;\n const processRow = (rowCon) => {\n const instanceId = rowCon.getInstanceId();\n const existingRowComp = oldRows[instanceId];\n if (existingRowComp) {\n this.rowComps[instanceId] = existingRowComp;\n delete oldRows[instanceId];\n this.ensureDomOrder(existingRowComp.getGui());\n }\n else {\n // don't create new row comps for rows which are not displayed. still want the existing components\n // as they may be animating out.\n if (!rowCon.getRowNode().displayed) {\n return;\n }\n const rowComp = new RowComp(rowCon, this.beans, this.type);\n this.rowComps[instanceId] = rowComp;\n this.appendRow(rowComp.getGui());\n }\n };\n rowCtrls.forEach(processRow);\n getAllValuesInObject(oldRows).forEach(oldRowComp => {\n this.eContainer.removeChild(oldRowComp.getGui());\n oldRowComp.destroy();\n });\n setAriaRole(this.eContainer, rowCtrls.length ? \"rowgroup\" : \"presentation\");\n }\n appendRow(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 ensureDomOrder(eRow) {\n if (this.domOrder) {\n ensureDomOrder(this.eContainer, eRow, this.lastPlacedElement);\n this.lastPlacedElement = eRow;\n }\n }\n}\n__decorate$1z([\n Autowired('beans')\n], RowContainerComp.prototype, \"beans\", void 0);\n__decorate$1z([\n RefSelector('eViewport')\n], RowContainerComp.prototype, \"eViewport\", void 0);\n__decorate$1z([\n RefSelector('eContainer')\n], RowContainerComp.prototype, \"eContainer\", void 0);\n__decorate$1z([\n RefSelector('eWrapper')\n], RowContainerComp.prototype, \"eWrapper\", void 0);\n__decorate$1z([\n PostConstruct\n], RowContainerComp.prototype, \"postConstruct\", null);\n__decorate$1z([\n PreDestroy\n], RowContainerComp.prototype, \"preDestroy\", null);\n\nvar __decorate$1y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass BodyDropPivotTarget {\n constructor(pinned) {\n this.columnsToAggregate = [];\n this.columnsToGroup = [];\n this.columnsToPivot = [];\n this.pinned = pinned;\n }\n /** Callback for when drag enters */\n onDragEnter(draggingEvent) {\n this.clearColumnsList();\n // in pivot mode, we don't accept any drops if functions are read only\n if (this.gridOptionsService.is('functionsReadOnly')) {\n return;\n }\n const dragColumns = draggingEvent.dragItem.columns;\n if (!dragColumns) {\n return;\n }\n dragColumns.forEach(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 getIconName() {\n const 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 onDragLeave(draggingEvent) {\n // if we are taking columns out of the center, then we remove them from the report\n this.clearColumnsList();\n }\n clearColumnsList() {\n this.columnsToAggregate.length = 0;\n this.columnsToGroup.length = 0;\n this.columnsToPivot.length = 0;\n }\n /** Callback for when dragging */\n onDragging(draggingEvent) {\n }\n /** Callback for when drag stops */\n onDragStop(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}\n__decorate$1y([\n Autowired('columnModel')\n], BodyDropPivotTarget.prototype, \"columnModel\", void 0);\n__decorate$1y([\n Autowired('gridOptionsService')\n], BodyDropPivotTarget.prototype, \"gridOptionsService\", void 0);\n\nvar __decorate$1x = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass MoveColumnFeature {\n constructor(pinned, eContainer) {\n this.needToMoveLeft = false;\n this.needToMoveRight = false;\n this.lastMovedInfo = null;\n this.pinned = pinned;\n this.eContainer = eContainer;\n this.centerContainer = !exists(pinned);\n }\n init() {\n this.ctrlsService.whenReady(() => {\n this.gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n });\n }\n getIconName() {\n return this.pinned ? DragAndDropService.ICON_PINNED : DragAndDropService.ICON_MOVE;\n }\n onDragEnter(draggingEvent) {\n // we do dummy drag, so make sure column appears in the right location when first placed\n const columns = draggingEvent.dragItem.columns;\n const 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 const visibleState = draggingEvent.dragItem.visibleState;\n const visibleColumns = (columns || []).filter(column => visibleState[column.getId()]);\n this.setColumnsVisible(visibleColumns, true, \"uiColumnDragged\");\n }\n this.setColumnsPinned(columns, this.pinned, \"uiColumnDragged\");\n this.onDragging(draggingEvent, true, true);\n }\n onDragLeave() {\n this.ensureIntervalCleared();\n this.lastMovedInfo = null;\n }\n setColumnsVisible(columns, visible, source = \"api\") {\n if (columns) {\n const allowedCols = columns.filter(c => !c.getColDef().lockVisible);\n this.columnModel.setColumnsVisible(allowedCols, visible, source);\n }\n }\n setColumnsPinned(columns, pinned, source = \"api\") {\n if (columns) {\n const allowedCols = columns.filter(c => !c.getColDef().lockPinned);\n this.columnModel.setColumnsPinned(allowedCols, pinned, source);\n }\n }\n onDragStop() {\n this.onDragging(this.lastDraggingEvent, false, true, true);\n this.ensureIntervalCleared();\n this.lastMovedInfo = null;\n }\n normaliseX(x) {\n // flip the coordinate if doing RTL\n if (this.gridOptionsService.is('enableRtl')) {\n const 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 checkCenterForScrolling(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 const firstVisiblePixel = this.ctrlsService.getCenterRowContainerCtrl().getCenterViewportScrollLeft();\n const lastVisiblePixel = firstVisiblePixel + this.ctrlsService.getCenterRowContainerCtrl().getCenterWidth();\n if (this.gridOptionsService.is('enableRtl')) {\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 onDragging(draggingEvent = this.lastDraggingEvent, fromEnter = false, fakeEvent = false, finished = false) {\n var _a;\n if (finished) {\n if (this.lastMovedInfo) {\n const { columns, toIndex } = this.lastMovedInfo;\n this.moveColumns(columns, toIndex, 'uiColumnMoved', true);\n }\n return;\n }\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 const mouseX = 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(mouseX);\n }\n const hDirection = this.normaliseDirection(draggingEvent.hDirection);\n const dragSourceType = draggingEvent.dragSource.type;\n const allMovingColumns = ((_a = draggingEvent.dragSource.getDragItem().columns) === null || _a === void 0 ? void 0 : _a.filter(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, allMovingColumns, hDirection, mouseX, fromEnter, fakeEvent });\n }\n normaliseDirection(hDirection) {\n if (this.gridOptionsService.is('enableRtl')) {\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 attemptMoveColumns(params) {\n const { dragSourceType, hDirection, mouseX, fromEnter, fakeEvent } = params;\n const draggingLeft = hDirection === HorizontalDirection.Left;\n const draggingRight = hDirection === HorizontalDirection.Right;\n let { allMovingColumns } = params;\n if (dragSourceType === DragSourceType.HeaderCell) {\n // If the columns we're dragging are the only visible columns of their group, move the hidden ones too\n let newCols = [];\n allMovingColumns.forEach((col) => {\n let movingGroup = null;\n let parent = col.getParent();\n while (parent != null && parent.getDisplayedLeafColumns().length === 1) {\n movingGroup = parent;\n parent = parent.getParent();\n }\n if (movingGroup != null) {\n const providedColumnGroup = movingGroup.getProvidedColumnGroup();\n providedColumnGroup.getLeafColumns().forEach((newCol) => {\n if (!newCols.includes(newCol)) {\n newCols.push(newCol);\n }\n });\n }\n else if (!newCols.includes(col)) {\n newCols.push(col);\n }\n });\n allMovingColumns = newCols;\n }\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 const allMovingColumnsOrdered = allMovingColumns.slice();\n this.columnModel.sortColumnsLikeGridColumns(allMovingColumnsOrdered);\n const 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 const oldIndex = this.calculateOldIndex(allMovingColumnsOrdered);\n if (validMoves.length === 0) {\n return;\n }\n const 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 let 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 the event was faked by a change in column pin state, then the original location of the column\n // is not reliable for dictating where the column may now be placed.\n if (constrainDirection && !fakeEvent) {\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 // From when we find a move that passes all the rules\n // Remember what that move would look like in terms of displayed cols\n // keep going with further moves until we find a different result in displayed output\n // In this way potentialMoves contains all potential moves over 'hidden' columns\n const displayedCols = this.columnModel.getAllDisplayedColumns();\n let potentialMoves = [];\n let targetOrder = null;\n for (let i = 0; i < validMoves.length; i++) {\n const move = validMoves[i];\n const order = this.columnModel.getProposedColumnOrder(allMovingColumnsOrdered, move);\n if (!this.columnModel.doesOrderPassRules(order)) {\n continue;\n }\n const displayedOrder = order.filter((col) => displayedCols.includes(col));\n if (targetOrder === null) {\n targetOrder = displayedOrder;\n }\n else if (!_.areEqual(displayedOrder, targetOrder)) {\n break; // Stop looking for potential moves if the displayed result changes from the target\n }\n const fragCount = this.groupFragCount(order);\n potentialMoves.push({ move, fragCount });\n }\n if (potentialMoves.length === 0) {\n return;\n }\n // The best move is the move with least group fragmentation\n potentialMoves.sort((a, b) => a.fragCount - b.fragCount);\n this.moveColumns(allMovingColumns, potentialMoves[0].move, 'uiColumnMoved', false);\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 calculateOldIndex(movingCols) {\n const gridCols = this.columnModel.getAllGridColumns();\n const indexes = sortNumerically(movingCols.map(col => gridCols.indexOf(col)));\n const firstIndex = indexes[0];\n const lastIndex = last(indexes);\n const spread = lastIndex - firstIndex;\n const gapsExist = spread !== indexes.length - 1;\n return gapsExist ? null : firstIndex;\n }\n moveColumns(columns, toIndex, source, finished) {\n this.columnModel.moveColumns(columns, toIndex, source, finished);\n this.lastMovedInfo = finished ? null : { columns, toIndex };\n }\n // A measure of how fragmented in terms of groups an order of columns is\n groupFragCount(columns) {\n function parents(col) {\n let result = [];\n let parent = col.getOriginalParent();\n while (parent != null) {\n result.push(parent);\n parent = parent.getOriginalParent();\n }\n return result;\n }\n let count = 0;\n for (let i = 0; i < columns.length - 1; i++) {\n let a = parents(columns[i]);\n let b = parents(columns[i + 1]);\n // iterate over the longest one\n [a, b] = a.length > b.length ? [a, b] : [b, a];\n a.forEach((parent) => {\n if (b.indexOf(parent) === -1) {\n count++; // More fragmented if other column doesn't share the parent\n }\n });\n }\n return count;\n }\n calculateValidMoves(movingCols, draggingRight, mouseX) {\n const isMoveBlocked = this.gridOptionsService.is('suppressMovableColumns') || movingCols.some(col => 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 const 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 const allGridCols = this.columnModel.getAllGridColumns();\n const movingDisplayedCols = allDisplayedCols.filter(col => includes(movingCols, col));\n const otherDisplayedCols = allDisplayedCols.filter(col => !includes(movingCols, col));\n const otherGridCols = allGridCols.filter(col => !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 let displayIndex = 0;\n let 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 let widthOfMovingDisplayedCols = 0;\n movingDisplayedCols.forEach(col => widthOfMovingDisplayedCols += col.getActualWidth());\n availableWidth -= widthOfMovingDisplayedCols;\n }\n if (availableWidth > 0) {\n // now count how many of the displayed columns will fit to the left\n for (let i = 0; i < otherDisplayedCols.length; i++) {\n const 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 let firstValidMove;\n if (displayIndex > 0) {\n const 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 const validMoves = [firstValidMove];\n const numberComparator = (a, b) => 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 let pointer = firstValidMove + 1;\n const 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 let pointer = firstValidMove;\n const lastIndex = allGridCols.length - 1;\n let 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 const 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 isColumnHidden(displayedColumns, col) {\n return displayedColumns.indexOf(col) < 0;\n }\n ensureIntervalStarted() {\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 ensureIntervalCleared() {\n if (this.movingIntervalId) {\n window.clearInterval(this.movingIntervalId);\n this.movingIntervalId = null;\n this.dragAndDropService.setGhostIcon(DragAndDropService.ICON_MOVE);\n }\n }\n moveInterval() {\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 let pixelsToMove;\n this.intervalCount++;\n pixelsToMove = 10 + (this.intervalCount * 5);\n if (pixelsToMove > 100) {\n pixelsToMove = 100;\n }\n let pixelsMoved = null;\n const 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 const columns = this.lastDraggingEvent.dragItem.columns;\n const columnsThatCanPin = columns.filter(c => !c.getColDef().lockPinned);\n if (columnsThatCanPin.length > 0) {\n this.dragAndDropService.setGhostIcon(DragAndDropService.ICON_PINNED);\n if (this.failedMoveAttempts > 7) {\n const pinType = this.needToMoveLeft ? 'left' : 'right';\n this.setColumnsPinned(columnsThatCanPin, pinType, \"uiColumnDragged\");\n this.dragAndDropService.nudge();\n }\n }\n }\n }\n}\n__decorate$1x([\n Autowired('columnModel')\n], MoveColumnFeature.prototype, \"columnModel\", void 0);\n__decorate$1x([\n Autowired('dragAndDropService')\n], MoveColumnFeature.prototype, \"dragAndDropService\", void 0);\n__decorate$1x([\n Autowired('gridOptionsService')\n], MoveColumnFeature.prototype, \"gridOptionsService\", void 0);\n__decorate$1x([\n Autowired('ctrlsService')\n], MoveColumnFeature.prototype, \"ctrlsService\", void 0);\n__decorate$1x([\n PostConstruct\n], MoveColumnFeature.prototype, \"init\", null);\n\nvar __decorate$1w = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass BodyDropTarget extends BeanStub {\n constructor(pinned, eContainer) {\n super();\n this.pinned = pinned;\n this.eContainer = eContainer;\n }\n postConstruct() {\n this.ctrlsService.whenReady(p => {\n switch (this.pinned) {\n case 'left':\n this.eSecondaryContainers = [\n [p.gridBodyCtrl.getBodyViewportElement(), p.leftRowContainerCtrl.getContainerElement()],\n [p.bottomLeftRowContainerCtrl.getContainerElement()],\n [p.topLeftRowContainerCtrl.getContainerElement()]\n ];\n break;\n case '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 isInterestedIn(type) {\n return type === DragSourceType.HeaderCell ||\n (type === DragSourceType.ToolPanel && this.gridOptionsService.is('allowDragFromColumnsToolPanel'));\n }\n getSecondaryContainers() {\n return this.eSecondaryContainers;\n }\n getContainer() {\n return this.eContainer;\n }\n init() {\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 getIconName() {\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 isDropColumnInPivotMode(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 onDragEnter(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 onDragLeave(params) {\n this.currentDropListener.onDragLeave(params);\n }\n onDragging(params) {\n this.currentDropListener.onDragging(params);\n }\n onDragStop(params) {\n this.currentDropListener.onDragStop(params);\n }\n}\n__decorate$1w([\n Autowired('dragAndDropService')\n], BodyDropTarget.prototype, \"dragAndDropService\", void 0);\n__decorate$1w([\n Autowired('columnModel')\n], BodyDropTarget.prototype, \"columnModel\", void 0);\n__decorate$1w([\n Autowired('ctrlsService')\n], BodyDropTarget.prototype, \"ctrlsService\", void 0);\n__decorate$1w([\n PostConstruct\n], BodyDropTarget.prototype, \"postConstruct\", null);\n__decorate$1w([\n PostConstruct\n], BodyDropTarget.prototype, \"init\", null);\n\nclass CssClassApplier {\n static getHeaderClassesFromColDef(abstractColDef, gridOptionsService, column, columnGroup) {\n if (missing(abstractColDef)) {\n return [];\n }\n return this.getColumnClassesFromCollDef(abstractColDef.headerClass, abstractColDef, gridOptionsService, column, columnGroup);\n }\n static getToolPanelClassesFromColDef(abstractColDef, gridOptionsService, column, columnGroup) {\n if (missing(abstractColDef)) {\n return [];\n }\n return this.getColumnClassesFromCollDef(abstractColDef.toolPanelClass, abstractColDef, gridOptionsService, column, columnGroup);\n }\n static getClassParams(abstractColDef, gridOptionsService, 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 api: gridOptionsService.api,\n columnApi: gridOptionsService.columnApi,\n context: gridOptionsService.context\n };\n }\n static getColumnClassesFromCollDef(classesOrFunc, abstractColDef, gridOptionsService, column, columnGroup) {\n if (missing(classesOrFunc)) {\n return [];\n }\n let classToUse;\n if (typeof classesOrFunc === 'function') {\n const params = this.getClassParams(abstractColDef, gridOptionsService, 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}\n\nvar __decorate$1v = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass HeaderCellComp extends AbstractHeaderCellComp {\n constructor(ctrl) {\n super(HeaderCellComp.TEMPLATE, ctrl);\n this.headerCompVersion = 0;\n this.column = ctrl.getColumnGroupChild();\n this.pinned = ctrl.getPinned();\n }\n postConstruct() {\n const eGui = this.getGui();\n const setAttribute = (name, value, element) => {\n const actualElement = element ? element : eGui;\n if (value != null && value != '') {\n actualElement.setAttribute(name, value);\n }\n else {\n actualElement.removeAttribute(name);\n }\n };\n const compProxy = {\n setWidth: width => eGui.style.width = width,\n addOrRemoveCssClass: (cssClassName, on) => this.addOrRemoveCssClass(cssClassName, on),\n setColId: id => setAttribute('col-id', id),\n setTitle: title => setAttribute('title', title),\n setAriaDescription: label => setAriaDescription(eGui, label),\n setAriaSort: sort => sort ? setAriaSort(eGui, sort) : removeAriaSort(eGui),\n setUserCompDetails: compDetails => this.setUserCompDetails(compDetails),\n getUserCompInstance: () => this.headerComp\n };\n this.ctrl.setComp(compProxy, this.getGui(), this.eResize, this.eHeaderCompWrapper);\n const selectAllGui = this.ctrl.getSelectAllGui();\n this.eResize.insertAdjacentElement('afterend', selectAllGui);\n }\n destroyHeaderComp() {\n if (this.headerComp) {\n this.eHeaderCompWrapper.removeChild(this.headerCompGui);\n this.headerComp = this.destroyBean(this.headerComp);\n this.headerCompGui = undefined;\n }\n }\n setUserCompDetails(compDetails) {\n this.headerCompVersion++;\n const versionCopy = this.headerCompVersion;\n compDetails.newAgStackInstance().then(comp => this.afterCompCreated(versionCopy, comp));\n }\n afterCompCreated(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.eHeaderCompWrapper.appendChild(this.headerCompGui);\n this.ctrl.setDragSource(this.getGui());\n }\n}\nHeaderCellComp.TEMPLATE = `
\n
\n
\n
`;\n__decorate$1v([\n RefSelector('eResize')\n], HeaderCellComp.prototype, \"eResize\", void 0);\n__decorate$1v([\n RefSelector('eHeaderCompWrapper')\n], HeaderCellComp.prototype, \"eHeaderCompWrapper\", void 0);\n__decorate$1v([\n PostConstruct\n], HeaderCellComp.prototype, \"postConstruct\", null);\n__decorate$1v([\n PreDestroy\n], HeaderCellComp.prototype, \"destroyHeaderComp\", null);\n\nvar __decorate$1u = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass HeaderGroupCellComp extends AbstractHeaderCellComp {\n constructor(ctrl) {\n super(HeaderGroupCellComp.TEMPLATE, ctrl);\n }\n postConstruct() {\n const eGui = this.getGui();\n const setAttribute = (key, value) => value != undefined ? eGui.setAttribute(key, value) : eGui.removeAttribute(key);\n const compProxy = {\n addOrRemoveCssClass: (cssClassName, on) => this.addOrRemoveCssClass(cssClassName, on),\n setResizableDisplayed: (displayed) => setDisplayed(this.eResize, displayed),\n setWidth: width => eGui.style.width = width,\n setColId: id => eGui.setAttribute(\"col-id\", id),\n setAriaExpanded: expanded => setAttribute('aria-expanded', expanded),\n setTitle: title => setAttribute(\"title\", title),\n setUserCompDetails: details => this.setUserCompDetails(details)\n };\n this.ctrl.setComp(compProxy, eGui, this.eResize);\n }\n setUserCompDetails(details) {\n details.newAgStackInstance().then(comp => this.afterHeaderCompCreated(comp));\n }\n afterHeaderCompCreated(headerGroupComp) {\n const destroyFunc = () => this.destroyBean(headerGroupComp);\n if (!this.isAlive()) {\n destroyFunc();\n return;\n }\n const eGui = this.getGui();\n const eHeaderGroupGui = headerGroupComp.getGui();\n eGui.appendChild(eHeaderGroupGui);\n this.addDestroyFunc(destroyFunc);\n this.ctrl.setDragSource(eGui);\n }\n}\nHeaderGroupCellComp.TEMPLATE = `
\n
\n
`;\n__decorate$1u([\n Autowired('userComponentFactory')\n], HeaderGroupCellComp.prototype, \"userComponentFactory\", void 0);\n__decorate$1u([\n RefSelector('eResize')\n], HeaderGroupCellComp.prototype, \"eResize\", void 0);\n__decorate$1u([\n PostConstruct\n], HeaderGroupCellComp.prototype, \"postConstruct\", null);\n\nvar __decorate$1t = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 HeaderRowType;\n(function (HeaderRowType) {\n HeaderRowType[\"COLUMN_GROUP\"] = \"group\";\n HeaderRowType[\"COLUMN\"] = \"column\";\n HeaderRowType[\"FLOATING_FILTER\"] = \"filter\";\n})(HeaderRowType || (HeaderRowType = {}));\nclass HeaderRowComp extends Component {\n constructor(ctrl) {\n super();\n this.headerComps = {};\n const 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 }\n //noinspection JSUnusedLocalSymbols\n init() {\n const compProxy = {\n setTransform: transform => this.getGui().style.transform = transform,\n setHeight: height => this.getGui().style.height = height,\n setTop: top => this.getGui().style.top = top,\n setHeaderCtrls: ctrls => this.setHeaderCtrls(ctrls),\n setWidth: width => this.getGui().style.width = width,\n setAriaRowIndex: rowIndex => setAriaRowIndex(this.getGui(), rowIndex)\n };\n this.ctrl.setComp(compProxy);\n }\n destroyHeaderCtrls() {\n this.setHeaderCtrls([]);\n }\n setHeaderCtrls(ctrls) {\n if (!this.isAlive()) {\n return;\n }\n const oldComps = this.headerComps;\n this.headerComps = {};\n ctrls.forEach(ctrl => {\n const id = ctrl.getInstanceId();\n let 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, (id, comp) => {\n this.getGui().removeChild(comp.getGui());\n this.destroyBean(comp);\n });\n const isEnsureDomOrder = this.gridOptionsService.is('ensureDomOrder');\n const isPrintLayout = this.gridOptionsService.isDomLayout('print');\n if (isEnsureDomOrder || isPrintLayout) {\n const comps = getAllValuesInObject(this.headerComps);\n // ordering the columns by left position orders them in the order they appear on the screen\n comps.sort((a, b) => {\n const leftA = a.getCtrl().getColumnGroupChild().getLeft();\n const leftB = b.getCtrl().getColumnGroupChild().getLeft();\n return leftA - leftB;\n });\n const elementsInOrder = comps.map(c => c.getGui());\n setDomChildOrder(this.getGui(), elementsInOrder);\n }\n }\n createHeaderComp(headerCtrl) {\n let 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}\n__decorate$1t([\n PostConstruct\n], HeaderRowComp.prototype, \"init\", null);\n__decorate$1t([\n PreDestroy\n], HeaderRowComp.prototype, \"destroyHeaderCtrls\", null);\n\nvar __decorate$1s = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet instanceIdSequence$1 = 0;\nclass AbstractHeaderCellCtrl extends BeanStub {\n constructor(columnGroupChild, parentRowCtrl) {\n super();\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$1++;\n }\n shouldStopEventPropagation(e) {\n const { headerRowIndex, column } = this.focusService.getFocusedHeader();\n return isUserSuppressingHeaderKeyboardEvent(this.gridOptionsService, e, headerRowIndex, column);\n }\n getWrapperHasFocus() {\n const eDocument = this.gridOptionsService.getDocument();\n const activeEl = eDocument.activeElement;\n return activeEl === this.eGui;\n }\n setGui(eGui) {\n this.eGui = eGui;\n this.addDomData();\n }\n handleKeyDown(e) {\n const wrapperHasFocus = this.getWrapperHasFocus();\n switch (e.key) {\n case KeyCode.PAGE_DOWN:\n case KeyCode.PAGE_UP:\n case KeyCode.PAGE_HOME:\n case KeyCode.PAGE_END:\n if (wrapperHasFocus) {\n e.preventDefault();\n }\n }\n }\n addDomData() {\n const key = AbstractHeaderCellCtrl.DOM_DATA_KEY_HEADER_CTRL;\n this.gridOptionsService.setDomData(this.eGui, key, this);\n this.addDestroyFunc(() => this.gridOptionsService.setDomData(this.eGui, key, null));\n }\n getGui() {\n return this.eGui;\n }\n focus(event) {\n if (!this.eGui) {\n return false;\n }\n this.lastFocusEvent = event || null;\n this.eGui.focus();\n return true;\n }\n getRowIndex() {\n return this.parentRowCtrl.getRowIndex();\n }\n getParentRowCtrl() {\n return this.parentRowCtrl;\n }\n getPinned() {\n return this.parentRowCtrl.getPinned();\n }\n getInstanceId() {\n return this.instanceId;\n }\n getColumnGroupChild() {\n return this.columnGroupChild;\n }\n}\nAbstractHeaderCellCtrl.DOM_DATA_KEY_HEADER_CTRL = 'headerCtrl';\n__decorate$1s([\n Autowired('focusService')\n], AbstractHeaderCellCtrl.prototype, \"focusService\", void 0);\n__decorate$1s([\n Autowired('beans')\n], AbstractHeaderCellCtrl.prototype, \"beans\", void 0);\n__decorate$1s([\n Autowired('userComponentFactory')\n], AbstractHeaderCellCtrl.prototype, \"userComponentFactory\", void 0);\n\nvar __decorate$1r = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass SetLeftFeature extends BeanStub {\n constructor(columnOrGroup, eCell, beans, colsSpanning) {\n super();\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 }\n setColsSpanning(colsSpanning) {\n this.colsSpanning = colsSpanning;\n this.onLeftChanged();\n }\n getColumnOrGroup() {\n if (this.beans.gridOptionsService.is('enableRtl') && this.colsSpanning) {\n return last(this.colsSpanning);\n }\n return this.columnOrGroup;\n }\n postConstruct() {\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.addManagedPropertyListener('domLayout', this.onLeftChanged.bind(this));\n }\n setLeftFirstTime() {\n const suppressMoveAnimation = this.beans.gridOptionsService.is('suppressColumnMoveAnimation');\n const oldLeftExists = exists(this.columnOrGroup.getOldLeft());\n const animateColumnMove = this.beans.columnAnimationService.isActive() && oldLeftExists && !suppressMoveAnimation;\n if (animateColumnMove) {\n this.animateInLeft();\n }\n else {\n this.onLeftChanged();\n }\n }\n animateInLeft() {\n const colOrGroup = this.getColumnOrGroup();\n const left = colOrGroup.getLeft();\n const oldLeft = colOrGroup.getOldLeft();\n const oldActualLeft = this.modifyLeftForPrintLayout(colOrGroup, oldLeft);\n const 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(() => {\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 onLeftChanged() {\n const colOrGroup = this.getColumnOrGroup();\n const left = colOrGroup.getLeft();\n this.actualLeft = this.modifyLeftForPrintLayout(colOrGroup, left);\n this.setLeft(this.actualLeft);\n }\n modifyLeftForPrintLayout(colOrGroup, leftPosition) {\n const printLayout = this.beans.gridOptionsService.isDomLayout('print');\n if (!printLayout) {\n return leftPosition;\n }\n if (colOrGroup.getPinned() === 'left') {\n return leftPosition;\n }\n const leftWidth = this.beans.columnModel.getDisplayedColumnsLeftWidth();\n if (colOrGroup.getPinned() === 'right') {\n const bodyWidth = this.beans.columnModel.getBodyContainerWidth();\n return leftWidth + bodyWidth + leftPosition;\n }\n // is in body\n return leftWidth + leftPosition;\n }\n setLeft(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 let indexColumn;\n if (this.columnOrGroup instanceof Column) {\n indexColumn = this.columnOrGroup;\n }\n else {\n const columnGroup = this.columnOrGroup;\n const 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 const index = this.beans.columnModel.getAriaColumnIndex(indexColumn);\n setAriaColIndex(this.ariaEl, index);\n }\n}\n__decorate$1r([\n PostConstruct\n], SetLeftFeature.prototype, \"postConstruct\", null);\n\nvar __decorate$1q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass HoverFeature extends BeanStub {\n constructor(columns, element) {\n super();\n this.columns = columns;\n this.element = element;\n }\n postConstruct() {\n if (this.gridOptionsService.is('columnHoverHighlight')) {\n this.addMouseHoverListeners();\n }\n }\n addMouseHoverListeners() {\n this.addManagedListener(this.element, 'mouseout', this.onMouseOut.bind(this));\n this.addManagedListener(this.element, 'mouseover', this.onMouseOver.bind(this));\n }\n onMouseOut() {\n this.columnHoverService.clearMouseOver();\n }\n onMouseOver() {\n this.columnHoverService.setMouseOver(this.columns);\n }\n}\n__decorate$1q([\n Autowired('columnHoverService')\n], HoverFeature.prototype, \"columnHoverService\", void 0);\n__decorate$1q([\n PostConstruct\n], HoverFeature.prototype, \"postConstruct\", null);\n\nvar __decorate$1p = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass HeaderFilterCellCtrl extends AbstractHeaderCellCtrl {\n constructor(column, parentRowCtrl) {\n super(column, parentRowCtrl);\n this.iconCreated = false;\n this.column = column;\n }\n setComp(comp, eGui, eButtonShowMainFilter, eFloatingFilterBody) {\n super.setGui(eGui);\n this.comp = comp;\n this.eButtonShowMainFilter = eButtonShowMainFilter;\n this.eFloatingFilterBody = eFloatingFilterBody;\n this.setupActive();\n this.setupWidth();\n this.setupLeft();\n this.setupHover();\n this.setupFocus();\n this.setupAria();\n this.setupFilterButton();\n this.setupUserComp();\n this.setupSyncWithFilter();\n this.setupUi();\n this.addManagedListener(this.eButtonShowMainFilter, 'click', this.showParentFilter.bind(this));\n this.setupFilterChangedListener();\n this.addManagedListener(this.column, Column.EVENT_COL_DEF_CHANGED, this.onColDefChanged.bind(this));\n }\n setupActive() {\n const colDef = this.column.getColDef();\n const filterExists = !!colDef.filter;\n const floatingFilterExists = !!colDef.floatingFilter;\n this.active = filterExists && floatingFilterExists;\n }\n setupUi() {\n this.comp.setButtonWrapperDisplayed(!this.suppressFilterButton && this.active);\n this.comp.addOrRemoveBodyCssClass('ag-floating-filter-full-body', this.suppressFilterButton);\n this.comp.addOrRemoveBodyCssClass('ag-floating-filter-body', !this.suppressFilterButton);\n if (!this.active || this.iconCreated) {\n return;\n }\n const eMenuIcon = createIconNoSpan('filter', this.gridOptionsService, this.column);\n if (eMenuIcon) {\n this.iconCreated = true;\n this.eButtonShowMainFilter.appendChild(eMenuIcon);\n }\n }\n setupFocus() {\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 setupAria() {\n const localeTextFunc = this.localeService.getLocaleTextFunc();\n setAriaLabel(this.eButtonShowMainFilter, localeTextFunc('ariaFilterMenuOpen', 'Open Filter Menu'));\n }\n onTabKeyDown(e) {\n const eDocument = this.gridOptionsService.getDocument();\n const activeEl = eDocument.activeElement;\n const wrapperHasFocus = activeEl === this.eGui;\n if (wrapperHasFocus) {\n return;\n }\n const 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 const 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 findNextColumnWithFloatingFilter(backwards) {\n const columModel = this.beans.columnModel;\n let 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 handleKeyDown(e) {\n super.handleKeyDown(e);\n const wrapperHasFocus = this.getWrapperHasFocus();\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 onFocusIn(e) {\n const 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 const notFromHeaderWrapper = !!e.relatedTarget && !e.relatedTarget.classList.contains('ag-floating-filter');\n const fromWithinHeader = !!e.relatedTarget && isElementChildOfClass(e.relatedTarget, 'ag-floating-filter');\n if (notFromHeaderWrapper && fromWithinHeader && e.target === this.eGui) {\n const lastFocusEvent = this.lastFocusEvent;\n const fromTab = !!(lastFocusEvent && lastFocusEvent.key === KeyCode.TAB);\n if (lastFocusEvent && fromTab) {\n const shouldFocusLast = lastFocusEvent.shiftKey;\n this.focusService.focusInto(this.eGui, shouldFocusLast);\n }\n }\n const rowIndex = this.getRowIndex();\n this.beans.focusService.setFocusedHeader(rowIndex, this.column);\n }\n setupHover() {\n this.createManagedBean(new HoverFeature([this.column], this.eGui));\n const listener = () => {\n if (!this.gridOptionsService.is('columnHoverHighlight')) {\n return;\n }\n const 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 setupLeft() {\n const setLeftFeature = new SetLeftFeature(this.column, this.eGui, this.beans);\n this.createManagedBean(setLeftFeature);\n }\n setupFilterButton() {\n const colDef = this.column.getColDef();\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 }\n setupUserComp() {\n if (!this.active) {\n return;\n }\n const compDetails = this.filterManager.getFloatingFilterCompDetails(this.column, () => this.showParentFilter());\n if (compDetails) {\n this.setCompDetails(compDetails);\n }\n }\n setCompDetails(compDetails) {\n this.userCompDetails = compDetails;\n this.comp.setCompDetails(compDetails);\n }\n showParentFilter() {\n const eventSource = this.suppressFilterButton ? this.eFloatingFilterBody : this.eButtonShowMainFilter;\n this.menuFactory.showMenuAfterButtonClick(this.column, eventSource, 'floatingFilter', 'filterMenuTab', ['filterMenuTab']);\n }\n setupSyncWithFilter() {\n if (!this.active) {\n return;\n }\n const syncWithFilter = (filterChangedEvent) => {\n const compPromise = this.comp.getFloatingFilterComp();\n if (!compPromise) {\n return;\n }\n compPromise.then(comp => {\n if (comp) {\n const parentModel = this.filterManager.getCurrentFloatingFilterParentModel(this.column);\n comp.onParentModelChanged(parentModel, filterChangedEvent);\n }\n });\n };\n this.destroySyncListener = this.addManagedListener(this.column, Column.EVENT_FILTER_CHANGED, syncWithFilter);\n if (this.filterManager.isFilterActive(this.column)) {\n syncWithFilter(null);\n }\n }\n setupWidth() {\n const listener = () => {\n const 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 setupFilterChangedListener() {\n if (this.active) {\n this.destroyFilterChangedListener = this.addManagedListener(this.column, Column.EVENT_FILTER_CHANGED, this.updateFilterButton.bind(this));\n }\n }\n updateFilterButton() {\n if (!this.suppressFilterButton && this.comp) {\n this.comp.setButtonWrapperDisplayed(this.filterManager.isFilterAllowed(this.column));\n }\n }\n onColDefChanged() {\n var _a, _b;\n const wasActive = this.active;\n this.setupActive();\n const becomeActive = !wasActive && this.active;\n if (wasActive && !this.active) {\n (_a = this.destroySyncListener) === null || _a === void 0 ? void 0 : _a.call(this);\n (_b = this.destroyFilterChangedListener) === null || _b === void 0 ? void 0 : _b.call(this);\n }\n const newCompDetails = this.active\n ? this.filterManager.getFloatingFilterCompDetails(this.column, () => this.showParentFilter())\n : null;\n const compPromise = this.comp.getFloatingFilterComp();\n if (!compPromise || !newCompDetails) {\n this.updateCompDetails(newCompDetails, becomeActive);\n }\n else {\n compPromise.then(compInstance => {\n var _a;\n if (!compInstance || ((_a = this.userCompDetails) === null || _a === void 0 ? void 0 : _a.componentClass) !== newCompDetails.componentClass) {\n this.updateCompDetails(newCompDetails, becomeActive);\n }\n });\n }\n }\n updateCompDetails(compDetails, becomeActive) {\n this.setCompDetails(compDetails);\n // filter button and UI can change based on params, so always want to update\n this.setupFilterButton();\n this.setupUi();\n if (becomeActive) {\n this.setupSyncWithFilter();\n this.setupFilterChangedListener();\n }\n }\n}\n__decorate$1p([\n Autowired('filterManager')\n], HeaderFilterCellCtrl.prototype, \"filterManager\", void 0);\n__decorate$1p([\n Autowired('columnHoverService')\n], HeaderFilterCellCtrl.prototype, \"columnHoverService\", void 0);\n__decorate$1p([\n Autowired('menuFactory')\n], HeaderFilterCellCtrl.prototype, \"menuFactory\", void 0);\n\nvar __decorate$1o = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass ResizeFeature extends BeanStub {\n constructor(pinned, column, eResize, comp, ctrl) {\n super();\n this.pinned = pinned;\n this.column = column;\n this.eResize = eResize;\n this.comp = comp;\n this.ctrl = ctrl;\n }\n postConstruct() {\n const colDef = this.column.getColDef();\n const destroyResizeFuncs = [];\n let canResize;\n let canAutosize;\n const addResize = () => {\n setDisplayed(this.eResize, canResize);\n if (!canResize) {\n return;\n }\n const 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 const skipHeaderOnAutoSize = this.gridOptionsService.is('skipHeaderOnAutoSize');\n const autoSizeColListener = () => {\n this.columnModel.autoSizeColumn(this.column, skipHeaderOnAutoSize, \"uiColumnResized\");\n };\n this.eResize.addEventListener('dblclick', autoSizeColListener);\n const touchListener = new TouchListener(this.eResize);\n touchListener.addEventListener(TouchListener.EVENT_DOUBLE_TAP, autoSizeColListener);\n this.addDestroyFunc(() => {\n this.eResize.removeEventListener('dblclick', autoSizeColListener);\n touchListener.removeEventListener(TouchListener.EVENT_DOUBLE_TAP, autoSizeColListener);\n touchListener.destroy();\n });\n }\n };\n const removeResize = () => {\n destroyResizeFuncs.forEach(f => f());\n destroyResizeFuncs.length = 0;\n };\n const refresh = () => {\n const resize = this.column.isResizable();\n const autoSize = !this.gridOptionsService.is('suppressAutoSize') && !colDef.suppressAutoSize;\n const 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 onResizing(finished, resizeAmount) {\n const resizeAmountNormalised = this.normaliseResizeAmount(resizeAmount);\n const columnWidths = [{ key: this.column, newWidth: this.resizeStartWidth + resizeAmountNormalised }];\n this.columnModel.setColumnWidths(columnWidths, this.resizeWithShiftKey, finished, \"uiColumnResized\");\n if (finished) {\n this.comp.addOrRemoveCssClass('ag-column-resizing', false);\n }\n }\n onResizeStart(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 normaliseResizeAmount(dragChange) {\n let result = dragChange;\n const notPinningLeft = this.pinned !== 'left';\n const pinningRight = this.pinned === 'right';\n if (this.gridOptionsService.is('enableRtl')) {\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}\n__decorate$1o([\n Autowired('horizontalResizeService')\n], ResizeFeature.prototype, \"horizontalResizeService\", void 0);\n__decorate$1o([\n Autowired('columnModel')\n], ResizeFeature.prototype, \"columnModel\", void 0);\n__decorate$1o([\n PostConstruct\n], ResizeFeature.prototype, \"postConstruct\", null);\n\nvar __decorate$1n = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass SelectAllFeature extends BeanStub {\n constructor(column) {\n super();\n this.cbSelectAllVisible = false;\n this.processingEventFromCheckbox = false;\n this.column = column;\n const colDef = column.getColDef();\n this.filteredOnly = !!(colDef === null || colDef === void 0 ? void 0 : colDef.headerCheckboxSelectionFilteredOnly);\n this.currentPageOnly = !!(colDef === null || colDef === void 0 ? void 0 : colDef.headerCheckboxSelectionCurrentPageOnly);\n }\n onSpaceKeyDown(e) {\n const checkbox = this.cbSelectAll;\n const eDocument = this.gridOptionsService.getDocument();\n if (checkbox.isDisplayed() && !checkbox.getGui().contains(eDocument.activeElement)) {\n e.preventDefault();\n checkbox.setValue(!checkbox.getValue());\n }\n }\n getCheckboxGui() {\n return this.cbSelectAll.getGui();\n }\n setComp(ctrl) {\n this.headerCellCtrl = ctrl;\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_PAGINATION_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 setAriaHidden(this.cbSelectAll.getGui(), true);\n this.cbSelectAll.getInputElement().setAttribute('tabindex', '-1');\n this.refreshSelectAllLabel();\n }\n showOrHideSelectAll() {\n this.cbSelectAllVisible = this.isCheckboxSelection();\n this.cbSelectAll.setDisplayed(this.cbSelectAllVisible, { skipAriaHidden: true });\n if (this.cbSelectAllVisible) {\n // in case user is trying this feature with the wrong model type\n this.checkRightRowModelType('selectAllCheckbox');\n // make sure checkbox is showing the right state\n this.updateStateOfCheckbox();\n }\n this.refreshSelectAllLabel();\n }\n onModelChanged() {\n if (!this.cbSelectAllVisible) {\n return;\n }\n this.updateStateOfCheckbox();\n }\n onSelectionChanged() {\n if (!this.cbSelectAllVisible) {\n return;\n }\n this.updateStateOfCheckbox();\n }\n updateStateOfCheckbox() {\n if (this.processingEventFromCheckbox) {\n return;\n }\n this.processingEventFromCheckbox = true;\n const allSelected = this.selectionService.getSelectAllState(this.filteredOnly, this.currentPageOnly);\n this.cbSelectAll.setValue(allSelected);\n this.refreshSelectAllLabel();\n this.processingEventFromCheckbox = false;\n }\n refreshSelectAllLabel() {\n const translate = this.localeService.getLocaleTextFunc();\n const checked = this.cbSelectAll.getValue();\n const ariaStatus = checked ? translate('ariaChecked', 'checked') : translate('ariaUnchecked', 'unchecked');\n const ariaLabel = translate('ariaRowSelectAll', 'Press Space to toggle all rows selection');\n if (!this.cbSelectAllVisible) {\n this.headerCellCtrl.setAriaDescriptionProperty('selectAll', null);\n }\n else {\n this.headerCellCtrl.setAriaDescriptionProperty('selectAll', `${ariaLabel} (${ariaStatus})`);\n }\n this.cbSelectAll.setInputAriaLabel(`${ariaLabel} (${ariaStatus})`);\n this.headerCellCtrl.refreshAriaDescription();\n }\n checkRightRowModelType(feature) {\n const rowModelType = this.rowModel.getType();\n const rowModelMatches = rowModelType === 'clientSide' || rowModelType === 'serverSide';\n if (!rowModelMatches) {\n console.warn(`AG Grid: ${feature} is only available if using 'clientSide' or 'serverSide' rowModelType, you are using ${rowModelType}.`);\n return false;\n }\n return true;\n }\n onCbSelectAll() {\n if (this.processingEventFromCheckbox) {\n return;\n }\n if (!this.cbSelectAllVisible) {\n return;\n }\n const value = this.cbSelectAll.getValue();\n let source = 'uiSelectAll';\n if (this.currentPageOnly)\n source = 'uiSelectAllCurrentPage';\n else if (this.filteredOnly)\n source = 'uiSelectAllFiltered';\n const params = {\n source,\n justFiltered: this.filteredOnly,\n justCurrentPage: this.currentPageOnly,\n };\n if (value) {\n this.selectionService.selectAllRowNodes(params);\n }\n else {\n this.selectionService.deselectAllRowNodes(params);\n }\n }\n isCheckboxSelection() {\n let result = this.column.getColDef().headerCheckboxSelection;\n if (typeof result === 'function') {\n const func = result;\n const params = {\n column: this.column,\n colDef: this.column.getColDef(),\n columnApi: this.columnApi,\n api: this.gridApi,\n context: this.gridOptionsService.context\n };\n result = func(params);\n }\n if (result) {\n return this.checkRightRowModelType('headerCheckboxSelection');\n }\n return false;\n }\n}\n__decorate$1n([\n Autowired('gridApi')\n], SelectAllFeature.prototype, \"gridApi\", void 0);\n__decorate$1n([\n Autowired('columnApi')\n], SelectAllFeature.prototype, \"columnApi\", void 0);\n__decorate$1n([\n Autowired('rowModel')\n], SelectAllFeature.prototype, \"rowModel\", void 0);\n__decorate$1n([\n Autowired('selectionService')\n], SelectAllFeature.prototype, \"selectionService\", void 0);\n\nvar __decorate$1m = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 TabGuardClassNames;\n(function (TabGuardClassNames) {\n TabGuardClassNames[\"TAB_GUARD\"] = \"ag-tab-guard\";\n TabGuardClassNames[\"TAB_GUARD_TOP\"] = \"ag-tab-guard-top\";\n TabGuardClassNames[\"TAB_GUARD_BOTTOM\"] = \"ag-tab-guard-bottom\";\n})(TabGuardClassNames || (TabGuardClassNames = {}));\nclass TabGuardCtrl extends BeanStub {\n constructor(params) {\n super();\n this.skipTabGuardFocus = false;\n const { comp, eTopGuard, eBottomGuard, focusInnerElement, onFocusIn, onFocusOut, shouldStopEventPropagation, onTabKeyDown, handleKeyDown, eFocusableElement } = params;\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 }\n postConstruct() {\n this.createManagedBean(new ManagedFocusFeature(this.eFocusableElement, {\n shouldStopEventPropagation: () => this.shouldStopEventPropagation(),\n onTabKeyDown: e => this.onTabKeyDown(e),\n handleKeyDown: e => this.handleKeyDown(e),\n onFocusIn: e => this.onFocusIn(e),\n onFocusOut: e => this.onFocusOut(e)\n }));\n this.activateTabGuards();\n [this.eTopGuard, this.eBottomGuard].forEach(guard => this.addManagedListener(guard, 'focus', this.onFocus.bind(this)));\n }\n handleKeyDown(e) {\n if (this.providedHandleKeyDown) {\n this.providedHandleKeyDown(e);\n }\n }\n tabGuardsAreActive() {\n return !!this.eTopGuard && this.eTopGuard.hasAttribute('tabIndex');\n }\n shouldStopEventPropagation() {\n if (this.providedShouldStopEventPropagation) {\n return this.providedShouldStopEventPropagation();\n }\n return false;\n }\n activateTabGuards() {\n const tabIndex = this.gridOptionsService.getNum('tabIndex') || 0;\n this.comp.setTabIndex(tabIndex.toString());\n }\n deactivateTabGuards() {\n this.comp.setTabIndex();\n }\n onFocus(e) {\n if (this.skipTabGuardFocus) {\n this.skipTabGuardFocus = false;\n return;\n }\n const fromBottom = e.target === this.eBottomGuard;\n if (this.providedFocusInnerElement) {\n this.providedFocusInnerElement(fromBottom);\n }\n else {\n this.focusInnerElement(fromBottom);\n }\n }\n onFocusIn(e) {\n if (this.providedFocusIn && this.providedFocusIn(e)) {\n return;\n }\n this.deactivateTabGuards();\n }\n onFocusOut(e) {\n if (this.providedFocusOut && this.providedFocusOut(e)) {\n return;\n }\n if (!this.eFocusableElement.contains(e.relatedTarget)) {\n this.activateTabGuards();\n }\n }\n onTabKeyDown(e) {\n if (this.providedOnTabKeyDown) {\n this.providedOnTabKeyDown(e);\n return;\n }\n if (e.defaultPrevented) {\n return;\n }\n const tabGuardsAreActive = this.tabGuardsAreActive();\n if (tabGuardsAreActive) {\n this.deactivateTabGuards();\n }\n const 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(() => this.activateTabGuards(), 0);\n }\n if (!nextRoot) {\n return;\n }\n nextRoot.focus();\n e.preventDefault();\n }\n focusInnerElement(fromBottom = false) {\n const 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({ preventScroll: true });\n }\n getNextFocusableElement(backwards) {\n return this.focusService.findNextFocusableElement(this.eFocusableElement, false, backwards);\n }\n forceFocusOutOfContainer(up = false) {\n const tabGuardToFocus = up ? this.eTopGuard : this.eBottomGuard;\n this.activateTabGuards();\n this.skipTabGuardFocus = true;\n tabGuardToFocus.focus();\n }\n}\n__decorate$1m([\n Autowired('focusService')\n], TabGuardCtrl.prototype, \"focusService\", void 0);\n__decorate$1m([\n PostConstruct\n], TabGuardCtrl.prototype, \"postConstruct\", null);\n\nvar __decorate$1l = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 FocusService_1;\nlet FocusService = FocusService_1 = class FocusService extends BeanStub {\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 static addKeyboardModeEvents(doc, controller) {\n const 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 static removeKeyboardModeEvents(doc, controller) {\n const docControllers = FocusService_1.instancesMonitored.get(doc);\n let newControllers = [];\n if (docControllers && docControllers.length) {\n newControllers = [...docControllers].filter(currentGridCore => 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 static toggleKeyboardMode(event) {\n const isKeyboardActive = FocusService_1.keyboardModeActive;\n const 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 const doc = event.target.ownerDocument;\n if (!doc) {\n return;\n }\n const controllersForDoc = FocusService_1.instancesMonitored.get(doc);\n if (controllersForDoc) {\n controllersForDoc.forEach(controller => {\n controller.dispatchEvent({ type: isKeyboardEvent ? Events.EVENT_KEYBOARD_FOCUS : Events.EVENT_MOUSE_FOCUS });\n });\n }\n }\n init() {\n const 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(p => {\n this.gridCtrl = p.gridCtrl;\n const doc = this.gridOptionsService.getDocument();\n FocusService_1.addKeyboardModeEvents(doc, this.gridCtrl);\n this.addDestroyFunc(() => this.unregisterGridCompController(this.gridCtrl));\n });\n }\n unregisterGridCompController(gridCompController) {\n const doc = this.gridOptionsService.getDocument();\n FocusService_1.removeKeyboardModeEvents(doc, gridCompController);\n }\n onColumnEverythingChanged() {\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 const col = this.focusedCellPosition.column;\n const colFromColumnModel = this.columnModel.getGridColumn(col.getId());\n if (col !== colFromColumnModel) {\n this.clearFocusedCell();\n }\n }\n isKeyboardMode() {\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 getFocusCellToUseAfterRefresh() {\n const eDocument = this.gridOptionsService.getDocument();\n if (this.gridOptionsService.is('suppressFocusAfterRefresh') || !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 getFocusHeaderToUseAfterRefresh() {\n const eDocument = this.gridOptionsService.getDocument();\n if (this.gridOptionsService.is('suppressFocusAfterRefresh') || !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 isDomDataMissingInHierarchy(eBrowserCell, key) {\n let ePointer = eBrowserCell;\n while (ePointer) {\n const data = this.gridOptionsService.getDomData(ePointer, key);\n if (data) {\n return false;\n }\n ePointer = ePointer.parentNode;\n }\n return true;\n }\n getFocusedCell() {\n return this.focusedCellPosition;\n }\n shouldRestoreFocus(cell) {\n if (this.isCellRestoreFocused(cell)) {\n setTimeout(() => {\n // Clear the restore focused cell position after the timeout to avoid\n // the cell being focused again and stealing focus from another part of the app.\n this.restoredFocusedCellPosition = null;\n }, 0);\n return true;\n }\n return false;\n }\n isCellRestoreFocused(cellPosition) {\n if (this.restoredFocusedCellPosition == null) {\n return false;\n }\n return this.cellPositionUtils.equals(cellPosition, this.restoredFocusedCellPosition);\n }\n setRestoreFocusedCell(cellPosition) {\n if (this.getFrameworkOverrides().renderingEngine === 'react') {\n // The restoredFocusedCellPosition is used in the React Rendering engine as we have to be able\n // to support restoring focus after an async rendering.\n this.restoredFocusedCellPosition = cellPosition;\n }\n }\n getFocusEventParams() {\n const { rowIndex, rowPinned, column } = this.focusedCellPosition;\n const params = {\n rowIndex: rowIndex,\n rowPinned: rowPinned,\n column: column,\n isFullWidthCell: false\n };\n const rowCtrl = this.rowRenderer.getRowByPosition({ rowIndex, rowPinned });\n if (rowCtrl) {\n params.isFullWidthCell = rowCtrl.isFullWidth();\n }\n return params;\n }\n clearFocusedCell() {\n this.restoredFocusedCellPosition = null;\n if (this.focusedCellPosition == null) {\n return;\n }\n const event = Object.assign({ type: Events.EVENT_CELL_FOCUS_CLEARED }, this.getFocusEventParams());\n this.focusedCellPosition = null;\n this.eventService.dispatchEvent(event);\n }\n setFocusedCell(params) {\n const { column, rowIndex, rowPinned, forceBrowserFocus = false, preventScrollOnBrowserFocus = false } = params;\n const gridColumn = this.columnModel.getGridColumn(column);\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 ? {\n rowIndex: rowIndex,\n rowPinned: makeNull(rowPinned),\n column: gridColumn\n } : null;\n const event = Object.assign(Object.assign({ type: Events.EVENT_CELL_FOCUSED }, this.getFocusEventParams()), { forceBrowserFocus,\n preventScrollOnBrowserFocus, floating: null });\n this.eventService.dispatchEvent(event);\n }\n isCellFocused(cellPosition) {\n if (this.focusedCellPosition == null) {\n return false;\n }\n return this.cellPositionUtils.equals(cellPosition, this.focusedCellPosition);\n }\n isRowNodeFocused(rowNode) {\n return this.isRowFocused(rowNode.rowIndex, rowNode.rowPinned);\n }\n isHeaderWrapperFocused(headerCtrl) {\n if (this.focusedHeaderPosition == null) {\n return false;\n }\n const column = headerCtrl.getColumnGroupChild();\n const headerRowIndex = headerCtrl.getRowIndex();\n const pinned = headerCtrl.getPinned();\n const { column: focusedColumn, headerRowIndex: focusedHeaderRowIndex } = this.focusedHeaderPosition;\n return column === focusedColumn &&\n headerRowIndex === focusedHeaderRowIndex &&\n pinned == focusedColumn.getPinned();\n }\n clearFocusedHeader() {\n this.focusedHeaderPosition = null;\n }\n getFocusedHeader() {\n return this.focusedHeaderPosition;\n }\n setFocusedHeader(headerRowIndex, column) {\n this.focusedHeaderPosition = { headerRowIndex, column };\n }\n focusHeaderPosition(params) {\n const { direction, fromTab, allowUserOverride, event } = params;\n let { headerPosition } = params;\n if (allowUserOverride) {\n const currentPosition = this.getFocusedHeader();\n const headerRowCount = this.headerNavigationService.getHeaderRowCount();\n if (fromTab) {\n const userFunc = this.gridOptionsService.getCallback('tabToNextHeader');\n if (userFunc) {\n const params = {\n backwards: direction === 'Before',\n previousHeaderPosition: currentPosition,\n nextHeaderPosition: headerPosition,\n headerRowCount,\n };\n headerPosition = userFunc(params);\n }\n }\n else {\n const userFunc = this.gridOptionsService.getCallback('navigateToNextHeader');\n if (userFunc && event) {\n const params = {\n key: event.key,\n previousHeaderPosition: currentPosition,\n nextHeaderPosition: headerPosition,\n headerRowCount,\n event,\n };\n headerPosition = userFunc(params);\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 const headerRowContainerCtrl = this.ctrlsService.getHeaderRowContainerCtrl(headerPosition.column.getPinned());\n // this will automatically call the setFocusedHeader method above\n const focusSuccess = headerRowContainerCtrl.focusHeader(headerPosition.headerRowIndex, headerPosition.column, event);\n return focusSuccess;\n }\n focusFirstHeader() {\n let 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 focusLastHeader(event) {\n const headerRowIndex = this.headerNavigationService.getHeaderRowCount() - 1;\n const column = last(this.columnModel.getAllDisplayedColumns());\n return this.focusHeaderPosition({\n headerPosition: { headerRowIndex, column },\n event\n });\n }\n isAnyCellFocused() {\n return !!this.focusedCellPosition;\n }\n isRowFocused(rowIndex, floating) {\n if (this.focusedCellPosition == null) {\n return false;\n }\n return this.focusedCellPosition.rowIndex === rowIndex && this.focusedCellPosition.rowPinned === makeNull(floating);\n }\n findFocusableElements(rootNode, exclude, onlyUnmanaged = false) {\n const focusableString = FOCUSABLE_SELECTOR;\n let excludeString = FOCUSABLE_EXCLUDE;\n if (exclude) {\n excludeString += ', ' + exclude;\n }\n if (onlyUnmanaged) {\n excludeString += ', [tabindex=\"-1\"]';\n }\n const nodes = Array.prototype.slice.apply(rootNode.querySelectorAll(focusableString));\n const excludeNodes = Array.prototype.slice.apply(rootNode.querySelectorAll(excludeString));\n if (!excludeNodes.length) {\n return nodes;\n }\n const diff = (a, b) => a.filter(element => b.indexOf(element) === -1);\n return diff(nodes, excludeNodes);\n }\n focusInto(rootNode, up = false, onlyUnmanaged = false) {\n const focusableElements = this.findFocusableElements(rootNode, null, onlyUnmanaged);\n const toFocus = up ? last(focusableElements) : focusableElements[0];\n if (toFocus) {\n toFocus.focus({ preventScroll: true });\n return true;\n }\n return false;\n }\n findFocusableElementBeforeTabGuard(rootNode, referenceElement) {\n if (!referenceElement) {\n return null;\n }\n const focusableElements = this.findFocusableElements(rootNode);\n const referenceIndex = focusableElements.indexOf(referenceElement);\n if (referenceIndex === -1) {\n return null;\n }\n let lastTabGuardIndex = -1;\n for (let i = referenceIndex - 1; i >= 0; i--) {\n if (focusableElements[i].classList.contains(TabGuardClassNames.TAB_GUARD_TOP)) {\n lastTabGuardIndex = i;\n break;\n }\n }\n if (lastTabGuardIndex <= 0) {\n return null;\n }\n return focusableElements[lastTabGuardIndex - 1];\n }\n findNextFocusableElement(rootNode = this.eGridDiv, onlyManaged, backwards) {\n const focusable = this.findFocusableElements(rootNode, onlyManaged ? ':not([tabindex=\"-1\"])' : null);\n const eDocument = this.gridOptionsService.getDocument();\n const activeEl = eDocument.activeElement;\n let currentIndex;\n if (onlyManaged) {\n currentIndex = focusable.findIndex(el => el.contains(activeEl));\n }\n else {\n currentIndex = focusable.indexOf(activeEl);\n }\n const nextIndex = currentIndex + (backwards ? -1 : 1);\n if (nextIndex < 0 || nextIndex >= focusable.length) {\n return null;\n }\n return focusable[nextIndex];\n }\n isTargetUnderManagedComponent(rootNode, target) {\n if (!target) {\n return false;\n }\n const managedContainers = rootNode.querySelectorAll(`.${ManagedFocusFeature.FOCUS_MANAGED_CLASS}`);\n if (!managedContainers.length) {\n return false;\n }\n for (let i = 0; i < managedContainers.length; i++) {\n if (managedContainers[i].contains(target)) {\n return true;\n }\n }\n return false;\n }\n findTabbableParent(node, limit = 5) {\n let 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 focusGridView(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.gridOptionsService.is('suppressCellFocus')) {\n if (backwards) {\n return this.focusLastHeader();\n }\n return this.focusNextGridCoreContainer(false);\n }\n const nextRow = backwards\n ? this.rowPositionUtils.getLastRow()\n : this.rowPositionUtils.getFirstRow();\n if (!nextRow) {\n return false;\n }\n const { rowIndex, rowPinned } = nextRow;\n const 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, column, rowPinned });\n this.setFocusedCell({\n rowIndex,\n column,\n rowPinned: makeNull(rowPinned),\n forceBrowserFocus: true\n });\n if (this.rangeService) {\n const cellPosition = { rowIndex, rowPinned, column };\n this.rangeService.setRangeToCell(cellPosition);\n }\n return true;\n }\n focusNextGridCoreContainer(backwards, forceOut = false) {\n if (!forceOut && this.gridCtrl.focusNextInnerContainer(backwards)) {\n return true;\n }\n if (forceOut || (!backwards && !this.gridCtrl.isDetailGrid())) {\n this.gridCtrl.forceFocusOutOfContainer(backwards);\n }\n return false;\n }\n};\nFocusService.AG_KEYBOARD_FOCUS = 'ag-keyboard-focus';\nFocusService.keyboardModeActive = false;\nFocusService.instancesMonitored = new Map();\n__decorate$1l([\n Autowired('eGridDiv')\n], FocusService.prototype, \"eGridDiv\", void 0);\n__decorate$1l([\n Autowired('columnModel')\n], FocusService.prototype, \"columnModel\", void 0);\n__decorate$1l([\n Autowired('headerNavigationService')\n], FocusService.prototype, \"headerNavigationService\", void 0);\n__decorate$1l([\n Autowired('rowRenderer')\n], FocusService.prototype, \"rowRenderer\", void 0);\n__decorate$1l([\n Autowired('rowPositionUtils')\n], FocusService.prototype, \"rowPositionUtils\", void 0);\n__decorate$1l([\n Autowired('cellPositionUtils')\n], FocusService.prototype, \"cellPositionUtils\", void 0);\n__decorate$1l([\n Optional('rangeService')\n], FocusService.prototype, \"rangeService\", void 0);\n__decorate$1l([\n Autowired('navigationService')\n], FocusService.prototype, \"navigationService\", void 0);\n__decorate$1l([\n Autowired('ctrlsService')\n], FocusService.prototype, \"ctrlsService\", void 0);\n__decorate$1l([\n PostConstruct\n], FocusService.prototype, \"init\", null);\nFocusService = FocusService_1 = __decorate$1l([\n Bean('focusService')\n], FocusService);\n\nvar __decorate$1k = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass HeaderCellCtrl extends AbstractHeaderCellCtrl {\n constructor(column, parentRowCtrl) {\n super(column, parentRowCtrl);\n this.refreshFunctions = [];\n this.userHeaderClasses = new Set();\n this.ariaDescriptionProperties = new Map();\n this.column = column;\n }\n setComp(comp, eGui, eResize, eHeaderCompWrapper) {\n super.setGui(eGui);\n this.comp = comp;\n this.updateState();\n this.setupWidth();\n this.setupMovingCss();\n this.setupMenuClass();\n this.setupSortableClass();\n this.setupWrapTextClass();\n this.refreshSpanHeaderHeight();\n this.setupAutoHeight(eHeaderCompWrapper);\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.refreshAria();\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: e => this.shouldStopEventPropagation(e),\n onTabKeyDown: () => null,\n handleKeyDown: this.handleKeyDown.bind(this),\n onFocusIn: this.onFocusIn.bind(this),\n onFocusOut: this.onFocusOut.bind(this)\n }));\n this.addMouseDownListenerIfNeeded(eGui);\n this.addManagedListener(this.column, Column.EVENT_COL_DEF_CHANGED, this.onColDefChanged.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 this.addManagedListener(this.eventService, Events.EVENT_HEADER_HEIGHT_CHANGED, this.onHeaderHeightChanged.bind(this));\n }\n addMouseDownListenerIfNeeded(eGui) {\n // we add a preventDefault in the DragService for Safari only\n // so we need to make sure we don't prevent focus on mousedown\n if (!isBrowserSafari()) {\n return;\n }\n const events = ['mousedown', 'touchstart'];\n const eDocument = this.gridOptionsService.getDocument();\n events.forEach(eventName => {\n this.addManagedListener(eGui, eventName, (e) => {\n const activeEl = eDocument.activeElement;\n if (activeEl !== eGui && !eGui.contains(activeEl)) {\n eGui.focus();\n FocusService.toggleKeyboardMode(e);\n }\n });\n });\n }\n setupUserComp() {\n const compDetails = this.lookupUserCompDetails();\n this.setCompDetails(compDetails);\n }\n setCompDetails(compDetails) {\n this.userCompDetails = compDetails;\n this.comp.setUserCompDetails(compDetails);\n }\n lookupUserCompDetails() {\n const params = this.createParams();\n const colDef = this.column.getColDef();\n return this.userComponentFactory.getHeaderCompDetails(colDef, params);\n }\n createParams() {\n const colDef = this.column.getColDef();\n const params = {\n column: this.column,\n displayName: this.displayName,\n enableSorting: colDef.sortable,\n enableMenu: this.menuEnabled,\n showColumnMenu: (source) => {\n this.gridApi.showColumnMenuAfterButtonClick(this.column, source);\n },\n progressSort: (multiSort) => {\n this.sortController.progressSort(this.column, !!multiSort, \"uiColumnSorted\");\n },\n setSort: (sort, multiSort) => {\n this.sortController.setSortForColumn(this.column, sort, !!multiSort, \"uiColumnSorted\");\n },\n api: this.gridApi,\n columnApi: this.columnApi,\n context: this.gridOptionsService.context,\n eGridHeader: this.getGui()\n };\n return params;\n }\n setupSelectAll() {\n this.selectAllFeature = this.createManagedBean(new SelectAllFeature(this.column));\n this.selectAllFeature.setComp(this);\n }\n getSelectAllGui() {\n return this.selectAllFeature.getCheckboxGui();\n }\n handleKeyDown(e) {\n super.handleKeyDown(e);\n if (e.key === KeyCode.SPACE) {\n this.selectAllFeature.onSpaceKeyDown(e);\n }\n if (e.key === KeyCode.ENTER) {\n this.onEnterKeyDown(e);\n }\n }\n onEnterKeyDown(e) {\n /// THIS IS BAD - we are assuming the header is not a user provided comp\n const 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 const multiSort = e.shiftKey;\n this.sortController.progressSort(this.column, multiSort, \"uiColumnSorted\");\n }\n }\n isMenuEnabled() {\n return this.menuEnabled;\n }\n onFocusIn(e) {\n if (!this.getGui().contains(e.relatedTarget)) {\n const rowIndex = this.getRowIndex();\n this.focusService.setFocusedHeader(rowIndex, this.column);\n }\n this.setActiveHeader(true);\n }\n onFocusOut(e) {\n if (this.getGui().contains(e.relatedTarget)) {\n return;\n }\n this.setActiveHeader(false);\n }\n setupTooltip() {\n const tooltipCtrl = {\n getColumn: () => this.column,\n getColDef: () => this.column.getColDef(),\n getGui: () => this.eGui,\n getLocation: () => 'header',\n getTooltipValue: () => {\n const res = this.column.getColDef().headerTooltip;\n return res;\n },\n };\n const tooltipFeature = this.createManagedBean(new TooltipFeature(tooltipCtrl, this.beans));\n tooltipFeature.setComp(this.comp);\n this.refreshFunctions.push(() => tooltipFeature.refreshToolTip());\n }\n setupClassesFromColDef() {\n const refreshHeaderClasses = () => {\n const colDef = this.column.getColDef();\n const classes = CssClassApplier.getHeaderClassesFromColDef(colDef, this.gridOptionsService, this.column, null);\n const oldClasses = this.userHeaderClasses;\n this.userHeaderClasses = new Set(classes);\n classes.forEach(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(c => this.comp.addOrRemoveCssClass(c, false));\n };\n this.refreshFunctions.push(refreshHeaderClasses);\n refreshHeaderClasses();\n }\n setDragSource(eSource) {\n this.dragSourceElement = eSource;\n this.removeDragSource();\n if (!eSource) {\n return;\n }\n if (!this.draggable) {\n return;\n }\n const hideColumnOnExit = !this.gridOptionsService.is('suppressDragLeaveHidesColumns');\n this.moveDragSource = {\n type: DragSourceType.HeaderCell,\n eElement: eSource,\n defaultIconName: hideColumnOnExit ? DragAndDropService.ICON_HIDE : DragAndDropService.ICON_NOT_ALLOWED,\n getDragItem: () => this.createDragItem(),\n dragItemName: this.displayName,\n onDragStarted: () => this.column.setMoving(true, \"uiColumnMoved\"),\n onDragStopped: () => this.column.setMoving(false, \"uiColumnMoved\"),\n onGridEnter: (dragItem) => {\n var _a;\n if (hideColumnOnExit) {\n const unlockedColumns = ((_a = dragItem === null || dragItem === void 0 ? void 0 : dragItem.columns) === null || _a === void 0 ? void 0 : _a.filter(col => !col.getColDef().lockVisible)) || [];\n this.columnModel.setColumnsVisible(unlockedColumns, true, \"uiColumnMoved\");\n }\n },\n onGridExit: (dragItem) => {\n var _a;\n if (hideColumnOnExit) {\n const unlockedColumns = ((_a = dragItem === null || dragItem === void 0 ? void 0 : dragItem.columns) === null || _a === void 0 ? void 0 : _a.filter(col => !col.getColDef().lockVisible)) || [];\n this.columnModel.setColumnsVisible(unlockedColumns, false, \"uiColumnMoved\");\n }\n },\n };\n this.dragAndDropService.addDragSource(this.moveDragSource, true);\n }\n createDragItem() {\n const visibleState = {};\n visibleState[this.column.getId()] = this.column.isVisible();\n return {\n columns: [this.column],\n visibleState: visibleState\n };\n }\n removeDragSource() {\n if (this.moveDragSource) {\n this.dragAndDropService.removeDragSource(this.moveDragSource);\n this.moveDragSource = undefined;\n }\n }\n onColDefChanged() {\n this.refresh();\n }\n updateState() {\n const 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 addRefreshFunction(func) {\n this.refreshFunctions.push(func);\n }\n refresh() {\n this.updateState();\n this.refreshHeaderComp();\n this.refreshAria();\n this.refreshFunctions.forEach(f => f());\n }\n refreshHeaderComp() {\n const newCompDetails = this.lookupUserCompDetails();\n const compInstance = this.comp.getUserCompInstance();\n // only try refresh if old comp exists adn it is the correct type\n const attemptRefresh = compInstance != null && this.userCompDetails.componentClass == newCompDetails.componentClass;\n const 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 attemptHeaderCompRefresh(params) {\n const 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 const res = headerComp.refresh(params);\n return res;\n }\n calculateDisplayName() {\n return this.columnModel.getDisplayNameForColumn(this.column, 'header', true);\n }\n checkDisplayName() {\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 workOutDraggable() {\n const colDef = this.column.getColDef();\n const isSuppressMovableColumns = this.gridOptionsService.is('suppressMovableColumns');\n const 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 onColumnRowGroupChanged() {\n this.checkDisplayName();\n }\n onColumnPivotChanged() {\n this.checkDisplayName();\n }\n onColumnValueChanged() {\n this.checkDisplayName();\n }\n setupWidth() {\n const listener = () => {\n const columnWidth = this.column.getActualWidth();\n this.comp.setWidth(`${columnWidth}px`);\n };\n this.addManagedListener(this.column, Column.EVENT_WIDTH_CHANGED, listener);\n listener();\n }\n setupMovingCss() {\n const listener = () => {\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 setupMenuClass() {\n const listener = () => {\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 setupSortableClass() {\n const updateSortableCssClass = () => {\n this.comp.addOrRemoveCssClass('ag-header-cell-sortable', !!this.sortable);\n };\n updateSortableCssClass();\n this.addRefreshFunction(updateSortableCssClass);\n this.addManagedListener(this.eventService, Column.EVENT_SORT_CHANGED, this.refreshAriaSort.bind(this));\n }\n setupWrapTextClass() {\n const listener = () => {\n const wrapText = !!this.column.getColDef().wrapHeaderText;\n this.comp.addOrRemoveCssClass('ag-header-cell-wrap-text', wrapText);\n };\n listener();\n this.addRefreshFunction(listener);\n }\n onHeaderHeightChanged() {\n this.refreshSpanHeaderHeight();\n }\n refreshSpanHeaderHeight() {\n const { eGui, column, comp, columnModel, gridOptionsService } = this;\n if (!column.isSpanHeaderHeight()) {\n return;\n }\n const { numberOfParents, isSpanningTotal } = this.getColumnGroupPaddingInfo();\n comp.addOrRemoveCssClass('ag-header-span-height', numberOfParents > 0);\n if (numberOfParents === 0) {\n return;\n }\n comp.addOrRemoveCssClass('ag-header-span-total', isSpanningTotal);\n const pivotMode = gridOptionsService.is('pivotMode');\n const groupHeaderHeight = pivotMode\n ? columnModel.getPivotGroupHeaderHeight()\n : columnModel.getGroupHeaderHeight();\n const headerHeight = columnModel.getColumnHeaderRowHeight();\n const extraHeight = numberOfParents * groupHeaderHeight;\n eGui.style.setProperty('top', `${-extraHeight}px`);\n eGui.style.setProperty('height', `${headerHeight + extraHeight}px`);\n }\n getColumnGroupPaddingInfo() {\n let parent = this.column.getParent();\n if (!parent || !parent.isPadding()) {\n return { numberOfParents: 0, isSpanningTotal: false };\n }\n const numberOfParents = parent.getPaddingLevel() + 1;\n let isSpanningTotal = true;\n while (parent) {\n if (!parent.isPadding()) {\n isSpanningTotal = false;\n break;\n }\n parent = parent.getParent();\n }\n return { numberOfParents, isSpanningTotal };\n }\n setupAutoHeight(wrapperElement) {\n const measureHeight = (timesCalled) => {\n if (!this.isAlive()) {\n return;\n }\n const { paddingTop, paddingBottom, borderBottomWidth, borderTopWidth } = getElementSize(this.getGui());\n const extraHeight = paddingTop + paddingBottom + borderBottomWidth + borderTopWidth;\n const wrapperHeight = wrapperElement.offsetHeight;\n const autoHeight = wrapperHeight + extraHeight;\n if (timesCalled < 5) {\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 const doc = this.beans.gridOptionsService.getDocument();\n const notYetInDom = !doc || !doc.contains(wrapperElement);\n // this happens in React, where React hasn't put any content in. we say 'possibly'\n // as a) may not be React and b) the cell could be empty anyway\n const possiblyNoContentYet = autoHeight == 0;\n if (notYetInDom || possiblyNoContentYet) {\n this.beans.frameworkOverrides.setTimeout(() => measureHeight(timesCalled + 1), 0);\n return;\n }\n }\n this.columnModel.setColumnHeaderHeight(this.column, autoHeight);\n };\n let isMeasuring = false;\n let stopResizeObserver;\n const checkMeasuring = () => {\n const newValue = this.column.isAutoHeaderHeight();\n if (newValue && !isMeasuring) {\n startMeasuring();\n }\n if (!newValue && isMeasuring) {\n stopMeasuring();\n }\n };\n const startMeasuring = () => {\n isMeasuring = true;\n measureHeight(0);\n this.comp.addOrRemoveCssClass('ag-header-cell-auto-height', true);\n stopResizeObserver = this.resizeObserverService.observeResize(wrapperElement, () => measureHeight(0));\n };\n const stopMeasuring = () => {\n isMeasuring = false;\n if (stopResizeObserver) {\n stopResizeObserver();\n }\n this.comp.addOrRemoveCssClass('ag-header-cell-auto-height', false);\n stopResizeObserver = undefined;\n };\n checkMeasuring();\n this.addDestroyFunc(() => stopMeasuring());\n // In theory we could rely on the resize observer for everything - but since it's debounced\n // it can be a little janky for smooth movement. in this case its better to react to our own events\n // And unfortunately we cant _just_ rely on our own events, since custom components can change whenever\n this.addManagedListener(this.column, Column.EVENT_WIDTH_CHANGED, () => isMeasuring && measureHeight(0));\n // Displaying the sort icon changes the available area for text, so sort changes can affect height\n this.addManagedListener(this.eventService, Column.EVENT_SORT_CHANGED, () => {\n // Rendering changes for sort, happen after the event... not ideal\n if (isMeasuring) {\n this.beans.frameworkOverrides.setTimeout(() => measureHeight(0));\n }\n });\n this.addRefreshFunction(checkMeasuring);\n }\n refreshAriaSort() {\n if (this.sortable) {\n const translate = this.localeService.getLocaleTextFunc();\n const sort = this.sortController.getDisplaySortForColumn(this.column) || null;\n this.comp.setAriaSort(getAriaSortState(sort));\n this.setAriaDescriptionProperty('sort', translate('ariaSortableColumn', 'Press ENTER to sort.'));\n }\n else {\n this.comp.setAriaSort();\n this.setAriaDescriptionProperty('sort', null);\n }\n }\n refreshAriaMenu() {\n if (this.menuEnabled) {\n const translate = this.localeService.getLocaleTextFunc();\n this.setAriaDescriptionProperty('menu', translate('ariaMenuColumn', 'Press CTRL ENTER to open column menu.'));\n }\n else {\n this.setAriaDescriptionProperty('menu', null);\n }\n }\n setAriaDescriptionProperty(property, value) {\n if (value != null) {\n this.ariaDescriptionProperties.set(property, value);\n }\n else {\n this.ariaDescriptionProperties.delete(property);\n }\n }\n refreshAriaDescription() {\n const descriptionArray = Array.from(this.ariaDescriptionProperties.values());\n this.comp.setAriaDescription(descriptionArray.length ? descriptionArray.join(' ') : undefined);\n }\n refreshAria() {\n this.refreshAriaSort();\n this.refreshAriaMenu();\n this.refreshAriaDescription();\n }\n addColumnHoverListener() {\n const listener = () => {\n if (!this.gridOptionsService.is('columnHoverHighlight')) {\n return;\n }\n const 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 setupFilterCss() {\n const listener = () => {\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 setupColId() {\n this.comp.setColId(this.column.getColId());\n }\n addActiveHeaderMouseListeners() {\n const listener = (e) => this.setActiveHeader(e.type === 'mouseenter');\n this.addManagedListener(this.getGui(), 'mouseenter', listener);\n this.addManagedListener(this.getGui(), 'mouseleave', listener);\n }\n setActiveHeader(active) {\n this.comp.addOrRemoveCssClass('ag-header-active', active);\n }\n}\n__decorate$1k([\n Autowired('columnModel')\n], HeaderCellCtrl.prototype, \"columnModel\", void 0);\n__decorate$1k([\n Autowired('columnHoverService')\n], HeaderCellCtrl.prototype, \"columnHoverService\", void 0);\n__decorate$1k([\n Autowired('sortController')\n], HeaderCellCtrl.prototype, \"sortController\", void 0);\n__decorate$1k([\n Autowired('menuFactory')\n], HeaderCellCtrl.prototype, \"menuFactory\", void 0);\n__decorate$1k([\n Autowired('dragAndDropService')\n], HeaderCellCtrl.prototype, \"dragAndDropService\", void 0);\n__decorate$1k([\n Autowired('resizeObserverService')\n], HeaderCellCtrl.prototype, \"resizeObserverService\", void 0);\n__decorate$1k([\n Autowired('gridApi')\n], HeaderCellCtrl.prototype, \"gridApi\", void 0);\n__decorate$1k([\n Autowired('columnApi')\n], HeaderCellCtrl.prototype, \"columnApi\", void 0);\n__decorate$1k([\n PreDestroy\n], HeaderCellCtrl.prototype, \"removeDragSource\", null);\n\nvar __decorate$1j = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass GroupResizeFeature extends BeanStub {\n constructor(comp, eResize, pinned, columnGroup) {\n super();\n this.eResize = eResize;\n this.comp = comp;\n this.pinned = pinned;\n this.columnGroup = columnGroup;\n }\n postConstruct() {\n if (!this.columnGroup.isResizable()) {\n this.comp.setResizableDisplayed(false);\n return;\n }\n const 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.gridOptionsService.is('suppressAutoSize')) {\n const skipHeaderOnAutoSize = this.gridOptionsService.is('skipHeaderOnAutoSize');\n this.eResize.addEventListener('dblclick', () => {\n // get list of all the column keys we are responsible for\n const keys = [];\n const leafCols = this.columnGroup.getDisplayedLeafColumns();\n leafCols.forEach((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,\n stopAtGroup: this.columnGroup,\n source: 'uiColumnResized'\n });\n }\n this.resizeLeafColumnsToFit('uiColumnResized');\n });\n }\n }\n onResizeStart(shiftKey) {\n this.calculateInitialValues();\n let takeFromGroup = null;\n if (shiftKey) {\n takeFromGroup = this.columnModel.getDisplayedGroupAfter(this.columnGroup);\n }\n if (takeFromGroup) {\n const takeFromLeafCols = takeFromGroup.getDisplayedLeafColumns();\n this.resizeTakeFromCols = takeFromLeafCols.filter(col => col.isResizable());\n this.resizeTakeFromStartWidth = 0;\n this.resizeTakeFromCols.forEach(col => this.resizeTakeFromStartWidth += col.getActualWidth());\n this.resizeTakeFromRatios = [];\n this.resizeTakeFromCols.forEach(col => 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 onResizing(finished, resizeAmount, source = 'uiColumnResized') {\n const resizeAmountNormalised = this.normaliseDragChange(resizeAmount);\n const width = this.resizeStartWidth + resizeAmountNormalised;\n this.resizeColumns(width, source, finished);\n }\n resizeLeafColumnsToFit(source) {\n const preferredSize = this.autoWidthCalculator.getPreferredWidthForColumnGroup(this.columnGroup);\n this.calculateInitialValues();\n if (preferredSize > this.resizeStartWidth) {\n this.resizeColumns(preferredSize, source, true);\n }\n }\n resizeColumns(totalWidth, source, finished = true) {\n const resizeSets = [];\n resizeSets.push({\n columns: this.resizeCols,\n ratios: this.resizeRatios,\n width: totalWidth\n });\n if (this.resizeTakeFromCols) {\n const 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,\n finished,\n source: source\n });\n if (finished) {\n this.comp.addOrRemoveCssClass('ag-column-resizing', false);\n }\n }\n calculateInitialValues() {\n const leafCols = this.columnGroup.getDisplayedLeafColumns();\n this.resizeCols = leafCols.filter(col => col.isResizable());\n this.resizeStartWidth = 0;\n this.resizeCols.forEach(col => this.resizeStartWidth += col.getActualWidth());\n this.resizeRatios = [];\n this.resizeCols.forEach(col => 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 normaliseDragChange(dragChange) {\n let result = dragChange;\n if (this.gridOptionsService.is('enableRtl')) {\n // for RTL, dragging left makes the col bigger, except when pinning left\n if (this.pinned !== 'left') {\n result *= -1;\n }\n }\n else if (this.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}\n__decorate$1j([\n Autowired('horizontalResizeService')\n], GroupResizeFeature.prototype, \"horizontalResizeService\", void 0);\n__decorate$1j([\n Autowired('autoWidthCalculator')\n], GroupResizeFeature.prototype, \"autoWidthCalculator\", void 0);\n__decorate$1j([\n Autowired('columnModel')\n], GroupResizeFeature.prototype, \"columnModel\", void 0);\n__decorate$1j([\n PostConstruct\n], GroupResizeFeature.prototype, \"postConstruct\", null);\n\nvar __decorate$1i = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass GroupWidthFeature extends BeanStub {\n constructor(comp, columnGroup) {\n super();\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 }\n postConstruct() {\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 addListenersToChildrenColumns() {\n // first destroy any old listeners\n this.removeListenersOnChildrenColumns();\n // now add new listeners to the new set of children\n const widthChangedListener = this.onWidthChanged.bind(this);\n this.columnGroup.getLeafColumns().forEach(column => {\n column.addEventListener('widthChanged', widthChangedListener);\n column.addEventListener('visibleChanged', widthChangedListener);\n this.removeChildListenersFuncs.push(() => {\n column.removeEventListener('widthChanged', widthChangedListener);\n column.removeEventListener('visibleChanged', widthChangedListener);\n });\n });\n }\n removeListenersOnChildrenColumns() {\n this.removeChildListenersFuncs.forEach(func => func());\n this.removeChildListenersFuncs = [];\n }\n onDisplayedChildrenChanged() {\n this.addListenersToChildrenColumns();\n this.onWidthChanged();\n }\n onWidthChanged() {\n const columnWidth = this.columnGroup.getActualWidth();\n this.comp.setWidth(`${columnWidth}px`);\n this.comp.addOrRemoveCssClass('ag-hidden', columnWidth === 0);\n }\n}\n__decorate$1i([\n PostConstruct\n], GroupWidthFeature.prototype, \"postConstruct\", null);\n\nvar __decorate$1h = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass HeaderGroupCellCtrl extends AbstractHeaderCellCtrl {\n constructor(columnGroup, parentRowCtrl) {\n super(columnGroup, parentRowCtrl);\n this.columnGroup = columnGroup;\n }\n setComp(comp, eGui, eResize) {\n super.setGui(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 const pinned = this.getParentRowCtrl().getPinned();\n const 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: () => undefined,\n handleKeyDown: this.handleKeyDown.bind(this),\n onFocusIn: this.onFocusIn.bind(this)\n }));\n }\n resizeLeafColumnsToFit(source) {\n // check to avoid throwing when a component has not been setup yet (React 18)\n if (!this.groupResizeFeature) {\n return;\n }\n this.groupResizeFeature.resizeLeafColumnsToFit(source);\n }\n setupUserComp() {\n let displayName = this.displayName;\n const params = {\n displayName: this.displayName,\n columnGroup: this.columnGroup,\n setExpanded: (expanded) => {\n this.columnModel.setColumnGroupOpened(this.columnGroup.getProvidedColumnGroup(), expanded, \"gridInitializing\");\n },\n api: this.gridApi,\n columnApi: this.columnApi,\n context: this.gridOptionsService.context\n };\n if (!displayName) {\n let columnGroup = this.columnGroup;\n const 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 const 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 const compDetails = this.userComponentFactory.getHeaderGroupCompDetails(params);\n this.comp.setUserCompDetails(compDetails);\n }\n setupTooltip() {\n const colGroupDef = this.columnGroup.getColGroupDef();\n const tooltipCtrl = {\n getColumn: () => this.columnGroup,\n getGui: () => this.eGui,\n getLocation: () => 'headerGroup',\n getTooltipValue: () => colGroupDef && colGroupDef.headerTooltip\n };\n if (colGroupDef) {\n tooltipCtrl.getColDef = () => colGroupDef;\n }\n const tooltipFeature = this.createManagedBean(new TooltipFeature(tooltipCtrl, this.beans));\n tooltipFeature.setComp(this.comp);\n }\n setupExpandable() {\n const 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 refreshExpanded() {\n const column = this.columnGroup;\n this.expandable = column.isExpandable();\n const 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 addAttributes() {\n this.comp.setColId(this.columnGroup.getUniqueId());\n }\n addClasses() {\n const colGroupDef = this.columnGroup.getColGroupDef();\n const classes = CssClassApplier.getHeaderClassesFromColDef(colGroupDef, this.gridOptionsService, 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 if (this.columnGroup.isPadding()) {\n classes.push('ag-header-group-cell-no-group');\n const leafCols = this.columnGroup.getLeafColumns();\n if (leafCols.every(col => col.isSpanHeaderHeight())) {\n classes.push('ag-header-span-height');\n }\n }\n else {\n classes.push('ag-header-group-cell-with-group');\n }\n classes.forEach(c => this.comp.addOrRemoveCssClass(c, true));\n }\n setupMovingCss() {\n const providedColumnGroup = this.columnGroup.getProvidedColumnGroup();\n const 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 const listener = () => this.comp.addOrRemoveCssClass('ag-header-cell-moving', this.columnGroup.isMoving());\n leafColumns.forEach(col => {\n this.addManagedListener(col, Column.EVENT_MOVING_CHANGED, listener);\n });\n listener();\n }\n onFocusIn(e) {\n if (!this.eGui.contains(e.relatedTarget)) {\n const rowIndex = this.getRowIndex();\n this.beans.focusService.setFocusedHeader(rowIndex, this.columnGroup);\n }\n }\n handleKeyDown(e) {\n super.handleKeyDown(e);\n const wrapperHasFocus = this.getWrapperHasFocus();\n if (!this.expandable || !wrapperHasFocus) {\n return;\n }\n if (e.key === KeyCode.ENTER) {\n const column = this.columnGroup;\n const 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 setDragSource(eHeaderGroup) {\n if (this.isSuppressMoving()) {\n return;\n }\n const allLeafColumns = this.columnGroup.getProvidedColumnGroup().getLeafColumns();\n const hideColumnOnExit = !this.gridOptionsService.is('suppressDragLeaveHidesColumns');\n const dragSource = {\n type: DragSourceType.HeaderCell,\n eElement: eHeaderGroup,\n defaultIconName: hideColumnOnExit ? DragAndDropService.ICON_HIDE : DragAndDropService.ICON_NOT_ALLOWED,\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: () => allLeafColumns.forEach(col => col.setMoving(true, \"uiColumnDragged\")),\n onDragStopped: () => allLeafColumns.forEach(col => col.setMoving(false, \"uiColumnDragged\")),\n onGridEnter: (dragItem) => {\n var _a;\n if (hideColumnOnExit) {\n const unlockedColumns = ((_a = dragItem === null || dragItem === void 0 ? void 0 : dragItem.columns) === null || _a === void 0 ? void 0 : _a.filter(col => !col.getColDef().lockVisible)) || [];\n this.columnModel.setColumnsVisible(unlockedColumns, true, \"uiColumnMoved\");\n }\n },\n onGridExit: (dragItem) => {\n var _a;\n if (hideColumnOnExit) {\n const unlockedColumns = ((_a = dragItem === null || dragItem === void 0 ? void 0 : dragItem.columns) === null || _a === void 0 ? void 0 : _a.filter(col => !col.getColDef().lockVisible)) || [];\n this.columnModel.setColumnsVisible(unlockedColumns, false, \"uiColumnMoved\");\n }\n },\n };\n this.dragAndDropService.addDragSource(dragSource, true);\n this.addDestroyFunc(() => 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 getDragItemForGroup() {\n const allColumnsOriginalOrder = this.columnGroup.getProvidedColumnGroup().getLeafColumns();\n // capture visible state, used when re-entering grid to dictate which columns should be visible\n const visibleState = {};\n allColumnsOriginalOrder.forEach(column => visibleState[column.getId()] = column.isVisible());\n const allColumnsCurrentOrder = [];\n this.columnModel.getAllDisplayedColumns().forEach(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(column => allColumnsCurrentOrder.push(column));\n // create and return dragItem\n return {\n columns: allColumnsCurrentOrder,\n visibleState: visibleState\n };\n }\n isSuppressMoving() {\n // if any child is fixed, then don't allow moving\n let childSuppressesMoving = false;\n this.columnGroup.getLeafColumns().forEach((column) => {\n if (column.getColDef().suppressMovable || column.getColDef().lockPosition) {\n childSuppressesMoving = true;\n }\n });\n const result = childSuppressesMoving || this.gridOptionsService.is('suppressMovableColumns');\n return result;\n }\n}\n__decorate$1h([\n Autowired('columnModel')\n], HeaderGroupCellCtrl.prototype, \"columnModel\", void 0);\n__decorate$1h([\n Autowired('dragAndDropService')\n], HeaderGroupCellCtrl.prototype, \"dragAndDropService\", void 0);\n__decorate$1h([\n Autowired('gridApi')\n], HeaderGroupCellCtrl.prototype, \"gridApi\", void 0);\n__decorate$1h([\n Autowired('columnApi')\n], HeaderGroupCellCtrl.prototype, \"columnApi\", void 0);\n\nvar __decorate$1g = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet instanceIdSequence = 0;\nclass HeaderRowCtrl extends BeanStub {\n constructor(rowIndex, pinned, type) {\n super();\n this.instanceId = instanceIdSequence++;\n this.headerCellCtrls = {};\n this.rowIndex = rowIndex;\n this.pinned = pinned;\n this.type = type;\n }\n getInstanceId() {\n return this.instanceId;\n }\n setComp(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 addEventListeners() {\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_RESIZED, this.onColumnResized.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.eventService, Events.EVENT_COLUMN_HEADER_HEIGHT_CHANGED, this.onRowHeightChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_GRID_STYLES_CHANGED, this.onRowHeightChanged.bind(this));\n // when print layout changes, it changes what columns are in what section\n this.addManagedPropertyListener('domLayout', this.onDisplayedColumnsChanged.bind(this));\n this.addManagedPropertyListener('headerHeight', this.onRowHeightChanged.bind(this));\n this.addManagedPropertyListener('pivotHeaderHeight', this.onRowHeightChanged.bind(this));\n this.addManagedPropertyListener('groupHeaderHeight', this.onRowHeightChanged.bind(this));\n this.addManagedPropertyListener('pivotGroupHeaderHeight', this.onRowHeightChanged.bind(this));\n this.addManagedPropertyListener('floatingFiltersHeight', this.onRowHeightChanged.bind(this));\n }\n getHeaderCellCtrl(column) {\n return values(this.headerCellCtrls).find(cellCtrl => cellCtrl.getColumnGroupChild() === column);\n }\n onDisplayedColumnsChanged() {\n this.onVirtualColumnsChanged();\n this.setWidth();\n this.onRowHeightChanged();\n }\n getType() {\n return this.type;\n }\n onColumnResized() {\n this.setWidth();\n }\n setWidth() {\n const width = this.getWidthForRow();\n this.comp.setWidth(`${width}px`);\n }\n getWidthForRow() {\n const printLayout = this.gridOptionsService.isDomLayout('print');\n if (printLayout) {\n const pinned = this.pinned != null;\n if (pinned) {\n return 0;\n }\n return this.columnModel.getContainerWidth('right')\n + this.columnModel.getContainerWidth('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 onRowHeightChanged() {\n let headerRowCount = this.columnModel.getHeaderRowCount();\n const sizes = [];\n let numberOfFloating = 0;\n if (this.columnModel.hasFloatingFilters()) {\n headerRowCount++;\n numberOfFloating = 1;\n }\n const groupHeight = this.columnModel.getColumnGroupHeaderRowHeight();\n const headerHeight = this.columnModel.getColumnHeaderRowHeight();\n const numberOfNonGroups = 1 + numberOfFloating;\n const numberOfGroups = headerRowCount - numberOfNonGroups;\n for (let i = 0; i < numberOfGroups; i++) {\n sizes.push(groupHeight);\n }\n sizes.push(headerHeight);\n for (let i = 0; i < numberOfFloating; i++) {\n sizes.push(this.columnModel.getFloatingFiltersHeight());\n }\n let topOffset = 0;\n for (let i = 0; i < this.rowIndex; i++) {\n topOffset += sizes[i];\n }\n const thisRowHeight = sizes[this.rowIndex] + 'px';\n this.comp.setTop(topOffset + 'px');\n this.comp.setHeight(thisRowHeight);\n }\n getPinned() {\n return this.pinned;\n }\n getRowIndex() {\n return this.rowIndex;\n }\n onVirtualColumnsChanged() {\n const oldCtrls = this.headerCellCtrls;\n this.headerCellCtrls = {};\n const columns = this.getColumnsInViewport();\n columns.forEach(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 const idOfChild = child.getUniqueId();\n // if we already have this cell rendered, do nothing\n let 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 const 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 const isFocusedAndDisplayed = (ctrl) => {\n const isFocused = this.focusService.isHeaderWrapperFocused(ctrl);\n if (!isFocused) {\n return false;\n }\n const isDisplayed = this.columnModel.isDisplayed(ctrl.getColumnGroupChild());\n return isDisplayed;\n };\n iterateObject(oldCtrls, (id, oldCtrl) => {\n const keepCtrl = isFocusedAndDisplayed(oldCtrl);\n if (keepCtrl) {\n this.headerCellCtrls[id] = oldCtrl;\n }\n else {\n this.destroyBean(oldCtrl);\n }\n });\n const ctrlsToDisplay = getAllValuesInObject(this.headerCellCtrls);\n this.comp.setHeaderCtrls(ctrlsToDisplay);\n }\n getColumnsInViewport() {\n const printLayout = this.gridOptionsService.isDomLayout('print');\n return printLayout ? this.getColumnsInViewportPrintLayout() : this.getColumnsInViewportNormalLayout();\n }\n getColumnsInViewportPrintLayout() {\n // for print layout, we add all columns into the center\n if (this.pinned != null) {\n return [];\n }\n let viewportColumns = [];\n const actualDepth = this.getActualDepth();\n ['left', null, 'right'].forEach(pinned => {\n const items = this.columnModel.getVirtualHeaderGroupRow(pinned, actualDepth);\n viewportColumns = viewportColumns.concat(items);\n });\n return viewportColumns;\n }\n getActualDepth() {\n return this.type == HeaderRowType.FLOATING_FILTER ? this.rowIndex - 1 : this.rowIndex;\n }\n getColumnsInViewportNormalLayout() {\n // when in normal layout, we add the columns for that container only\n return this.columnModel.getVirtualHeaderGroupRow(this.pinned, this.getActualDepth());\n }\n focusHeader(column, event) {\n const allCtrls = getAllValuesInObject(this.headerCellCtrls);\n const ctrl = allCtrls.find(ctrl => ctrl.getColumnGroupChild() == column);\n if (!ctrl) {\n return false;\n }\n ctrl.focus(event);\n return true;\n }\n destroy() {\n iterateObject(this.headerCellCtrls, (key, ctrl) => {\n this.destroyBean(ctrl);\n });\n this.headerCellCtrls = {};\n super.destroy();\n }\n}\n__decorate$1g([\n Autowired('columnModel')\n], HeaderRowCtrl.prototype, \"columnModel\", void 0);\n__decorate$1g([\n Autowired('focusService')\n], HeaderRowCtrl.prototype, \"focusService\", void 0);\n\nvar __decorate$1f = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass HeaderRowContainerCtrl extends BeanStub {\n constructor(pinned) {\n super();\n this.hidden = false;\n this.includeFloatingFilter = false;\n this.groupsRowCtrls = [];\n this.pinned = pinned;\n }\n setComp(comp, eGui) {\n this.comp = comp;\n this.eViewport = eGui;\n this.setupCenterWidth();\n this.setupPinnedWidth();\n this.setupDragAndDrop(this.eViewport);\n this.addManagedListener(this.eventService, Events.EVENT_GRID_COLUMNS_CHANGED, this.onGridColumnsChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n this.ctrlsService.registerHeaderContainer(this, this.pinned);\n if (this.columnModel.isReady()) {\n this.refresh();\n }\n }\n setupDragAndDrop(dropContainer) {\n const bodyDropTarget = new BodyDropTarget(this.pinned, dropContainer);\n this.createManagedBean(bodyDropTarget);\n }\n refresh(keepColumns = false) {\n const sequence = new NumberSequence();\n const focusedHeaderPosition = this.focusService.getFocusHeaderToUseAfterRefresh();\n const refreshColumnGroups = () => {\n const groupRowCount = this.columnModel.getHeaderRowCount() - 1;\n this.groupsRowCtrls = this.destroyBeans(this.groupsRowCtrls);\n for (let i = 0; i < groupRowCount; i++) {\n const ctrl = this.createBean(new HeaderRowCtrl(sequence.next(), this.pinned, HeaderRowType.COLUMN_GROUP));\n this.groupsRowCtrls.push(ctrl);\n }\n };\n const refreshColumns = () => {\n const rowIndex = sequence.next();\n const needNewInstance = !this.hidden && (this.columnsRowCtrl == null || !keepColumns || this.columnsRowCtrl.getRowIndex() !== rowIndex);\n const shouldDestroyInstance = needNewInstance || this.hidden;\n if (shouldDestroyInstance) {\n this.columnsRowCtrl = this.destroyBean(this.columnsRowCtrl);\n }\n if (needNewInstance) {\n this.columnsRowCtrl = this.createBean(new HeaderRowCtrl(rowIndex, this.pinned, HeaderRowType.COLUMN));\n }\n };\n const refreshFilters = () => {\n this.includeFloatingFilter = this.columnModel.hasFloatingFilters() && !this.hidden;\n const destroyPreviousComp = () => {\n this.filtersRowCtrl = this.destroyBean(this.filtersRowCtrl);\n };\n if (!this.includeFloatingFilter) {\n destroyPreviousComp();\n return;\n }\n const rowIndex = sequence.next();\n if (this.filtersRowCtrl) {\n const 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 const allCtrls = this.getAllCtrls();\n this.comp.setCtrls(allCtrls);\n this.restoreFocusOnHeader(focusedHeaderPosition);\n }\n restoreFocusOnHeader(position) {\n if (position == null || position.column.getPinned() != this.pinned) {\n return;\n }\n this.focusService.focusHeaderPosition({ headerPosition: position });\n }\n getAllCtrls() {\n const res = [...this.groupsRowCtrls];\n if (this.columnsRowCtrl) {\n res.push(this.columnsRowCtrl);\n }\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 onGridColumnsChanged() {\n this.refresh(true);\n }\n onDisplayedColumnsChanged() {\n const includeFloatingFilter = this.columnModel.hasFloatingFilters() && !this.hidden;\n if (this.includeFloatingFilter !== includeFloatingFilter) {\n this.refresh(true);\n }\n }\n setupCenterWidth() {\n if (this.pinned != null) {\n return;\n }\n this.createManagedBean(new CenterWidthFeature(width => this.comp.setCenterWidth(`${width}px`), true));\n }\n setHorizontalScroll(offset) {\n this.comp.setViewportScrollLeft(offset);\n }\n setupPinnedWidth() {\n if (this.pinned == null) {\n return;\n }\n const pinningLeft = this.pinned === 'left';\n const pinningRight = this.pinned === 'right';\n this.hidden = true;\n const listener = () => {\n const width = pinningLeft ? this.pinnedWidthService.getPinnedLeftWidth() : this.pinnedWidthService.getPinnedRightWidth();\n if (width == null) {\n return;\n } // can happen at initialisation, width not yet set\n const hidden = (width == 0);\n const hiddenChanged = this.hidden !== hidden;\n const isRtl = this.gridOptionsService.is('enableRtl');\n const scrollbarWidth = this.gridOptionsService.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 const addPaddingForScrollbar = this.scrollVisibleService.isVerticalScrollShowing() && ((isRtl && pinningLeft) || (!isRtl && pinningRight));\n const widthWithPadding = addPaddingForScrollbar ? width + scrollbarWidth : width;\n this.comp.setPinnedContainerWidth(`${widthWithPadding}px`);\n this.comp.setDisplayed(!hidden);\n if (hiddenChanged) {\n this.hidden = hidden;\n this.refresh();\n }\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 getHeaderCtrlForColumn(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 (let i = 0; i < this.groupsRowCtrls.length; i++) {\n const ctrl = this.groupsRowCtrls[i].getHeaderCellCtrl(column);\n if (ctrl) {\n return ctrl;\n }\n }\n }\n getHtmlElementForColumnHeader(column) {\n /* tslint:enable */\n const cellCtrl = this.getHeaderCtrlForColumn(column);\n if (!cellCtrl) {\n return null;\n }\n return cellCtrl.getGui();\n }\n getRowType(rowIndex) {\n const allCtrls = this.getAllCtrls();\n const ctrl = allCtrls[rowIndex];\n return ctrl ? ctrl.getType() : undefined;\n }\n focusHeader(rowIndex, column, event) {\n const allCtrls = this.getAllCtrls();\n const ctrl = allCtrls[rowIndex];\n if (!ctrl) {\n return false;\n }\n return ctrl.focusHeader(column, event);\n }\n getRowCount() {\n return this.groupsRowCtrls.length + (this.columnsRowCtrl ? 1 : 0) + (this.filtersRowCtrl ? 1 : 0);\n }\n destroy() {\n if (this.filtersRowCtrl) {\n this.filtersRowCtrl = this.destroyBean(this.filtersRowCtrl);\n }\n if (this.columnsRowCtrl) {\n this.columnsRowCtrl = this.destroyBean(this.columnsRowCtrl);\n }\n if (this.groupsRowCtrls && this.groupsRowCtrls.length) {\n this.groupsRowCtrls = this.destroyBeans(this.groupsRowCtrls);\n }\n super.destroy();\n }\n}\n__decorate$1f([\n Autowired('ctrlsService')\n], HeaderRowContainerCtrl.prototype, \"ctrlsService\", void 0);\n__decorate$1f([\n Autowired('scrollVisibleService')\n], HeaderRowContainerCtrl.prototype, \"scrollVisibleService\", void 0);\n__decorate$1f([\n Autowired('pinnedWidthService')\n], HeaderRowContainerCtrl.prototype, \"pinnedWidthService\", void 0);\n__decorate$1f([\n Autowired('columnModel')\n], HeaderRowContainerCtrl.prototype, \"columnModel\", void 0);\n__decorate$1f([\n Autowired('focusService')\n], HeaderRowContainerCtrl.prototype, \"focusService\", void 0);\n\nvar __decorate$1e = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass HeaderRowContainerComp extends Component {\n constructor(pinned) {\n super();\n this.headerRowComps = {};\n this.rowCompsList = [];\n this.pinned = pinned;\n }\n init() {\n this.selectAndSetTemplate();\n const compProxy = {\n setDisplayed: displayed => this.setDisplayed(displayed),\n setCtrls: ctrls => this.setCtrls(ctrls),\n // only gets called for center section\n setCenterWidth: width => this.eCenterContainer.style.width = width,\n setViewportScrollLeft: left => this.getGui().scrollLeft = left,\n // only gets called for pinned sections\n setPinnedContainerWidth: width => {\n const eGui = this.getGui();\n eGui.style.width = width;\n eGui.style.maxWidth = width;\n eGui.style.minWidth = width;\n }\n };\n const ctrl = this.createManagedBean(new HeaderRowContainerCtrl(this.pinned));\n ctrl.setComp(compProxy, this.getGui());\n }\n selectAndSetTemplate() {\n const pinnedLeft = this.pinned == 'left';\n const pinnedRight = this.pinned == 'right';\n const 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 destroyRowComps() {\n this.setCtrls([]);\n }\n destroyRowComp(rowComp) {\n this.destroyBean(rowComp);\n this.eRowContainer.removeChild(rowComp.getGui());\n }\n setCtrls(ctrls) {\n const oldRowComps = this.headerRowComps;\n this.headerRowComps = {};\n this.rowCompsList = [];\n let prevGui;\n const appendEnsuringDomOrder = (rowComp) => {\n const eGui = rowComp.getGui();\n const 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(ctrl => {\n const ctrlId = ctrl.getInstanceId();\n const existingComp = oldRowComps[ctrlId];\n delete oldRowComps[ctrlId];\n const 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(c => this.destroyRowComp(c));\n }\n}\nHeaderRowContainerComp.PINNED_LEFT_TEMPLATE = `
`;\nHeaderRowContainerComp.PINNED_RIGHT_TEMPLATE = `
`;\nHeaderRowContainerComp.CENTER_TEMPLATE = `
\n
\n
`;\n__decorate$1e([\n RefSelector('eCenterContainer')\n], HeaderRowContainerComp.prototype, \"eCenterContainer\", void 0);\n__decorate$1e([\n PostConstruct\n], HeaderRowContainerComp.prototype, \"init\", null);\n__decorate$1e([\n PreDestroy\n], HeaderRowContainerComp.prototype, \"destroyRowComps\", null);\n\nvar __decorate$1d = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 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 = {}));\nlet HeaderNavigationService = class HeaderNavigationService extends BeanStub {\n postConstruct() {\n this.ctrlsService.whenReady(p => {\n this.gridBodyCon = p.gridBodyCtrl;\n });\n }\n getHeaderRowCount() {\n const centerHeaderContainer = this.ctrlsService.getHeaderRowContainerCtrl();\n return centerHeaderContainer ? centerHeaderContainer.getRowCount() : 0;\n }\n /*\n * This method navigates grid header vertically\n * @return {boolean} true to preventDefault on the event that caused this navigation.\n */\n navigateVertically(direction, fromHeader, event) {\n if (!fromHeader) {\n fromHeader = this.focusService.getFocusedHeader();\n }\n if (!fromHeader) {\n return false;\n }\n const { headerRowIndex, column } = fromHeader;\n const rowLen = this.getHeaderRowCount();\n const isUp = direction === HeaderNavigationDirection.UP;\n let { nextRow, nextFocusColumn } = isUp\n ? this.headerPositionUtils.getColumnVisibleParent(column, headerRowIndex)\n : this.headerPositionUtils.getColumnVisibleChild(column, headerRowIndex);\n let 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 if (!skipColumn && !nextFocusColumn) {\n return false;\n }\n return this.focusService.focusHeaderPosition({\n headerPosition: { headerRowIndex: nextRow, column: nextFocusColumn },\n allowUserOverride: true,\n 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 navigateHorizontally(direction, fromTab = false, event) {\n const focusedHeader = this.focusService.getFocusedHeader();\n const isLeft = direction === HeaderNavigationDirection.LEFT;\n const isRtl = this.gridOptionsService.is('enableRtl');\n let nextHeader;\n let 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 || !fromTab) {\n return this.focusService.focusHeaderPosition({\n headerPosition: nextHeader,\n direction: normalisedDirection,\n fromTab,\n allowUserOverride: true,\n event\n });\n }\n return this.focusNextHeaderRow(focusedHeader, normalisedDirection, event);\n }\n focusNextHeaderRow(focusedHeader, direction, event) {\n const currentIndex = focusedHeader.headerRowIndex;\n let nextPosition = null;\n let 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,\n fromTab: true,\n allowUserOverride: true,\n event\n });\n }\n scrollToColumn(column, direction = 'After') {\n if (column.getPinned()) {\n return;\n }\n let columnToScrollTo;\n if (column instanceof ColumnGroup) {\n const 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 }\n};\n__decorate$1d([\n Autowired('focusService')\n], HeaderNavigationService.prototype, \"focusService\", void 0);\n__decorate$1d([\n Autowired('headerPositionUtils')\n], HeaderNavigationService.prototype, \"headerPositionUtils\", void 0);\n__decorate$1d([\n Autowired('ctrlsService')\n], HeaderNavigationService.prototype, \"ctrlsService\", void 0);\n__decorate$1d([\n PostConstruct\n], HeaderNavigationService.prototype, \"postConstruct\", null);\nHeaderNavigationService = __decorate$1d([\n Bean('headerNavigationService')\n], HeaderNavigationService);\n\nvar __decorate$1c = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass GridHeaderCtrl extends BeanStub {\n setComp(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.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n this.onPivotModeChanged();\n this.setupHeaderHeight();\n this.ctrlsService.registerGridHeaderCtrl(this);\n }\n setupHeaderHeight() {\n const listener = this.setHeaderHeight.bind(this);\n listener();\n this.addManagedPropertyListener('headerHeight', listener);\n this.addManagedPropertyListener('pivotHeaderHeight', listener);\n this.addManagedPropertyListener('groupHeaderHeight', listener);\n this.addManagedPropertyListener('pivotGroupHeaderHeight', listener);\n this.addManagedPropertyListener('floatingFiltersHeight', listener);\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, listener);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_HEADER_HEIGHT_CHANGED, listener);\n this.addManagedListener(this.eventService, Events.EVENT_GRID_STYLES_CHANGED, listener);\n }\n getHeaderHeight() {\n return this.headerHeight;\n }\n setHeaderHeight() {\n const { columnModel } = this;\n let numberOfFloating = 0;\n let headerRowCount = columnModel.getHeaderRowCount();\n let totalHeaderHeight;\n const hasFloatingFilters = columnModel.hasFloatingFilters();\n if (hasFloatingFilters) {\n headerRowCount++;\n numberOfFloating = 1;\n }\n const groupHeight = this.columnModel.getColumnGroupHeaderRowHeight();\n const headerHeight = this.columnModel.getColumnHeaderRowHeight();\n const numberOfNonGroups = 1 + numberOfFloating;\n const numberOfGroups = headerRowCount - numberOfNonGroups;\n totalHeaderHeight = numberOfFloating * columnModel.getFloatingFiltersHeight();\n totalHeaderHeight += numberOfGroups * groupHeight;\n totalHeaderHeight += headerHeight;\n if (this.headerHeight === totalHeaderHeight) {\n return;\n }\n this.headerHeight = totalHeaderHeight;\n // one extra pixel is needed here to account for the\n // height of the border\n const px = `${totalHeaderHeight + 1}px`;\n this.comp.setHeightAndMinHeight(px);\n this.eventService.dispatchEvent({\n type: Events.EVENT_HEADER_HEIGHT_CHANGED\n });\n }\n onPivotModeChanged() {\n const pivotMode = this.columnModel.isPivotMode();\n this.comp.addOrRemoveCssClass('ag-pivot-on', pivotMode);\n this.comp.addOrRemoveCssClass('ag-pivot-off', !pivotMode);\n }\n onDisplayedColumnsChanged() {\n const columns = this.columnModel.getAllDisplayedColumns();\n const shouldAllowOverflow = columns.some(col => col.isSpanHeaderHeight());\n this.comp.addOrRemoveCssClass('ag-header-allow-overflow', shouldAllowOverflow);\n }\n onTabKeyDown(e) {\n const isRtl = this.gridOptionsService.is('enableRtl');\n const 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 handleKeyDown(e) {\n let 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 onFocusOut(e) {\n const eDocument = this.gridOptionsService.getDocument();\n const { relatedTarget } = e;\n if (!relatedTarget && this.eGui.contains(eDocument.activeElement)) {\n return;\n }\n if (!this.eGui.contains(relatedTarget)) {\n this.focusService.clearFocusedHeader();\n }\n }\n}\n__decorate$1c([\n Autowired('headerNavigationService')\n], GridHeaderCtrl.prototype, \"headerNavigationService\", void 0);\n__decorate$1c([\n Autowired('focusService')\n], GridHeaderCtrl.prototype, \"focusService\", void 0);\n__decorate$1c([\n Autowired('columnModel')\n], GridHeaderCtrl.prototype, \"columnModel\", void 0);\n__decorate$1c([\n Autowired('ctrlsService')\n], GridHeaderCtrl.prototype, \"ctrlsService\", void 0);\n\nvar __decorate$1b = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass GridHeaderComp extends Component {\n constructor() {\n super(GridHeaderComp.TEMPLATE);\n }\n postConstruct() {\n const compProxy = {\n addOrRemoveCssClass: (cssClassName, on) => this.addOrRemoveCssClass(cssClassName, on),\n setHeightAndMinHeight: height => {\n this.getGui().style.height = height;\n this.getGui().style.minHeight = height;\n }\n };\n const ctrl = this.createManagedBean(new GridHeaderCtrl());\n ctrl.setComp(compProxy, this.getGui(), this.getFocusableElement());\n const addContainer = (container) => {\n this.createManagedBean(container);\n this.appendChild(container);\n };\n addContainer(new HeaderRowContainerComp('left'));\n addContainer(new HeaderRowContainerComp(null));\n addContainer(new HeaderRowContainerComp('right'));\n }\n}\nGridHeaderComp.TEMPLATE = `
`;\n__decorate$1b([\n PostConstruct\n], GridHeaderComp.prototype, \"postConstruct\", null);\n\nvar __decorate$1a = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet HorizontalResizeService = class HorizontalResizeService extends BeanStub {\n addResizeBar(params) {\n const 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 includeTouch: true,\n stopPropagationForTouch: true\n };\n this.dragService.addDragSource(dragSource);\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 const finishedWithResizeFunc = () => this.dragService.removeDragSource(dragSource);\n return finishedWithResizeFunc;\n }\n onDragStart(params, mouseEvent) {\n this.dragStartX = mouseEvent.clientX;\n this.setResizeIcons();\n const shiftKey = mouseEvent instanceof MouseEvent && mouseEvent.shiftKey === true;\n params.onResizeStart(shiftKey);\n }\n setResizeIcons() {\n const 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 onDragStop(params, mouseEvent) {\n params.onResizeEnd(this.resizeAmount);\n this.resetIcons();\n }\n resetIcons() {\n const ctrl = this.ctrlsService.getGridCtrl();\n ctrl.setResizeCursor(false);\n ctrl.disableUserSelect(false);\n }\n onDragging(params, mouseEvent) {\n this.resizeAmount = mouseEvent.clientX - this.dragStartX;\n params.onResizing(this.resizeAmount);\n }\n};\n__decorate$1a([\n Autowired('dragService')\n], HorizontalResizeService.prototype, \"dragService\", void 0);\n__decorate$1a([\n Autowired('ctrlsService')\n], HorizontalResizeService.prototype, \"ctrlsService\", void 0);\nHorizontalResizeService = __decorate$1a([\n Bean('horizontalResizeService')\n], HorizontalResizeService);\n\nvar __decorate$19 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet StandardMenuFactory = class StandardMenuFactory extends BeanStub {\n hideActiveMenu() {\n if (this.hidePopup) {\n this.hidePopup();\n }\n }\n showMenuAfterMouseEvent(column, mouseEvent) {\n this.showPopup(column, eMenu => {\n this.popupService.positionPopupUnderMouseEvent({\n column,\n type: 'columnMenu',\n mouseEvent,\n ePopup: eMenu\n });\n }, 'columnMenu', mouseEvent.target);\n }\n showMenuAfterButtonClick(column, eventSource, containerType) {\n this.showPopup(column, eMenu => {\n this.popupService.positionPopupByComponent({\n type: containerType,\n eventSource,\n ePopup: eMenu,\n keepWithinBounds: true,\n position: 'under',\n column,\n });\n }, containerType, eventSource);\n }\n showPopup(column, positionCallback, containerType, eventSource) {\n const 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 const eMenu = document.createElement('div');\n setAriaRole(eMenu, 'presentation');\n eMenu.classList.add('ag-menu');\n this.tabListener = this.addManagedListener(eMenu, 'keydown', (e) => this.trapFocusWithin(e, eMenu));\n filterWrapper.guiPromise.then(gui => eMenu.appendChild(gui));\n let hidePopup;\n const afterGuiDetached = () => { var _a; return (_a = filterWrapper.filterPromise) === null || _a === void 0 ? void 0 : _a.then(filter => { var _a; return (_a = filter === null || filter === void 0 ? void 0 : filter.afterGuiDetached) === null || _a === void 0 ? void 0 : _a.call(filter); }); };\n const anchorToElement = eventSource || this.ctrlsService.getGridBodyCtrl().getGui();\n const closedCallback = (e) => {\n column.setMenuVisible(false, 'contextMenu');\n const isKeyboardEvent = e instanceof KeyboardEvent;\n if (this.tabListener) {\n this.tabListener = this.tabListener();\n }\n if (isKeyboardEvent && eventSource && isVisible(eventSource)) {\n const focusableEl = this.focusService.findTabbableParent(eventSource);\n if (focusableEl) {\n focusableEl.focus();\n }\n }\n afterGuiDetached();\n };\n const translate = this.localeService.getLocaleTextFunc();\n const addPopupRes = this.popupService.addPopup({\n modal: true,\n eChild: eMenu,\n closeOnEsc: true,\n closedCallback,\n positionCallback: () => positionCallback(eMenu),\n anchorToElement,\n ariaLabel: translate('ariaLabelColumnMenu', 'Column Menu')\n });\n if (addPopupRes) {\n this.hidePopup = hidePopup = addPopupRes.hideFunc;\n }\n filterWrapper.filterPromise.then(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: containerType, hidePopup });\n }\n });\n column.setMenuVisible(true, 'contextMenu');\n }\n trapFocusWithin(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 isMenuEnabled(column) {\n // for standard, we show menu if filter is enabled, and the menu is not suppressed by passing an empty array\n return column.isFilterAllowed() && column.getMenuTabs(['filterMenuTab']).includes('filterMenuTab');\n }\n};\n__decorate$19([\n Autowired('filterManager')\n], StandardMenuFactory.prototype, \"filterManager\", void 0);\n__decorate$19([\n Autowired('popupService')\n], StandardMenuFactory.prototype, \"popupService\", void 0);\n__decorate$19([\n Autowired('focusService')\n], StandardMenuFactory.prototype, \"focusService\", void 0);\n__decorate$19([\n Autowired('ctrlsService')\n], StandardMenuFactory.prototype, \"ctrlsService\", void 0);\nStandardMenuFactory = __decorate$19([\n Bean('menuFactory')\n], StandardMenuFactory);\n\nvar __decorate$18 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass TabbedLayout extends Component {\n constructor(params) {\n super(TabbedLayout.getTemplate(params.cssClass));\n this.items = [];\n this.tabbedItemScrollMap = new Map();\n this.params = params;\n if (params.items) {\n params.items.forEach(item => this.addItem(item));\n }\n }\n postConstruct() {\n this.createManagedBean(new ManagedFocusFeature(this.getFocusableElement(), {\n onTabKeyDown: this.onTabKeyDown.bind(this),\n handleKeyDown: this.handleKeyDown.bind(this)\n }));\n this.addDestroyFunc(() => { var _a, _b, _c; return (_c = (_b = (_a = this.activeItem) === null || _a === void 0 ? void 0 : _a.tabbedItem) === null || _b === void 0 ? void 0 : _b.afterDetachedCallback) === null || _c === void 0 ? void 0 : _c.call(_b); });\n }\n static getTemplate(cssClass) {\n return /* html */ `
\n
\n
\n
`;\n }\n handleKeyDown(e) {\n const eDocument = this.gridOptionsService.getDocument();\n switch (e.key) {\n case KeyCode.RIGHT:\n case KeyCode.LEFT:\n if (!this.eHeader.contains(eDocument.activeElement)) {\n return;\n }\n const isRightKey = e.key === KeyCode.RIGHT;\n const isRtl = this.gridOptionsService.is('enableRtl');\n const currentPosition = this.items.indexOf(this.activeItem);\n const nextPosition = isRightKey !== isRtl ? Math.min(currentPosition + 1, this.items.length - 1) : Math.max(currentPosition - 1, 0);\n if (currentPosition === nextPosition) {\n return;\n }\n e.preventDefault();\n const 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 onTabKeyDown(e) {\n if (e.defaultPrevented) {\n return;\n }\n const { focusService, eHeader, eBody, activeItem } = this;\n const eDocument = this.gridOptionsService.getDocument();\n const activeElement = eDocument.activeElement;\n const target = e.target;\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 return;\n }\n let nextEl = null;\n if (focusService.isTargetUnderManagedComponent(eBody, target)) {\n if (e.shiftKey) {\n nextEl = this.focusService.findFocusableElementBeforeTabGuard(eBody, target);\n }\n if (!nextEl) {\n nextEl = activeItem.eHeaderButton;\n }\n }\n if (!nextEl && eBody.contains(activeElement)) {\n nextEl = focusService.findNextFocusableElement(eBody, false, e.shiftKey);\n if (!nextEl) {\n nextEl = activeItem.eHeaderButton;\n }\n }\n if (nextEl) {\n nextEl.focus();\n }\n }\n setAfterAttachedParams(params) {\n this.afterAttachedParams = params;\n }\n showFirstItem() {\n if (this.items.length > 0) {\n this.showItemWrapper(this.items[0]);\n }\n }\n addItem(item) {\n const 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 const wrapper = {\n tabbedItem: item,\n eHeaderButton: eHeaderButton\n };\n this.items.push(wrapper);\n eHeaderButton.addEventListener('click', this.showItemWrapper.bind(this, wrapper));\n }\n showItem(tabbedItem) {\n const itemWrapper = this.items.find(wrapper => wrapper.tabbedItem === tabbedItem);\n if (itemWrapper) {\n this.showItemWrapper(itemWrapper);\n }\n }\n showItemWrapper(wrapper) {\n var _a, _b;\n const { tabbedItem, eHeaderButton } = wrapper;\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((body) => {\n this.eBody.appendChild(body);\n const 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 const scrollableContainer = (tabbedItem.getScrollableContainer && tabbedItem.getScrollableContainer()) || body;\n this.lastScrollListener = this.addManagedListener(scrollableContainer, 'scroll', () => {\n this.tabbedItemScrollMap.set(tabbedItem.name, scrollableContainer.scrollTop);\n });\n const scrollPosition = this.tabbedItemScrollMap.get(tabbedItem.name);\n if (scrollPosition !== undefined) {\n // Safari needs a small timeout or it will fire a scroll event to position 0\n setTimeout(() => {\n scrollableContainer.scrollTop = scrollPosition;\n }, 0);\n }\n }\n });\n if (this.activeItem) {\n this.activeItem.eHeaderButton.classList.remove('ag-tab-selected');\n (_b = (_a = this.activeItem.tabbedItem).afterDetachedCallback) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n eHeaderButton.classList.add('ag-tab-selected');\n this.activeItem = wrapper;\n }\n}\n__decorate$18([\n Autowired('focusService')\n], TabbedLayout.prototype, \"focusService\", void 0);\n__decorate$18([\n RefSelector('eHeader')\n], TabbedLayout.prototype, \"eHeader\", void 0);\n__decorate$18([\n RefSelector('eBody')\n], TabbedLayout.prototype, \"eBody\", void 0);\n__decorate$18([\n PostConstruct\n], TabbedLayout.prototype, \"postConstruct\", null);\n\n/**\n * @deprecated Since v29 simpleHttpRequest has been deprecated as it was only meant for use in internal AG Grid documentation examples. Please use the browser fetch api directly.\n */\nfunction simpleHttpRequest(params) {\n doOnce(() => console.warn(`AG Grid: Since v29 simpleHttpRequest has been deprecated as it was only meant for use in internal AG Grid documentation examples. Please use the browser fetch api directly.`), 'simpleHttpRequest');\n return new AgPromise(resolve => {\n const httpRequest = new XMLHttpRequest();\n httpRequest.open('GET', params.url);\n httpRequest.send();\n httpRequest.onreadystatechange = function () {\n if (httpRequest.readyState === 4 && httpRequest.status === 200) {\n resolve(JSON.parse(httpRequest.responseText));\n }\n };\n });\n}\n\nvar __decorate$17 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst DEBOUNCE_DELAY = 50;\nlet ResizeObserverService = class ResizeObserverService extends BeanStub {\n constructor() {\n super(...arguments);\n this.polyfillFunctions = [];\n }\n observeResize(element, callback) {\n const win = this.gridOptionsService.getWindow();\n const useBrowserResizeObserver = () => {\n const resizeObserver = new win.ResizeObserver(callback);\n resizeObserver.observe(element);\n return () => resizeObserver.disconnect();\n };\n const usePolyfill = () => {\n // initialise to the current width and height, so first call will have no changes\n let widthLastTime = offsetWidth(element);\n let heightLastTime = offsetHeight(element);\n // when finished, this gets turned to false.\n let running = true;\n const periodicallyCheckWidthAndHeight = () => {\n if (running) {\n const newWidth = offsetWidth(element);\n const newHeight = offsetHeight(element);\n const 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 () => running = false;\n };\n const suppressResize = this.gridOptionsService.is('suppressBrowserResizeObserver');\n const resizeObserverExists = !!win.ResizeObserver;\n if (resizeObserverExists && !suppressResize) {\n return useBrowserResizeObserver();\n }\n return usePolyfill();\n }\n doNextPolyfillTurn(func) {\n this.polyfillFunctions.push(func);\n this.schedulePolyfill();\n }\n schedulePolyfill() {\n if (this.polyfillScheduled) {\n return;\n }\n const executeAllFuncs = () => {\n const 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(f => f());\n };\n this.polyfillScheduled = true;\n this.getFrameworkOverrides().setTimeout(executeAllFuncs, DEBOUNCE_DELAY);\n }\n};\nResizeObserverService = __decorate$17([\n Bean('resizeObserverService')\n], ResizeObserverService);\n\nvar __decorate$16 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet AnimationFrameService = class AnimationFrameService extends BeanStub {\n constructor() {\n super(...arguments);\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.lastPage = 0;\n this.lastScrollTop = 0;\n this.taskCount = 0;\n this.cancelledTasks = new Set();\n }\n setScrollTop(scrollTop) {\n const isPaginationActive = this.gridOptionsService.is('pagination');\n this.scrollGoingDown = scrollTop >= this.lastScrollTop;\n if (isPaginationActive && scrollTop === 0) {\n const currentPage = this.paginationProxy.getCurrentPage();\n if (currentPage !== this.lastPage) {\n this.lastPage = currentPage;\n this.scrollGoingDown = true;\n }\n }\n this.lastScrollTop = scrollTop;\n }\n init() {\n this.useAnimationFrame = !this.gridOptionsService.is('suppressAnimationFrame');\n }\n isOn() {\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 verifyAnimationFrameOn(methodName) {\n if (this.useAnimationFrame === false) {\n console.warn(`AG Grid: AnimationFrameService.${methodName} called but animation frames are off`);\n }\n }\n createTask(task, index, list) {\n this.verifyAnimationFrameOn(list);\n const taskItem = { task, index, createOrder: ++this.taskCount };\n this.addTaskToList(this[list], taskItem);\n this.schedule();\n }\n cancelTask(task) {\n this.cancelledTasks.add(task);\n }\n addTaskToList(taskList, task) {\n taskList.list.push(task);\n taskList.sorted = false;\n }\n sortTaskList(taskList) {\n if (taskList.sorted) {\n return;\n }\n const 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((a, b) => a.index !== b.index ? sortDirection * (b.index - a.index) : b.createOrder - a.createOrder);\n taskList.sorted = true;\n }\n addDestroyTask(task) {\n this.verifyAnimationFrameOn('createTasksP3');\n this.destroyTasks.push(task);\n this.schedule();\n }\n executeFrame(millis) {\n this.verifyAnimationFrameOn('executeFrame');\n const p1TaskList = this.createTasksP1;\n const p1Tasks = p1TaskList.list;\n const p2TaskList = this.createTasksP2;\n const p2Tasks = p2TaskList.list;\n const destroyTasks = this.destroyTasks;\n const frameStart = new Date().getTime();\n let duration = (new Date().getTime()) - frameStart;\n // 16ms is 60 fps\n const noMaxMillis = millis <= 0;\n const gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n while (noMaxMillis || duration < millis) {\n const gridBodyDidSomething = gridBodyCon.getScrollFeature().scrollGridIfNeeded();\n if (!gridBodyDidSomething) {\n let task;\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 stopTicking() {\n this.ticking = false;\n }\n flushAllFrames() {\n if (!this.useAnimationFrame) {\n return;\n }\n this.executeFrame(-1);\n }\n schedule() {\n if (!this.useAnimationFrame) {\n return;\n }\n if (!this.ticking) {\n this.ticking = true;\n this.requestFrame();\n }\n }\n requestFrame() {\n // check for the existence of requestAnimationFrame, and if\n // it's missing, then we polyfill it with setTimeout()\n const callback = this.executeFrame.bind(this, 60);\n this.requestAnimationFrame(callback);\n }\n requestAnimationFrame(callback) {\n const win = this.gridOptionsService.getWindow();\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 isQueueEmpty() {\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 debounce(func) {\n let pending = false;\n return () => {\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(() => {\n pending = false;\n func();\n });\n };\n }\n};\n__decorate$16([\n Autowired('ctrlsService')\n], AnimationFrameService.prototype, \"ctrlsService\", void 0);\n__decorate$16([\n Autowired('paginationProxy')\n], AnimationFrameService.prototype, \"paginationProxy\", void 0);\n__decorate$16([\n PostConstruct\n], AnimationFrameService.prototype, \"init\", null);\nAnimationFrameService = __decorate$16([\n Bean('animationFrameService')\n], AnimationFrameService);\n\nvar __decorate$15 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet AutoWidthCalculator = class AutoWidthCalculator extends BeanStub {\n postConstruct() {\n this.ctrlsService.whenReady(p => {\n this.centerRowContainerCtrl = 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 getPreferredWidthForColumn(column, skipHeader) {\n const eHeaderCell = this.getHeaderCellForColumn(column);\n // cell isn't visible\n if (!eHeaderCell) {\n return -1;\n }\n const 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 getPreferredWidthForColumnGroup(columnGroup) {\n const eHeaderCell = this.getHeaderCellForColumn(columnGroup);\n if (!eHeaderCell) {\n return -1;\n }\n return this.addElementsToContainerAndGetWidth([eHeaderCell]);\n }\n addElementsToContainerAndGetWidth(elements) {\n // this element has to be a form, otherwise form elements within a cell\n // will be validated while being cloned. This can cause issues such as \n // radio buttons being reset and losing their values.\n const eDummyContainer = document.createElement('form');\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 const eBodyContainer = this.centerRowContainerCtrl.getContainerElement();\n elements.forEach(el => this.cloneItemIntoDummy(el, eDummyContainer));\n // only append the dummyContainer to the DOM after it contains all the necessary items\n eBodyContainer.appendChild(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 const 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 const autoSizePadding = this.getAutoSizePadding();\n return dummyContainerWidth + autoSizePadding;\n }\n getAutoSizePadding() {\n const value = this.gridOptionsService.getNum('autoSizePadding');\n return value != null && value >= 0 ? value : 20;\n }\n getHeaderCellForColumn(column) {\n /* tslint:enable */\n let element = null;\n this.ctrlsService.getHeaderRowContainerCtrls().forEach(container => {\n const res = container.getHtmlElementForColumnHeader(column);\n if (res != null) {\n element = res;\n }\n });\n return element;\n }\n cloneItemIntoDummy(eCell, eDummyContainer) {\n // make a deep clone of the cell\n const 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 const eCloneParent = document.createElement('div');\n const eCloneParentClassList = eCloneParent.classList;\n const isHeader = ['ag-header-cell', 'ag-header-group-cell'].some(cls => 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 let pointer = eCell.parentElement;\n while (pointer) {\n const isRow = ['ag-header-row', 'ag-row'].some(cls => pointer.classList.contains(cls));\n if (isRow) {\n for (let i = 0; i < pointer.classList.length; i++) {\n const 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};\n__decorate$15([\n Autowired('rowRenderer')\n], AutoWidthCalculator.prototype, \"rowRenderer\", void 0);\n__decorate$15([\n Autowired('ctrlsService')\n], AutoWidthCalculator.prototype, \"ctrlsService\", void 0);\n__decorate$15([\n Autowired('rowCssClassCalculator')\n], AutoWidthCalculator.prototype, \"rowCssClassCalculator\", void 0);\n__decorate$15([\n PostConstruct\n], AutoWidthCalculator.prototype, \"postConstruct\", null);\nAutoWidthCalculator = __decorate$15([\n Bean('autoWidthCalculator')\n], AutoWidthCalculator);\n\nvar __decorate$14 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass StickyRowFeature extends BeanStub {\n constructor(createRowCon, destroyRowCtrls) {\n super();\n this.createRowCon = createRowCon;\n this.destroyRowCtrls = destroyRowCtrls;\n this.stickyRowCtrls = [];\n this.containerHeight = 0;\n }\n postConstruct() {\n this.isClientSide = this.rowModel.getType() === 'clientSide';\n this.ctrlsService.whenReady(params => {\n this.gridBodyCtrl = params.gridBodyCtrl;\n });\n }\n getStickyRowCtrls() {\n return this.stickyRowCtrls;\n }\n checkStickyRows() {\n let height = 0;\n if (!this.gridOptionsService.isGroupRowsSticky()) {\n this.refreshNodesAndContainerHeight([], height);\n return;\n }\n const stickyRows = [];\n const firstPixel = this.rowRenderer.getFirstVisibleVerticalPixel();\n const addStickyRow = (stickyRow) => {\n var _a, _b, _c;\n stickyRows.push(stickyRow);\n let lastChildBottom;\n if (this.isClientSide) {\n let lastAncestor = stickyRow;\n while (lastAncestor.expanded) {\n if (lastAncestor.master) {\n lastAncestor = lastAncestor.detailNode;\n }\n else if (lastAncestor.childrenAfterSort) {\n // Tree Data will have `childrenAfterSort` without any nodes, but\n // the current node will still be marked as expansible.\n if (lastAncestor.childrenAfterSort.length === 0) {\n break;\n }\n lastAncestor = last(lastAncestor.childrenAfterSort);\n }\n }\n lastChildBottom = lastAncestor.rowTop + lastAncestor.rowHeight;\n }\n // if the rowModel is `serverSide` as only `clientSide` and `serverSide` create this feature.\n else {\n if (stickyRow.master) {\n lastChildBottom = stickyRow.detailNode.rowTop + stickyRow.detailNode.rowHeight;\n }\n else {\n const storeBounds = (_a = stickyRow.childStore) === null || _a === void 0 ? void 0 : _a.getStoreBounds();\n lastChildBottom = ((_b = storeBounds === null || storeBounds === void 0 ? void 0 : storeBounds.heightPx) !== null && _b !== void 0 ? _b : 0) + ((_c = storeBounds === null || storeBounds === void 0 ? void 0 : storeBounds.topPx) !== null && _c !== void 0 ? _c : 0);\n }\n }\n const stickRowBottom = firstPixel + height + stickyRow.rowHeight;\n if (lastChildBottom < stickRowBottom) {\n stickyRow.stickyRowTop = height + (lastChildBottom - stickRowBottom);\n }\n else {\n stickyRow.stickyRowTop = height;\n }\n height = 0;\n stickyRows.forEach(rowNode => {\n const thisRowLastPx = rowNode.stickyRowTop + rowNode.rowHeight;\n if (height < thisRowLastPx) {\n height = thisRowLastPx;\n }\n });\n };\n while (true) {\n const firstPixelAfterStickyRows = firstPixel + height;\n const firstIndex = this.rowModel.getRowIndexAtPixel(firstPixelAfterStickyRows);\n const firstRow = this.rowModel.getRow(firstIndex);\n if (firstRow == null) {\n break;\n }\n // only happens when pivoting, and we are showing root node\n if (firstRow.level < 0) {\n break;\n }\n const parents = [];\n let p = firstRow.parent;\n while (p.level >= 0) {\n parents.push(p);\n p = p.parent;\n }\n const firstMissingParent = parents.reverse().find(parent => stickyRows.indexOf(parent) < 0 && parent.displayed);\n if (firstMissingParent) {\n addStickyRow(firstMissingParent);\n continue;\n }\n // if first row is an open group, and practically shown, it needs\n // to be stuck\n if (firstRow.isExpandable() && firstRow.expanded && firstRow.rowTop < firstPixelAfterStickyRows) {\n addStickyRow(firstRow);\n continue;\n }\n break;\n }\n this.refreshNodesAndContainerHeight(stickyRows, height);\n }\n refreshStickyNode(stickRowNode) {\n const allStickyNodes = [];\n for (let i = 0; i < this.stickyRowCtrls.length; i++) {\n const currentNode = this.stickyRowCtrls[i].getRowNode();\n if (currentNode !== stickRowNode) {\n allStickyNodes.push(currentNode);\n }\n }\n this.refreshNodesAndContainerHeight(allStickyNodes, this.containerHeight);\n this.checkStickyRows();\n }\n refreshNodesAndContainerHeight(allStickyNodes, height) {\n const removedCtrls = this.stickyRowCtrls.filter(ctrl => allStickyNodes.indexOf(ctrl.getRowNode()) === -1);\n const addedNodes = allStickyNodes.filter(rowNode => this.stickyRowCtrls.findIndex(ctrl => ctrl.getRowNode() === rowNode) === -1);\n const ctrlsToDestroy = {};\n removedCtrls.forEach(removedCtrl => {\n ctrlsToDestroy[removedCtrl.getRowNode().id] = removedCtrl;\n this.stickyRowCtrls = this.stickyRowCtrls.filter(ctrl => ctrl !== removedCtrl);\n });\n for (const ctrl of Object.values(ctrlsToDestroy)) {\n ctrl.getRowNode().sticky = false;\n }\n this.destroyRowCtrls(ctrlsToDestroy, false);\n const newCtrls = addedNodes.map(rowNode => {\n rowNode.sticky = true;\n return this.createRowCon(rowNode, false, false);\n });\n this.stickyRowCtrls.push(...newCtrls);\n this.stickyRowCtrls.forEach(ctrl => ctrl.setRowTop(ctrl.getRowNode().stickyRowTop));\n this.stickyRowCtrls.sort((a, b) => b.getRowNode().rowIndex - a.getRowNode().rowIndex);\n if (this.containerHeight !== height) {\n this.containerHeight = height;\n this.gridBodyCtrl.setStickyTopHeight(height);\n }\n }\n}\n__decorate$14([\n Autowired(\"rowModel\")\n], StickyRowFeature.prototype, \"rowModel\", void 0);\n__decorate$14([\n Autowired(\"rowRenderer\")\n], StickyRowFeature.prototype, \"rowRenderer\", void 0);\n__decorate$14([\n Autowired(\"ctrlsService\")\n], StickyRowFeature.prototype, \"ctrlsService\", void 0);\n__decorate$14([\n PostConstruct\n], StickyRowFeature.prototype, \"postConstruct\", null);\n\nvar __decorate$13 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst DEFAULT_KEEP_DETAIL_ROW_COUNT = 10;\nlet RowRenderer = class RowRenderer extends BeanStub {\n constructor() {\n super(...arguments);\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 this.dataFirstRenderedFired = false;\n }\n postConstruct() {\n this.ctrlsService.whenReady(() => {\n this.gridBodyCtrl = this.ctrlsService.getGridBodyCtrl();\n this.initialise();\n });\n }\n initialise() {\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.onBodyScroll.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_BODY_HEIGHT_CHANGED, this.redraw.bind(this));\n this.addManagedPropertyListener('domLayout', this.onDomLayoutChanged.bind(this));\n this.addManagedPropertyListener('rowClass', this.redrawRows.bind(this));\n if (this.gridOptionsService.isGroupRowsSticky()) {\n const rowModelType = this.rowModel.getType();\n if (rowModelType === 'clientSide' || rowModelType === 'serverSide') {\n this.stickyRowFeature = this.createManagedBean(new StickyRowFeature(this.createRowCon.bind(this), this.destroyRowCtrls.bind(this)));\n }\n }\n this.registerCellEventListeners();\n this.initialiseCache();\n this.printLayout = this.gridOptionsService.isDomLayout('print');\n this.embedFullWidthRows = this.printLayout || this.gridOptionsService.is('embedFullWidthRows');\n this.redrawAfterModelUpdate();\n }\n initialiseCache() {\n if (this.gridOptionsService.is('keepDetailRows')) {\n const countProp = this.getKeepDetailRowsCount();\n const count = countProp != null ? countProp : 3;\n this.cachedRowCtrls = new RowCtrlCache(count);\n }\n }\n getKeepDetailRowsCount() {\n const keepDetailRowsCount = this.gridOptionsService.getNum('keepDetailRowsCount');\n if (exists(keepDetailRowsCount) && keepDetailRowsCount > 0) {\n return keepDetailRowsCount;\n }\n return DEFAULT_KEEP_DETAIL_ROW_COUNT;\n }\n getRowCtrls() {\n return this.allRowCtrls;\n }\n getStickyTopRowCtrls() {\n if (!this.stickyRowFeature) {\n return [];\n }\n return this.stickyRowFeature.getStickyRowCtrls();\n }\n updateAllRowCtrls() {\n const liveList = getAllValuesInObject(this.rowCtrlsByRowIndex);\n const isEnsureDomOrder = this.gridOptionsService.is('ensureDomOrder');\n const isPrintLayout = this.gridOptionsService.isDomLayout('print');\n if (isEnsureDomOrder || isPrintLayout) {\n liveList.sort((a, b) => a.getRowNode().rowIndex - b.getRowNode.rowIndex);\n }\n const zombieList = getAllValuesInObject(this.zombieRowCtrls);\n const cachedList = this.cachedRowCtrls ? this.cachedRowCtrls.getEntries() : [];\n this.allRowCtrls = [...liveList, ...zombieList, ...cachedList];\n }\n onCellFocusChanged(event) {\n this.getAllCellCtrls().forEach(cellCtrl => cellCtrl.onCellFocused(event));\n this.getFullWidthRowCtrls().forEach(rowCtrl => rowCtrl.onFullWidthRowFocused(event));\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 registerCellEventListeners() {\n this.addManagedListener(this.eventService, Events.EVENT_CELL_FOCUSED, (event) => {\n this.onCellFocusChanged(event);\n });\n this.addManagedListener(this.eventService, Events.EVENT_CELL_FOCUS_CLEARED, () => {\n this.onCellFocusChanged();\n });\n this.addManagedListener(this.eventService, Events.EVENT_FLASH_CELLS, event => {\n this.getAllCellCtrls().forEach(cellCtrl => cellCtrl.onFlashCells(event));\n });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_HOVER_CHANGED, () => {\n this.getAllCellCtrls().forEach(cellCtrl => cellCtrl.onColumnHover());\n });\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, () => {\n this.getAllCellCtrls().forEach(cellCtrl => 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, () => {\n if (this.printLayout) {\n this.getAllCellCtrls().forEach(cellCtrl => cellCtrl.onLeftChanged());\n }\n });\n const rangeSelectionEnabled = this.gridOptionsService.isEnableRangeSelection();\n if (rangeSelectionEnabled) {\n this.addManagedListener(this.eventService, Events.EVENT_RANGE_SELECTION_CHANGED, () => {\n this.getAllCellCtrls().forEach(cellCtrl => cellCtrl.onRangeSelectionChanged());\n });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_MOVED, () => {\n this.getAllCellCtrls().forEach(cellCtrl => cellCtrl.updateRangeBordersIfRangeCount());\n });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PINNED, () => {\n this.getAllCellCtrls().forEach(cellCtrl => cellCtrl.updateRangeBordersIfRangeCount());\n });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VISIBLE, () => {\n this.getAllCellCtrls().forEach(cellCtrl => 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 removeGridColumnListeners() {\n this.destroyFuncsForColumnListeners.forEach(func => 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 refreshListenersToColumnsForCellComps() {\n this.removeGridColumnListeners();\n const cols = this.columnModel.getAllGridColumns();\n if (!cols) {\n return;\n }\n cols.forEach(col => {\n const forEachCellWithThisCol = (callback) => {\n this.getAllCellCtrls().forEach(cellCtrl => {\n if (cellCtrl.getColumn() === col) {\n callback(cellCtrl);\n }\n });\n };\n const leftChangedListener = () => {\n forEachCellWithThisCol(cellCtrl => cellCtrl.onLeftChanged());\n };\n const widthChangedListener = () => {\n forEachCellWithThisCol(cellCtrl => cellCtrl.onWidthChanged());\n };\n const firstRightPinnedChangedListener = () => {\n forEachCellWithThisCol(cellCtrl => cellCtrl.onFirstRightPinnedChanged());\n };\n const lastLeftPinnedChangedListener = () => {\n forEachCellWithThisCol(cellCtrl => cellCtrl.onLastLeftPinnedChanged());\n };\n const colDefChangedListener = () => {\n forEachCellWithThisCol(cellCtrl => cellCtrl.onColDefChanged());\n };\n col.addEventListener('leftChanged', leftChangedListener);\n col.addEventListener('widthChanged', widthChangedListener);\n col.addEventListener('firstRightPinnedChanged', firstRightPinnedChangedListener);\n col.addEventListener('lastLeftPinnedChanged', lastLeftPinnedChangedListener);\n col.addEventListener('colDefChanged', colDefChangedListener);\n this.destroyFuncsForColumnListeners.push(() => {\n col.removeEventListener('leftChanged', leftChangedListener);\n col.removeEventListener('widthChanged', widthChangedListener);\n col.removeEventListener('firstRightPinnedChanged', firstRightPinnedChangedListener);\n col.removeEventListener('lastLeftPinnedChanged', lastLeftPinnedChangedListener);\n col.removeEventListener('colDefChanged', colDefChangedListener);\n });\n });\n }\n onDomLayoutChanged() {\n const printLayout = this.gridOptionsService.isDomLayout('print');\n const embedFullWidthRows = printLayout || this.gridOptionsService.is('embedFullWidthRows');\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 const destroyRows = embedFullWidthRows !== this.embedFullWidthRows || this.printLayout !== printLayout;\n this.printLayout = printLayout;\n this.embedFullWidthRows = embedFullWidthRows;\n if (destroyRows) {\n this.redrawAfterModelUpdate({ domLayoutChanged: true });\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 datasourceChanged() {\n this.firstRenderedRow = 0;\n this.lastRenderedRow = -1;\n const rowIndexesToRemove = Object.keys(this.rowCtrlsByRowIndex);\n this.removeRowCtrls(rowIndexesToRemove);\n }\n onPageLoaded(event) {\n const 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 getAllCellsForColumn(column) {\n const res = [];\n this.getAllRowCtrls().forEach(rowCtrl => {\n const eCell = rowCtrl.getCellElement(column);\n if (eCell) {\n res.push(eCell);\n }\n });\n return res;\n }\n refreshFloatingRowComps() {\n this.refreshFloatingRows(this.topRowCtrls, this.pinnedRowModel.getPinnedTopRowData());\n this.refreshFloatingRows(this.bottomRowCtrls, this.pinnedRowModel.getPinnedBottomRowData());\n }\n getTopRowCtrls() {\n return this.topRowCtrls;\n }\n getBottomRowCtrls() {\n return this.bottomRowCtrls;\n }\n refreshFloatingRows(rowComps, rowNodes) {\n rowComps.forEach((row) => {\n row.destroyFirstPass();\n row.destroySecondPass();\n });\n rowComps.length = 0;\n if (!rowNodes) {\n return;\n }\n rowNodes.forEach(rowNode => {\n const rowCtrl = new RowCtrl(rowNode, this.beans, false, false, this.printLayout);\n rowComps.push(rowCtrl);\n });\n }\n onPinnedRowDataChanged() {\n // recycling rows in order to ensure cell editing is not cancelled\n const params = {\n recycleRows: true\n };\n this.redrawAfterModelUpdate(params);\n }\n // if the row nodes are not rendered, no index is returned\n getRenderedIndexesForRowNodes(rowNodes) {\n const result = [];\n if (missing(rowNodes)) {\n return result;\n }\n iterateObject(this.rowCtrlsByRowIndex, (index, renderedRow) => {\n const rowNode = renderedRow.getRowNode();\n if (rowNodes.indexOf(rowNode) >= 0) {\n result.push(index);\n }\n });\n return result;\n }\n redrawRows(rowNodes) {\n // if no row nodes provided, then refresh everything\n const partialRefresh = rowNodes != null && rowNodes.length > 0;\n if (partialRefresh) {\n const 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 getCellToRestoreFocusToAfterRefresh(params) {\n const focusedCell = (params === null || params === void 0 ? void 0 : 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 const eDocument = this.gridOptionsService.getDocument();\n const activeElement = eDocument.activeElement;\n const cellDomData = this.gridOptionsService.getDomData(activeElement, CellCtrl.DOM_DATA_KEY_CELL_CTRL);\n const rowDomData = this.gridOptionsService.getDomData(activeElement, RowCtrl.DOM_DATA_KEY_ROW_CTRL);\n const 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 redrawAfterModelUpdate(params = {}) {\n this.getLockOnRefresh();\n const focusedCell = this.getCellToRestoreFocusToAfterRefresh(params);\n this.updateContainerHeights();\n this.scrollToTopIfNewData(params);\n // never recycle rows on layout change as rows could change from normal DOM layout\n // back to the grid's row positioning.\n const recycleRows = !params.domLayoutChanged && !!params.recycleRows;\n const animate = params.animate && this.gridOptionsService.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 const rowsToRecycle = recycleRows ? this.getRowsToRecycle() : null;\n if (!recycleRows) {\n this.removeAllRowComps();\n }\n this.recycleRows(rowsToRecycle, animate);\n this.gridBodyCtrl.updateRowCount();\n if (!params.onlyBody) {\n this.refreshFloatingRowComps();\n }\n this.dispatchDisplayedRowsChanged();\n // if a cell was focused before, ensure focus now.\n if (focusedCell != null) {\n this.restoreFocusedCell(focusedCell);\n }\n this.releaseLockOnRefresh();\n }\n scrollToTopIfNewData(params) {\n const scrollToTop = params.newData || params.newPage;\n const suppressScrollToTop = this.gridOptionsService.is('suppressScrollOnNewData');\n if (scrollToTop && !suppressScrollToTop) {\n this.gridBodyCtrl.getScrollFeature().scrollToTop();\n }\n }\n updateContainerHeights() {\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 let 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 getLockOnRefresh() {\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 releaseLockOnRefresh() {\n this.refreshInProgress = false;\n }\n isRefreshInProgress() {\n return this.refreshInProgress;\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 restoreFocusedCell(cellPosition) {\n if (cellPosition) {\n // we don't wish to dispatch an event as the rowRenderer is not capable of changing the selected cell,\n // so we mock a change event for the full width rows and cells to ensure they update to the newly selected\n // state\n this.focusService.setRestoreFocusedCell(cellPosition);\n this.onCellFocusChanged({\n rowIndex: cellPosition.rowIndex,\n column: cellPosition.column,\n rowPinned: cellPosition.rowPinned,\n forceBrowserFocus: true,\n preventScrollOnBrowserFocus: true,\n api: this.beans.gridApi,\n columnApi: this.beans.columnApi,\n context: this.beans.gridOptionsService.context,\n type: 'mock',\n });\n }\n }\n stopEditing(cancel = false) {\n this.getAllRowCtrls().forEach(rowCtrl => {\n rowCtrl.stopEditing(cancel);\n });\n }\n getAllCellCtrls() {\n const res = [];\n const rowCtrls = this.getAllRowCtrls();\n const rowCtrlsLength = rowCtrls.length;\n for (let i = 0; i < rowCtrlsLength; i++) {\n const cellCtrls = rowCtrls[i].getAllCellCtrls();\n const cellCtrlsLength = cellCtrls.length;\n for (let j = 0; j < cellCtrlsLength; j++) {\n res.push(cellCtrls[j]);\n }\n }\n return res;\n }\n getAllRowCtrls() {\n const stickyRowCtrls = (this.stickyRowFeature && this.stickyRowFeature.getStickyRowCtrls()) || [];\n const res = [...this.topRowCtrls, ...this.bottomRowCtrls, ...stickyRowCtrls];\n for (const key of Object.keys(this.rowCtrlsByRowIndex)) {\n res.push(this.rowCtrlsByRowIndex[key]);\n }\n return res;\n }\n addRenderedRowListener(eventName, rowIndex, callback) {\n const rowComp = this.rowCtrlsByRowIndex[rowIndex];\n if (rowComp) {\n rowComp.addEventListener(eventName, callback);\n }\n }\n flashCells(params = {}) {\n const { flashDelay, fadeDelay } = params;\n this.getCellCtrls(params.rowNodes, params.columns)\n .forEach(cellCtrl => cellCtrl.flashCell({ flashDelay, fadeDelay }));\n }\n refreshCells(params = {}) {\n const refreshCellParams = {\n forceRefresh: params.force,\n newData: false,\n suppressFlash: params.suppressFlash\n };\n this.getCellCtrls(params.rowNodes, params.columns)\n .forEach(cellCtrl => {\n if (cellCtrl.refreshShouldDestroy()) {\n const rowCtrl = cellCtrl.getRowCtrl();\n if (rowCtrl) {\n rowCtrl.refreshCell(cellCtrl);\n }\n }\n else {\n cellCtrl.refreshCell(refreshCellParams);\n }\n });\n this.refreshFullWidthRows(params.rowNodes);\n }\n getCellRendererInstances(params) {\n var _a;\n const cellRenderers = this.getCellCtrls(params.rowNodes, params.columns)\n .map(cellCtrl => cellCtrl.getCellRenderer())\n .filter(renderer => renderer != null);\n if ((_a = params.columns) === null || _a === void 0 ? void 0 : _a.length) {\n return cellRenderers;\n }\n const fullWidthRenderers = [];\n const rowIdMap = this.mapRowNodes(params.rowNodes);\n this.getAllRowCtrls().forEach(rowCtrl => {\n if (rowIdMap && !this.isRowInMap(rowCtrl.getRowNode(), rowIdMap)) {\n return;\n }\n if (!rowCtrl.isFullWidth()) {\n return;\n }\n const fullWidthRenderer = rowCtrl.getFullWidthCellRenderer();\n if (fullWidthRenderer) {\n fullWidthRenderers.push(fullWidthRenderer);\n }\n });\n return [...fullWidthRenderers, ...cellRenderers];\n }\n getCellEditorInstances(params) {\n const res = [];\n this.getCellCtrls(params.rowNodes, params.columns).forEach(cellCtrl => {\n const cellEditor = cellCtrl.getCellEditor();\n if (cellEditor) {\n res.push(cellEditor);\n }\n });\n return res;\n }\n getEditingCells() {\n const res = [];\n this.getAllCellCtrls().forEach(cellCtrl => {\n if (cellCtrl.isEditing()) {\n const cellPosition = cellCtrl.getCellPosition();\n res.push(cellPosition);\n }\n });\n return res;\n }\n mapRowNodes(rowNodes) {\n if (!rowNodes) {\n return;\n }\n const res = {\n top: {},\n bottom: {},\n normal: {}\n };\n rowNodes.forEach(rowNode => {\n const id = rowNode.id;\n if (rowNode.rowPinned === 'top') {\n res.top[id] = rowNode;\n }\n else if (rowNode.rowPinned === 'bottom') {\n res.bottom[id] = rowNode;\n }\n else {\n res.normal[id] = rowNode;\n }\n });\n return res;\n }\n isRowInMap(rowNode, rowIdsMap) {\n // skip this row if it is missing from the provided list\n const id = rowNode.id;\n const floating = rowNode.rowPinned;\n if (floating === 'bottom') {\n return rowIdsMap.bottom[id] != null;\n }\n if (floating === 'top') {\n return rowIdsMap.top[id] != null;\n }\n return rowIdsMap.normal[id] != null;\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 getCellCtrls(rowNodes, columns) {\n const rowIdsMap = this.mapRowNodes(rowNodes);\n const res = [];\n let colIdsMap;\n if (exists(columns)) {\n colIdsMap = {};\n columns.forEach((colKey) => {\n const column = this.columnModel.getGridColumn(colKey);\n if (exists(column)) {\n colIdsMap[column.getId()] = true;\n }\n });\n }\n const processRow = (rowCtrl) => {\n const rowNode = rowCtrl.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 rowCtrl.getAllCellCtrls().forEach(cellCtrl => {\n const colId = cellCtrl.getColumn().getId();\n const excludeColFromRefresh = colIdsMap && !colIdsMap[colId];\n if (excludeColFromRefresh) {\n return;\n }\n res.push(cellCtrl);\n });\n };\n this.getAllRowCtrls().forEach(row => processRow(row));\n return res;\n }\n destroy() {\n this.removeAllRowComps();\n super.destroy();\n }\n removeAllRowComps() {\n const rowIndexesToRemove = Object.keys(this.rowCtrlsByRowIndex);\n this.removeRowCtrls(rowIndexesToRemove);\n }\n getRowsToRecycle() {\n // remove all stub nodes, they can't be reused, as no rowNode id\n const stubNodeIndexes = [];\n iterateObject(this.rowCtrlsByRowIndex, (index, rowComp) => {\n const 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 const ctrlsByIdMap = {};\n iterateObject(this.rowCtrlsByRowIndex, (index, rowComp) => {\n const rowNode = rowComp.getRowNode();\n ctrlsByIdMap[rowNode.id] = rowComp;\n });\n this.rowCtrlsByRowIndex = {};\n return ctrlsByIdMap;\n }\n // takes array of row indexes\n removeRowCtrls(rowsToRemove) {\n // if no fromIndex then set to -1, which will refresh everything\n // let realFromIndex = -1;\n rowsToRemove.forEach(indexToRemove => {\n const rowCtrl = this.rowCtrlsByRowIndex[indexToRemove];\n if (rowCtrl) {\n rowCtrl.destroyFirstPass();\n rowCtrl.destroySecondPass();\n }\n delete this.rowCtrlsByRowIndex[indexToRemove];\n });\n }\n onBodyScroll(e) {\n if (e.direction !== 'vertical') {\n return;\n }\n this.redraw();\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 redraw(afterScroll = true) {\n let cellFocused;\n // only try to refocus cells shifting in and out of sticky container\n // if the browser supports focus ({ preventScroll })\n if (this.stickyRowFeature && browserSupportsPreventScroll()) {\n cellFocused = this.getCellToRestoreFocusToAfterRefresh() || undefined;\n }\n this.getLockOnRefresh();\n this.recycleRows(null, false, afterScroll);\n this.releaseLockOnRefresh();\n this.dispatchDisplayedRowsChanged(afterScroll);\n if (cellFocused != null) {\n const newFocusedCell = this.getCellToRestoreFocusToAfterRefresh();\n if (cellFocused != null && newFocusedCell == null) {\n this.animationFrameService.flushAllFrames();\n this.restoreFocusedCell(cellFocused);\n }\n }\n }\n removeRowCompsNotToDraw(indexesToDraw) {\n // for speedy lookup, dump into map\n const indexesToDrawMap = {};\n indexesToDraw.forEach(index => (indexesToDrawMap[index] = true));\n const existingIndexes = Object.keys(this.rowCtrlsByRowIndex);\n const indexesNotToDraw = existingIndexes.filter(index => !indexesToDrawMap[index]);\n this.removeRowCtrls(indexesNotToDraw);\n }\n calculateIndexesToDraw(rowsToRecycle) {\n // all in all indexes in the viewport\n let indexesToDraw = createArrayOfNumbers(this.firstRenderedRow, this.lastRenderedRow);\n const checkRowToDraw = (indexStr, rowComp) => {\n const 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((a, b) => a - b);\n indexesToDraw = indexesToDraw.filter(index => {\n const rowNode = this.paginationProxy.getRow(index);\n return rowNode && !rowNode.sticky;\n });\n return indexesToDraw;\n }\n recycleRows(rowsToRecycle, animate = false, afterScroll = false) {\n this.rowContainerHeightService.updateOffset();\n this.workOutFirstAndLastRowsToRender();\n if (this.stickyRowFeature) {\n this.stickyRowFeature.checkStickyRows();\n }\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 const 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 indexesToDraw.forEach(rowIndex => {\n this.createOrUpdateRowCtrl(rowIndex, rowsToRecycle, animate, afterScroll);\n });\n if (rowsToRecycle) {\n const useAnimationFrame = afterScroll && !this.gridOptionsService.is('suppressAnimationFrame') && !this.printLayout;\n if (useAnimationFrame) {\n this.beans.animationFrameService.addDestroyTask(() => {\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 }\n dispatchDisplayedRowsChanged(afterScroll = false) {\n const event = { type: Events.EVENT_DISPLAYED_ROWS_CHANGED, afterScroll };\n this.eventService.dispatchEvent(event);\n }\n onDisplayedColumnsChanged() {\n const pinningLeft = this.columnModel.isPinningLeft();\n const pinningRight = this.columnModel.isPinningRight();\n const 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 redrawFullWidthEmbeddedRows() {\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 const rowsToRemove = [];\n this.getFullWidthRowCtrls().forEach(fullWidthCtrl => {\n const rowIndex = fullWidthCtrl.getRowNode().rowIndex;\n rowsToRemove.push(rowIndex.toString());\n });\n this.refreshFloatingRowComps();\n this.removeRowCtrls(rowsToRemove);\n this.redraw();\n }\n getFullWidthRowCtrls(rowNodes) {\n const rowNodesMap = this.mapRowNodes(rowNodes);\n return this.getAllRowCtrls().filter((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 const rowNode = rowCtrl.getRowNode();\n if (rowNodesMap != null && !this.isRowInMap(rowNode, rowNodesMap)) {\n return false;\n }\n return true;\n });\n }\n refreshFullWidthRow(rowNode) {\n this.refreshFullWidthRows([rowNode]);\n }\n refreshFullWidthRows(rowNodes) {\n const fullWidthCtrls = this.getFullWidthRowCtrls(rowNodes);\n let redraw = false;\n const indicesToForce = [];\n fullWidthCtrls.forEach(fullWidthCtrl => {\n const refreshed = fullWidthCtrl.refreshFullWidth();\n if (refreshed) {\n return;\n }\n const node = fullWidthCtrl.getRowNode();\n if (node.sticky) {\n this.stickyRowFeature.refreshStickyNode(node);\n }\n else {\n indicesToForce.push(node.rowIndex);\n }\n redraw = true;\n });\n if (indicesToForce.length > 0) {\n this.removeRowCtrls(indicesToForce);\n }\n if (redraw) {\n this.redraw(false);\n }\n }\n createOrUpdateRowCtrl(rowIndex, rowsToRecycle, animate, afterScroll) {\n let rowNode;\n let rowCtrl = this.rowCtrlsByRowIndex[rowIndex];\n // if no row comp, see if we can get it from the previous rowComps\n if (!rowCtrl) {\n rowNode = this.paginationProxy.getRow(rowIndex);\n if (exists(rowNode) && exists(rowsToRecycle) && rowsToRecycle[rowNode.id] && rowNode.alreadyRendered) {\n rowCtrl = rowsToRecycle[rowNode.id];\n rowsToRecycle[rowNode.id] = null;\n }\n }\n const creatingNewRowCtrl = !rowCtrl;\n if (creatingNewRowCtrl) {\n // create a new one\n if (!rowNode) {\n rowNode = this.paginationProxy.getRow(rowIndex);\n }\n if (exists(rowNode)) {\n rowCtrl = 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] = rowCtrl;\n return rowCtrl;\n }\n destroyRowCtrls(rowCtrlsMap, animate) {\n const executeInAWhileFuncs = [];\n iterateObject(rowCtrlsMap, (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(() => {\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(() => {\n this.updateAllRowCtrls();\n this.dispatchDisplayedRowsChanged();\n });\n executeInAWhile(executeInAWhileFuncs);\n }\n }\n getRowBuffer() {\n let rowBuffer = this.gridOptionsService.getNum('rowBuffer');\n if (typeof rowBuffer === 'number') {\n if (rowBuffer < 0) {\n doOnce(() => console.warn(`AG Grid: rowBuffer should not be negative`), 'warn rowBuffer negative');\n rowBuffer = 0;\n this.gridOptionsService.set('rowBuffer', 0);\n }\n }\n else {\n rowBuffer = 10;\n }\n return rowBuffer;\n }\n getRowBufferInPixels() {\n const rowsToBuffer = this.getRowBuffer();\n const defaultRowHeight = this.gridOptionsService.getRowHeightAsNumber();\n return rowsToBuffer * defaultRowHeight;\n }\n workOutFirstAndLastRowsToRender() {\n let newFirst;\n let 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 const bufferPixels = this.getRowBufferInPixels();\n const gridBodyCtrl = this.ctrlsService.getGridBodyCtrl();\n const suppressRowVirtualisation = this.gridOptionsService.is('suppressRowVirtualisation');\n let rowHeightsChanged = false;\n let firstPixel;\n let lastPixel;\n do {\n const paginationOffset = this.paginationProxy.getPixelOffset();\n const { pageFirstPixel, pageLastPixel } = this.paginationProxy.getCurrentPagePixelRange();\n const divStretchOffset = this.rowContainerHeightService.getDivStretchOffset();\n const bodyVRange = gridBodyCtrl.getScrollFeature().getVScrollPosition();\n const bodyTopPixel = bodyVRange.top;\n const bodyBottomPixel = bodyVRange.bottom;\n if (suppressRowVirtualisation) {\n firstPixel = pageFirstPixel + divStretchOffset;\n lastPixel = pageLastPixel + divStretchOffset;\n }\n else {\n firstPixel = Math.max(bodyTopPixel + paginationOffset - bufferPixels, pageFirstPixel) + divStretchOffset;\n lastPixel = Math.min(bodyBottomPixel + paginationOffset + bufferPixels, pageLastPixel) + divStretchOffset;\n }\n this.firstVisibleVPixel = Math.max(bodyTopPixel + paginationOffset, pageFirstPixel) + divStretchOffset;\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 let firstRowIndex = this.paginationProxy.getRowIndexAtPixel(firstPixel);\n let lastRowIndex = this.paginationProxy.getRowIndexAtPixel(lastPixel);\n const pageFirstRow = this.paginationProxy.getPageFirstRow();\n const 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 const rowLayoutNormal = this.gridOptionsService.isDomLayout('normal');\n const suppressRowCountRestriction = this.gridOptionsService.is('suppressMaxRenderedRowRestriction');\n const rowBufferMaxSize = Math.max(this.getRowBuffer(), 500);\n if (rowLayoutNormal && !suppressRowCountRestriction) {\n if (newLast - newFirst > rowBufferMaxSize) {\n newLast = newFirst + rowBufferMaxSize;\n }\n }\n const firstDiffers = newFirst !== this.firstRenderedRow;\n const lastDiffers = newLast !== this.lastRenderedRow;\n if (firstDiffers || lastDiffers) {\n this.firstRenderedRow = newFirst;\n this.lastRenderedRow = newLast;\n const event = {\n type: Events.EVENT_VIEWPORT_CHANGED,\n firstRow: newFirst,\n lastRow: newLast\n };\n this.eventService.dispatchEvent(event);\n }\n }\n /**\n * This event will only be fired once, and is queued until after the browser next renders.\n * This allows us to fire an event during the start of the render cycle, when we first see data being rendered\n * but not execute the event until all of the data has finished being rendered to the dom.\n */\n dispatchFirstDataRenderedEvent() {\n if (this.dataFirstRenderedFired) {\n return;\n }\n this.dataFirstRenderedFired = true;\n const event = {\n type: Events.EVENT_FIRST_DATA_RENDERED,\n firstRow: this.firstRenderedRow,\n lastRow: this.lastRenderedRow,\n };\n // See AG-7018\n window.requestAnimationFrame(() => {\n this.beans.eventService.dispatchEvent(event);\n });\n }\n ensureAllRowsInRangeHaveHeightsCalculated(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 const res = this.paginationProxy.ensureRowHeightsValid(topPixel, bottomPixel, -1, -1);\n if (res) {\n this.updateContainerHeights();\n }\n return res;\n }\n getFirstVisibleVerticalPixel() {\n return this.firstVisibleVPixel;\n }\n getFirstVirtualRenderedRow() {\n return this.firstRenderedRow;\n }\n getLastVirtualRenderedRow() {\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 doNotUnVirtualiseRow(rowComp) {\n const REMOVE_ROW = false;\n const KEEP_ROW = true;\n const rowNode = rowComp.getRowNode();\n const rowHasFocus = this.focusService.isRowNodeFocused(rowNode);\n const rowIsEditing = rowComp.isEditing();\n const rowIsDetail = rowNode.detail;\n const 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 const rowNodePresent = this.paginationProxy.isRowPresent(rowNode);\n return rowNodePresent ? KEEP_ROW : REMOVE_ROW;\n }\n createRowCon(rowNode, animate, afterScroll) {\n const 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 const suppressAnimationFrame = this.gridOptionsService.is('suppressAnimationFrame');\n const useAnimationFrameForCreate = afterScroll && !suppressAnimationFrame && !this.printLayout;\n const res = new RowCtrl(rowNode, this.beans, animate, useAnimationFrameForCreate, this.printLayout);\n return res;\n }\n getRenderedNodes() {\n const renderedRows = this.rowCtrlsByRowIndex;\n return Object.keys(renderedRows).map(key => renderedRows[key].getRowNode());\n }\n getRowByPosition(rowPosition) {\n let rowCtrl;\n const { rowIndex } = rowPosition;\n switch (rowPosition.rowPinned) {\n case 'top':\n rowCtrl = this.topRowCtrls[rowIndex];\n break;\n case 'bottom':\n rowCtrl = this.bottomRowCtrls[rowIndex];\n break;\n default:\n rowCtrl = this.rowCtrlsByRowIndex[rowIndex];\n if (!rowCtrl) {\n rowCtrl = this.getStickyTopRowCtrls().find(ctrl => ctrl.getRowNode().rowIndex === rowIndex) || null;\n }\n break;\n }\n return rowCtrl;\n }\n getRowNode(gridRow) {\n switch (gridRow.rowPinned) {\n case 'top':\n return this.pinnedRowModel.getPinnedTopRowData()[gridRow.rowIndex];\n case '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 isRangeInRenderedViewport(startIndex, endIndex) {\n // parent closed means the parent node is not expanded, thus these blocks are not visible\n const parentClosed = startIndex == null || endIndex == null;\n if (parentClosed) {\n return false;\n }\n const blockAfterViewport = startIndex > this.lastRenderedRow;\n const blockBeforeViewport = endIndex < this.firstRenderedRow;\n const blockInsideViewport = !blockBeforeViewport && !blockAfterViewport;\n return blockInsideViewport;\n }\n};\n__decorate$13([\n Autowired(\"animationFrameService\")\n], RowRenderer.prototype, \"animationFrameService\", void 0);\n__decorate$13([\n Autowired(\"paginationProxy\")\n], RowRenderer.prototype, \"paginationProxy\", void 0);\n__decorate$13([\n Autowired(\"columnModel\")\n], RowRenderer.prototype, \"columnModel\", void 0);\n__decorate$13([\n Autowired(\"pinnedRowModel\")\n], RowRenderer.prototype, \"pinnedRowModel\", void 0);\n__decorate$13([\n Autowired(\"rowModel\")\n], RowRenderer.prototype, \"rowModel\", void 0);\n__decorate$13([\n Autowired(\"focusService\")\n], RowRenderer.prototype, \"focusService\", void 0);\n__decorate$13([\n Autowired(\"beans\")\n], RowRenderer.prototype, \"beans\", void 0);\n__decorate$13([\n Autowired(\"rowContainerHeightService\")\n], RowRenderer.prototype, \"rowContainerHeightService\", void 0);\n__decorate$13([\n Autowired(\"ctrlsService\")\n], RowRenderer.prototype, \"ctrlsService\", void 0);\n__decorate$13([\n PostConstruct\n], RowRenderer.prototype, \"postConstruct\", null);\nRowRenderer = __decorate$13([\n Bean(\"rowRenderer\")\n], RowRenderer);\nclass RowCtrlCache {\n constructor(maxCount) {\n // map for fast access\n this.entriesMap = {};\n // list for keeping order\n this.entriesList = [];\n this.maxCount = maxCount;\n }\n addRow(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 const rowCtrlToDestroy = this.entriesList[0];\n rowCtrlToDestroy.destroyFirstPass();\n rowCtrlToDestroy.destroySecondPass();\n this.removeFromCache(rowCtrlToDestroy);\n }\n }\n getRow(rowNode) {\n if (rowNode == null || rowNode.id == null) {\n return null;\n }\n const 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 const rowNodeMismatch = res.getRowNode() != rowNode;\n return rowNodeMismatch ? null : res;\n }\n removeFromCache(rowCtrl) {\n const rowNodeId = rowCtrl.getRowNode().id;\n delete this.entriesMap[rowNodeId];\n removeFromArray(this.entriesList, rowCtrl);\n }\n getEntries() {\n return this.entriesList;\n }\n}\n\nvar __decorate$12 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet ValueFormatterService = class ValueFormatterService extends BeanStub {\n formatValue(column, node, value, suppliedFormatter, useFormatterFromColumn = true) {\n let result = null;\n let formatter;\n const 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 formatter = colDef.valueFormatter;\n }\n if (formatter) {\n const params = {\n value,\n node,\n data: node ? node.data : null,\n colDef,\n column,\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context\n };\n if (typeof formatter === 'function') {\n result = formatter(params);\n }\n else {\n result = this.expressionService.evaluate(formatter, params);\n }\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};\n__decorate$12([\n Autowired('expressionService')\n], ValueFormatterService.prototype, \"expressionService\", void 0);\nValueFormatterService = __decorate$12([\n Bean('valueFormatterService')\n], ValueFormatterService);\n\nvar __decorate$11 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet PinnedRowModel = class PinnedRowModel extends BeanStub {\n init() {\n this.setPinnedTopRowData(this.gridOptionsService.get('pinnedTopRowData'));\n this.setPinnedBottomRowData(this.gridOptionsService.get('pinnedBottomRowData'));\n }\n isEmpty(floating) {\n const rows = floating === 'top' ? this.pinnedTopRows : this.pinnedBottomRows;\n return missingOrEmpty(rows);\n }\n isRowsToRender(floating) {\n return !this.isEmpty(floating);\n }\n getRowAtPixel(pixel, floating) {\n const rows = floating === '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 (let i = 0; i < rows.length; i++) {\n const rowNode = rows[i];\n const 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 setPinnedTopRowData(rowData) {\n this.pinnedTopRows = this.createNodesFromData(rowData, true);\n const event = {\n type: Events.EVENT_PINNED_ROW_DATA_CHANGED\n };\n this.eventService.dispatchEvent(event);\n }\n setPinnedBottomRowData(rowData) {\n this.pinnedBottomRows = this.createNodesFromData(rowData, false);\n const event = {\n type: Events.EVENT_PINNED_ROW_DATA_CHANGED\n };\n this.eventService.dispatchEvent(event);\n }\n createNodesFromData(allData, isTop) {\n const rowNodes = [];\n if (allData) {\n let nextRowTop = 0;\n allData.forEach((dataItem, index) => {\n const rowNode = new RowNode(this.beans);\n rowNode.data = dataItem;\n const idPrefix = isTop ? RowNode.ID_PREFIX_TOP_PINNED : RowNode.ID_PREFIX_BOTTOM_PINNED;\n rowNode.id = idPrefix + index;\n rowNode.rowPinned = isTop ? 'top' : 'bottom';\n rowNode.setRowTop(nextRowTop);\n rowNode.setRowHeight(this.gridOptionsService.getRowHeightForNode(rowNode).height);\n rowNode.setRowIndex(index);\n nextRowTop += rowNode.rowHeight;\n rowNodes.push(rowNode);\n });\n }\n return rowNodes;\n }\n getPinnedTopRowData() {\n return this.pinnedTopRows;\n }\n getPinnedBottomRowData() {\n return this.pinnedBottomRows;\n }\n getPinnedTopTotalHeight() {\n return this.getTotalHeight(this.pinnedTopRows);\n }\n getPinnedTopRowCount() {\n return this.pinnedTopRows ? this.pinnedTopRows.length : 0;\n }\n getPinnedBottomRowCount() {\n return this.pinnedBottomRows ? this.pinnedBottomRows.length : 0;\n }\n getPinnedTopRow(index) {\n return this.pinnedTopRows[index];\n }\n getPinnedBottomRow(index) {\n return this.pinnedBottomRows[index];\n }\n forEachPinnedTopRow(callback) {\n if (missingOrEmpty(this.pinnedTopRows)) {\n return;\n }\n this.pinnedTopRows.forEach(callback);\n }\n forEachPinnedBottomRow(callback) {\n if (missingOrEmpty(this.pinnedBottomRows)) {\n return;\n }\n this.pinnedBottomRows.forEach(callback);\n }\n getPinnedBottomTotalHeight() {\n return this.getTotalHeight(this.pinnedBottomRows);\n }\n getTotalHeight(rowNodes) {\n if (!rowNodes || rowNodes.length === 0) {\n return 0;\n }\n const lastNode = last(rowNodes);\n return lastNode.rowTop + lastNode.rowHeight;\n }\n};\n__decorate$11([\n Autowired('beans')\n], PinnedRowModel.prototype, \"beans\", void 0);\n__decorate$11([\n PostConstruct\n], PinnedRowModel.prototype, \"init\", null);\nPinnedRowModel = __decorate$11([\n Bean('pinnedRowModel')\n], PinnedRowModel);\n\nvar 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// 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.\nclass ChangedPath {\n constructor(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 setInactive() {\n this.active = false;\n }\n isActive() {\n return this.active;\n }\n depthFirstSearchChangedPath(pathItem, callback) {\n if (pathItem.children) {\n for (let i = 0; i < pathItem.children.length; i++) {\n this.depthFirstSearchChangedPath(pathItem.children[i], callback);\n }\n }\n callback(pathItem.rowNode);\n }\n depthFirstSearchEverything(rowNode, callback, traverseEverything) {\n if (rowNode.childrenAfterGroup) {\n for (let i = 0; i < rowNode.childrenAfterGroup.length; i++) {\n const 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 forEachChangedNodeDepthFirst(callback, traverseLeafNodes = false, includeUnchangedNodes = false) {\n if (this.active && !includeUnchangedNodes) {\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 executeFromRootNode(callback) {\n callback(this.pathRoot.rowNode);\n }\n createPathItems(rowNode) {\n let pointer = rowNode;\n let newEntryCount = 0;\n while (!this.mapToItems[pointer.id]) {\n const 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 populateColumnsMap(rowNode, columns) {\n if (!this.keepingColumns || !columns) {\n return;\n }\n let 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(col => this.nodeIdsToColumns[pointer.id][col.getId()] = true);\n pointer = pointer.parent;\n }\n }\n linkPathItems(rowNode, newEntryCount) {\n let pointer = rowNode;\n for (let i = 0; i < newEntryCount; i++) {\n const thisItem = this.mapToItems[pointer.id];\n const 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 addParentNode(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 const 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 canSkip(rowNode) {\n return this.active && !this.mapToItems[rowNode.id];\n }\n getValueColumnsForNode(rowNode, valueColumns) {\n if (!this.keepingColumns) {\n return valueColumns;\n }\n const colsForThisNode = this.nodeIdsToColumns[rowNode.id];\n const result = valueColumns.filter(col => colsForThisNode[col.getId()]);\n return result;\n }\n getNotValueColumnsForNode(rowNode, valueColumns) {\n if (!this.keepingColumns) {\n return null;\n }\n const colsForThisNode = this.nodeIdsToColumns[rowNode.id];\n const result = valueColumns.filter(col => !colsForThisNode[col.getId()]);\n return result;\n }\n}\n\nclass RowNodeBlock extends BeanStub {\n constructor(id) {\n super();\n this.state = RowNodeBlock.STATE_WAITING_TO_LOAD;\n this.version = 0;\n this.id = id;\n }\n getId() {\n return this.id;\n }\n load() {\n this.state = RowNodeBlock.STATE_LOADING;\n this.loadFromDatasource();\n }\n getVersion() {\n return this.version;\n }\n setStateWaitingToLoad() {\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 getState() {\n return this.state;\n }\n pageLoadFailed(version) {\n const requestMostRecentAndLive = this.isRequestMostRecentAndLive(version);\n if (requestMostRecentAndLive) {\n this.state = RowNodeBlock.STATE_FAILED;\n this.processServerFail();\n }\n this.dispatchLoadCompleted(false);\n }\n success(version, params) {\n this.successCommon(version, params);\n }\n pageLoaded(version, rows, lastRow) {\n this.successCommon(version, { rowData: rows, rowCount: lastRow });\n }\n isRequestMostRecentAndLive(version) {\n // thisIsMostRecentRequest - if block was refreshed, then another request\n // could of been sent after this one.\n const 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 const weAreNotDestroyed = this.isAlive();\n return thisIsMostRecentRequest && weAreNotDestroyed;\n }\n successCommon(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 const requestMostRecentAndLive = this.isRequestMostRecentAndLive(version);\n if (requestMostRecentAndLive) {\n this.state = RowNodeBlock.STATE_LOADED;\n this.processServerResult(params);\n }\n }\n dispatchLoadCompleted(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 const event = {\n type: RowNodeBlock.EVENT_LOAD_COMPLETE,\n success: success,\n block: this\n };\n this.dispatchEvent(event);\n }\n}\nRowNodeBlock.EVENT_LOAD_COMPLETE = 'loadComplete';\nRowNodeBlock.STATE_WAITING_TO_LOAD = 'needsLoading';\nRowNodeBlock.STATE_LOADING = 'loading';\nRowNodeBlock.STATE_LOADED = 'loaded';\nRowNodeBlock.STATE_FAILED = 'failed';\n\nvar __decorate$10 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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$7 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar RowNodeBlockLoader_1;\nlet RowNodeBlockLoader = RowNodeBlockLoader_1 = class RowNodeBlockLoader extends BeanStub {\n constructor() {\n super(...arguments);\n this.activeBlockLoadsCount = 0;\n this.blocks = [];\n this.active = true;\n }\n postConstruct() {\n this.maxConcurrentRequests = this.getMaxConcurrentDatasourceRequests();\n const blockLoadDebounceMillis = this.gridOptionsService.getNum('blockLoadDebounceMillis');\n if (blockLoadDebounceMillis && blockLoadDebounceMillis > 0) {\n this.checkBlockToLoadDebounce = _.debounce(this.performCheckBlocksToLoad.bind(this), blockLoadDebounceMillis);\n }\n }\n setBeans(loggerFactory) {\n this.logger = loggerFactory.create('RowNodeBlockLoader');\n }\n getMaxConcurrentDatasourceRequests() {\n const res = this.gridOptionsService.getNum('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 addBlock(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 removeBlock(block) {\n _.removeFromArray(this.blocks, block);\n }\n destroy() {\n super.destroy();\n this.active = false;\n }\n loadComplete() {\n this.activeBlockLoadsCount--;\n this.checkBlockToLoad();\n this.dispatchEvent({ type: RowNodeBlockLoader_1.BLOCK_LOADED_EVENT });\n if (this.activeBlockLoadsCount == 0) {\n this.dispatchEvent({ type: RowNodeBlockLoader_1.BLOCK_LOADER_FINISHED_EVENT });\n }\n }\n checkBlockToLoad() {\n if (this.checkBlockToLoadDebounce) {\n this.checkBlockToLoadDebounce();\n }\n else {\n this.performCheckBlocksToLoad();\n }\n }\n performCheckBlocksToLoad() {\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 const loadAvailability = this.getAvailableLoadingCount();\n const blocksToLoad = this.blocks.filter(block => (block.getState() === RowNodeBlock.STATE_WAITING_TO_LOAD)).slice(0, loadAvailability);\n this.registerLoads(blocksToLoad.length);\n blocksToLoad.forEach(block => block.load());\n this.printCacheStatus();\n }\n getBlockState() {\n if (this.gridOptionsService.isRowModelType('serverSide')) {\n const ssrm = this.rowModel;\n return ssrm.getBlockStates();\n }\n const result = {};\n this.blocks.forEach((block) => {\n const { id, state } = block.getBlockStateJson();\n result[id] = state;\n });\n return result;\n }\n printCacheStatus() {\n if (this.logger.isLogging()) {\n this.logger.log(`printCacheStatus: activePageLoadsCount = ${this.activeBlockLoadsCount},`\n + ` blocks = ${JSON.stringify(this.getBlockState())}`);\n }\n }\n isLoading() {\n return this.activeBlockLoadsCount > 0;\n }\n registerLoads(count) {\n this.activeBlockLoadsCount += count;\n }\n getAvailableLoadingCount() {\n return this.maxConcurrentRequests !== undefined ? this.maxConcurrentRequests - this.activeBlockLoadsCount : undefined;\n }\n};\nRowNodeBlockLoader.BLOCK_LOADED_EVENT = 'blockLoaded';\nRowNodeBlockLoader.BLOCK_LOADER_FINISHED_EVENT = 'blockLoaderFinished';\n__decorate$10([\n Autowired('rowModel')\n], RowNodeBlockLoader.prototype, \"rowModel\", void 0);\n__decorate$10([\n PostConstruct\n], RowNodeBlockLoader.prototype, \"postConstruct\", null);\n__decorate$10([\n __param$7(0, Qualifier('loggerFactory'))\n], RowNodeBlockLoader.prototype, \"setBeans\", null);\nRowNodeBlockLoader = RowNodeBlockLoader_1 = __decorate$10([\n Bean('rowNodeBlockLoader')\n], RowNodeBlockLoader);\n\nvar __decorate$$ = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet PaginationProxy = class PaginationProxy extends BeanStub {\n constructor() {\n super(...arguments);\n this.currentPage = 0;\n this.topDisplayedRowIndex = 0;\n this.bottomDisplayedRowIndex = 0;\n this.pixelOffset = 0;\n this.masterRowCount = 0;\n }\n postConstruct() {\n this.active = this.gridOptionsService.is('pagination');\n this.paginateChildRows = this.isPaginateChildRows();\n this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, this.onModelUpdated.bind(this));\n this.addManagedPropertyListener('pagination', this.onPaginationPageSizeChanged.bind(this));\n this.addManagedPropertyListener('paginationPageSize', this.onPaginationPageSizeChanged.bind(this));\n this.onModelUpdated();\n }\n ensureRowHeightsValid(startPixel, endPixel, startLimitIndex, endLimitIndex) {\n const res = this.rowModel.ensureRowHeightsValid(startPixel, endPixel, this.getPageFirstRow(), this.getPageLastRow());\n if (res) {\n this.calculatePages();\n }\n return res;\n }\n isPaginateChildRows() {\n const shouldPaginate = this.gridOptionsService.is('groupRemoveSingleChildren') || this.gridOptionsService.is('groupRemoveLowestSingleChildren');\n if (shouldPaginate) {\n return true;\n }\n return this.gridOptionsService.is('paginateChildRows');\n }\n onModelUpdated(modelUpdatedEvent) {\n this.calculatePages();\n const 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 };\n this.eventService.dispatchEvent(paginationChangedEvent);\n }\n onPaginationPageSizeChanged() {\n this.active = this.gridOptionsService.is('pagination');\n this.calculatePages();\n const 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 };\n this.eventService.dispatchEvent(paginationChangedEvent);\n }\n goToPage(page) {\n if (!this.active || this.currentPage === page || typeof this.currentPage !== 'number') {\n return;\n }\n this.currentPage = page;\n const event = {\n type: Events.EVENT_MODEL_UPDATED,\n animate: false,\n keepRenderedRows: false,\n newData: false,\n newPage: true\n };\n this.onModelUpdated(event);\n }\n getPixelOffset() {\n return this.pixelOffset;\n }\n getRow(index) {\n return this.rowModel.getRow(index);\n }\n getRowNode(id) {\n return this.rowModel.getRowNode(id);\n }\n getRowIndexAtPixel(pixel) {\n return this.rowModel.getRowIndexAtPixel(pixel);\n }\n getCurrentPageHeight() {\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 getCurrentPagePixelRange() {\n const pageFirstPixel = this.topRowBounds ? this.topRowBounds.rowTop : 0;\n const pageLastPixel = this.bottomRowBounds ? this.bottomRowBounds.rowTop + this.bottomRowBounds.rowHeight : 0;\n return { pageFirstPixel, pageLastPixel };\n }\n isRowPresent(rowNode) {\n if (!this.rowModel.isRowPresent(rowNode)) {\n return false;\n }\n const nodeIsInPage = rowNode.rowIndex >= this.topDisplayedRowIndex && rowNode.rowIndex <= this.bottomDisplayedRowIndex;\n return nodeIsInPage;\n }\n isEmpty() {\n return this.rowModel.isEmpty();\n }\n isRowsToRender() {\n return this.rowModel.isRowsToRender();\n }\n forEachNode(callback) {\n return this.rowModel.forEachNode(callback);\n }\n forEachNodeOnPage(callback) {\n const firstRow = this.getPageFirstRow();\n const lastRow = this.getPageLastRow();\n for (let i = firstRow; i <= lastRow; i++) {\n const node = this.getRow(i);\n if (node) {\n callback(node);\n }\n }\n }\n getType() {\n return this.rowModel.getType();\n }\n getRowBounds(index) {\n const res = this.rowModel.getRowBounds(index);\n res.rowIndex = index;\n return res;\n }\n getPageFirstRow() {\n return this.topRowBounds ? this.topRowBounds.rowIndex : -1;\n }\n getPageLastRow() {\n return this.bottomRowBounds ? this.bottomRowBounds.rowIndex : -1;\n }\n getRowCount() {\n return this.rowModel.getRowCount();\n }\n getPageForIndex(index) {\n return Math.floor(index / this.pageSize);\n }\n goToPageWithIndex(index) {\n if (!this.active) {\n return;\n }\n const pageNumber = this.getPageForIndex(index);\n this.goToPage(pageNumber);\n }\n isRowInPage(row) {\n if (!this.active) {\n return true;\n }\n const rowPage = this.getPageForIndex(row.rowIndex);\n return rowPage === this.currentPage;\n }\n isLastPageFound() {\n return this.rowModel.isLastRowIndexKnown();\n }\n getCurrentPage() {\n return this.currentPage;\n }\n goToNextPage() {\n this.goToPage(this.currentPage + 1);\n }\n goToPreviousPage() {\n this.goToPage(this.currentPage - 1);\n }\n goToFirstPage() {\n this.goToPage(0);\n }\n goToLastPage() {\n const rowCount = this.rowModel.getRowCount();\n const lastPage = Math.floor(rowCount / this.pageSize);\n this.goToPage(lastPage);\n }\n getPageSize() {\n return this.pageSize;\n }\n getTotalPages() {\n return this.totalPages;\n }\n setPageSize() {\n // show put this into super class\n this.pageSize = this.gridOptionsService.getNum('paginationPageSize');\n if (this.pageSize == null || this.pageSize < 1) {\n this.pageSize = 100;\n }\n }\n calculatePages() {\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 setPixelOffset(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 setZeroRows() {\n this.masterRowCount = 0;\n this.topDisplayedRowIndex = 0;\n this.bottomDisplayedRowIndex = -1;\n this.currentPage = 0;\n this.totalPages = 0;\n }\n adjustCurrentPageIfInvalid() {\n if (this.currentPage >= this.totalPages) {\n this.currentPage = this.totalPages - 1;\n }\n if (!isFinite(this.currentPage) || isNaN(this.currentPage) || this.currentPage < 0) {\n this.currentPage = 0;\n }\n }\n calculatePagesMasterRowsOnly() {\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 const masterLastRowIndex = this.masterRowCount - 1;\n this.totalPages = Math.floor((masterLastRowIndex) / this.pageSize) + 1;\n this.adjustCurrentPageIfInvalid();\n const masterPageStartIndex = this.pageSize * this.currentPage;\n let 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 const 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 getMasterRowCount() {\n return this.masterRowCount;\n }\n calculatePagesAllRows() {\n this.masterRowCount = this.rowModel.getRowCount();\n if (this.masterRowCount === 0) {\n this.setZeroRows();\n return;\n }\n const maxRowIndex = this.masterRowCount - 1;\n this.totalPages = Math.floor((maxRowIndex) / this.pageSize) + 1;\n this.adjustCurrentPageIfInvalid();\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 calculatedPagesNotActive() {\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};\n__decorate$$([\n Autowired('rowModel')\n], PaginationProxy.prototype, \"rowModel\", void 0);\n__decorate$$([\n PostConstruct\n], PaginationProxy.prototype, \"postConstruct\", null);\nPaginationProxy = __decorate$$([\n Bean('paginationProxy')\n], PaginationProxy);\n\nvar __decorate$_ = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet StylingService = class StylingService extends BeanStub {\n processAllCellClasses(colDef, params, onApplicableClass, onNotApplicableClass) {\n this.processClassRules(colDef.cellClassRules, params, onApplicableClass, onNotApplicableClass);\n this.processStaticCellClasses(colDef, params, onApplicableClass);\n }\n processClassRules(classRules, params, onApplicableClass, onNotApplicableClass) {\n if (classRules == null) {\n return;\n }\n const classNames = Object.keys(classRules);\n const classesToApply = {};\n const classesToRemove = {};\n for (let i = 0; i < classNames.length; i++) {\n const className = classNames[i];\n const rule = classRules[className];\n let resultOfRule;\n if (typeof rule === 'string') {\n resultOfRule = this.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(singleClass => {\n if (singleClass == null || singleClass.trim() == '') {\n return;\n }\n resultOfRule ? classesToApply[singleClass] = true : classesToRemove[singleClass] = true;\n });\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 getStaticCellClasses(colDef, params) {\n const { cellClass } = colDef;\n if (!cellClass) {\n return [];\n }\n let classOrClasses;\n if (typeof cellClass === 'function') {\n const 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 processStaticCellClasses(colDef, params, onApplicableClass) {\n const classOrClasses = this.getStaticCellClasses(colDef, params);\n classOrClasses.forEach((cssClassItem) => {\n onApplicableClass(cssClassItem);\n });\n }\n};\n__decorate$_([\n Autowired('expressionService')\n], StylingService.prototype, \"expressionService\", void 0);\nStylingService = __decorate$_([\n Bean('stylingService')\n], StylingService);\n\nclass AgToggleButton extends AgCheckbox {\n constructor(config) {\n super(config, 'ag-toggle-button');\n }\n setValue(value, silent) {\n super.setValue(value, silent);\n this.addOrRemoveCssClass('ag-selected', this.getValue());\n return this;\n }\n}\n\nclass AgInputTextArea extends AgAbstractInputField {\n constructor(config) {\n super(config, 'ag-text-area', null, 'textarea');\n }\n setValue(value, silent) {\n const ret = super.setValue(value, silent);\n this.eInput.value = value;\n return ret;\n }\n setCols(cols) {\n this.eInput.cols = cols;\n return this;\n }\n setRows(rows) {\n this.eInput.rows = rows;\n return this;\n }\n}\n\nclass AgInputDateField extends AgInputTextField {\n constructor(config) {\n super(config, 'ag-date-field', 'date');\n }\n postConstruct() {\n super.postConstruct();\n this.addManagedListener(this.eInput, 'wheel', this.onWheel.bind(this));\n // ensures that the input element is focussed when a clear button is clicked,\n // unless using safari as there is no clear button and focus does not work properly\n const usingSafari = isBrowserSafari();\n this.addManagedListener(this.eInput, 'mousedown', () => {\n if (this.isDisabled() || usingSafari) {\n return;\n }\n this.eInput.focus();\n });\n this.eInput.step = 'any';\n }\n onWheel(e) {\n // Prevent default scroll events from incrementing / decrementing the input, since its inconsistent between browsers\n if (document.activeElement === this.eInput) {\n e.preventDefault();\n }\n }\n setMin(minDate) {\n var _a;\n const min = minDate instanceof Date ? (_a = serialiseDate(minDate !== null && minDate !== void 0 ? minDate : null, false)) !== null && _a !== void 0 ? _a : undefined : minDate;\n if (this.min === min) {\n return this;\n }\n this.min = min;\n addOrRemoveAttribute(this.eInput, 'min', min);\n return this;\n }\n setMax(maxDate) {\n var _a;\n const max = maxDate instanceof Date ? (_a = serialiseDate(maxDate !== null && maxDate !== void 0 ? maxDate : null, false)) !== null && _a !== void 0 ? _a : undefined : maxDate;\n if (this.max === max) {\n return this;\n }\n this.max = max;\n addOrRemoveAttribute(this.eInput, 'max', max);\n return this;\n }\n setStep(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 getDate() {\n var _a;\n if (!this.eInput.validity.valid) {\n return undefined;\n }\n return (_a = parseDateTimeFromString(this.getValue())) !== null && _a !== void 0 ? _a : undefined;\n }\n setDate(date, silent) {\n this.setValue(serialiseDate(date !== null && date !== void 0 ? date : null, false), silent);\n }\n}\n\nclass AgInputRange extends AgAbstractInputField {\n constructor(config) {\n super(config, 'ag-range-field', 'range');\n }\n postConstruct() {\n super.postConstruct();\n const { min, max, step } = this.config;\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 addInputListeners() {\n this.addManagedListener(this.eInput, 'input', (e) => {\n const value = e.target.value;\n this.setValue(value);\n });\n }\n setMinValue(value) {\n this.min = value;\n this.eInput.setAttribute('min', value.toString());\n return this;\n }\n setMaxValue(value) {\n this.max = value;\n this.eInput.setAttribute('max', value.toString());\n return this;\n }\n setStep(value) {\n this.eInput.setAttribute('step', value.toString());\n return this;\n }\n setValue(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 const ret = super.setValue(value, silent);\n this.eInput.value = value;\n return ret;\n }\n}\n\nvar __decorate$Z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass AgSlider extends AgAbstractLabel {\n constructor(config) {\n super(config, AgSlider.TEMPLATE);\n this.labelAlignment = 'top';\n }\n init() {\n this.eSlider.addCssClass('ag-slider-field');\n }\n onValueChange(callbackFn) {\n const eventChanged = AgAbstractField.EVENT_CHANGED;\n this.addManagedListener(this.eText, eventChanged, () => {\n const textValue = parseFloat(this.eText.getValue());\n this.eSlider.setValue(textValue.toString(), true);\n callbackFn(textValue || 0);\n });\n this.addManagedListener(this.eSlider, eventChanged, () => {\n const sliderValue = this.eSlider.getValue();\n this.eText.setValue(sliderValue, true);\n callbackFn(parseFloat(sliderValue));\n });\n return this;\n }\n setSliderWidth(width) {\n this.eSlider.setWidth(width);\n return this;\n }\n setTextFieldWidth(width) {\n this.eText.setWidth(width);\n return this;\n }\n setMinValue(minValue) {\n this.eSlider.setMinValue(minValue);\n this.eText.setMin(minValue);\n return this;\n }\n setMaxValue(maxValue) {\n this.eSlider.setMaxValue(maxValue);\n this.eText.setMax(maxValue);\n return this;\n }\n getValue() {\n return this.eText.getValue();\n }\n setValue(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 setStep(step) {\n this.eSlider.setStep(step);\n this.eText.setStep(step);\n return this;\n }\n}\nAgSlider.TEMPLATE = `
\n \n
\n \n \n
\n
`;\n__decorate$Z([\n RefSelector('eLabel')\n], AgSlider.prototype, \"eLabel\", void 0);\n__decorate$Z([\n RefSelector('eSlider')\n], AgSlider.prototype, \"eSlider\", void 0);\n__decorate$Z([\n RefSelector('eText')\n], AgSlider.prototype, \"eText\", void 0);\n__decorate$Z([\n PostConstruct\n], AgSlider.prototype, \"init\", null);\n\nvar __decorate$Y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass AgGroupComponent extends Component {\n constructor(params = {}) {\n super(AgGroupComponent.getTemplate(params));\n this.suppressEnabledCheckbox = true;\n this.suppressOpenCloseIcons = false;\n const { title, enabled, items, suppressEnabledCheckbox, suppressOpenCloseIcons } = params;\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 }\n static getTemplate(params) {\n const cssIdentifier = params.cssIdentifier || 'default';\n const direction = params.direction || 'vertical';\n return /* html */ `
\n
\n \n \n \n
\n
\n \n
\n
\n
`;\n }\n postConstruct() {\n if (this.items.length) {\n const initialItems = this.items;\n this.items = [];\n this.addItems(initialItems);\n }\n const localeTextFunc = this.localeService.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 setupExpandContract() {\n this.eGroupClosedIcon.appendChild(createIcon('columnSelectClosed', this.gridOptionsService, null));\n this.eGroupOpenedIcon.appendChild(createIcon('columnSelectOpen', this.gridOptionsService, null));\n this.addManagedListener(this.eTitleBar, 'click', () => this.toggleGroupExpand());\n this.addManagedListener(this.eTitleBar, 'keydown', (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 refreshAriaStatus() {\n if (!this.suppressOpenCloseIcons) {\n setAriaExpanded(this.eTitleBar, this.expanded);\n }\n }\n refreshChildDisplay() {\n const 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 isExpanded() {\n return this.expanded;\n }\n setAlignItems(alignment) {\n if (this.alignItems !== alignment) {\n this.removeCssClass(`ag-group-item-alignment-${this.alignItems}`);\n }\n this.alignItems = alignment;\n const newCls = `ag-group-item-alignment-${this.alignItems}`;\n this.addCssClass(newCls);\n return this;\n }\n toggleGroupExpand(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 addItems(items) {\n items.forEach(item => this.addItem(item));\n }\n addItem(item) {\n const container = this.eContainer;\n const 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 hideItem(hide, index) {\n const itemToHide = this.items[index];\n setDisplayed(itemToHide, !hide);\n }\n setTitle(title) {\n this.eTitle.innerText = title;\n return this;\n }\n addCssClassToTitleBar(cssClass) {\n this.eTitleBar.classList.add(cssClass);\n }\n setEnabled(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 isEnabled() {\n return this.enabled;\n }\n onEnableChange(callbackFn) {\n this.cbGroupEnabled.onValueChange((newSelection) => {\n this.setEnabled(newSelection, true);\n callbackFn(newSelection);\n });\n return this;\n }\n hideEnabledCheckbox(hide) {\n this.suppressEnabledCheckbox = hide;\n this.refreshChildDisplay();\n this.refreshDisabledStyles();\n return this;\n }\n hideOpenCloseIcons(hide) {\n this.suppressOpenCloseIcons = hide;\n if (hide) {\n this.toggleGroupExpand(true);\n }\n return this;\n }\n refreshDisabledStyles() {\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}\nAgGroupComponent.EVENT_EXPANDED = 'expanded';\nAgGroupComponent.EVENT_COLLAPSED = 'collapsed';\n__decorate$Y([\n RefSelector('eTitleBar')\n], AgGroupComponent.prototype, \"eTitleBar\", void 0);\n__decorate$Y([\n RefSelector('eGroupOpenedIcon')\n], AgGroupComponent.prototype, \"eGroupOpenedIcon\", void 0);\n__decorate$Y([\n RefSelector('eGroupClosedIcon')\n], AgGroupComponent.prototype, \"eGroupClosedIcon\", void 0);\n__decorate$Y([\n RefSelector('eToolbar')\n], AgGroupComponent.prototype, \"eToolbar\", void 0);\n__decorate$Y([\n RefSelector('cbGroupEnabled')\n], AgGroupComponent.prototype, \"cbGroupEnabled\", void 0);\n__decorate$Y([\n RefSelector('eTitle')\n], AgGroupComponent.prototype, \"eTitle\", void 0);\n__decorate$Y([\n RefSelector('eContainer')\n], AgGroupComponent.prototype, \"eContainer\", void 0);\n__decorate$Y([\n PostConstruct\n], AgGroupComponent.prototype, \"postConstruct\", null);\n\nclass TabGuardComp extends Component {\n initialiseTabGuard(params) {\n this.eTopGuard = this.createTabGuard('top');\n this.eBottomGuard = this.createTabGuard('bottom');\n this.eFocusableElement = this.getFocusableElement();\n const tabGuards = [this.eTopGuard, this.eBottomGuard];\n const compProxy = {\n setTabIndex: tabIndex => {\n tabGuards.forEach(tabGuard => 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 createTabGuard(side) {\n const tabGuard = document.createElement('div');\n const cls = side === 'top' ? TabGuardClassNames.TAB_GUARD_TOP : TabGuardClassNames.TAB_GUARD_BOTTOM;\n tabGuard.classList.add(TabGuardClassNames.TAB_GUARD, cls);\n setAriaRole(tabGuard, 'presentation');\n return tabGuard;\n }\n addTabGuards(topTabGuard, bottomTabGuard) {\n this.eFocusableElement.insertAdjacentElement('afterbegin', topTabGuard);\n this.eFocusableElement.insertAdjacentElement('beforeend', bottomTabGuard);\n }\n removeAllChildrenExceptTabGuards() {\n const tabGuards = [this.eTopGuard, this.eBottomGuard];\n clearElement(this.getFocusableElement());\n this.addTabGuards(...tabGuards);\n }\n forceFocusOutOfContainer(up = false) {\n this.tabGuardCtrl.forceFocusOutOfContainer(up);\n }\n appendChild(newChild, container) {\n if (!isNodeOrElement(newChild)) {\n newChild = newChild.getGui();\n }\n const { eBottomGuard: bottomTabGuard } = this;\n if (bottomTabGuard) {\n bottomTabGuard.insertAdjacentElement('beforebegin', newChild);\n }\n else {\n super.appendChild(newChild, container);\n }\n }\n}\n\nvar __decorate$X = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass AgMenuList extends TabGuardComp {\n constructor(level = 1) {\n super(/* html */ `
`);\n this.level = level;\n this.menuItems = [];\n }\n postConstruct() {\n this.initialiseTabGuard({\n onTabKeyDown: e => this.onTabKeyDown(e),\n handleKeyDown: e => this.handleKeyDown(e)\n });\n }\n onTabKeyDown(e) {\n const parent = this.getParentComponent();\n const parentGui = parent && parent.getGui();\n const 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 handleKeyDown(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 const topMenu = this.findTopMenu();\n if (topMenu) {\n this.focusService.focusInto(topMenu.getGui());\n }\n break;\n }\n }\n clearActiveItem() {\n if (this.activeMenuItem) {\n this.activeMenuItem.deactivate();\n this.activeMenuItem = null;\n }\n }\n addMenuItems(menuItems) {\n if (menuItems == null) {\n return;\n }\n menuItems.forEach(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 addItem(menuItemDef) {\n const menuItem = this.createManagedBean(new AgMenuItemComponent(Object.assign(Object.assign({}, menuItemDef), { isAnotherSubMenuOpen: () => this.menuItems.some(m => 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, (event) => {\n this.dispatchEvent(event);\n });\n this.addManagedListener(menuItem, AgMenuItemComponent.EVENT_MENU_ITEM_ACTIVATED, (event) => {\n if (this.activeMenuItem && this.activeMenuItem !== event.menuItem) {\n this.activeMenuItem.deactivate();\n }\n this.activeMenuItem = event.menuItem;\n });\n }\n activateFirstItem() {\n const item = this.menuItems.filter(currentItem => !currentItem.isDisabled())[0];\n if (!item) {\n return;\n }\n item.activate();\n }\n addSeparator() {\n const separatorHtml = /* html */ `\n
\n
\n
\n
\n
\n
`;\n this.appendChild(loadTemplate(separatorHtml));\n }\n findTopMenu() {\n let parent = this.getParentComponent();\n if (!parent && this instanceof AgMenuList) {\n return this;\n }\n while (true) {\n const 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 handleNavKey(key) {\n switch (key) {\n case KeyCode.UP:\n case KeyCode.DOWN:\n const nextItem = this.findNextItem(key === KeyCode.UP);\n if (nextItem && nextItem !== this.activeMenuItem) {\n nextItem.activate();\n }\n return;\n }\n const left = this.gridOptionsService.is('enableRtl') ? KeyCode.RIGHT : KeyCode.LEFT;\n if (key === left) {\n this.closeIfIsChild();\n }\n else {\n this.openChild();\n }\n }\n closeIfIsChild(e) {\n const 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 openChild() {\n if (this.activeMenuItem) {\n this.activeMenuItem.openSubMenu(true);\n }\n }\n findNextItem(up) {\n const items = this.menuItems.filter(item => !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 let nextItem;\n let foundCurrent = false;\n for (let i = 0; i < items.length; i++) {\n const 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 destroy() {\n this.clearActiveItem();\n super.destroy();\n }\n}\n__decorate$X([\n Autowired('focusService')\n], AgMenuList.prototype, \"focusService\", void 0);\n__decorate$X([\n PostConstruct\n], AgMenuList.prototype, \"postConstruct\", null);\n\nvar __decorate$W = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass AgMenuPanel extends TabGuardComp {\n constructor(wrappedComponent) {\n super();\n this.wrappedComponent = wrappedComponent;\n this.setTemplateFromElement(wrappedComponent.getGui());\n }\n postConstruct() {\n this.initialiseTabGuard({\n onTabKeyDown: e => this.onTabKeyDown(e),\n handleKeyDown: e => this.handleKeyDown(e)\n });\n }\n handleKeyDown(e) {\n if (e.key === KeyCode.ESCAPE) {\n this.closePanel();\n }\n }\n onTabKeyDown(e) {\n if (e.defaultPrevented) {\n return;\n }\n this.closePanel();\n e.preventDefault();\n }\n closePanel() {\n const menuItem = this.parentComponent;\n menuItem.closeSubMenu();\n setTimeout(() => menuItem.getGui().focus(), 0);\n }\n}\n__decorate$W([\n PostConstruct\n], AgMenuPanel.prototype, \"postConstruct\", null);\n\nvar __decorate$V = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass AgMenuItemComponent extends Component {\n constructor(params) {\n super();\n this.params = params;\n this.isActive = false;\n this.subMenuIsOpen = false;\n this.setTemplate(/* html */ `
`);\n }\n init() {\n this.addIcon();\n this.addName();\n this.addShortcut();\n this.addSubMenu();\n this.addTooltip();\n const 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', e => this.onItemSelected(e));\n this.addGuiEventListener('keydown', (e) => {\n if (e.key === KeyCode.ENTER || e.key === KeyCode.SPACE) {\n e.preventDefault();\n this.onItemSelected(e);\n }\n });\n this.addGuiEventListener('mousedown', 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', () => this.onMouseEnter());\n this.addGuiEventListener('mouseleave', () => this.onMouseLeave());\n }\n if (this.params.cssClasses) {\n this.params.cssClasses.forEach(it => this.addCssClass(it));\n }\n }\n isDisabled() {\n return !!this.params.disabled;\n }\n openSubMenu(activateFirstItem = false) {\n this.closeSubMenu();\n if (!this.params.subMenu) {\n return;\n }\n const ePopup = loadTemplate(/* html */ `
`);\n let destroySubMenu;\n if (this.params.subMenu instanceof Array) {\n const currentLevel = getAriaLevel(this.getGui());\n const nextLevel = isNaN(currentLevel) ? 1 : (currentLevel + 1);\n const childMenu = this.createBean(new AgMenuList(nextLevel));\n childMenu.setParentComponent(this);\n childMenu.addMenuItems(this.params.subMenu);\n ePopup.appendChild(childMenu.getGui());\n // bubble menu item selected events\n this.addManagedListener(childMenu, AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED, e => this.dispatchEvent(e));\n childMenu.addGuiEventListener('mouseenter', () => this.cancelDeactivate());\n destroySubMenu = () => this.destroyBean(childMenu);\n if (activateFirstItem) {\n setTimeout(() => childMenu.activateFirstItem(), 0);\n }\n }\n else {\n const { subMenu } = this.params;\n const menuPanel = this.createBean(new AgMenuPanel(subMenu));\n menuPanel.setParentComponent(this);\n const subMenuGui = menuPanel.getGui();\n const mouseEvent = 'mouseenter';\n const mouseEnterListener = () => this.cancelDeactivate();\n subMenuGui.addEventListener(mouseEvent, mouseEnterListener);\n destroySubMenu = () => subMenuGui.removeEventListener(mouseEvent, mouseEnterListener);\n ePopup.appendChild(subMenuGui);\n if (subMenu.afterGuiAttached) {\n setTimeout(() => subMenu.afterGuiAttached(), 0);\n }\n }\n const eGui = this.getGui();\n const positionCallback = this.popupService.positionPopupForMenu.bind(this.popupService, { eventSource: eGui, ePopup });\n const translate = this.localeService.getLocaleTextFunc();\n const 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 = () => {\n if (addPopupRes) {\n addPopupRes.hideFunc();\n }\n this.subMenuIsOpen = false;\n setAriaExpanded(eGui, false);\n destroySubMenu();\n };\n }\n closeSubMenu() {\n if (!this.hideSubMenu) {\n return;\n }\n this.hideSubMenu();\n this.hideSubMenu = null;\n setAriaExpanded(this.getGui(), false);\n }\n isSubMenuOpen() {\n return this.subMenuIsOpen;\n }\n activate(openSubMenu) {\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(() => {\n if (this.isAlive() && this.isActive) {\n this.openSubMenu();\n }\n }, 300);\n }\n this.onItemActivated();\n }\n deactivate() {\n this.cancelDeactivate();\n this.removeCssClass(this.getClassName('active'));\n this.isActive = false;\n if (this.subMenuIsOpen) {\n this.hideSubMenu();\n }\n }\n addIcon() {\n if (!this.params.checked && !this.params.icon && this.params.isCompact) {\n return;\n }\n const icon = loadTemplate(/* html */ ``);\n if (this.params.checked) {\n icon.appendChild(createIconNoSpan('check', this.gridOptionsService));\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 addName() {\n if (!this.params.name && this.params.isCompact) {\n return;\n }\n const name = loadTemplate(/* html */ `${this.params.name || ''}`);\n this.getGui().appendChild(name);\n }\n addTooltip() {\n if (!this.params.tooltip) {\n return;\n }\n this.tooltip = this.params.tooltip;\n if (this.gridOptionsService.is('enableBrowserTooltips')) {\n this.getGui().setAttribute('title', this.tooltip);\n }\n else {\n this.createManagedBean(new CustomTooltipFeature(this));\n }\n }\n getTooltipParams() {\n return {\n location: 'menu',\n value: this.tooltip\n };\n }\n addShortcut() {\n if (!this.params.shortcut && this.params.isCompact) {\n return;\n }\n const shortcut = loadTemplate(/* html */ `${this.params.shortcut || ''}`);\n this.getGui().appendChild(shortcut);\n }\n addSubMenu() {\n if (!this.params.subMenu && this.params.isCompact) {\n return;\n }\n const pointer = loadTemplate(/* html */ ``);\n const eGui = this.getGui();\n if (this.params.subMenu) {\n const iconName = this.gridOptionsService.is('enableRtl') ? 'smallLeft' : 'smallRight';\n setAriaExpanded(eGui, false);\n pointer.appendChild(createIconNoSpan(iconName, this.gridOptionsService));\n }\n eGui.appendChild(pointer);\n }\n onItemSelected(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 const 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\n };\n this.dispatchEvent(e);\n }\n onItemActivated() {\n const event = {\n type: AgMenuItemComponent.EVENT_MENU_ITEM_ACTIVATED,\n menuItem: this,\n };\n this.dispatchEvent(event);\n }\n cancelActivate() {\n if (this.activateTimeoutId) {\n window.clearTimeout(this.activateTimeoutId);\n this.activateTimeoutId = 0;\n }\n }\n cancelDeactivate() {\n if (this.deactivateTimeoutId) {\n window.clearTimeout(this.deactivateTimeoutId);\n this.deactivateTimeoutId = 0;\n }\n }\n onMouseEnter() {\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(() => this.activate(true), AgMenuItemComponent.ACTIVATION_DELAY);\n }\n else {\n // activate immediately\n this.activate(true);\n }\n }\n onMouseLeave() {\n this.cancelActivate();\n if (this.isSubMenuOpen()) {\n // wait to see if the user enters the sub-menu\n this.deactivateTimeoutId = window.setTimeout(() => this.deactivate(), AgMenuItemComponent.ACTIVATION_DELAY);\n }\n else {\n // de-activate immediately\n this.deactivate();\n }\n }\n getClassName(suffix) {\n const prefix = this.params.isCompact ? 'ag-compact-menu-option' : 'ag-menu-option';\n return suffix ? `${prefix}-${suffix}` : prefix;\n }\n}\nAgMenuItemComponent.EVENT_MENU_ITEM_SELECTED = 'menuItemSelected';\nAgMenuItemComponent.EVENT_MENU_ITEM_ACTIVATED = 'menuItemActivated';\nAgMenuItemComponent.ACTIVATION_DELAY = 80;\n__decorate$V([\n Autowired('popupService')\n], AgMenuItemComponent.prototype, \"popupService\", void 0);\n__decorate$V([\n PostConstruct\n], AgMenuItemComponent.prototype, \"init\", null);\n\nvar __decorate$U = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass AgPanel extends Component {\n constructor(config) {\n super(AgPanel.getTemplate(config));\n this.closable = true;\n this.config = config;\n }\n static getTemplate(config) {\n const cssIdentifier = (config && config.cssIdentifier) || 'default';\n return /* html */ `
\n
\n \n
\n
\n
\n
`;\n }\n postConstruct() {\n const { component, closable, hideTitleBar, title, minWidth = 250, width, minHeight = 250, height, centered, popup, x, y } = this.config;\n this.positionableFeature = new PositionableFeature(this.getGui(), {\n minWidth, width, minHeight, height, centered, x, y, popup,\n calculateTopBuffer: () => this.positionableFeature.getHeight() - this.getBodyHeight()\n });\n this.createManagedBean(this.positionableFeature);\n const 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 setDisplayed(this.eTitleBar, false);\n }\n this.addManagedListener(this.eTitleBar, 'mousedown', (e) => {\n const eDocument = this.gridOptionsService.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 const 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 renderComponent() {\n const eGui = this.getGui();\n eGui.focus();\n this.close = () => {\n eGui.parentElement.removeChild(eGui);\n this.destroy();\n };\n }\n getHeight() {\n return this.positionableFeature.getHeight();\n }\n setHeight(height) {\n this.positionableFeature.setHeight(height);\n }\n getWidth() {\n return this.positionableFeature.getWidth();\n }\n setWidth(width) {\n this.positionableFeature.setWidth(width);\n }\n setClosable(closable) {\n if (closable !== this.closable) {\n this.closable = closable;\n }\n if (closable) {\n const closeButtonComp = this.closeButtonComp = new Component(AgPanel.CLOSE_BTN_TEMPLATE);\n this.getContext().createBean(closeButtonComp);\n const eGui = closeButtonComp.getGui();\n const child = createIconNoSpan('close', this.gridOptionsService);\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 const eGui = this.closeButtonComp.getGui();\n eGui.parentElement.removeChild(eGui);\n this.closeButtonComp = this.destroyBean(this.closeButtonComp);\n }\n }\n setBodyComponent(bodyComponent) {\n bodyComponent.setParentComponent(this);\n this.eContentWrapper.appendChild(bodyComponent.getGui());\n }\n addTitleBarButton(button, position) {\n const eTitleBarButtons = this.eTitleBarButtons;\n const buttons = eTitleBarButtons.children;\n const 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 const 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 getBodyHeight() {\n return getInnerHeight(this.eContentWrapper);\n }\n getBodyWidth() {\n return getInnerWidth(this.eContentWrapper);\n }\n setTitle(title) {\n this.eTitle.innerText = title;\n }\n // called when user hits the 'x' in the top right\n onBtClose() {\n this.close();\n }\n destroy() {\n if (this.closeButtonComp) {\n this.closeButtonComp = this.destroyBean(this.closeButtonComp);\n }\n const eGui = this.getGui();\n if (eGui && eGui.offsetParent) {\n this.close();\n }\n super.destroy();\n }\n}\nAgPanel.CLOSE_BTN_TEMPLATE = `
`;\n__decorate$U([\n RefSelector('eContentWrapper')\n], AgPanel.prototype, \"eContentWrapper\", void 0);\n__decorate$U([\n RefSelector('eTitleBar')\n], AgPanel.prototype, \"eTitleBar\", void 0);\n__decorate$U([\n RefSelector('eTitleBarButtons')\n], AgPanel.prototype, \"eTitleBarButtons\", void 0);\n__decorate$U([\n RefSelector('eTitle')\n], AgPanel.prototype, \"eTitle\", void 0);\n__decorate$U([\n PostConstruct\n], AgPanel.prototype, \"postConstruct\", null);\n\nvar __decorate$T = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass AgDialog extends AgPanel {\n constructor(config) {\n super(Object.assign(Object.assign({}, config), { popup: true }));\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 }\n postConstruct() {\n const eGui = this.getGui();\n const { movable, resizable, maximizable } = this.config;\n this.addCssClass('ag-dialog');\n super.postConstruct();\n this.addManagedListener(eGui, 'focusin', (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 renderComponent() {\n const eGui = this.getGui();\n const { alwaysOnTop, modal, title } = this.config;\n const translate = this.localeService.getLocaleTextFunc();\n const addPopupRes = this.popupService.addPopup({\n modal,\n eChild: eGui,\n closeOnEsc: true,\n closedCallback: this.destroy.bind(this),\n alwaysOnTop,\n ariaLabel: title || translate('ariaLabelDialog', 'Dialog')\n });\n if (addPopupRes) {\n this.close = addPopupRes.hideFunc;\n }\n }\n toggleMaximize() {\n const position = this.positionableFeature.getPosition();\n if (this.isMaximized) {\n const { x, y, width, height } = this.lastPosition;\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 refreshMaximizeIcon() {\n setDisplayed(this.maximizeIcon, !this.isMaximized);\n setDisplayed(this.minimizeIcon, this.isMaximized);\n }\n clearMaximizebleListeners() {\n if (this.maximizeListeners.length) {\n this.maximizeListeners.forEach(destroyListener => destroyListener());\n this.maximizeListeners.length = 0;\n }\n if (this.resizeListenerDestroy) {\n this.resizeListenerDestroy();\n this.resizeListenerDestroy = null;\n }\n }\n destroy() {\n this.maximizeButtonComp = this.destroyBean(this.maximizeButtonComp);\n this.clearMaximizebleListeners();\n super.destroy();\n }\n setResizable(resizable) {\n this.positionableFeature.setResizable(resizable);\n }\n setMovable(movable) {\n this.positionableFeature.setMovable(movable, this.eTitleBar);\n }\n setMaximizable(maximizable) {\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 const eTitleBar = this.eTitleBar;\n if (!eTitleBar || maximizable === this.isMaximizable) {\n return;\n }\n const maximizeButtonComp = this.buildMaximizeAndMinimizeElements();\n this.refreshMaximizeIcon();\n maximizeButtonComp.addManagedListener(maximizeButtonComp.getGui(), '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', () => {\n this.isMaximized = false;\n this.refreshMaximizeIcon();\n });\n }\n buildMaximizeAndMinimizeElements() {\n const maximizeButtonComp = this.maximizeButtonComp =\n this.createBean(new Component(/* html */ `
`));\n const eGui = maximizeButtonComp.getGui();\n this.maximizeIcon = createIconNoSpan('maximize', this.gridOptionsService);\n eGui.appendChild(this.maximizeIcon);\n this.maximizeIcon.classList.add('ag-panel-title-bar-button-icon');\n this.minimizeIcon = createIconNoSpan('minimize', this.gridOptionsService);\n eGui.appendChild(this.minimizeIcon);\n this.minimizeIcon.classList.add('ag-panel-title-bar-button-icon');\n return maximizeButtonComp;\n }\n}\n__decorate$T([\n Autowired('popupService')\n], AgDialog.prototype, \"popupService\", void 0);\n\nvar __decorate$S = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 PopupService_1;\nvar DIRECTION;\n(function (DIRECTION) {\n DIRECTION[DIRECTION[\"vertical\"] = 0] = \"vertical\";\n DIRECTION[DIRECTION[\"horizontal\"] = 1] = \"horizontal\";\n})(DIRECTION || (DIRECTION = {}));\nlet instanceIdSeq = 0;\nlet PopupService = PopupService_1 = class PopupService extends BeanStub {\n constructor() {\n super(...arguments);\n this.popupList = [];\n }\n postConstruct() {\n this.ctrlsService.whenReady(p => {\n this.gridCtrl = p.gridCtrl;\n this.addManagedListener(this.gridCtrl, Events.EVENT_KEYBOARD_FOCUS, () => {\n this.popupList.forEach(popup => popup.element.classList.add(FocusService.AG_KEYBOARD_FOCUS));\n });\n this.addManagedListener(this.gridCtrl, Events.EVENT_MOUSE_FOCUS, () => {\n this.popupList.forEach(popup => popup.element.classList.remove(FocusService.AG_KEYBOARD_FOCUS));\n });\n });\n }\n getPopupParent() {\n const ePopupParent = this.gridOptionsService.get('popupParent');\n if (ePopupParent) {\n return ePopupParent;\n }\n return this.gridCtrl.getGui();\n }\n positionPopupForMenu(params) {\n const sourceRect = params.eventSource.getBoundingClientRect();\n const parentRect = this.getParentRect();\n const y = this.keepXYWithinBounds(params.ePopup, sourceRect.top - parentRect.top, DIRECTION.vertical);\n const minWidth = (params.ePopup.clientWidth > 0) ? params.ePopup.clientWidth : 200;\n params.ePopup.style.minWidth = `${minWidth}px`;\n const widthOfParent = parentRect.right - parentRect.left;\n const 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 let x;\n if (this.gridOptionsService.is('enableRtl')) {\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 positionPopupUnderMouseEvent(params) {\n const { ePopup, nudgeX, nudgeY, skipObserver } = params;\n this.positionPopup({\n ePopup: ePopup,\n nudgeX,\n nudgeY,\n keepWithinBounds: true,\n skipObserver,\n updatePosition: () => this.calculatePointerAlign(params.mouseEvent),\n postProcessCallback: () => this.callPostProcessPopup(params.type, params.ePopup, null, params.mouseEvent, params.column, params.rowNode)\n });\n }\n calculatePointerAlign(e) {\n const parentRect = this.getParentRect();\n return {\n x: e.clientX - parentRect.left,\n y: e.clientY - parentRect.top\n };\n }\n positionPopupByComponent(params) {\n const sourceRect = params.eventSource.getBoundingClientRect();\n const alignSide = params.alignSide || 'left';\n const position = params.position || 'over';\n const parentRect = this.getParentRect();\n const updatePosition = () => {\n let x = sourceRect.left - parentRect.left;\n if (alignSide === 'right') {\n x -= (params.ePopup.offsetWidth - sourceRect.width);\n }\n const y = position === 'over'\n ? (sourceRect.top - parentRect.top)\n : (sourceRect.top - parentRect.top + sourceRect.height);\n return { x, y };\n };\n this.positionPopup({\n ePopup: params.ePopup,\n nudgeX: params.nudgeX,\n nudgeY: params.nudgeY,\n keepWithinBounds: params.keepWithinBounds,\n updatePosition,\n postProcessCallback: () => this.callPostProcessPopup(params.type, params.ePopup, params.eventSource, null, params.column, params.rowNode)\n });\n }\n callPostProcessPopup(type, ePopup, eventSource, mouseEvent, column, rowNode) {\n const callback = this.gridOptionsService.getCallback('postProcessPopup');\n if (callback) {\n const 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 positionPopup(params) {\n const { ePopup, keepWithinBounds, nudgeX, nudgeY, skipObserver, updatePosition } = params;\n const lastSize = { width: 0, height: 0 };\n const updatePopupPosition = (fromResizeObserver = false) => {\n let { x, y } = updatePosition();\n if (fromResizeObserver &&\n ePopup.clientWidth === lastSize.width &&\n ePopup.clientHeight === lastSize.height) {\n return;\n }\n lastSize.width = ePopup.clientWidth;\n lastSize.height = ePopup.clientHeight;\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 if (params.postProcessCallback) {\n params.postProcessCallback();\n }\n };\n updatePopupPosition();\n // Mouse tracking will recalculate positioning when moving, so won't need to recalculate here\n if (!skipObserver) {\n // Since rendering popup contents can be asynchronous, use a resize observer to\n // reposition the popup after initial updates to the size of the contents\n const resizeObserverDestroyFunc = this.resizeObserverService.observeResize(ePopup, () => updatePopupPosition(true));\n // Only need to reposition when first open, so can clean up after a bit of time\n setTimeout(() => resizeObserverDestroyFunc(), PopupService_1.WAIT_FOR_POPUP_CONTENT_RESIZE);\n }\n }\n getActivePopups() {\n return this.popupList.map((popup) => popup.element);\n }\n getPopupList() {\n return this.popupList;\n }\n getParentRect() {\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 const eDocument = this.gridOptionsService.getDocument();\n let popupParent = this.getPopupParent();\n if (popupParent === eDocument.body) {\n popupParent = eDocument.documentElement;\n }\n else if (getComputedStyle(popupParent).position === 'static') {\n popupParent = popupParent.offsetParent;\n }\n return getElementRectWithOffset(popupParent);\n }\n keepXYWithinBounds(ePopup, position, direction) {\n const isVertical = direction === DIRECTION.vertical;\n const sizeProperty = isVertical ? 'clientHeight' : 'clientWidth';\n const anchorProperty = isVertical ? 'top' : 'left';\n const offsetProperty = isVertical ? 'offsetHeight' : 'offsetWidth';\n const scrollPositionProperty = isVertical ? 'scrollTop' : 'scrollLeft';\n const eDocument = this.gridOptionsService.getDocument();\n const docElement = eDocument.documentElement;\n const popupParent = this.getPopupParent();\n const parentRect = popupParent.getBoundingClientRect();\n const documentRect = eDocument.documentElement.getBoundingClientRect();\n const isBody = popupParent === eDocument.body;\n const offsetSize = ePopup[offsetProperty];\n const getSize = isVertical ? getAbsoluteHeight : getAbsoluteWidth;\n let sizeOfParent = isBody ? (getSize(docElement) + docElement[scrollPositionProperty]) : popupParent[sizeProperty];\n if (isBody) {\n sizeOfParent -= Math.abs(documentRect[anchorProperty] - parentRect[anchorProperty]);\n }\n const max = sizeOfParent - offsetSize;\n return Math.min(Math.max(position, 0), Math.abs(max));\n }\n addPopup(params) {\n const eDocument = this.gridOptionsService.getDocument();\n const { eChild, ariaLabel, alwaysOnTop, positionCallback, anchorToElement } = params;\n if (!eDocument) {\n console.warn('AG Grid: could not find the document, document is empty');\n return { hideFunc: () => { } };\n }\n const pos = this.popupList.findIndex(popup => popup.element === eChild);\n if (pos !== -1) {\n const popup = this.popupList[pos];\n return { hideFunc: popup.hideFunc };\n }\n this.initialisePopupPosition(eChild);\n const wrapperEl = this.createPopupWrapper(eChild, ariaLabel, !!alwaysOnTop);\n const removeListeners = this.addEventListenersToPopup(Object.assign(Object.assign({}, params), { wrapperEl }));\n if (positionCallback) {\n positionCallback();\n }\n this.addPopupToPopupList(eChild, wrapperEl, removeListeners, anchorToElement);\n return {\n hideFunc: removeListeners\n };\n }\n initialisePopupPosition(element) {\n const ePopupParent = this.getPopupParent();\n const ePopupParentRect = ePopupParent.getBoundingClientRect();\n if (!exists(element.style.top)) {\n element.style.top = `${ePopupParentRect.top * -1}px`;\n }\n if (!exists(element.style.left)) {\n element.style.left = `${ePopupParentRect.left * -1}px`;\n }\n }\n createPopupWrapper(element, ariaLabel, alwaysOnTop) {\n const ePopupParent = this.getPopupParent();\n // add env CSS class to child, in case user provided a popup parent, which means\n // theme class may be missing\n const eWrapper = document.createElement('div');\n const { allThemes } = this.environment.getTheme();\n if (allThemes.length) {\n eWrapper.classList.add(...allThemes);\n }\n eWrapper.classList.add('ag-popup');\n element.classList.add(this.gridOptionsService.is('enableRtl') ? 'ag-rtl' : 'ag-ltr', 'ag-popup-child');\n if (!element.hasAttribute('role')) {\n setAriaRole(element, 'dialog');\n }\n setAriaLabel(element, ariaLabel);\n if (this.focusService.isKeyboardMode()) {\n element.classList.add(FocusService.AG_KEYBOARD_FOCUS);\n }\n eWrapper.appendChild(element);\n ePopupParent.appendChild(eWrapper);\n if (alwaysOnTop) {\n this.setAlwaysOnTop(element, true);\n }\n else {\n this.bringPopupToFront(element);\n }\n return eWrapper;\n }\n addEventListenersToPopup(params) {\n const eDocument = this.gridOptionsService.getDocument();\n const ePopupParent = this.getPopupParent();\n const { wrapperEl, eChild: popupEl, click: pointerEvent, closedCallback, afterGuiAttached, closeOnEsc, modal } = params;\n let popupHidden = false;\n const hidePopupOnKeyboardEvent = (event) => {\n if (!wrapperEl.contains(eDocument.activeElement)) {\n return;\n }\n const key = event.key;\n if (key === KeyCode.ESCAPE) {\n removeListeners({ keyboardEvent: event });\n }\n };\n const hidePopupOnMouseEvent = (event) => removeListeners({ mouseEvent: event });\n const hidePopupOnTouchEvent = (event) => removeListeners({ touchEvent: event });\n const removeListeners = (popupParams = {}) => {\n const { mouseEvent, touchEvent, keyboardEvent } = popupParams;\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, touchEvent }, popupEl) ||\n // if the event to close is actually the open event, then ignore it\n this.isEventSameChainAsOriginalEvent({ originalMouseEvent: pointerEvent, mouseEvent, 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(wrapperEl);\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.removePopupFromPopupList(popupEl);\n };\n if (afterGuiAttached) {\n afterGuiAttached({ hidePopup: removeListeners });\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(() => {\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 return removeListeners;\n }\n addPopupToPopupList(element, wrapperEl, removeListeners, anchorToElement) {\n this.popupList.push({\n element: element,\n wrapper: wrapperEl,\n hideFunc: removeListeners,\n instanceId: instanceIdSeq++,\n isAnchored: !!anchorToElement\n });\n if (anchorToElement) {\n this.setPopupPositionRelatedToElement(element, anchorToElement);\n }\n }\n setPopupPositionRelatedToElement(popupEl, relativeElement) {\n const popup = this.popupList.find(p => p.element === popupEl);\n if (!popup) {\n return;\n }\n if (popup.stopAnchoringPromise) {\n popup.stopAnchoringPromise.then(destroyFunc => destroyFunc && destroyFunc());\n }\n popup.stopAnchoringPromise = undefined;\n popup.isAnchored = false;\n if (!relativeElement) {\n return;\n }\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 const destroyPositionTracker = this.keepPopupPositionedRelativeTo({\n element: relativeElement,\n ePopup: popupEl,\n hidePopup: popup.hideFunc\n });\n popup.stopAnchoringPromise = destroyPositionTracker;\n popup.isAnchored = true;\n return destroyPositionTracker;\n }\n removePopupFromPopupList(element) {\n this.setPopupPositionRelatedToElement(element, null);\n this.popupList = this.popupList.filter(p => p.element !== element);\n }\n keepPopupPositionedRelativeTo(params) {\n const eParent = this.getPopupParent();\n const parentRect = eParent.getBoundingClientRect();\n const { element, ePopup } = params;\n const sourceRect = element.getBoundingClientRect();\n const initialDiffTop = parentRect.top - sourceRect.top;\n const initialDiffLeft = parentRect.left - sourceRect.left;\n let lastDiffTop = initialDiffTop;\n let lastDiffLeft = initialDiffLeft;\n const topPx = ePopup.style.top;\n const top = parseInt(topPx.substring(0, topPx.length - 1), 10);\n const leftPx = ePopup.style.left;\n const left = parseInt(leftPx.substring(0, leftPx.length - 1), 10);\n return new AgPromise(resolve => {\n this.getFrameworkOverrides().setInterval(() => {\n const pRect = eParent.getBoundingClientRect();\n const sRect = element.getBoundingClientRect();\n const elementNotInDom = sRect.top == 0 && sRect.left == 0 && sRect.height == 0 && sRect.width == 0;\n if (elementNotInDom) {\n params.hidePopup();\n return;\n }\n const currentDiffTop = pRect.top - sRect.top;\n if (currentDiffTop != lastDiffTop) {\n const newTop = this.keepXYWithinBounds(ePopup, top + initialDiffTop - currentDiffTop, DIRECTION.vertical);\n ePopup.style.top = `${newTop}px`;\n }\n lastDiffTop = currentDiffTop;\n const currentDiffLeft = pRect.left - sRect.left;\n if (currentDiffLeft != lastDiffLeft) {\n const newLeft = this.keepXYWithinBounds(ePopup, left + initialDiffLeft - currentDiffLeft, DIRECTION.horizontal);\n ePopup.style.left = `${newLeft}px`;\n }\n lastDiffLeft = currentDiffLeft;\n }, 200).then(intervalId => {\n const result = () => {\n if (intervalId != null) {\n window.clearInterval(intervalId);\n }\n };\n resolve(result);\n });\n });\n }\n hasAnchoredPopup() {\n return this.popupList.some(popup => popup.isAnchored);\n }\n isEventFromCurrentPopup(params, target) {\n const { mouseEvent, touchEvent } = params;\n const event = mouseEvent ? mouseEvent : touchEvent;\n if (!event) {\n return false;\n }\n const indexOfThisChild = this.popupList.findIndex(popup => popup.element === target);\n if (indexOfThisChild === -1) {\n return false;\n }\n for (let i = indexOfThisChild; i < this.popupList.length; i++) {\n const 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 isElementWithinCustomPopup(el) {\n const eDocument = this.gridOptionsService.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 isEventSameChainAsOriginalEvent(params) {\n const { originalMouseEvent, mouseEvent, touchEvent } = params;\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 let 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 const screenX = mouseEvent ? mouseEvent.screenX : 0;\n const screenY = mouseEvent ? mouseEvent.screenY : 0;\n const xMatch = Math.abs(originalMouseEvent.screenX - screenX) < 5;\n const yMatch = Math.abs(originalMouseEvent.screenY - screenY) < 5;\n if (xMatch && yMatch) {\n return true;\n }\n }\n return false;\n }\n getWrapper(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 setAlwaysOnTop(ePopup, alwaysOnTop) {\n const 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 bringPopupToFront(ePopup) {\n const parent = this.getPopupParent();\n const popupList = Array.prototype.slice.call(parent.querySelectorAll('.ag-popup'));\n const popupLen = popupList.length;\n const alwaysOnTopList = Array.prototype.slice.call(parent.querySelectorAll('.ag-popup.ag-always-on-top'));\n const onTopLength = alwaysOnTopList.length;\n const eWrapper = this.getWrapper(ePopup);\n if (!eWrapper || popupLen <= 1 || !parent.contains(ePopup)) {\n return;\n }\n const pos = popupList.indexOf(eWrapper);\n const innerEls = eWrapper.querySelectorAll('div');\n const innerElsScrollMap = [];\n innerEls.forEach(el => {\n if (el.scrollTop !== 0) {\n innerElsScrollMap.push([el, el.scrollTop]);\n }\n });\n if (onTopLength) {\n const 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 const currentEl = innerElsScrollMap.pop();\n currentEl[0].scrollTop = currentEl[1];\n }\n const params = {\n type: 'popupToFront',\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n eWrapper\n };\n this.eventService.dispatchEvent(params);\n }\n};\nPopupService.WAIT_FOR_POPUP_CONTENT_RESIZE = 200;\n__decorate$S([\n Autowired('focusService')\n], PopupService.prototype, \"focusService\", void 0);\n__decorate$S([\n Autowired('ctrlsService')\n], PopupService.prototype, \"ctrlsService\", void 0);\n__decorate$S([\n Autowired('resizeObserverService')\n], PopupService.prototype, \"resizeObserverService\", void 0);\n__decorate$S([\n PostConstruct\n], PopupService.prototype, \"postConstruct\", null);\nPopupService = PopupService_1 = __decorate$S([\n Bean('popupService')\n], PopupService);\n\nvar __decorate$R = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass VirtualList extends TabGuardComp {\n constructor(cssIdentifier = 'default', ariaRole = 'listbox', listName) {\n super(VirtualList.getTemplate(cssIdentifier));\n this.cssIdentifier = cssIdentifier;\n this.ariaRole = ariaRole;\n this.listName = listName;\n this.renderedRows = new Map();\n this.rowHeight = 20;\n }\n postConstruct() {\n this.addScrollListener();\n this.rowHeight = this.getItemHeight();\n this.addResizeObserver();\n this.initialiseTabGuard({\n onFocusIn: (e) => this.onFocusIn(e),\n onFocusOut: (e) => this.onFocusOut(e),\n focusInnerElement: (fromBottom) => this.focusInnerElement(fromBottom),\n onTabKeyDown: e => this.onTabKeyDown(e),\n handleKeyDown: e => this.handleKeyDown(e)\n });\n this.setAriaProperties();\n this.addManagedListener(this.eventService, Events.EVENT_GRID_STYLES_CHANGED, this.onGridStylesChanged.bind(this));\n }\n onGridStylesChanged() {\n this.rowHeight = this.getItemHeight();\n this.refresh();\n }\n setAriaProperties() {\n const translate = this.localeService.getLocaleTextFunc();\n const listName = translate('ariaDefaultListName', this.listName || 'List');\n const ariaEl = this.eContainer;\n setAriaRole(ariaEl, this.ariaRole);\n setAriaLabel(ariaEl, listName);\n }\n addResizeObserver() {\n const listener = () => this.drawVirtualRows();\n const destroyObserver = this.resizeObserverService.observeResize(this.getGui(), listener);\n this.addDestroyFunc(destroyObserver);\n }\n focusInnerElement(fromBottom) {\n this.focusRow(fromBottom ? this.model.getRowCount() - 1 : 0);\n }\n onFocusIn(e) {\n const target = e.target;\n if (target.classList.contains('ag-virtual-list-item')) {\n this.lastFocusedRowIndex = getAriaPosInSet(target) - 1;\n }\n return false;\n }\n onFocusOut(e) {\n if (!this.getFocusableElement().contains(e.relatedTarget)) {\n this.lastFocusedRowIndex = null;\n }\n return false;\n }\n handleKeyDown(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 onTabKeyDown(e) {\n if (this.navigate(e.shiftKey)) {\n e.preventDefault();\n }\n else {\n stopPropagationForAgGrid(e);\n this.forceFocusOutOfContainer(e.shiftKey);\n }\n }\n navigate(up) {\n if (this.lastFocusedRowIndex == null) {\n return false;\n }\n const 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 getLastFocusedRow() {\n return this.lastFocusedRowIndex;\n }\n focusRow(rowNumber) {\n this.ensureIndexVisible(rowNumber);\n window.setTimeout(() => {\n if (!this.isAlive()) {\n return;\n }\n const renderedRow = this.renderedRows.get(rowNumber);\n if (renderedRow) {\n renderedRow.eDiv.focus();\n }\n }, 10);\n }\n getComponentAt(rowIndex) {\n const comp = this.renderedRows.get(rowIndex);\n return comp && comp.rowComponent;\n }\n forEachRenderedRow(func) {\n this.renderedRows.forEach((value, key) => func(value.rowComponent, key));\n }\n static getTemplate(cssIdentifier) {\n return /* html */ `\n
\n
\n
`;\n }\n getItemHeight() {\n return this.environment.getListItemHeight();\n }\n ensureIndexVisible(index) {\n const 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 const rowTopPixel = index * this.rowHeight;\n const rowBottomPixel = rowTopPixel + this.rowHeight;\n const eGui = this.getGui();\n const viewportTopPixel = eGui.scrollTop;\n const viewportHeight = eGui.offsetHeight;\n const viewportBottomPixel = viewportTopPixel + viewportHeight;\n const viewportScrolledPastRow = viewportTopPixel > rowTopPixel;\n const 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 const newScrollPosition = rowBottomPixel - viewportHeight;\n eGui.scrollTop = newScrollPosition;\n }\n }\n setComponentCreator(componentCreator) {\n this.componentCreator = componentCreator;\n }\n setComponentUpdater(componentUpdater) {\n this.componentUpdater = componentUpdater;\n }\n getRowHeight() {\n return this.rowHeight;\n }\n getScrollTop() {\n return this.getGui().scrollTop;\n }\n setRowHeight(rowHeight) {\n this.rowHeight = rowHeight;\n this.refresh();\n }\n refresh(softRefresh) {\n if (this.model == null || !this.isAlive()) {\n return;\n }\n const 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(() => this.eContainer.clientHeight >= rowCount * this.rowHeight, () => {\n if (!this.isAlive()) {\n return;\n }\n if (this.canSoftRefresh(softRefresh)) {\n this.drawVirtualRows(true);\n }\n else {\n this.clearVirtualRows();\n this.drawVirtualRows();\n }\n });\n }\n canSoftRefresh(softRefresh) {\n return !!(softRefresh && this.renderedRows.size && typeof this.model.areRowsEqual === 'function' && this.componentUpdater);\n }\n clearVirtualRows() {\n this.renderedRows.forEach((_, rowIndex) => this.removeRow(rowIndex));\n }\n drawVirtualRows(softRefresh) {\n if (!this.isAlive()) {\n return;\n }\n const gui = this.getGui();\n const topPixel = gui.scrollTop;\n const bottomPixel = topPixel + gui.offsetHeight;\n const firstRow = Math.floor(topPixel / this.rowHeight);\n const lastRow = Math.floor(bottomPixel / this.rowHeight);\n this.ensureRowsRendered(firstRow, lastRow, softRefresh);\n }\n ensureRowsRendered(start, finish, softRefresh) {\n // remove any rows that are no longer required\n this.renderedRows.forEach((_, rowIndex) => {\n if ((rowIndex < start || rowIndex > finish) && rowIndex !== this.lastFocusedRowIndex) {\n this.removeRow(rowIndex);\n }\n });\n if (softRefresh) {\n // refresh any existing rows\n this.refreshRows();\n }\n // insert any required new rows\n for (let 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 insertRow(rowIndex) {\n const value = this.model.getRow(rowIndex);\n const 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 const 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 const rowComponent = this.componentCreator(value, eDiv);\n rowComponent.addGuiEventListener('focusin', () => 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, eDiv, value });\n }\n removeRow(rowIndex) {\n const component = this.renderedRows.get(rowIndex);\n this.eContainer.removeChild(component.eDiv);\n this.destroyBean(component.rowComponent);\n this.renderedRows.delete(rowIndex);\n }\n refreshRows() {\n const rowCount = this.model.getRowCount();\n this.renderedRows.forEach((row, rowIndex) => {\n var _a, _b;\n if (rowIndex >= rowCount) {\n this.removeRow(rowIndex);\n }\n else {\n const newValue = this.model.getRow(rowIndex);\n if ((_b = (_a = this.model).areRowsEqual) === null || _b === void 0 ? void 0 : _b.call(_a, row.value, newValue)) {\n this.componentUpdater(newValue, row.rowComponent);\n }\n else {\n // to be replaced later\n this.removeRow(rowIndex);\n }\n }\n });\n }\n addScrollListener() {\n this.addGuiEventListener('scroll', () => this.drawVirtualRows(), { passive: true });\n }\n setModel(model) {\n this.model = model;\n }\n destroy() {\n if (!this.isAlive()) {\n return;\n }\n this.clearVirtualRows();\n super.destroy();\n }\n}\n__decorate$R([\n Autowired('resizeObserverService')\n], VirtualList.prototype, \"resizeObserverService\", void 0);\n__decorate$R([\n RefSelector('eContainer')\n], VirtualList.prototype, \"eContainer\", void 0);\n__decorate$R([\n PostConstruct\n], VirtualList.prototype, \"postConstruct\", null);\n\nconst OUTSIDE_ANGULAR_EVENTS = ['mouseover', 'mouseout', 'mouseenter', 'mouseleave', 'mousemove'];\nconst PASSIVE_EVENTS = ['touchstart', 'touchend', 'touchmove', 'touchcancel'];\n/** The base frameworks, eg React & Angular, override this bean with implementations specific to their requirement. */\nclass VanillaFrameworkOverrides {\n constructor() {\n this.renderingEngine = \"vanilla\";\n this.isOutsideAngular = (eventType) => includes(OUTSIDE_ANGULAR_EVENTS, eventType);\n }\n // for Vanilla JS, we use simple timeout\n setTimeout(action, timeout) {\n window.setTimeout(action, timeout);\n }\n setInterval(action, timeout) {\n return new AgPromise(resolve => {\n resolve(window.setInterval(action, timeout));\n });\n }\n // for Vanilla JS, we just add the event to the element\n addEventListener(element, type, listener, useCapture) {\n const 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 dispatchEvent(eventType, listener, global = false) {\n listener();\n }\n frameworkComponent(name) {\n return null;\n }\n isFrameworkComponent(comp) {\n return false;\n }\n}\n\nvar __decorate$Q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet CellNavigationService = class CellNavigationService extends BeanStub {\n // returns null if no cell to focus on, ie at the end of the grid\n getNextCellToFocus(key, focusedCell, ctrlPressed = false) {\n if (ctrlPressed) {\n return this.getNextCellToFocusWithCtrlPressed(key, focusedCell);\n }\n return this.getNextCellToFocusWithoutCtrlPressed(key, focusedCell);\n }\n getNextCellToFocusWithCtrlPressed(key, focusedCell) {\n const upKey = key === KeyCode.UP;\n const downKey = key === KeyCode.DOWN;\n const leftKey = key === KeyCode.LEFT;\n let column;\n let rowIndex;\n if (upKey || downKey) {\n rowIndex = upKey ? this.paginationProxy.getPageFirstRow() : this.paginationProxy.getPageLastRow();\n column = focusedCell.column;\n }\n else {\n const allColumns = this.columnModel.getAllDisplayedColumns();\n const isRtl = this.gridOptionsService.is('enableRtl');\n rowIndex = focusedCell.rowIndex;\n column = leftKey !== isRtl ? allColumns[0] : last(allColumns);\n }\n return {\n rowIndex,\n rowPinned: null,\n column\n };\n }\n getNextCellToFocusWithoutCtrlPressed(key, focusedCell) {\n // starting with the provided cell, we keep moving until we find a cell we can\n // focus on.\n let pointer = focusedCell;\n let 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.gridOptionsService.is('enableRtl')) {\n pointer = this.getCellToLeft(pointer);\n }\n else {\n pointer = this.getCellToRight(pointer);\n }\n break;\n case KeyCode.LEFT:\n if (this.gridOptionsService.is('enableRtl')) {\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 isCellGoodToFocusOn(gridCell) {\n const column = gridCell.column;\n let rowNode;\n switch (gridCell.rowPinned) {\n case 'top':\n rowNode = this.pinnedRowModel.getPinnedTopRow(gridCell.rowIndex);\n break;\n case '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 const suppressNavigable = column.isSuppressNavigable(rowNode);\n return !suppressNavigable;\n }\n getCellToLeft(lastCell) {\n if (!lastCell) {\n return null;\n }\n const 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 getCellToRight(lastCell) {\n if (!lastCell) {\n return null;\n }\n const 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 getRowBelow(rowPosition) {\n // if already on top row, do nothing\n const index = rowPosition.rowIndex;\n const pinned = rowPosition.rowPinned;\n if (this.isLastRowInContainer(rowPosition)) {\n switch (pinned) {\n case 'bottom':\n // never any rows after pinned bottom\n return null;\n case '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('bottom')) {\n return { rowIndex: 0, rowPinned: '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('bottom')) {\n return { rowIndex: 0, rowPinned: 'bottom' };\n }\n return null;\n }\n }\n const rowNode = this.rowModel.getRow(rowPosition.rowIndex);\n const nextStickyPosition = this.getNextStickyPosition(rowNode);\n if (nextStickyPosition) {\n return nextStickyPosition;\n }\n return { rowIndex: index + 1, rowPinned: pinned };\n }\n getNextStickyPosition(rowNode, up) {\n if (!this.gridOptionsService.isGroupRowsSticky() || !rowNode || !rowNode.sticky) {\n return;\n }\n const stickyRowCtrls = [...this.rowRenderer.getStickyTopRowCtrls()].sort((a, b) => a.getRowNode().rowIndex - b.getRowNode().rowIndex);\n const diff = up ? -1 : 1;\n const idx = stickyRowCtrls.findIndex(ctrl => ctrl.getRowNode().rowIndex === rowNode.rowIndex);\n const nextCtrl = stickyRowCtrls[idx + diff];\n if (nextCtrl) {\n return { rowIndex: nextCtrl.getRowNode().rowIndex, rowPinned: null };\n }\n }\n getCellBelow(lastCell) {\n if (!lastCell) {\n return null;\n }\n const 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 isLastRowInContainer(rowPosition) {\n const pinned = rowPosition.rowPinned;\n const index = rowPosition.rowIndex;\n if (pinned === 'top') {\n const lastTopIndex = this.pinnedRowModel.getPinnedTopRowData().length - 1;\n return lastTopIndex <= index;\n }\n if (pinned === 'bottom') {\n const lastBottomIndex = this.pinnedRowModel.getPinnedBottomRowData().length - 1;\n return lastBottomIndex <= index;\n }\n const lastBodyIndex = this.paginationProxy.getPageLastRow();\n return lastBodyIndex <= index;\n }\n getRowAbove(rowPosition) {\n // if already on top row, do nothing\n const index = rowPosition.rowIndex;\n const pinned = rowPosition.rowPinned;\n const isFirstRow = pinned ? index === 0 : index === this.paginationProxy.getPageFirstRow();\n // if already on top row, do nothing\n if (isFirstRow) {\n if (pinned === 'top') {\n return null;\n }\n if (!pinned) {\n if (this.pinnedRowModel.isRowsToRender('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('top')) {\n return this.getLastFloatingTopRow();\n }\n return null;\n }\n const rowNode = this.rowModel.getRow(rowPosition.rowIndex);\n const nextStickyPosition = this.getNextStickyPosition(rowNode, true);\n if (nextStickyPosition) {\n return nextStickyPosition;\n }\n return { rowIndex: index - 1, rowPinned: pinned };\n }\n getCellAbove(lastCell) {\n if (!lastCell) {\n return null;\n }\n const 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 getLastBodyCell() {\n const lastBodyRow = this.paginationProxy.getPageLastRow();\n return { rowIndex: lastBodyRow, rowPinned: null };\n }\n getLastFloatingTopRow() {\n const lastFloatingRow = this.pinnedRowModel.getPinnedTopRowData().length - 1;\n return { rowIndex: lastFloatingRow, rowPinned: 'top' };\n }\n getNextTabbedCell(gridCell, backwards) {\n if (backwards) {\n return this.getNextTabbedCellBackwards(gridCell);\n }\n return this.getNextTabbedCellForwards(gridCell);\n }\n getNextTabbedCellForwards(gridCell) {\n const displayedColumns = this.columnModel.getAllDisplayedColumns();\n let newRowIndex = gridCell.rowIndex;\n let newFloating = gridCell.rowPinned;\n // move along to the next cell\n let 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 const 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 getNextTabbedCellBackwards(gridCell) {\n const displayedColumns = this.columnModel.getAllDisplayedColumns();\n let newRowIndex = gridCell.rowIndex;\n let newFloating = gridCell.rowPinned;\n // move along to the next cell\n let 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 const 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};\n__decorate$Q([\n Autowired('columnModel')\n], CellNavigationService.prototype, \"columnModel\", void 0);\n__decorate$Q([\n Autowired('rowModel')\n], CellNavigationService.prototype, \"rowModel\", void 0);\n__decorate$Q([\n Autowired('rowRenderer')\n], CellNavigationService.prototype, \"rowRenderer\", void 0);\n__decorate$Q([\n Autowired('pinnedRowModel')\n], CellNavigationService.prototype, \"pinnedRowModel\", void 0);\n__decorate$Q([\n Autowired('paginationProxy')\n], CellNavigationService.prototype, \"paginationProxy\", void 0);\nCellNavigationService = __decorate$Q([\n Bean('cellNavigationService')\n], CellNavigationService);\n\nvar __decorate$P = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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$6 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nlet AlignedGridsService = class AlignedGridsService extends BeanStub {\n constructor() {\n super(...arguments);\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 }\n setBeans(loggerFactory) {\n this.logger = loggerFactory.create('AlignedGridsService');\n }\n init() {\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 fireEvent(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 const otherGrids = this.gridOptionsService.get('alignedGrids');\n if (otherGrids) {\n otherGrids.forEach((otherGridOptions) => {\n if (otherGridOptions.api) {\n const 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 onEvent(callback) {\n this.consuming = true;\n callback();\n this.consuming = false;\n }\n fireColumnEvent(event) {\n this.fireEvent(alignedGridsService => {\n alignedGridsService.onColumnEvent(event);\n });\n }\n fireScrollEvent(event) {\n if (event.direction !== 'horizontal') {\n return;\n }\n this.fireEvent(alignedGridsService => {\n alignedGridsService.onScrollEvent(event);\n });\n }\n onScrollEvent(event) {\n this.onEvent(() => {\n const gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n gridBodyCon.getScrollFeature().setHorizontalScrollPosition(event.left, true);\n });\n }\n getMasterColumns(event) {\n const result = [];\n if (event.columns) {\n event.columns.forEach((column) => {\n result.push(column);\n });\n }\n else if (event.column) {\n result.push(event.column);\n }\n return result;\n }\n getColumnIds(event) {\n const result = [];\n if (event.columns) {\n event.columns.forEach(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 onColumnEvent(event) {\n this.onEvent(() => {\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 const colEvent = event;\n this.processColumnEvent(colEvent);\n break;\n case Events.EVENT_COLUMN_GROUP_OPENED:\n const 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 processGroupOpenedEvent(groupOpenedEvent) {\n // likewise for column group\n const masterColumnGroup = groupOpenedEvent.columnGroup;\n let otherColumnGroup = null;\n if (masterColumnGroup) {\n const 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 processColumnEvent(colEvent) {\n var _a;\n // the column in the event is from the master grid. need to\n // look up the equivalent from this (other) grid\n const masterColumn = colEvent.column;\n let 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 const masterColumns = this.getMasterColumns(colEvent);\n switch (colEvent.type) {\n case Events.EVENT_COLUMN_MOVED:\n // when the user moves columns via applyColumnState, 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 const movedEvent = colEvent;\n const srcColState = colEvent.columnApi.getColumnState();\n const destColState = srcColState.map(s => ({ 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 applyColumnState, 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 const visibleEvent = colEvent;\n const srcColState = colEvent.columnApi.getColumnState();\n const destColState = srcColState.map(s => ({ 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 const pinnedEvent = colEvent;\n const srcColState = colEvent.columnApi.getColumnState();\n const destColState = srcColState.map(s => ({ 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 const resizedEvent = colEvent;\n const columnWidths = {};\n masterColumns.forEach((column) => {\n this.logger.log(`onColumnEvent-> processing ${colEvent.type} actualWidth = ${column.getActualWidth()}`);\n columnWidths[column.getId()] = { key: column.getColId(), newWidth: column.getActualWidth() };\n });\n // don't set flex columns width\n (_a = resizedEvent.flexColumns) === null || _a === void 0 ? void 0 : _a.forEach(col => {\n if (columnWidths[col.getId()]) {\n delete columnWidths[col.getId()];\n }\n });\n this.columnModel.setColumnWidths(Object.values(columnWidths), false, resizedEvent.finished, \"alignedGridChanged\");\n break;\n }\n const gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n const isVerticalScrollShowing = gridBodyCon.isVerticalScrollShowing();\n const alignedGrids = this.gridOptionsService.get('alignedGrids');\n if (alignedGrids) {\n alignedGrids.forEach((grid) => {\n if (grid.api) {\n grid.api.setAlwaysShowVerticalScroll(isVerticalScrollShowing);\n }\n });\n }\n }\n};\n__decorate$P([\n Autowired('columnModel')\n], AlignedGridsService.prototype, \"columnModel\", void 0);\n__decorate$P([\n Autowired('ctrlsService')\n], AlignedGridsService.prototype, \"ctrlsService\", void 0);\n__decorate$P([\n __param$6(0, Qualifier('loggerFactory'))\n], AlignedGridsService.prototype, \"setBeans\", null);\n__decorate$P([\n PostConstruct\n], AlignedGridsService.prototype, \"init\", null);\nAlignedGridsService = __decorate$P([\n Bean('alignedGridsService')\n], AlignedGridsService);\n\nvar __decorate$O = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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$5 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nlet SelectionService = class SelectionService extends BeanStub {\n setBeans(loggerFactory) {\n this.logger = loggerFactory.create('selectionService');\n this.reset();\n }\n init() {\n this.groupSelectsChildren = this.gridOptionsService.is('groupSelectsChildren');\n this.addManagedPropertyListener('groupSelectsChildren', (propChange) => this.groupSelectsChildren = propChange.currentValue);\n this.rowSelection = this.gridOptionsService.get('rowSelection');\n this.addManagedPropertyListener('rowSelection', (propChange) => this.rowSelection = propChange.currentValue);\n this.addManagedListener(this.eventService, Events.EVENT_ROW_SELECTED, this.onRowSelected.bind(this));\n }\n isMultiselect() {\n return this.rowSelection === 'multiple';\n }\n setNodesSelected(params) {\n var _a;\n if (params.nodes.length === 0)\n return 0;\n const { newValue, clearSelection, suppressFinishActions, rangeSelect, event, source = 'api', } = params;\n if (params.nodes.length > 1 && !this.isMultiselect()) {\n console.warn(`AG Grid: cannot multi select while rowSelection='single'`);\n return 0;\n }\n // groupSelectsFiltered only makes sense when group selects children\n const groupSelectsFiltered = this.groupSelectsChildren && (params.groupSelectsFiltered === true);\n // if node is a footer, we don't do selection, just pass the info\n // to the sibling (the parent of the group)\n const nodes = params.nodes.map(node => node.footer ? node.sibling : node);\n if (rangeSelect) {\n if (params.nodes.length > 1) {\n console.warn('AG Grid: cannot range select while selecting multiple rows');\n return 0;\n }\n const lastSelectedNode = this.getLastSelectedNode();\n if (lastSelectedNode) {\n // if node is a footer, we don't do selection, just pass the info\n // to the sibling (the parent of the group)\n const node = nodes[0];\n const newRowClicked = lastSelectedNode !== node;\n if (newRowClicked && this.isMultiselect()) {\n const nodesChanged = this.selectRange(node, lastSelectedNode, params.newValue, source);\n this.setLastSelectedNode(node);\n return nodesChanged;\n }\n }\n }\n let updatedCount = 0;\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\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 const skipThisNode = groupSelectsFiltered && node.group;\n if (!skipThisNode) {\n const thisNodeWasSelected = node.selectThisNode(newValue, params.event, source);\n if (thisNodeWasSelected) {\n updatedCount++;\n }\n }\n if (this.groupSelectsChildren && ((_a = node.childrenAfterGroup) === null || _a === void 0 ? void 0 : _a.length)) {\n updatedCount += this.selectChildren(node, newValue, groupSelectsFiltered, source);\n }\n }\n // clear other nodes if not doing multi select\n if (!suppressFinishActions) {\n const clearOtherNodes = newValue && (clearSelection || !this.isMultiselect());\n if (clearOtherNodes) {\n updatedCount += this.clearOtherNodes(nodes[0], source);\n }\n // only if we selected something, then update groups and fire events\n if (updatedCount > 0) {\n this.updateGroupsFromChildrenSelections(source);\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 const event = {\n type: Events.EVENT_SELECTION_CHANGED,\n source\n };\n this.eventService.dispatchEvent(event);\n }\n // so if user next does shift-select, we know where to start the selection from\n if (newValue) {\n this.setLastSelectedNode(nodes[nodes.length - 1]);\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 selectRange(fromNode, toNode, value = true, source) {\n const nodesToSelect = this.rowModel.getNodesInRangeForSelection(fromNode, toNode);\n let updatedCount = 0;\n nodesToSelect.forEach(rowNode => {\n if (rowNode.group && this.groupSelectsChildren || (value === false && fromNode === rowNode)) {\n return;\n }\n const nodeWasSelected = rowNode.selectThisNode(value, undefined, source);\n if (nodeWasSelected) {\n updatedCount++;\n }\n });\n this.updateGroupsFromChildrenSelections(source);\n const event = {\n type: Events.EVENT_SELECTION_CHANGED,\n source\n };\n this.eventService.dispatchEvent(event);\n return updatedCount;\n }\n selectChildren(node, newValue, groupSelectsFiltered, source) {\n const children = groupSelectsFiltered ? node.childrenAfterAggFilter : node.childrenAfterGroup;\n if (_.missing(children)) {\n return 0;\n }\n return this.setNodesSelected({\n newValue: newValue,\n clearSelection: false,\n suppressFinishActions: true,\n groupSelectsFiltered,\n source,\n nodes: children,\n });\n }\n setLastSelectedNode(rowNode) {\n this.lastSelectedNode = rowNode;\n }\n getLastSelectedNode() {\n return this.lastSelectedNode;\n }\n getSelectedNodes() {\n const selectedNodes = [];\n iterateObject(this.selectedNodes, (key, rowNode) => {\n if (rowNode) {\n selectedNodes.push(rowNode);\n }\n });\n return selectedNodes;\n }\n getSelectedRows() {\n const selectedRows = [];\n iterateObject(this.selectedNodes, (key, rowNode) => {\n if (rowNode && rowNode.data) {\n selectedRows.push(rowNode.data);\n }\n });\n return selectedRows;\n }\n getSelectionCount() {\n return Object.values(this.selectedNodes).length;\n }\n /**\n * This method is used by the CSRM to remove groups which are being disposed of,\n * events do not need fired in this case\n */\n filterFromSelection(predicate) {\n const newSelectedNodes = {};\n Object.entries(this.selectedNodes).forEach(([key, node]) => {\n const passesPredicate = node && predicate(node);\n if (passesPredicate) {\n newSelectedNodes[key] = node;\n }\n });\n this.selectedNodes = newSelectedNodes;\n }\n // should only be called if groupSelectsChildren=true\n updateGroupsFromChildrenSelections(source, changedPath) {\n // we only do this when group selection state depends on selected children\n if (!this.groupSelectsChildren) {\n return false;\n }\n // also only do it if CSRM (code should never allow this anyway)\n if (this.rowModel.getType() !== 'clientSide') {\n return false;\n }\n const clientSideRowModel = this.rowModel;\n const rootNode = clientSideRowModel.getRootNode();\n if (!changedPath) {\n changedPath = new ChangedPath(true, rootNode);\n changedPath.setInactive();\n }\n let selectionChanged = false;\n changedPath.forEachChangedNodeDepthFirst(rowNode => {\n if (rowNode !== rootNode) {\n const selected = rowNode.calculateSelectedFromChildren();\n selectionChanged = rowNode.selectThisNode(selected === null ? false : selected, undefined, source) || selectionChanged;\n }\n });\n return selectionChanged;\n }\n clearOtherNodes(rowNodeToKeepSelected, source) {\n const groupsToRefresh = {};\n let updatedCount = 0;\n iterateObject(this.selectedNodes, (key, otherRowNode) => {\n if (otherRowNode && otherRowNode.id !== rowNodeToKeepSelected.id) {\n const rowNode = this.selectedNodes[otherRowNode.id];\n updatedCount += rowNode.setSelectedParams({\n newValue: false,\n clearSelection: false,\n suppressFinishActions: true,\n source,\n });\n if (this.groupSelectsChildren && otherRowNode.parent) {\n groupsToRefresh[otherRowNode.parent.id] = otherRowNode.parent;\n }\n }\n });\n iterateObject(groupsToRefresh, (key, group) => {\n const selected = group.calculateSelectedFromChildren();\n group.selectThisNode(selected === null ? false : selected, undefined, source);\n });\n return updatedCount;\n }\n onRowSelected(event) {\n const 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 delete this.selectedNodes[rowNode.id];\n }\n }\n syncInRowNode(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 syncInOldRowNode(rowNode, oldNode) {\n const oldNodeHasDifferentId = exists(oldNode) && (rowNode.id !== oldNode.id);\n if (oldNodeHasDifferentId && oldNode) {\n const id = oldNode.id;\n const oldNodeSelected = this.selectedNodes[id] == rowNode;\n if (oldNodeSelected) {\n this.selectedNodes[oldNode.id] = oldNode;\n }\n }\n }\n syncInNewRowNode(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 reset() {\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 getBestCostNodeSelection() {\n if (this.rowModel.getType() !== 'clientSide') {\n // Error logged as part of gridApi as that is only call point for this method.\n return;\n }\n const clientSideRowModel = this.rowModel;\n const topLevelNodes = clientSideRowModel.getTopLevelNodes();\n if (topLevelNodes === null) {\n return;\n }\n const result = [];\n // recursive function, to find the selected nodes\n function traverse(nodes) {\n for (let i = 0, l = nodes.length; i < l; i++) {\n const 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 const maybeGroup = node;\n if (maybeGroup.group && maybeGroup.children) {\n traverse(maybeGroup.children);\n }\n }\n }\n }\n traverse(topLevelNodes);\n return result;\n }\n isEmpty() {\n let count = 0;\n iterateObject(this.selectedNodes, (nodeId, rowNode) => {\n if (rowNode) {\n count++;\n }\n });\n return count === 0;\n }\n deselectAllRowNodes(params) {\n const callback = (rowNode) => rowNode.selectThisNode(false, undefined, source);\n const rowModelClientSide = this.rowModel.getType() === 'clientSide';\n const { source, justFiltered, justCurrentPage } = params;\n if (justCurrentPage || justFiltered) {\n if (!rowModelClientSide) {\n console.error(\"AG Grid: selecting just filtered only works when gridOptions.rowModelType='clientSide'\");\n return;\n }\n this.getNodesToSelect(justFiltered, justCurrentPage).forEach(callback);\n }\n else {\n iterateObject(this.selectedNodes, (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(source);\n }\n const event = {\n type: Events.EVENT_SELECTION_CHANGED,\n source\n };\n this.eventService.dispatchEvent(event);\n }\n getSelectAllState(justFiltered, justCurrentPage) {\n let selectedCount = 0;\n let notSelectedCount = 0;\n const callback = (node) => {\n if (this.groupSelectsChildren && node.group) {\n return;\n }\n if (node.isSelected()) {\n selectedCount++;\n }\n else if (!node.selectable) ;\n else {\n notSelectedCount++;\n }\n };\n this.getNodesToSelect(justFiltered, justCurrentPage).forEach(callback);\n // if no rows, always have it unselected\n if (selectedCount === 0 && notSelectedCount === 0) {\n return false;\n }\n // if mix of selected and unselected, this is indeterminate\n if (selectedCount > 0 && notSelectedCount > 0) {\n return null;\n }\n // only selected\n return selectedCount > 0;\n }\n /**\n * @param justFiltered whether to just include nodes which have passed the filter\n * @param justCurrentPage whether to just include nodes on the current page\n * @returns all nodes including unselectable nodes which are the target of this selection attempt\n */\n getNodesToSelect(justFiltered = false, justCurrentPage = false) {\n if (this.rowModel.getType() !== 'clientSide') {\n throw new Error(`selectAll only available when rowModelType='clientSide', ie not ${this.rowModel.getType()}`);\n }\n const nodes = [];\n if (justCurrentPage) {\n this.paginationProxy.forEachNodeOnPage((node) => {\n if (!node.group) {\n nodes.push(node);\n return;\n }\n if (!node.expanded) {\n // even with groupSelectsChildren, do this recursively as only the filtered children\n // are considered as the current page\n const recursivelyAddChildren = (child) => {\n var _a;\n nodes.push(child);\n if ((_a = child.childrenAfterFilter) === null || _a === void 0 ? void 0 : _a.length) {\n child.childrenAfterFilter.forEach(recursivelyAddChildren);\n }\n };\n recursivelyAddChildren(node);\n return;\n }\n // if the group node is expanded, the pagination proxy will include the visible nodes to select\n if (!this.groupSelectsChildren) {\n nodes.push(node);\n }\n });\n return nodes;\n }\n const clientSideRowModel = this.rowModel;\n if (justFiltered) {\n clientSideRowModel.forEachNodeAfterFilter(node => {\n nodes.push(node);\n });\n return nodes;\n }\n clientSideRowModel.forEachNode(node => {\n nodes.push(node);\n });\n return nodes;\n }\n selectAllRowNodes(params) {\n if (this.rowModel.getType() !== 'clientSide') {\n throw new Error(`selectAll only available when rowModelType='clientSide', ie not ${this.rowModel.getType()}`);\n }\n const { source, justFiltered, justCurrentPage } = params;\n const callback = (rowNode) => rowNode.selectThisNode(true, undefined, source);\n this.getNodesToSelect(justFiltered, justCurrentPage).forEach(callback);\n // the above does not clean up the parent rows if they are selected\n if (this.rowModel.getType() === 'clientSide' && this.groupSelectsChildren) {\n this.updateGroupsFromChildrenSelections(source);\n }\n const event = {\n type: Events.EVENT_SELECTION_CHANGED,\n source\n };\n this.eventService.dispatchEvent(event);\n }\n // Used by SSRM\n getServerSideSelectionState() {\n return null;\n }\n setServerSideSelectionState(state) { }\n};\n__decorate$O([\n Autowired('rowModel')\n], SelectionService.prototype, \"rowModel\", void 0);\n__decorate$O([\n Autowired('paginationProxy')\n], SelectionService.prototype, \"paginationProxy\", void 0);\n__decorate$O([\n __param$5(0, Qualifier('loggerFactory'))\n], SelectionService.prototype, \"setBeans\", null);\n__decorate$O([\n PostConstruct\n], SelectionService.prototype, \"init\", null);\nSelectionService = __decorate$O([\n Bean('selectionService')\n], SelectionService);\n\nvar __decorate$N = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet ColumnApi = class ColumnApi {\n /**\n * Gets the grid to size the columns to the specified width in pixels, e.g. `sizeColumnsToFit(900)`.\n * To have the grid fit the columns to the grid's width, use the Grid API `gridApi.sizeColumnsToFit()` instead.\n * If inferring cell data types with custom column types and row data is provided asynchronously,\n * the column sizing will happen asynchronously when row data is added.\n * To always perform this synchronously, set `cellDataType = false` on the default column definition.\n */\n sizeColumnsToFit(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 setColumnGroupOpened(group, newValue) { this.columnModel.setColumnGroupOpened(group, newValue, 'api'); }\n /** Returns the column group with the given name. */\n getColumnGroup(name, instanceId) { return this.columnModel.getColumnGroup(name, instanceId); }\n /** Returns the provided column group with the given name. */\n getProvidedColumnGroup(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 getDisplayNameForColumn(column, location) { return this.columnModel.getDisplayNameForColumn(column, location) || ''; }\n /** Returns the display name for a column group (when grouping columns). */\n getDisplayNameForColumnGroup(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 getColumn(key) { return this.columnModel.getPrimaryColumn(key); }\n /** Returns all the columns, regardless of visible or not. */\n getColumns() { return this.columnModel.getAllPrimaryColumns(); }\n /** Applies the state of the columns from a previous state. Returns `false` if one or more columns could not be found. */\n applyColumnState(params) { return this.columnModel.applyColumnState(params, 'api'); }\n /** Gets the state of the columns. Typically used when saving column state. */\n getColumnState() { return this.columnModel.getColumnState(); }\n /** Sets the state back to match the originally provided column definitions. */\n resetColumnState() { this.columnModel.resetColumnState('api'); }\n /** Gets the state of the column groups. Typically used when saving column group state. */\n getColumnGroupState() { return this.columnModel.getColumnGroupState(); }\n /** Sets the state of the column group state from a previous state. */\n setColumnGroupState(stateItems) { this.columnModel.setColumnGroupState(stateItems, 'api'); }\n /** Sets the state back to match the originally provided column definitions. */\n resetColumnGroupState() { this.columnModel.resetColumnGroupState('api'); }\n /** Returns `true` if pinning left or right, otherwise `false`. */\n isPinning() { return this.columnModel.isPinningLeft() || this.columnModel.isPinningRight(); }\n /** Returns `true` if pinning left, otherwise `false`. */\n isPinningLeft() { return this.columnModel.isPinningLeft(); }\n /** Returns `true` if pinning right, otherwise `false`. */\n isPinningRight() { 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 getDisplayedColAfter(col) { return this.columnModel.getDisplayedColAfter(col); }\n /** Same as `getVisibleColAfter` except gives column to the left. */\n getDisplayedColBefore(col) { return this.columnModel.getDisplayedColBefore(col); }\n /** Sets the visibility of a column. Key can be the column ID or `Column` object. */\n setColumnVisible(key, visible) { this.columnModel.setColumnVisible(key, visible, 'api'); }\n /** Same as `setColumnVisible`, but provide a list of column keys. */\n setColumnsVisible(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 setColumnPinned(key, pinned) { this.columnModel.setColumnPinned(key, pinned, 'api'); }\n /** Same as `setColumnPinned`, but provide a list of column keys. */\n setColumnsPinned(keys, pinned) { this.columnModel.setColumnsPinned(keys, pinned, 'api'); }\n /**\n * Returns all the grid columns, same as `getColumns()`, 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 getAllGridColumns() { return this.columnModel.getAllGridColumns(); }\n /** Same as `getAllDisplayedColumns` but just for the pinned left portion of the grid. */\n getDisplayedLeftColumns() { return this.columnModel.getDisplayedLeftColumns(); }\n /** Same as `getAllDisplayedColumns` but just for the center portion of the grid. */\n getDisplayedCenterColumns() { return this.columnModel.getDisplayedCenterColumns(); }\n /** Same as `getAllDisplayedColumns` but just for the pinned right portion of the grid. */\n getDisplayedRightColumns() { 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 getAllDisplayedColumns() { 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 getAllDisplayedVirtualColumns() { 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 moveColumn(key, toIndex) {\n this.columnModel.moveColumn(key, toIndex, 'api');\n }\n /** Same as `moveColumn` but works on index locations. */\n moveColumnByIndex(fromIndex, toIndex) { this.columnModel.moveColumnByIndex(fromIndex, toIndex, 'api'); }\n /** Same as `moveColumn` but works on list. */\n moveColumns(columnsToMoveKeys, toIndex) { this.columnModel.moveColumns(columnsToMoveKeys, toIndex, 'api'); }\n /** Move the column to a new position in the row grouping order. */\n moveRowGroupColumn(fromIndex, toIndex) { this.columnModel.moveRowGroupColumn(fromIndex, toIndex); }\n /** Sets the agg function for a column. `aggFunc` can be one of the built-in aggregations or a custom aggregation by name or direct function. */\n setColumnAggFunc(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 setColumnWidth(key, newWidth, finished = true, source) {\n this.columnModel.setColumnWidths([{ key, 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 setColumnWidths(columnWidths, finished = true, source) {\n this.columnModel.setColumnWidths(columnWidths, false, finished, source);\n }\n /** Set the pivot mode. */\n setPivotMode(pivotMode) { this.columnModel.setPivotMode(pivotMode); }\n /** Get the pivot mode. */\n isPivotMode() { return this.columnModel.isPivotMode(); }\n /** Returns the pivot result column for the given `pivotKeys` and `valueColId`. Useful to then call operations on the pivot column. */\n getPivotResultColumn(pivotKeys, valueColKey) { return this.columnModel.getSecondaryPivotColumn(pivotKeys, valueColKey); }\n /** Set the value columns to the provided list of columns. */\n setValueColumns(colKeys) { this.columnModel.setValueColumns(colKeys, 'api'); }\n /** Get a list of the existing value columns. */\n getValueColumns() { return this.columnModel.getValueColumns(); }\n /** Remove the given column from the existing set of value columns. */\n removeValueColumn(colKey) { this.columnModel.removeValueColumn(colKey, 'api'); }\n /** Like `removeValueColumn` but remove the given list of columns from the existing set of value columns. */\n removeValueColumns(colKeys) { this.columnModel.removeValueColumns(colKeys, 'api'); }\n /** Add the given column to the set of existing value columns. */\n addValueColumn(colKey) { this.columnModel.addValueColumn(colKey, 'api'); }\n /** Like `addValueColumn` but add the given list of columns to the existing set of value columns. */\n addValueColumns(colKeys) { this.columnModel.addValueColumns(colKeys, 'api'); }\n /** Set the row group columns. */\n setRowGroupColumns(colKeys) { this.columnModel.setRowGroupColumns(colKeys, 'api'); }\n /** Remove a column from the row groups. */\n removeRowGroupColumn(colKey) { this.columnModel.removeRowGroupColumn(colKey, 'api'); }\n /** Same as `removeRowGroupColumn` but provide a list of columns. */\n removeRowGroupColumns(colKeys) { this.columnModel.removeRowGroupColumns(colKeys, 'api'); }\n /** Add a column to the row groups. */\n addRowGroupColumn(colKey) { this.columnModel.addRowGroupColumn(colKey, 'api'); }\n /** Same as `addRowGroupColumn` but provide a list of columns. */\n addRowGroupColumns(colKeys) { this.columnModel.addRowGroupColumns(colKeys, 'api'); }\n /** Get row group columns. */\n getRowGroupColumns() { return this.columnModel.getRowGroupColumns(); }\n /** Set the pivot columns. */\n setPivotColumns(colKeys) { this.columnModel.setPivotColumns(colKeys, 'api'); }\n /** Remove a pivot column. */\n removePivotColumn(colKey) { this.columnModel.removePivotColumn(colKey, 'api'); }\n /** Same as `removePivotColumn` but provide a list of columns. */\n removePivotColumns(colKeys) { this.columnModel.removePivotColumns(colKeys, 'api'); }\n /** Add a pivot column. */\n addPivotColumn(colKey) { this.columnModel.addPivotColumn(colKey, 'api'); }\n /** Same as `addPivotColumn` but provide a list of columns. */\n addPivotColumns(colKeys) { this.columnModel.addPivotColumns(colKeys, 'api'); }\n /** Get the pivot columns. */\n getPivotColumns() { return this.columnModel.getPivotColumns(); }\n /** Same as `getAllDisplayedColumnGroups` but just for the pinned left portion of the grid. */\n getLeftDisplayedColumnGroups() { return this.columnModel.getDisplayedTreeLeft(); }\n /** Same as `getAllDisplayedColumnGroups` but just for the center portion of the grid. */\n getCenterDisplayedColumnGroups() { return this.columnModel.getDisplayedTreeCentre(); }\n /** Same as `getAllDisplayedColumnGroups` but just for the pinned right portion of the grid. */\n getRightDisplayedColumnGroups() { 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 getAllDisplayedColumnGroups() { return this.columnModel.getAllDisplayedTrees(); }\n /**\n * Auto-sizes a column based on its contents. If inferring cell data types with custom column types and row data is provided asynchronously,\n * the column sizing will happen asynchronously when row data is added. To always perform this synchronously,\n * set `cellDataType = false` on the default column definition.\n */\n autoSizeColumn(key, skipHeader) { return this.columnModel.autoSizeColumn(key, skipHeader, 'api'); }\n /**\n * Same as `autoSizeColumn`, but provide a list of column keys. If inferring cell data types with custom column types\n * and row data is provided asynchronously, the column sizing will happen asynchronously when row data is added.\n * To always perform this synchronously, set `cellDataType = false` on the default column definition.\n */\n autoSizeColumns(keys, skipHeader) {\n this.columnModel.autoSizeColumns({ columns: keys, skipHeader: skipHeader });\n }\n /**\n * Calls `autoSizeColumns` on all displayed columns. If inferring cell data types with custom column types\n * and row data is provided asynchronously, the column sizing will happen asynchronously when row data is added.\n * To always perform this synchronously, set `cellDataType = false` on the default column definition.\n */\n autoSizeAllColumns(skipHeader) { this.columnModel.autoSizeAllColumns(skipHeader, 'api'); }\n /** Set the pivot result columns. */\n setPivotResultColumns(colDefs) { this.columnModel.setSecondaryColumns(colDefs, 'api'); }\n /** Returns the grid's pivot result columns. */\n getPivotResultColumns() { return this.columnModel.getSecondaryColumns(); }\n cleanDownReferencesToAvoidMemoryLeakInCaseApplicationIsKeepingReferenceToDestroyedGrid() {\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 /** @deprecated v28 Use `getColumns` instead */\n getAllColumns() {\n logDeprecation('28.0', 'getAllColumns', 'getColumns');\n return this.getColumns();\n }\n /** @deprecated v28 Use `getColumns` instead. */\n getPrimaryColumns() {\n logDeprecation('28.0', 'getPrimaryColumns', 'getColumns');\n return this.getColumns();\n }\n /** @deprecated v28 Use `getPivotResultColumns` instead. */\n getSecondaryColumns() {\n logDeprecation('28.0', 'getSecondaryColumns', 'getPivotResultColumns');\n return this.getPivotResultColumns();\n }\n /** @deprecated v28 Use `setPivotResultColumns` instead. */\n setSecondaryColumns(colDefs) {\n logDeprecation('28.0', 'setSecondaryColumns', 'setPivotResultColumns');\n this.setPivotResultColumns(colDefs);\n }\n /** @deprecated v28 Use `getPivotResultColumn` instead */\n getSecondaryPivotColumn(pivotKeys, valueColKey) {\n logDeprecation('28.0', 'getSecondaryPivotColumn', 'getPivotResultColumn');\n return this.getPivotResultColumn(pivotKeys, valueColKey);\n }\n};\n__decorate$N([\n Autowired('columnModel')\n], ColumnApi.prototype, \"columnModel\", void 0);\n__decorate$N([\n PreDestroy\n], ColumnApi.prototype, \"cleanDownReferencesToAvoidMemoryLeakInCaseApplicationIsKeepingReferenceToDestroyedGrid\", null);\nColumnApi = __decorate$N([\n Bean('columnApi')\n], ColumnApi);\n\nvar __decorate$M = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet ValueService = class ValueService extends BeanStub {\n constructor() {\n super(...arguments);\n this.initialised = false;\n this.isSsrm = false;\n }\n init() {\n this.isSsrm = this.gridOptionsService.isRowModelType('serverSide');\n this.cellExpressions = this.gridOptionsService.is('enableCellExpressions');\n this.isTreeData = this.gridOptionsService.is('treeData');\n this.initialised = true;\n // We listen to our own event and use it to call the columnSpecific callback,\n // this way the handler calls are correctly interleaved with other global events\n this.eventService.addEventListener(Events.EVENT_CELL_VALUE_CHANGED, (event) => this.callColumnCellValueChangedHandler(event), this.gridOptionsService.useAsyncEvents());\n this.addManagedPropertyListener('treeData', (propChange) => this.isTreeData = propChange.currentValue);\n }\n getValue(column, rowNode, forFilter = false, 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 const colDef = column.getColDef();\n const field = colDef.field;\n const colId = column.getColId();\n const data = rowNode.data;\n let result;\n // if there is a value getter, this gets precedence over a field\n const groupDataExists = rowNode.groupData && rowNode.groupData[colId] !== undefined;\n const aggDataExists = !ignoreAggData && rowNode.aggData && rowNode.aggData[colId] !== undefined;\n // SSRM agg data comes from the data attribute, so ignore that instead\n const ignoreSsrmAggData = this.isSsrm && ignoreAggData && !!column.getColDef().aggFunc;\n const ssrmFooterGroupCol = this.isSsrm && rowNode.footer && rowNode.field && (column.getColDef().showRowGroup === true || column.getColDef().showRowGroup === rowNode.field);\n if (forFilter && colDef.filterValueGetter) {\n result = this.executeFilterValueGetter(colDef.filterValueGetter, data, column, rowNode);\n }\n else if (this.isTreeData && aggDataExists) {\n result = rowNode.aggData[colId];\n }\n else if (this.isTreeData && colDef.valueGetter) {\n result = this.executeValueGetter(colDef.valueGetter, data, column, rowNode);\n }\n else if (this.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 (ssrmFooterGroupCol) {\n // this is for group footers in SSRM, as the SSRM row won't have groupData, need to extract\n // the group value from the data using the row field\n result = getValueUsingField(data, rowNode.field, column.isFieldContainsDots());\n }\n else if (field && data && !ignoreSsrmAggData) {\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 const cellValueGetter = result.substring(1);\n result = this.executeValueGetter(cellValueGetter, data, column, rowNode);\n }\n if (result == null) {\n const openedGroup = this.getOpenedGroup(rowNode, column);\n if (openedGroup != null) {\n return openedGroup;\n }\n }\n return result;\n }\n getOpenedGroup(rowNode, column) {\n if (!this.gridOptionsService.is('showOpenedGroup')) {\n return;\n }\n const colDef = column.getColDef();\n if (!colDef.showRowGroup) {\n return;\n }\n const showRowGroup = column.getColDef().showRowGroup;\n let pointer = rowNode.parent;\n while (pointer != null) {\n if (pointer.rowGroupColumn && (showRowGroup === true || showRowGroup === pointer.rowGroupColumn.getColId())) {\n return pointer.key;\n }\n pointer = pointer.parent;\n }\n return undefined;\n }\n /**\n * Sets the value of a GridCell\n * @param rowNode The `RowNode` to be updated\n * @param colKey The `Column` to be updated\n * @param newValue The new value to be set\n * @param eventSource The event source\n * @returns `True` if the value has been updated, otherwise`False`.\n */\n setValue(rowNode, colKey, newValue, eventSource) {\n const column = this.columnModel.getPrimaryColumn(colKey);\n if (!rowNode || !column) {\n return false;\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 const { field, valueSetter } = column.getColDef();\n if (missing(field) && missing(valueSetter)) {\n console.warn(`AG Grid: you need either field or valueSetter set on colDef for editing to work`);\n return false;\n }\n if (!this.dataTypeService.checkType(column, newValue)) {\n console.warn(`AG Grid: Data type of the new value does not match the cell data type of the column`);\n return false;\n }\n const 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.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context\n };\n params.newValue = newValue;\n let valueWasDifferent;\n if (exists(valueSetter)) {\n if (typeof valueSetter === 'function') {\n valueWasDifferent = valueSetter(params);\n }\n else {\n valueWasDifferent = this.expressionService.evaluate(valueSetter, params);\n }\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 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 false;\n }\n // reset quick filter on this row\n rowNode.resetQuickFilterAggregateText();\n this.valueCache.onDataChanged();\n params.newValue = this.getValue(column, rowNode);\n const 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 return true;\n }\n callColumnCellValueChangedHandler(event) {\n const onCellValueChanged = event.colDef.onCellValueChanged;\n if (typeof onCellValueChanged === 'function') {\n onCellValueChanged({\n node: event.node,\n data: event.data,\n oldValue: event.oldValue,\n newValue: event.newValue,\n colDef: event.colDef,\n column: event.column,\n api: event.api,\n columnApi: event.columnApi,\n context: event.context\n });\n }\n }\n setValueUsingField(data, field, newValue, isFieldContainsDots) {\n if (!field) {\n return false;\n }\n // if no '.', then it's not a deep value\n let valuesAreSame = false;\n if (!isFieldContainsDots) {\n // soft comparison to match strings and numbers\n valuesAreSame = data[field] == newValue;\n if (!valuesAreSame) {\n data[field] = newValue;\n }\n }\n else {\n // otherwise it is a deep value, so need to dig for it\n const fieldPieces = field.split('.');\n let currentObject = data;\n while (fieldPieces.length > 0 && currentObject) {\n const fieldPiece = fieldPieces.shift();\n if (fieldPieces.length === 0) {\n // soft comparison to match strings and numbers\n valuesAreSame = currentObject[fieldPiece] == newValue;\n if (!valuesAreSame) {\n currentObject[fieldPiece] = newValue;\n }\n }\n else {\n currentObject = currentObject[fieldPiece];\n }\n }\n }\n return !valuesAreSame;\n }\n executeFilterValueGetter(valueGetter, data, column, rowNode) {\n const params = {\n data: data,\n node: rowNode,\n column: column,\n colDef: column.getColDef(),\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context,\n getValue: this.getValueCallback.bind(this, rowNode)\n };\n if (typeof valueGetter === 'function') {\n return valueGetter(params);\n }\n return this.expressionService.evaluate(valueGetter, params);\n }\n executeValueGetter(valueGetter, data, column, rowNode) {\n const colId = column.getColId();\n // if inside the same turn, just return back the value we got last time\n const valueFromCache = this.valueCache.getValue(rowNode, colId);\n if (valueFromCache !== undefined) {\n return valueFromCache;\n }\n const params = {\n data: data,\n node: rowNode,\n column: column,\n colDef: column.getColDef(),\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context,\n getValue: this.getValueCallback.bind(this, rowNode)\n };\n let result;\n if (typeof valueGetter === 'function') {\n result = valueGetter(params);\n }\n else {\n result = this.expressionService.evaluate(valueGetter, params);\n }\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 getValueCallback(node, field) {\n const 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 getKeyForNode(col, rowNode) {\n const value = this.getValue(col, rowNode);\n const keyCreator = col.getColDef().keyCreator;\n let result = value;\n if (keyCreator) {\n const keyParams = {\n value: value,\n colDef: col.getColDef(),\n column: col,\n node: rowNode,\n data: rowNode.data,\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context\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(() => {\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};\n__decorate$M([\n Autowired('expressionService')\n], ValueService.prototype, \"expressionService\", void 0);\n__decorate$M([\n Autowired('columnModel')\n], ValueService.prototype, \"columnModel\", void 0);\n__decorate$M([\n Autowired('valueCache')\n], ValueService.prototype, \"valueCache\", void 0);\n__decorate$M([\n Autowired('dataTypeService')\n], ValueService.prototype, \"dataTypeService\", void 0);\n__decorate$M([\n PostConstruct\n], ValueService.prototype, \"init\", null);\nValueService = __decorate$M([\n Bean('valueService')\n], ValueService);\n\nvar __decorate$L = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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$4 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nlet ExpressionService = class ExpressionService extends BeanStub {\n constructor() {\n super(...arguments);\n this.expressionToFunctionCache = {};\n }\n setBeans(loggerFactory) {\n this.logger = loggerFactory.create('ExpressionService');\n }\n evaluate(expression, params) {\n if (typeof expression === 'string') {\n // valueGetter is an expression, so execute the expression\n return this.evaluateExpression(expression, params);\n }\n else {\n console.error('AG Grid: value should be either a string or a function', expression);\n }\n }\n evaluateExpression(expression, params) {\n try {\n const 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 const 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 createExpressionFunction(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 const functionBody = this.createFunctionBody(expression);\n const 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 createFunctionBody(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};\n__decorate$L([\n __param$4(0, Qualifier('loggerFactory'))\n], ExpressionService.prototype, \"setBeans\", null);\nExpressionService = __decorate$L([\n Bean('expressionService')\n], ExpressionService);\n\nvar __decorate$K = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet TemplateService = class TemplateService extends BeanStub {\n constructor() {\n super(...arguments);\n this.templateCache = {};\n this.waitingCallbacks = {};\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 getTemplate(url, callback) {\n const templateFromCache = this.templateCache[url];\n if (templateFromCache) {\n return templateFromCache;\n }\n let callbackList = this.waitingCallbacks[url];\n const 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 const 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 handleHttpResult(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 const callbacks = this.waitingCallbacks[url];\n for (let i = 0; i < callbacks.length; i++) {\n const 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 }\n};\nTemplateService = __decorate$K([\n Bean('templateService')\n], TemplateService);\n\nvar __decorate$J = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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$3 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nlet LoggerFactory = class LoggerFactory extends BeanStub {\n setBeans(gridOptionsService) {\n this.logging = gridOptionsService.is('debug');\n }\n create(name) {\n return new Logger(name, this.isLogging.bind(this));\n }\n isLogging() {\n return this.logging;\n }\n};\n__decorate$J([\n __param$3(0, Qualifier('gridOptionsService'))\n], LoggerFactory.prototype, \"setBeans\", null);\nLoggerFactory = __decorate$J([\n Bean('loggerFactory')\n], LoggerFactory);\nclass Logger {\n constructor(name, isLoggingFunc) {\n this.name = name;\n this.isLoggingFunc = isLoggingFunc;\n }\n isLogging() {\n return this.isLoggingFunc();\n }\n log(message) {\n if (this.isLoggingFunc()) {\n // tslint:disable-next-line\n console.log('AG Grid.' + this.name + ': ' + message);\n }\n }\n}\n\nvar __decorate$I = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass GridCtrl extends BeanStub {\n setComp(view, eGridDiv, eGui) {\n this.view = view;\n this.eGridHostDiv = eGridDiv;\n this.eGui = eGui;\n this.eGui.setAttribute('grid-id', this.context.getGridId());\n // this drop target is just used to see if the drop event is inside the grid\n this.dragAndDropService.addDropTarget({\n getContainer: () => this.eGui,\n isInterestedIn: (type) => type === DragSourceType.HeaderCell || type === DragSourceType.ToolPanel,\n getIconName: () => DragAndDropService.ICON_NOT_ALLOWED,\n });\n this.mouseEventService.stampTopLevelGridCompWithGridInstance(eGridDiv);\n this.createManagedBean(new LayoutFeature(this.view));\n this.addRtlSupport();\n this.addManagedListener(this, Events.EVENT_KEYBOARD_FOCUS, () => {\n this.view.addOrRemoveKeyboardFocusClass(true);\n });\n this.addManagedListener(this, Events.EVENT_MOUSE_FOCUS, () => {\n this.view.addOrRemoveKeyboardFocusClass(false);\n });\n const unsubscribeFromResize = this.resizeObserverService.observeResize(this.eGridHostDiv, this.onGridSizeChanged.bind(this));\n this.addDestroyFunc(() => unsubscribeFromResize());\n this.ctrlsService.registerGridCtrl(this);\n }\n isDetailGrid() {\n var _a;\n const el = this.focusService.findTabbableParent(this.getGui());\n return ((_a = el === null || el === void 0 ? void 0 : el.getAttribute('row-id')) === null || _a === void 0 ? void 0 : _a.startsWith('detail')) || false;\n }\n showDropZones() {\n return ModuleRegistry.__isRegistered(ModuleNames.RowGroupingModule, this.context.getGridId());\n }\n showSideBar() {\n return ModuleRegistry.__isRegistered(ModuleNames.SideBarModule, this.context.getGridId());\n }\n showStatusBar() {\n return ModuleRegistry.__isRegistered(ModuleNames.StatusBarModule, this.context.getGridId());\n }\n showWatermark() {\n return ModuleRegistry.__isRegistered(ModuleNames.EnterpriseCoreModule, this.context.getGridId());\n }\n onGridSizeChanged() {\n const event = {\n type: Events.EVENT_GRID_SIZE_CHANGED,\n clientWidth: this.eGridHostDiv.clientWidth,\n clientHeight: this.eGridHostDiv.clientHeight\n };\n this.eventService.dispatchEvent(event);\n }\n addRtlSupport() {\n const cssClass = this.gridOptionsService.is('enableRtl') ? 'ag-rtl' : 'ag-ltr';\n this.view.setRtlClass(cssClass);\n }\n destroyGridUi() {\n this.view.destroyGridUi();\n }\n getGui() {\n return this.eGui;\n }\n setResizeCursor(on) {\n this.view.setCursor(on ? 'ew-resize' : null);\n }\n disableUserSelect(on) {\n this.view.setUserSelect(on ? 'none' : null);\n }\n focusNextInnerContainer(backwards) {\n const eDocument = this.gridOptionsService.getDocument();\n const focusableContainers = this.view.getFocusableContainers();\n const idxWithFocus = focusableContainers.findIndex(container => container.contains(eDocument.activeElement));\n const 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 focusInnerElement(fromBottom) {\n const focusableContainers = this.view.getFocusableContainers();\n const allColumns = this.columnModel.getAllDisplayedColumns();\n if (fromBottom) {\n if (focusableContainers.length > 1) {\n return this.focusService.focusInto(last(focusableContainers), true);\n }\n const lastColumn = last(allColumns);\n if (this.focusService.focusGridView(lastColumn, true)) {\n return true;\n }\n }\n if (this.gridOptionsService.getNum('headerHeight') === 0) {\n return this.focusService.focusGridView(allColumns[0]);\n }\n return this.focusService.focusFirstHeader();\n }\n forceFocusOutOfContainer(up = false) {\n this.view.forceFocusOutOfContainer(up);\n }\n}\n__decorate$I([\n Autowired('focusService')\n], GridCtrl.prototype, \"focusService\", void 0);\n__decorate$I([\n Autowired('resizeObserverService')\n], GridCtrl.prototype, \"resizeObserverService\", void 0);\n__decorate$I([\n Autowired('columnModel')\n], GridCtrl.prototype, \"columnModel\", void 0);\n__decorate$I([\n Autowired('ctrlsService')\n], GridCtrl.prototype, \"ctrlsService\", void 0);\n__decorate$I([\n Autowired('mouseEventService')\n], GridCtrl.prototype, \"mouseEventService\", void 0);\n__decorate$I([\n Autowired('dragAndDropService')\n], GridCtrl.prototype, \"dragAndDropService\", void 0);\n\nvar __decorate$H = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass GridComp extends TabGuardComp {\n constructor(eGridDiv) {\n super();\n this.eGridDiv = eGridDiv;\n }\n postConstruct() {\n this.logger = this.loggerFactory.create('GridComp');\n const compProxy = {\n destroyGridUi: () => this.destroyBean(this),\n setRtlClass: (cssClass) => this.addCssClass(cssClass),\n addOrRemoveKeyboardFocusClass: (addOrRemove) => 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: value => {\n this.getGui().style.userSelect = value != null ? value : '';\n this.getGui().style.webkitUserSelect = value != null ? value : '';\n },\n setCursor: value => {\n this.getGui().style.cursor = value != null ? value : '';\n }\n };\n this.ctrl = this.createManagedBean(new GridCtrl());\n const 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: () => undefined,\n focusInnerElement: fromBottom => this.ctrl.focusInnerElement(fromBottom)\n });\n }\n insertGridIntoDom() {\n const eGui = this.getGui();\n this.eGridDiv.appendChild(eGui);\n this.addDestroyFunc(() => {\n this.eGridDiv.removeChild(eGui);\n this.logger.log('Grid removed from DOM');\n });\n }\n updateLayoutClasses(cssClass, params) {\n const 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 createTemplate() {\n const dropZones = this.ctrl.showDropZones() ? '' : '';\n const sideBar = this.ctrl.showSideBar() ? '' : '';\n const statusBar = this.ctrl.showStatusBar() ? '' : '';\n const watermark = this.ctrl.showWatermark() ? '' : '';\n const template = /* html */ `
\n ${dropZones}\n
\n \n ${sideBar}\n
\n ${statusBar}\n \n ${watermark}\n
`;\n return template;\n }\n getFocusableElement() {\n return this.eRootWrapperBody;\n }\n getFocusableContainers() {\n const focusableContainers = [\n this.gridBodyComp.getGui()\n ];\n if (this.sideBarComp) {\n focusableContainers.push(this.sideBarComp.getGui());\n }\n return focusableContainers.filter(el => isVisible(el));\n }\n}\n__decorate$H([\n Autowired('loggerFactory')\n], GridComp.prototype, \"loggerFactory\", void 0);\n__decorate$H([\n RefSelector('gridBody')\n], GridComp.prototype, \"gridBodyComp\", void 0);\n__decorate$H([\n RefSelector('sideBar')\n], GridComp.prototype, \"sideBarComp\", void 0);\n__decorate$H([\n RefSelector('rootWrapperBody')\n], GridComp.prototype, \"eRootWrapperBody\", void 0);\n__decorate$H([\n PostConstruct\n], GridComp.prototype, \"postConstruct\", null);\n\nvar __decorate$G = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 SortController_1;\nlet SortController = SortController_1 = class SortController extends BeanStub {\n progressSort(column, multiSort, source) {\n const nextDirection = this.getNextSortDirection(column);\n this.setSortForColumn(column, nextDirection, multiSort, source);\n }\n setSortForColumn(column, sort, multiSort, source) {\n // auto correct - if sort not legal value, then set it to 'no sort' (which is null)\n if (sort !== 'asc' && sort !== 'desc') {\n sort = null;\n }\n const isColumnsSortingCoupledToGroup = this.gridOptionsService.isColumnsSortingCoupledToGroup();\n let columnsToUpdate = [column];\n if (isColumnsSortingCoupledToGroup) {\n if (column.getColDef().showRowGroup) {\n const rowGroupColumns = this.columnModel.getSourceColumnsForGroupColumn(column);\n const sortableRowGroupColumns = rowGroupColumns === null || rowGroupColumns === void 0 ? void 0 : rowGroupColumns.filter(col => col.getColDef().sortable);\n if (sortableRowGroupColumns) {\n columnsToUpdate = [column, ...sortableRowGroupColumns];\n }\n }\n }\n columnsToUpdate.forEach(col => col.setSort(sort, source));\n const doingMultiSort = (multiSort || this.gridOptionsService.is('alwaysMultiSort')) && !this.gridOptionsService.is('suppressMultiSort');\n // clear sort on all columns except those changed, and update the icons\n if (!doingMultiSort) {\n this.clearSortBarTheseColumns(columnsToUpdate, source);\n }\n // sortIndex used for knowing order of cols when multi-col sort\n this.updateSortIndex(column);\n this.dispatchSortChangedEvents(source);\n }\n updateSortIndex(lastColToChange) {\n const isCoupled = this.gridOptionsService.isColumnsSortingCoupledToGroup();\n const groupParent = this.columnModel.getGroupDisplayColumnForGroup(lastColToChange.getId());\n const lastSortIndexCol = isCoupled ? groupParent || lastColToChange : lastColToChange;\n const allSortedCols = this.getColumnsWithSortingOrdered();\n // reset sort index on everything\n this.columnModel.getPrimaryAndSecondaryAndAutoColumns().forEach(col => col.setSortIndex(null));\n const allSortedColsWithoutChanges = allSortedCols.filter(col => col !== lastSortIndexCol);\n const sortedColsWithIndices = !!lastSortIndexCol.getSort() ? [...allSortedColsWithoutChanges, lastSortIndexCol] : allSortedColsWithoutChanges;\n sortedColsWithIndices.forEach((col, idx) => (col.setSortIndex(idx)));\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 onSortChanged(source) {\n this.dispatchSortChangedEvents(source);\n }\n isSortActive() {\n // pull out all the columns that have sorting set\n const allCols = this.columnModel.getPrimaryAndSecondaryAndAutoColumns();\n const sortedCols = allCols.filter(column => !!column.getSort());\n return sortedCols && sortedCols.length > 0;\n }\n dispatchSortChangedEvents(source) {\n const event = {\n type: Events.EVENT_SORT_CHANGED,\n source\n };\n this.eventService.dispatchEvent(event);\n }\n clearSortBarTheseColumns(columnsToSkip, source) {\n this.columnModel.getPrimaryAndSecondaryAndAutoColumns().forEach((columnToClear) => {\n // Do not clear if either holding shift, or if column in question was clicked\n if (!columnsToSkip.includes(columnToClear)) {\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 getNextSortDirection(column) {\n let sortingOrder;\n if (column.getColDef().sortingOrder) {\n sortingOrder = column.getColDef().sortingOrder;\n }\n else if (this.gridOptionsService.get('sortingOrder')) {\n sortingOrder = this.gridOptionsService.get('sortingOrder');\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 const currentIndex = sortingOrder.indexOf(column.getSort());\n const notInArray = currentIndex < 0;\n const lastItemInArray = currentIndex == sortingOrder.length - 1;\n let 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 /**\n * @param includeRedundantColumns whether to include non-grouped, non-secondary, non-aggregated columns when pivot active\n * @returns a map of sort indexes for every sorted column, if groups sort primaries then they will have equivalent indices\n */\n getIndexedSortMap() {\n // pull out all the columns that have sorting set\n let allSortedCols = this.columnModel.getPrimaryAndSecondaryAndAutoColumns()\n .filter(col => !!col.getSort());\n if (this.columnModel.isPivotMode()) {\n const isSortingLinked = this.gridOptionsService.isColumnsSortingCoupledToGroup();\n allSortedCols = allSortedCols.filter(col => {\n const isAggregated = !!col.getAggFunc();\n const isSecondary = !col.isPrimary();\n const isGroup = isSortingLinked ? this.columnModel.getGroupDisplayColumnForGroup(col.getId()) : col.getColDef().showRowGroup;\n return isAggregated || isSecondary || isGroup;\n });\n }\n const sortedRowGroupCols = this.columnModel.getRowGroupColumns()\n .filter(col => !!col.getSort());\n const isSortLinked = this.gridOptionsService.isColumnsSortingCoupledToGroup() && !!sortedRowGroupCols.length;\n if (isSortLinked) {\n allSortedCols = [\n ...new Set(\n // if linked sorting, replace all columns with the display group column for index purposes, and ensure uniqueness\n allSortedCols.map(col => { var _a; return (_a = this.columnModel.getGroupDisplayColumnForGroup(col.getId())) !== null && _a !== void 0 ? _a : col; }))\n ];\n }\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 const allColsIndexes = {};\n allSortedCols.forEach((col, index) => allColsIndexes[col.getId()] = index);\n // put the columns in order of which one got sorted first\n allSortedCols.sort((a, b) => {\n const iA = a.getSortIndex();\n const 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 const posA = allColsIndexes[a.getId()];\n const 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 const indexMap = new Map();\n allSortedCols.forEach((col, idx) => indexMap.set(col, idx));\n // add the row group cols back\n if (isSortLinked) {\n sortedRowGroupCols.forEach(col => {\n const groupDisplayCol = this.columnModel.getGroupDisplayColumnForGroup(col.getId());\n indexMap.set(col, indexMap.get(groupDisplayCol));\n });\n }\n return indexMap;\n }\n getColumnsWithSortingOrdered() {\n // pull out all the columns that have sorting set\n return [...this.getIndexedSortMap().entries()]\n .sort(([col1, idx1], [col2, idx2]) => idx1 - idx2)\n .map(([col]) => col);\n }\n // used by server side row models, to sent sort to server\n getSortModel() {\n // because this is used by the SSRM, we include redundant options and let the server decide\n return this.getColumnsWithSortingOrdered().map(column => ({\n sort: column.getSort(),\n colId: column.getId()\n }));\n }\n getSortOptions() {\n // this is used for client side sorting, as such we can ignore redundant column sorts\n return this.getColumnsWithSortingOrdered().map(column => ({\n sort: column.getSort(),\n column\n }));\n }\n canColumnDisplayMixedSort(column) {\n const isColumnSortCouplingActive = this.gridOptionsService.isColumnsSortingCoupledToGroup();\n const isGroupDisplayColumn = !!column.getColDef().showRowGroup;\n return isColumnSortCouplingActive && isGroupDisplayColumn;\n }\n getDisplaySortForColumn(column) {\n const linkedColumns = this.columnModel.getSourceColumnsForGroupColumn(column);\n if (!this.canColumnDisplayMixedSort(column) || !(linkedColumns === null || linkedColumns === void 0 ? void 0 : linkedColumns.length)) {\n return column.getSort();\n }\n // if column has unique data, its sorting is independent - but can still be mixed\n const columnHasUniqueData = !!column.getColDef().field;\n const sortableColumns = columnHasUniqueData ? [column, ...linkedColumns] : linkedColumns;\n const firstSort = sortableColumns[0].getSort();\n // the == is intentional, as null and undefined both represent no sort, which means they are equivalent\n const allMatch = sortableColumns.every(col => col.getSort() == firstSort);\n if (!allMatch) {\n return 'mixed';\n }\n return firstSort;\n }\n getDisplaySortIndexForColumn(column) {\n return this.getIndexedSortMap().get(column);\n }\n};\nSortController.DEFAULT_SORTING_ORDER = ['asc', 'desc', null];\n__decorate$G([\n Autowired('columnModel')\n], SortController.prototype, \"columnModel\", void 0);\nSortController = SortController_1 = __decorate$G([\n Bean('sortController')\n], SortController);\n\nvar __decorate$F = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet ColumnHoverService = class ColumnHoverService extends BeanStub {\n setMouseOver(columns) {\n this.selectedColumns = columns;\n const event = {\n type: Events.EVENT_COLUMN_HOVER_CHANGED\n };\n this.eventService.dispatchEvent(event);\n }\n clearMouseOver() {\n this.selectedColumns = null;\n const event = {\n type: Events.EVENT_COLUMN_HOVER_CHANGED\n };\n this.eventService.dispatchEvent(event);\n }\n isHovered(column) {\n return !!this.selectedColumns && this.selectedColumns.indexOf(column) >= 0;\n }\n};\nColumnHoverService = __decorate$F([\n Bean('columnHoverService')\n], ColumnHoverService);\n\nvar __decorate$E = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet ColumnAnimationService = class ColumnAnimationService extends BeanStub {\n constructor() {\n super(...arguments);\n this.executeNextFuncs = [];\n this.executeLaterFuncs = [];\n this.active = false;\n this.animationThreadCount = 0;\n }\n postConstruct() {\n this.ctrlsService.whenReady(p => this.gridBodyCtrl = p.gridBodyCtrl);\n }\n isActive() {\n return this.active;\n }\n start() {\n if (this.active) {\n return;\n }\n if (this.gridOptionsService.is('suppressColumnMoveAnimation')) {\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.gridOptionsService.is('enableRtl')) {\n return;\n }\n this.ensureAnimationCssClassPresent();\n this.active = true;\n }\n finish() {\n if (!this.active) {\n return;\n }\n this.flush();\n this.active = false;\n }\n executeNextVMTurn(func) {\n if (this.active) {\n this.executeNextFuncs.push(func);\n }\n else {\n func();\n }\n }\n executeLaterVMTurn(func) {\n if (this.active) {\n this.executeLaterFuncs.push(func);\n }\n else {\n func();\n }\n }\n ensureAnimationCssClassPresent() {\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 const animationThreadCountCopy = this.animationThreadCount;\n this.gridBodyCtrl.setColumnMovingCss(true);\n this.executeLaterFuncs.push(() => {\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 flush() {\n const nowFuncs = this.executeNextFuncs;\n this.executeNextFuncs = [];\n const waitFuncs = this.executeLaterFuncs;\n this.executeLaterFuncs = [];\n if (nowFuncs.length === 0 && waitFuncs.length === 0) {\n return;\n }\n window.setTimeout(() => nowFuncs.forEach(func => func()), 0);\n window.setTimeout(() => waitFuncs.forEach(func => func()), 300);\n }\n};\n__decorate$E([\n Autowired('ctrlsService')\n], ColumnAnimationService.prototype, \"ctrlsService\", void 0);\n__decorate$E([\n PostConstruct\n], ColumnAnimationService.prototype, \"postConstruct\", null);\nColumnAnimationService = __decorate$E([\n Bean('columnAnimationService')\n], ColumnAnimationService);\n\nvar __decorate$D = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet PaginationAutoPageSizeService = class PaginationAutoPageSizeService extends BeanStub {\n postConstruct() {\n this.ctrlsService.whenReady(p => {\n this.centerRowContainerCon = p.centerRowContainerCtrl;\n this.addManagedListener(this.eventService, Events.EVENT_BODY_HEIGHT_CHANGED, this.checkPageSize.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_SCROLL_VISIBILITY_CHANGED, this.checkPageSize.bind(this));\n this.checkPageSize();\n });\n }\n notActive() {\n return !this.gridOptionsService.is('paginationAutoPageSize') || this.centerRowContainerCon == null;\n }\n checkPageSize() {\n if (this.notActive()) {\n return;\n }\n const bodyHeight = this.centerRowContainerCon.getViewportSizeFeature().getBodyHeight();\n if (bodyHeight > 0) {\n const update = () => {\n const rowHeight = this.gridOptionsService.getRowHeightAsNumber();\n const newPageSize = Math.floor(bodyHeight / rowHeight);\n this.gridOptionsService.set('paginationPageSize', newPageSize);\n };\n if (!this.isBodyRendered) {\n update();\n this.isBodyRendered = true;\n }\n else {\n debounce(() => update(), 50)();\n }\n }\n else {\n this.isBodyRendered = false;\n }\n }\n};\n__decorate$D([\n Autowired('ctrlsService')\n], PaginationAutoPageSizeService.prototype, \"ctrlsService\", void 0);\n__decorate$D([\n PostConstruct\n], PaginationAutoPageSizeService.prototype, \"postConstruct\", null);\nPaginationAutoPageSizeService = __decorate$D([\n Bean('paginationAutoPageSizeService')\n], PaginationAutoPageSizeService);\n\nvar __decorate$C = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet ValueCache = class ValueCache extends BeanStub {\n constructor() {\n super(...arguments);\n this.cacheVersion = 0;\n }\n init() {\n this.active = this.gridOptionsService.is('valueCache');\n this.neverExpires = this.gridOptionsService.is('valueCacheNeverExpires');\n }\n onDataChanged() {\n if (this.neverExpires) {\n return;\n }\n this.expire();\n }\n expire() {\n this.cacheVersion++;\n }\n setValue(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 getValue(rowNode, colId) {\n if (!this.active || rowNode.__cacheVersion !== this.cacheVersion) {\n return undefined;\n }\n return rowNode.__cacheData[colId];\n }\n};\n__decorate$C([\n PostConstruct\n], ValueCache.prototype, \"init\", null);\nValueCache = __decorate$C([\n Bean('valueCache')\n], ValueCache);\n\nvar __decorate$B = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// Matches value in clipboard module\nconst SOURCE_PASTE = 'paste';\nlet ChangeDetectionService = class ChangeDetectionService extends BeanStub {\n init() {\n if (this.rowModel.getType() === 'clientSide') {\n this.clientSideRowModel = this.rowModel;\n }\n this.addManagedListener(this.eventService, Events.EVENT_CELL_VALUE_CHANGED, this.onCellValueChanged.bind(this));\n }\n onCellValueChanged(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 === SOURCE_PASTE) {\n return;\n }\n this.doChangeDetection(event.node, event.column);\n }\n doChangeDetection(rowNode, column) {\n if (this.gridOptionsService.is('suppressChangeDetection')) {\n return;\n }\n const nodesToRefresh = [rowNode];\n // step 1 of change detection is to update the aggregated values\n if (this.clientSideRowModel && !rowNode.isRowPinned()) {\n const onlyChangedColumns = this.gridOptionsService.is('aggregateOnlyChangedColumns');\n const changedPath = new ChangedPath(onlyChangedColumns, this.clientSideRowModel.getRootNode());\n changedPath.addParentNode(rowNode.parent, [column]);\n this.clientSideRowModel.doAggregate(changedPath);\n // add all nodes impacted by aggregation, as they need refreshed also.\n changedPath.forEachChangedNodeDepthFirst(rowNode => {\n nodesToRefresh.push(rowNode);\n });\n }\n // step 2 of change detection is to refresh the cells\n this.rowRenderer.refreshCells({ rowNodes: nodesToRefresh });\n }\n};\n__decorate$B([\n Autowired('rowModel')\n], ChangeDetectionService.prototype, \"rowModel\", void 0);\n__decorate$B([\n Autowired('rowRenderer')\n], ChangeDetectionService.prototype, \"rowRenderer\", void 0);\n__decorate$B([\n PostConstruct\n], ChangeDetectionService.prototype, \"init\", null);\nChangeDetectionService = __decorate$B([\n Bean('changeDetectionService')\n], ChangeDetectionService);\n\nvar __decorate$A = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet AgComponentUtils = class AgComponentUtils extends BeanStub {\n adaptFunction(propertyName, jsCompFunc) {\n const metadata = this.componentMetadataProvider.retrieve(propertyName);\n if (metadata && metadata.functionAdapter) {\n return metadata.functionAdapter(jsCompFunc);\n }\n return null;\n }\n adaptCellRendererFunction(callback) {\n class Adapter {\n refresh(params) {\n return false;\n }\n getGui() {\n return this.eGui;\n }\n init(params) {\n const callbackResult = callback(params);\n const 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 }\n return Adapter;\n }\n doesImplementIComponent(candidate) {\n if (!candidate) {\n return false;\n }\n return candidate.prototype && 'getGui' in candidate.prototype;\n }\n};\n__decorate$A([\n Autowired(\"componentMetadataProvider\")\n], AgComponentUtils.prototype, \"componentMetadataProvider\", void 0);\nAgComponentUtils = __decorate$A([\n Bean(\"agComponentUtils\")\n], AgComponentUtils);\n\nvar __decorate$z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet ComponentMetadataProvider = class ComponentMetadataProvider extends BeanStub {\n postConstruct() {\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 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', 'afterGuiDetached', 'onNewRowsLoaded', 'getModelAsString', 'onFloatingFilterChanged', 'onAnyFilterChanged']\n },\n filterComponent: {\n mandatoryMethodList: ['isFilterActive', 'doesFilterPass', 'getModel', 'setModel'],\n optionalMethodList: ['afterGuiAttached', 'afterGuiDetached', 'onNewRowsLoaded', 'getModelAsString', 'onFloatingFilterChanged', 'onAnyFilterChanged']\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 retrieve(name) {\n return this.componentMetaData[name];\n }\n};\n__decorate$z([\n Autowired(\"agComponentUtils\")\n], ComponentMetadataProvider.prototype, \"agComponentUtils\", void 0);\n__decorate$z([\n PostConstruct\n], ComponentMetadataProvider.prototype, \"postConstruct\", null);\nComponentMetadataProvider = __decorate$z([\n Bean(\"componentMetadataProvider\")\n], ComponentMetadataProvider);\n\nvar __decorate$y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst DEFAULT_ROW_HEIGHT = 25;\nconst MIN_COL_WIDTH = 10;\nconst MAT_GRID_SIZE = 8;\nconst BASE_GRID_SIZE = 4;\nconst BALHAM_GRID_SIZE = 4;\nconst ALPINE_GRID_SIZE = 6;\nconst 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 */\nconst 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};\nlet Environment = class Environment extends BeanStub {\n constructor() {\n super(...arguments);\n this.calculatedSizes = {};\n }\n postConstruct() {\n var _a;\n const el = (_a = this.getTheme().el) !== null && _a !== void 0 ? _a : this.eGridDiv;\n this.mutationObserver = new MutationObserver(() => {\n this.calculatedSizes = {};\n this.fireGridStylesChangedEvent();\n });\n this.mutationObserver.observe(el || this.eGridDiv, {\n attributes: true,\n attributeFilter: ['class']\n });\n }\n fireGridStylesChangedEvent() {\n const event = {\n type: Events.EVENT_GRID_STYLES_CHANGED\n };\n this.eventService.dispatchEvent(event);\n }\n getSassVariable(key) {\n const { themeFamily, el } = this.getTheme();\n if (!themeFamily || themeFamily.indexOf('ag-theme') !== 0) {\n return;\n }\n if (!this.calculatedSizes) {\n this.calculatedSizes = {};\n }\n if (!this.calculatedSizes[themeFamily]) {\n this.calculatedSizes[themeFamily] = {};\n }\n const size = this.calculatedSizes[themeFamily][key];\n if (size != null) {\n return size;\n }\n this.calculatedSizes[themeFamily][key] = this.calculateValueForSassProperty(key, themeFamily, el);\n return this.calculatedSizes[themeFamily][key];\n }\n calculateValueForSassProperty(property, theme, themeElement) {\n const useTheme = 'ag-theme-' + (theme.match('material') ? 'material' : theme.match('balham') ? 'balham' : theme.match('alpine') ? 'alpine' : 'custom');\n const defaultValue = HARD_CODED_SIZES[useTheme][property];\n const eDocument = this.gridOptionsService.getDocument();\n if (!themeElement) {\n themeElement = this.eGridDiv;\n }\n if (!SASS_PROPERTY_BUILDER[property]) {\n return defaultValue;\n }\n const classList = SASS_PROPERTY_BUILDER[property];\n const div = eDocument.createElement('div');\n // this will apply SASS variables that were manually added to the current theme\n const classesFromThemeElement = Array.from(themeElement.classList);\n div.classList.add(theme, ...classesFromThemeElement);\n div.style.position = 'absolute';\n const el = classList.reduce((prevEl, currentClass) => {\n const currentDiv = eDocument.createElement('div');\n currentDiv.style.position = 'static';\n currentDiv.classList.add(currentClass);\n prevEl.appendChild(currentDiv);\n return currentDiv;\n }, div);\n let calculatedValue = 0;\n if (eDocument.body) {\n eDocument.body.appendChild(div);\n const sizeName = property.toLowerCase().indexOf('height') !== -1 ? 'height' : 'width';\n calculatedValue = parseInt(window.getComputedStyle(el)[sizeName], 10);\n eDocument.body.removeChild(div);\n }\n return calculatedValue || defaultValue;\n }\n isThemeDark() {\n const { theme } = this.getTheme();\n return !!theme && theme.indexOf('dark') >= 0;\n }\n chartMenuPanelWidth() {\n return this.getSassVariable('chartMenuPanelWidth');\n }\n getTheme() {\n const reg = /\\bag-(material|(?:theme-([\\w\\-]*)))\\b/g;\n let el = this.eGridDiv;\n let themeMatch = null;\n let allThemes = [];\n while (el) {\n themeMatch = reg.exec(el.className);\n if (!themeMatch) {\n el = el.parentElement || undefined;\n }\n else {\n const matched = el.className.match(reg);\n if (matched) {\n allThemes = matched;\n }\n break;\n }\n }\n if (!themeMatch) {\n return { allThemes };\n }\n const theme = themeMatch[0];\n return { theme, el, themeFamily: theme.replace(/-dark$/, ''), allThemes };\n }\n getFromTheme(defaultValue, sassVariableName) {\n var _a;\n return (_a = this.getSassVariable(sassVariableName)) !== null && _a !== void 0 ? _a : defaultValue;\n }\n getDefaultRowHeight() {\n return this.getFromTheme(DEFAULT_ROW_HEIGHT, 'rowHeight');\n }\n getListItemHeight() {\n return this.getFromTheme(20, 'listItemHeight');\n }\n setRowHeightVariable(height) {\n const oldRowHeight = this.eGridDiv.style.getPropertyValue('--ag-line-height').trim();\n const newRowHeight = `${height}px`;\n if (oldRowHeight != newRowHeight) {\n this.eGridDiv.style.setProperty('--ag-line-height', newRowHeight);\n }\n }\n getMinColWidth() {\n const measuredMin = this.getFromTheme(null, 'headerCellMinWidth');\n return exists(measuredMin) ? Math.max(measuredMin, MIN_COL_WIDTH) : MIN_COL_WIDTH;\n }\n destroy() {\n this.calculatedSizes = null;\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n }\n super.destroy();\n }\n};\n__decorate$y([\n Autowired('eGridDiv')\n], Environment.prototype, \"eGridDiv\", void 0);\n__decorate$y([\n PostConstruct\n], Environment.prototype, \"postConstruct\", null);\nEnvironment = __decorate$y([\n Bean('environment')\n], Environment);\n\nvar __decorate$x = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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$2 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\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 */\nlet RowContainerHeightService = class RowContainerHeightService extends BeanStub {\n constructor() {\n super(...arguments);\n // the scrollY position\n this.scrollY = 0;\n // how tall the body is\n this.uiBodyHeight = 0;\n }\n agWire(loggerFactory) {\n this.logger = loggerFactory.create(\"RowContainerHeightService\");\n }\n postConstruct() {\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 isStretching() {\n return this.stretching;\n }\n getDivStretchOffset() {\n return this.divStretchOffset;\n }\n updateOffset() {\n if (!this.stretching) {\n return;\n }\n const gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n const newScrollY = gridBodyCon.getScrollFeature().getVScrollPosition().top;\n const newBodyHeight = this.getUiBodyHeight();\n const atLeastOneChanged = newScrollY !== this.scrollY || newBodyHeight !== this.uiBodyHeight;\n if (atLeastOneChanged) {\n this.scrollY = newScrollY;\n this.uiBodyHeight = newBodyHeight;\n this.calculateOffset();\n }\n }\n calculateOffset() {\n this.setUiContainerHeight(this.maxDivHeight);\n this.pixelsToShave = this.modelHeight - this.uiContainerHeight;\n this.maxScrollY = this.uiContainerHeight - this.uiBodyHeight;\n const scrollPercent = this.scrollY / this.maxScrollY;\n const divStretchOffset = scrollPercent * this.pixelsToShave;\n this.logger.log(`Div Stretch Offset = ${divStretchOffset} (${this.pixelsToShave} * ${scrollPercent})`);\n this.setDivStretchOffset(divStretchOffset);\n }\n setUiContainerHeight(height) {\n if (height !== this.uiContainerHeight) {\n this.uiContainerHeight = height;\n this.eventService.dispatchEvent({ type: Events.EVENT_ROW_CONTAINER_HEIGHT_CHANGED });\n }\n }\n clearOffset() {\n this.setUiContainerHeight(this.modelHeight);\n this.pixelsToShave = 0;\n this.setDivStretchOffset(0);\n }\n setDivStretchOffset(newOffset) {\n // because we are talking pixels, no point in confusing things with half numbers\n const 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 setModelHeight(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 getUiContainerHeight() {\n return this.uiContainerHeight;\n }\n getRealPixelPosition(modelPixel) {\n return modelPixel - this.divStretchOffset;\n }\n getUiBodyHeight() {\n const gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n const pos = gridBodyCon.getScrollFeature().getVScrollPosition();\n return pos.bottom - pos.top;\n }\n getScrollPositionForPixel(rowTop) {\n if (this.pixelsToShave <= 0) {\n return rowTop;\n }\n const modelMaxScroll = this.modelHeight - this.getUiBodyHeight();\n const scrollPercent = rowTop / modelMaxScroll;\n const scrollPixel = this.maxScrollY * scrollPercent;\n return scrollPixel;\n }\n};\n__decorate$x([\n Autowired('ctrlsService')\n], RowContainerHeightService.prototype, \"ctrlsService\", void 0);\n__decorate$x([\n __param$2(0, Qualifier(\"loggerFactory\"))\n], RowContainerHeightService.prototype, \"agWire\", null);\n__decorate$x([\n PostConstruct\n], RowContainerHeightService.prototype, \"postConstruct\", null);\nRowContainerHeightService = __decorate$x([\n Bean('rowContainerHeightService')\n], RowContainerHeightService);\n\nvar __decorate$w = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet SelectableService = class SelectableService extends BeanStub {\n init() {\n this.groupSelectsChildren = this.gridOptionsService.is('groupSelectsChildren');\n this.isRowSelectableFunc = this.gridOptionsService.get('isRowSelectable');\n }\n updateSelectableAfterGrouping(rowNode) {\n if (this.isRowSelectableFunc) {\n const nextChildrenFunc = (node) => node.childrenAfterGroup;\n this.recurseDown(rowNode.childrenAfterGroup, nextChildrenFunc);\n }\n }\n recurseDown(children, nextChildrenFunc) {\n if (!children) {\n return;\n }\n children.forEach((child) => {\n if (!child.group) {\n return;\n } // only interested in groups\n if (child.hasChildren()) {\n this.recurseDown(nextChildrenFunc(child), nextChildrenFunc);\n }\n let rowSelectable;\n if (this.groupSelectsChildren) {\n // have this group selectable if at least one direct child is selectable\n const firstSelectable = (nextChildrenFunc(child) || []).find(rowNode => 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};\n__decorate$w([\n PostConstruct\n], SelectableService.prototype, \"init\", null);\nSelectableService = __decorate$w([\n Bean('selectableService')\n], SelectableService);\n\nvar __decorate$v = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass PaginationComp extends Component {\n constructor() {\n super();\n this.previousAndFirstButtonsDisabled = false;\n this.nextButtonDisabled = false;\n this.lastButtonDisabled = false;\n this.areListenersSetup = false;\n }\n postConstruct() {\n const isRtl = this.gridOptionsService.is('enableRtl');\n this.setTemplate(this.getTemplate());\n const { btFirst, btPrevious, btNext, btLast } = this;\n this.activateTabIndex([btFirst, btPrevious, btNext, btLast]);\n btFirst.insertAdjacentElement('afterbegin', createIconNoSpan(isRtl ? 'last' : 'first', this.gridOptionsService));\n btPrevious.insertAdjacentElement('afterbegin', createIconNoSpan(isRtl ? 'next' : 'previous', this.gridOptionsService));\n btNext.insertAdjacentElement('afterbegin', createIconNoSpan(isRtl ? 'previous' : 'next', this.gridOptionsService));\n btLast.insertAdjacentElement('afterbegin', createIconNoSpan(isRtl ? 'first' : 'last', this.gridOptionsService));\n this.addManagedPropertyListener('pagination', this.onPaginationChanged.bind(this));\n this.addManagedPropertyListener('suppressPaginationPanel', this.onPaginationChanged.bind(this));\n this.onPaginationChanged();\n }\n onPaginationChanged() {\n const isPaging = this.gridOptionsService.is('pagination');\n const paginationPanelEnabled = isPaging && !this.gridOptionsService.is('suppressPaginationPanel');\n this.setDisplayed(paginationPanelEnabled);\n if (!paginationPanelEnabled) {\n return;\n }\n this.setupListeners();\n this.enableOrDisableButtons();\n this.updateRowLabels();\n this.setCurrentPageLabel();\n this.setTotalLabels();\n }\n setupListeners() {\n if (!this.areListenersSetup) {\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(item => {\n const { el, fn } = item;\n this.addManagedListener(el, 'click', fn);\n this.addManagedListener(el, 'keydown', (e) => {\n if (e.key === KeyCode.ENTER || e.key === KeyCode.SPACE) {\n e.preventDefault();\n fn();\n }\n });\n });\n this.areListenersSetup = true;\n }\n }\n onBtFirst() {\n if (!this.previousAndFirstButtonsDisabled) {\n this.paginationProxy.goToFirstPage();\n }\n }\n setCurrentPageLabel() {\n const pagesExist = this.paginationProxy.getTotalPages() > 0;\n const currentPage = this.paginationProxy.getCurrentPage();\n const toDisplay = pagesExist ? currentPage + 1 : 0;\n this.lbCurrent.innerHTML = this.formatNumber(toDisplay);\n }\n formatNumber(value) {\n const userFunc = this.gridOptionsService.getCallback('paginationNumberFormatter');\n if (userFunc) {\n const params = { value: value };\n return userFunc(params);\n }\n const localeTextFunc = this.localeService.getLocaleTextFunc();\n const thousandSeparator = localeTextFunc('thousandSeparator', ',');\n const decimalSeparator = localeTextFunc('decimalSeparator', '.');\n return formatNumberCommas(value, thousandSeparator, decimalSeparator);\n }\n getTemplate() {\n const localeTextFunc = this.localeService.getLocaleTextFunc();\n const strPage = localeTextFunc('page', 'Page');\n const strTo = localeTextFunc('to', 'to');\n const strOf = localeTextFunc('of', 'of');\n const strFirst = localeTextFunc('firstPage', 'First Page');\n const strPrevious = localeTextFunc('previousPage', 'Previous Page');\n const strNext = localeTextFunc('nextPage', 'Next Page');\n const strLast = localeTextFunc('lastPage', 'Last Page');\n const 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 onBtNext() {\n if (!this.nextButtonDisabled) {\n this.paginationProxy.goToNextPage();\n }\n }\n onBtPrevious() {\n if (!this.previousAndFirstButtonsDisabled) {\n this.paginationProxy.goToPreviousPage();\n }\n }\n onBtLast() {\n if (!this.lastButtonDisabled) {\n this.paginationProxy.goToLastPage();\n }\n }\n enableOrDisableButtons() {\n const currentPage = this.paginationProxy.getCurrentPage();\n const maxRowFound = this.paginationProxy.isLastPageFound();\n const totalPages = this.paginationProxy.getTotalPages();\n this.previousAndFirstButtonsDisabled = currentPage === 0;\n this.toggleButtonDisabled(this.btFirst, this.previousAndFirstButtonsDisabled);\n this.toggleButtonDisabled(this.btPrevious, this.previousAndFirstButtonsDisabled);\n const zeroPagesToDisplay = this.isZeroPagesToDisplay();\n const onLastPage = maxRowFound && currentPage === (totalPages - 1);\n this.nextButtonDisabled = onLastPage || zeroPagesToDisplay;\n this.lastButtonDisabled = !maxRowFound || zeroPagesToDisplay || currentPage === (totalPages - 1);\n this.toggleButtonDisabled(this.btNext, this.nextButtonDisabled);\n this.toggleButtonDisabled(this.btLast, this.lastButtonDisabled);\n }\n toggleButtonDisabled(button, disabled) {\n setAriaDisabled(button, disabled);\n button.classList.toggle('ag-disabled', disabled);\n }\n updateRowLabels() {\n const currentPage = this.paginationProxy.getCurrentPage();\n const pageSize = this.paginationProxy.getPageSize();\n const maxRowFound = this.paginationProxy.isLastPageFound();\n const rowCount = this.paginationProxy.isLastPageFound() ?\n this.paginationProxy.getMasterRowCount() : null;\n let startRow;\n let 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 const translate = this.localeService.getLocaleTextFunc();\n this.lbLastRowOnPage.innerHTML = translate('pageLastRowUnknown', '?');\n }\n else {\n this.lbLastRowOnPage.innerHTML = this.formatNumber(endRow);\n }\n }\n isZeroPagesToDisplay() {\n const maxRowFound = this.paginationProxy.isLastPageFound();\n const totalPages = this.paginationProxy.getTotalPages();\n return maxRowFound && totalPages === 0;\n }\n setTotalLabels() {\n const lastPageFound = this.paginationProxy.isLastPageFound();\n const totalPages = this.paginationProxy.getTotalPages();\n const 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 const firstRow = this.paginationProxy.getRow(0);\n // a group node with no group or agg data will not be visible to users\n const 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 const moreText = this.localeService.getLocaleTextFunc()('more', 'more');\n this.lbTotal.innerHTML = moreText;\n this.lbRecordCount.innerHTML = moreText;\n }\n }\n setTotalLabelsToZero() {\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}\n__decorate$v([\n Autowired('paginationProxy')\n], PaginationComp.prototype, \"paginationProxy\", void 0);\n__decorate$v([\n Autowired('rowNodeBlockLoader')\n], PaginationComp.prototype, \"rowNodeBlockLoader\", void 0);\n__decorate$v([\n RefSelector('btFirst')\n], PaginationComp.prototype, \"btFirst\", void 0);\n__decorate$v([\n RefSelector('btPrevious')\n], PaginationComp.prototype, \"btPrevious\", void 0);\n__decorate$v([\n RefSelector('btNext')\n], PaginationComp.prototype, \"btNext\", void 0);\n__decorate$v([\n RefSelector('btLast')\n], PaginationComp.prototype, \"btLast\", void 0);\n__decorate$v([\n RefSelector('lbRecordCount')\n], PaginationComp.prototype, \"lbRecordCount\", void 0);\n__decorate$v([\n RefSelector('lbFirstRowOnPage')\n], PaginationComp.prototype, \"lbFirstRowOnPage\", void 0);\n__decorate$v([\n RefSelector('lbLastRowOnPage')\n], PaginationComp.prototype, \"lbLastRowOnPage\", void 0);\n__decorate$v([\n RefSelector('lbCurrent')\n], PaginationComp.prototype, \"lbCurrent\", void 0);\n__decorate$v([\n RefSelector('lbTotal')\n], PaginationComp.prototype, \"lbTotal\", void 0);\n__decorate$v([\n PostConstruct\n], PaginationComp.prototype, \"postConstruct\", null);\n\nvar __decorate$u = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 LoadingType;\n(function (LoadingType) {\n LoadingType[LoadingType[\"Loading\"] = 0] = \"Loading\";\n LoadingType[LoadingType[\"NoRows\"] = 1] = \"NoRows\";\n})(LoadingType || (LoadingType = {}));\nclass OverlayWrapperComponent extends Component {\n constructor() {\n super(OverlayWrapperComponent.TEMPLATE);\n this.inProgress = false;\n this.destroyRequested = false;\n this.manuallyDisplayed = false;\n }\n updateLayoutClasses(cssClass, params) {\n const 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 postConstruct() {\n this.createManagedBean(new LayoutFeature(this));\n this.setDisplayed(false, { skipAriaHidden: true });\n this.addManagedListener(this.eventService, Events.EVENT_ROW_DATA_UPDATED, this.onRowDataUpdated.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.onNewColumnsLoaded.bind(this));\n if (this.gridOptionsService.isRowModelType('clientSide') && !this.gridOptionsService.get('rowData')) {\n this.showLoadingOverlay();\n }\n this.gridApi.registerOverlayWrapperComp(this);\n }\n setWrapperTypeClass(loadingType) {\n const 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 showLoadingOverlay() {\n if (this.gridOptionsService.is('suppressLoadingOverlay')) {\n return;\n }\n const params = {};\n const compDetails = this.userComponentFactory.getLoadingOverlayCompDetails(params);\n const promise = compDetails.newAgStackInstance();\n this.showOverlay(promise, LoadingType.Loading);\n }\n showNoRowsOverlay() {\n if (this.gridOptionsService.is('suppressNoRowsOverlay')) {\n return;\n }\n const params = {};\n const compDetails = this.userComponentFactory.getNoRowsOverlayCompDetails(params);\n const promise = compDetails.newAgStackInstance();\n this.showOverlay(promise, LoadingType.NoRows);\n }\n showOverlay(workItem, type) {\n if (this.inProgress) {\n return;\n }\n this.setWrapperTypeClass(type);\n this.destroyActiveOverlay();\n this.inProgress = true;\n if (workItem) {\n workItem.then(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.manuallyDisplayed = this.columnModel.isReady() && !this.paginationProxy.isEmpty();\n this.setDisplayed(true, { skipAriaHidden: true });\n }\n destroyActiveOverlay() {\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 hideOverlay() {\n this.manuallyDisplayed = false;\n this.destroyActiveOverlay();\n this.setDisplayed(false, { skipAriaHidden: true });\n }\n destroy() {\n this.destroyActiveOverlay();\n super.destroy();\n }\n showOrHideOverlay() {\n const isEmpty = this.paginationProxy.isEmpty();\n const isSuppressNoRowsOverlay = this.gridOptionsService.is('suppressNoRowsOverlay');\n if (isEmpty && !isSuppressNoRowsOverlay) {\n this.showNoRowsOverlay();\n }\n else {\n this.hideOverlay();\n }\n }\n onRowDataUpdated() {\n this.showOrHideOverlay();\n }\n onNewColumnsLoaded() {\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() && !this.manuallyDisplayed) {\n this.hideOverlay();\n }\n }\n}\n// wrapping in outer div, and wrapper, is needed to center the loading icon\nOverlayWrapperComponent.TEMPLATE = `\n
\n
\n
\n
\n
`;\n__decorate$u([\n Autowired('userComponentFactory')\n], OverlayWrapperComponent.prototype, \"userComponentFactory\", void 0);\n__decorate$u([\n Autowired('paginationProxy')\n], OverlayWrapperComponent.prototype, \"paginationProxy\", void 0);\n__decorate$u([\n Autowired('gridApi')\n], OverlayWrapperComponent.prototype, \"gridApi\", void 0);\n__decorate$u([\n Autowired('columnModel')\n], OverlayWrapperComponent.prototype, \"columnModel\", void 0);\n__decorate$u([\n RefSelector('eOverlayWrapper')\n], OverlayWrapperComponent.prototype, \"eOverlayWrapper\", void 0);\n__decorate$u([\n PostConstruct\n], OverlayWrapperComponent.prototype, \"postConstruct\", null);\n\nvar __decorate$t = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet RowPositionUtils = class RowPositionUtils extends BeanStub {\n getFirstRow() {\n let rowIndex = 0;\n let rowPinned;\n if (this.pinnedRowModel.getPinnedTopRowCount()) {\n rowPinned = '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 = 'bottom';\n }\n return rowPinned === undefined ? null : { rowIndex, rowPinned };\n }\n getLastRow() {\n let rowIndex;\n let rowPinned = null;\n const pinnedBottomCount = this.pinnedRowModel.getPinnedBottomRowCount();\n const pinnedTopCount = this.pinnedRowModel.getPinnedTopRowCount();\n if (pinnedBottomCount) {\n rowPinned = '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 = 'top';\n rowIndex = pinnedTopCount - 1;\n }\n return rowIndex === undefined ? null : { rowIndex, rowPinned };\n }\n getRowNode(gridRow) {\n switch (gridRow.rowPinned) {\n case 'top':\n return this.pinnedRowModel.getPinnedTopRowData()[gridRow.rowIndex];\n case 'bottom':\n return this.pinnedRowModel.getPinnedBottomRowData()[gridRow.rowIndex];\n default:\n return this.rowModel.getRow(gridRow.rowIndex);\n }\n }\n sameRow(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 before(rowA, rowB) {\n switch (rowA.rowPinned) {\n case 'top':\n // we we are floating top, and other isn't, then we are always before\n if (rowB.rowPinned !== 'top') {\n return true;\n }\n break;\n case 'bottom':\n // if we are floating bottom, and the other isn't, then we are never before\n if (rowB.rowPinned !== '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 !== 'top';\n }\n break;\n }\n return rowA.rowIndex < rowB.rowIndex;\n }\n rowMax(rows) {\n let max;\n rows.forEach((row) => {\n if (max === undefined || this.before(max, row)) {\n max = row;\n }\n });\n return max;\n }\n rowMin(rows) {\n let min;\n rows.forEach((row) => {\n if (min === undefined || this.before(row, min)) {\n min = row;\n }\n });\n return min;\n }\n};\n__decorate$t([\n Autowired('rowModel')\n], RowPositionUtils.prototype, \"rowModel\", void 0);\n__decorate$t([\n Autowired('pinnedRowModel')\n], RowPositionUtils.prototype, \"pinnedRowModel\", void 0);\n__decorate$t([\n Autowired('paginationProxy')\n], RowPositionUtils.prototype, \"paginationProxy\", void 0);\nRowPositionUtils = __decorate$t([\n Bean('rowPositionUtils')\n], RowPositionUtils);\n\nvar __decorate$s = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet CellPositionUtils = class CellPositionUtils extends BeanStub {\n createId(cellPosition) {\n const { rowIndex, rowPinned, column } = cellPosition;\n return this.createIdFromValues({ rowIndex, column, rowPinned });\n }\n createIdFromValues(cellPosition) {\n const { rowIndex, rowPinned, column } = cellPosition;\n return `${rowIndex}.${rowPinned == null ? 'null' : rowPinned}.${column.getId()}`;\n }\n equals(cellA, cellB) {\n const colsMatch = cellA.column === cellB.column;\n const floatingMatch = cellA.rowPinned === cellB.rowPinned;\n const indexMatch = cellA.rowIndex === cellB.rowIndex;\n return colsMatch && floatingMatch && indexMatch;\n }\n};\nCellPositionUtils = __decorate$s([\n Bean('cellPositionUtils')\n], CellPositionUtils);\n\nclass UndoRedoAction {\n constructor(cellValueChanges) {\n this.cellValueChanges = cellValueChanges;\n }\n}\nclass RangeUndoRedoAction extends UndoRedoAction {\n constructor(cellValueChanges, initialRange, finalRange, ranges) {\n super(cellValueChanges);\n this.initialRange = initialRange;\n this.finalRange = finalRange;\n this.ranges = ranges;\n }\n}\nclass UndoRedoStack {\n constructor(maxStackSize) {\n this.actionStack = [];\n this.maxStackSize = maxStackSize ? maxStackSize : UndoRedoStack.DEFAULT_STACK_SIZE;\n this.actionStack = new Array(this.maxStackSize);\n }\n pop() {\n return this.actionStack.pop();\n }\n push(item) {\n const 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 clear() {\n this.actionStack = [];\n }\n getCurrentStackSize() {\n return this.actionStack.length;\n }\n}\nUndoRedoStack.DEFAULT_STACK_SIZE = 10;\n\nvar __decorate$r = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet UndoRedoService = class UndoRedoService extends BeanStub {\n constructor() {\n super(...arguments);\n this.cellValueChanges = [];\n this.activeCellEdit = null;\n this.activeRowEdit = null;\n this.isPasting = false;\n this.isRangeInAction = false;\n this.onCellValueChanged = (event) => {\n const eventCell = { column: event.column, rowIndex: event.rowIndex, rowPinned: event.rowPinned };\n const isCellEditing = this.activeCellEdit !== null && this.cellPositionUtils.equals(this.activeCellEdit, eventCell);\n const isRowEditing = this.activeRowEdit !== null && this.rowPositionUtils.sameRow(this.activeRowEdit, eventCell);\n const shouldCaptureAction = isCellEditing || isRowEditing || this.isPasting || this.isRangeInAction;\n if (!shouldCaptureAction) {\n return;\n }\n const { rowPinned, rowIndex, column, oldValue, value } = event;\n const cellValueChange = {\n rowPinned,\n rowIndex: rowIndex,\n columnId: column.getColId(),\n newValue: value,\n oldValue\n };\n this.cellValueChanges.push(cellValueChange);\n };\n this.clearStacks = () => {\n this.undoStack.clear();\n this.redoStack.clear();\n };\n }\n init() {\n if (!this.gridOptionsService.is('undoRedoCellEditing')) {\n return;\n }\n const undoRedoLimit = this.gridOptionsService.getNum('undoRedoCellEditingLimit');\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.addCellKeyListeners();\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, e => {\n if (!e.keepUndoRedoStack) {\n this.clearStacks();\n }\n });\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 this.ctrlsService.whenReady(() => {\n this.gridBodyCtrl = this.ctrlsService.getGridBodyCtrl();\n });\n }\n getCurrentUndoStackSize() {\n return this.undoStack ? this.undoStack.getCurrentStackSize() : 0;\n }\n getCurrentRedoStackSize() {\n return this.redoStack ? this.redoStack.getCurrentStackSize() : 0;\n }\n undo(source) {\n const startEvent = {\n type: Events.EVENT_UNDO_STARTED,\n source\n };\n this.eventService.dispatchEvent(startEvent);\n const operationPerformed = this.undoRedo(this.undoStack, this.redoStack, 'initialRange', 'oldValue', 'undo');\n const endEvent = {\n type: Events.EVENT_UNDO_ENDED,\n source,\n operationPerformed\n };\n this.eventService.dispatchEvent(endEvent);\n }\n redo(source) {\n const startEvent = {\n type: Events.EVENT_REDO_STARTED,\n source\n };\n this.eventService.dispatchEvent(startEvent);\n const operationPerformed = this.undoRedo(this.redoStack, this.undoStack, 'finalRange', 'newValue', 'redo');\n const endEvent = {\n type: Events.EVENT_REDO_ENDED,\n source,\n operationPerformed\n };\n this.eventService.dispatchEvent(endEvent);\n }\n undoRedo(undoRedoStack, opposingUndoRedoStack, rangeProperty, cellValueChangeProperty, source) {\n if (!undoRedoStack) {\n return false;\n }\n const undoRedoAction = undoRedoStack.pop();\n if (!undoRedoAction || !undoRedoAction.cellValueChanges) {\n return false;\n }\n this.processAction(undoRedoAction, (cellValueChange) => cellValueChange[cellValueChangeProperty], source);\n if (undoRedoAction instanceof RangeUndoRedoAction) {\n this.processRange(undoRedoAction.ranges || [undoRedoAction[rangeProperty]]);\n }\n else {\n this.processCell(undoRedoAction.cellValueChanges);\n }\n opposingUndoRedoStack.push(undoRedoAction);\n return true;\n }\n processAction(action, valueExtractor, source) {\n action.cellValueChanges.forEach(cellValueChange => {\n const { rowIndex, rowPinned, columnId } = cellValueChange;\n const rowPosition = { rowIndex, rowPinned };\n const 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), source);\n });\n }\n processRange(ranges) {\n let lastFocusedCell;\n this.rangeService.removeAllCellRanges(true);\n ranges.forEach((range, idx) => {\n if (!range) {\n return;\n }\n const startRow = range.startRow;\n const endRow = range.endRow;\n if (idx === ranges.length - 1) {\n lastFocusedCell = {\n rowPinned: startRow.rowPinned,\n rowIndex: startRow.rowIndex,\n columnId: range.startColumn.getColId()\n };\n this.setLastFocusedCell(lastFocusedCell);\n }\n const 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.rangeService.addCellRange(cellRangeParams);\n });\n }\n processCell(cellValueChanges) {\n const cellValueChange = cellValueChanges[0];\n const { rowIndex, rowPinned } = cellValueChange;\n const rowPosition = { rowIndex, rowPinned };\n const row = this.getRowNode(rowPosition);\n const lastFocusedCell = {\n rowPinned: cellValueChange.rowPinned,\n rowIndex: row.rowIndex,\n columnId: cellValueChange.columnId\n };\n // when single cells are being processed, they should be considered\n // as ranges when the rangeService is present (singleCellRanges).\n // otherwise focus will be restore but the range will not.\n this.setLastFocusedCell(lastFocusedCell, !!this.rangeService);\n }\n setLastFocusedCell(lastFocusedCell, setRangeToCell) {\n const { rowIndex, columnId, rowPinned } = lastFocusedCell;\n const scrollFeature = this.gridBodyCtrl.getScrollFeature();\n const column = this.columnModel.getGridColumn(columnId);\n if (!column) {\n return;\n }\n scrollFeature.ensureIndexVisible(rowIndex);\n scrollFeature.ensureColumnVisible(column);\n const cellPosition = { rowIndex, column, rowPinned };\n this.focusService.setFocusedCell(Object.assign(Object.assign({}, cellPosition), { forceBrowserFocus: true }));\n if (setRangeToCell) {\n this.rangeService.setRangeToCell(cellPosition);\n }\n }\n addRowEditingListeners() {\n this.addManagedListener(this.eventService, Events.EVENT_ROW_EDITING_STARTED, (e) => {\n this.activeRowEdit = { rowIndex: e.rowIndex, rowPinned: e.rowPinned };\n });\n this.addManagedListener(this.eventService, Events.EVENT_ROW_EDITING_STOPPED, () => {\n const action = new UndoRedoAction(this.cellValueChanges);\n this.pushActionsToUndoStack(action);\n this.activeRowEdit = null;\n });\n }\n addCellEditingListeners() {\n this.addManagedListener(this.eventService, Events.EVENT_CELL_EDITING_STARTED, (e) => {\n this.activeCellEdit = { column: e.column, rowIndex: e.rowIndex, rowPinned: e.rowPinned };\n });\n this.addManagedListener(this.eventService, Events.EVENT_CELL_EDITING_STOPPED, (e) => {\n this.activeCellEdit = null;\n const shouldPushAction = e.valueChanged && !this.activeRowEdit && !this.isPasting && !this.isRangeInAction;\n if (shouldPushAction) {\n const action = new UndoRedoAction(this.cellValueChanges);\n this.pushActionsToUndoStack(action);\n }\n });\n }\n addPasteListeners() {\n this.addManagedListener(this.eventService, Events.EVENT_PASTE_START, () => {\n this.isPasting = true;\n });\n this.addManagedListener(this.eventService, Events.EVENT_PASTE_END, () => {\n const action = new UndoRedoAction(this.cellValueChanges);\n this.pushActionsToUndoStack(action);\n this.isPasting = false;\n });\n }\n addFillListeners() {\n this.addManagedListener(this.eventService, Events.EVENT_FILL_START, () => {\n this.isRangeInAction = true;\n });\n this.addManagedListener(this.eventService, Events.EVENT_FILL_END, (event) => {\n const action = new RangeUndoRedoAction(this.cellValueChanges, event.initialRange, event.finalRange);\n this.pushActionsToUndoStack(action);\n this.isRangeInAction = false;\n });\n }\n addCellKeyListeners() {\n this.addManagedListener(this.eventService, Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_START, () => {\n this.isRangeInAction = true;\n });\n this.addManagedListener(this.eventService, Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_END, () => {\n let action;\n if (this.rangeService && this.gridOptionsService.isEnableRangeSelection()) {\n action = new RangeUndoRedoAction(this.cellValueChanges, undefined, undefined, [...this.rangeService.getCellRanges()]);\n }\n else {\n action = new UndoRedoAction(this.cellValueChanges);\n }\n this.pushActionsToUndoStack(action);\n this.isRangeInAction = false;\n });\n }\n pushActionsToUndoStack(action) {\n this.undoStack.push(action);\n this.cellValueChanges = [];\n this.redoStack.clear();\n }\n getRowNode(gridRow) {\n switch (gridRow.rowPinned) {\n case 'top':\n return this.pinnedRowModel.getPinnedTopRowData()[gridRow.rowIndex];\n case 'bottom':\n return this.pinnedRowModel.getPinnedBottomRowData()[gridRow.rowIndex];\n default:\n return this.rowModel.getRow(gridRow.rowIndex);\n }\n }\n};\n__decorate$r([\n Autowired('focusService')\n], UndoRedoService.prototype, \"focusService\", void 0);\n__decorate$r([\n Autowired('ctrlsService')\n], UndoRedoService.prototype, \"ctrlsService\", void 0);\n__decorate$r([\n Autowired('rowModel')\n], UndoRedoService.prototype, \"rowModel\", void 0);\n__decorate$r([\n Autowired('pinnedRowModel')\n], UndoRedoService.prototype, \"pinnedRowModel\", void 0);\n__decorate$r([\n Autowired('cellPositionUtils')\n], UndoRedoService.prototype, \"cellPositionUtils\", void 0);\n__decorate$r([\n Autowired('rowPositionUtils')\n], UndoRedoService.prototype, \"rowPositionUtils\", void 0);\n__decorate$r([\n Autowired('columnModel')\n], UndoRedoService.prototype, \"columnModel\", void 0);\n__decorate$r([\n Optional('rangeService')\n], UndoRedoService.prototype, \"rangeService\", void 0);\n__decorate$r([\n PostConstruct\n], UndoRedoService.prototype, \"init\", null);\nUndoRedoService = __decorate$r([\n Bean('undoRedoService')\n], UndoRedoService);\n\nvar __decorate$q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet HeaderPositionUtils = class HeaderPositionUtils extends BeanStub {\n findHeader(focusedHeader, direction) {\n let nextColumn;\n let getGroupMethod;\n let 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 }\n let { headerRowIndex } = focusedHeader;\n const currentRowType = this.getHeaderRowType(headerRowIndex);\n if (currentRowType === HeaderRowType.COLUMN_GROUP) {\n const columnGroup = nextColumn;\n if (columnGroup.isPadding() && this.isAnyChildSpanningHeaderHeight(columnGroup)) {\n const { nextFocusColumn, nextRow } = this.getColumnVisibleChild(columnGroup, headerRowIndex, direction);\n if (nextFocusColumn) {\n nextColumn = nextFocusColumn;\n headerRowIndex = nextRow;\n }\n }\n }\n return {\n column: nextColumn,\n headerRowIndex\n };\n }\n isAnyChildSpanningHeaderHeight(columnGroup) {\n if (!columnGroup) {\n return false;\n }\n return columnGroup.getLeafColumns().some(col => col.isSpanHeaderHeight());\n }\n getColumnVisibleParent(currentColumn, currentIndex) {\n const currentRowType = this.getHeaderRowType(currentIndex);\n const isFloatingFilter = currentRowType === HeaderRowType.FLOATING_FILTER;\n const isColumn = currentRowType === HeaderRowType.COLUMN;\n let nextFocusColumn = isFloatingFilter ? currentColumn : currentColumn.getParent();\n let nextRow = currentIndex - 1;\n if (isColumn && this.isAnyChildSpanningHeaderHeight(currentColumn.getParent())) {\n while (nextFocusColumn && nextFocusColumn.isPadding()) {\n nextFocusColumn = nextFocusColumn.getParent();\n nextRow--;\n }\n if (nextRow < 0) {\n nextFocusColumn = currentColumn;\n nextRow = currentIndex;\n }\n }\n return { nextFocusColumn: nextFocusColumn, nextRow };\n }\n getColumnVisibleChild(column, currentIndex, direction = 'After') {\n const currentRowType = this.getHeaderRowType(currentIndex);\n let nextFocusColumn = column;\n let nextRow = currentIndex + 1;\n if (currentRowType === HeaderRowType.COLUMN_GROUP) {\n const leafColumns = column.getLeafColumns();\n const leafChild = direction === 'After' ? leafColumns[0] : last(leafColumns);\n if (this.isAnyChildSpanningHeaderHeight(leafChild.getParent())) {\n nextFocusColumn = leafChild;\n let currentColumn = leafChild.getParent();\n while (currentColumn && currentColumn !== column) {\n currentColumn = currentColumn.getParent();\n nextRow++;\n }\n }\n else {\n nextFocusColumn = column.getDisplayedChildren()[0];\n }\n }\n return { nextFocusColumn, nextRow };\n }\n getHeaderRowType(rowIndex) {\n const centerHeaderContainer = this.ctrlsService.getHeaderRowContainerCtrl();\n if (centerHeaderContainer) {\n return centerHeaderContainer.getRowType(rowIndex);\n }\n }\n findColAtEdgeForHeaderRow(level, position) {\n const displayedColumns = this.columnModel.getAllDisplayedColumns();\n const column = displayedColumns[position === 'start' ? 0 : displayedColumns.length - 1];\n if (!column) {\n return;\n }\n const childContainer = this.ctrlsService.getHeaderRowContainerCtrl(column.getPinned());\n const type = childContainer.getRowType(level);\n if (type == HeaderRowType.COLUMN_GROUP) {\n const 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\n };\n }\n};\n__decorate$q([\n Autowired('columnModel')\n], HeaderPositionUtils.prototype, \"columnModel\", void 0);\n__decorate$q([\n Autowired('ctrlsService')\n], HeaderPositionUtils.prototype, \"ctrlsService\", void 0);\nHeaderPositionUtils = __decorate$q([\n Bean('headerPositionUtils')\n], HeaderPositionUtils);\n\nvar __decorate$p = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet ColumnDefFactory = class ColumnDefFactory {\n buildColumnDefs(cols, rowGroupColumns, pivotColumns) {\n const res = [];\n const colGroupDefs = {};\n cols.forEach(col => {\n const colDef = this.createDefFromColumn(col, rowGroupColumns, pivotColumns);\n let addToResult = true;\n let childDef = colDef;\n let pointer = col.getOriginalParent();\n let lastPointer = null;\n while (pointer) {\n let 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 const 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 if (pointer != null && lastPointer === pointer) {\n addToResult = false;\n break;\n }\n // Ensure we don't get stuck in an infinite loop\n lastPointer = pointer;\n }\n if (addToResult) {\n res.push(childDef);\n }\n });\n return res;\n }\n createDefFromGroup(group) {\n const defCloned = deepCloneDefinition(group.getColGroupDef(), ['children']);\n if (defCloned) {\n defCloned.groupId = group.getGroupId();\n }\n return defCloned;\n }\n createDefFromColumn(col, rowGroupColumns, pivotColumns) {\n const 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};\nColumnDefFactory = __decorate$p([\n Bean('columnDefFactory')\n], ColumnDefFactory);\n\nvar __decorate$o = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet RowCssClassCalculator = class RowCssClassCalculator {\n getInitialRowClasses(params) {\n const 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));\n pushAll(classes, this.preProcessRowClassRules(params.rowNode));\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 === 'left') {\n classes.push('ag-cell-last-left-pinned');\n }\n if (params.pinned === 'right') {\n classes.push('ag-cell-first-right-pinned');\n }\n }\n return classes;\n }\n processClassesFromGridOptions(rowNode) {\n const res = [];\n const process = (rowCls) => {\n if (typeof rowCls === 'string') {\n res.push(rowCls);\n }\n else if (Array.isArray(rowCls)) {\n rowCls.forEach(e => res.push(e));\n }\n };\n // part 1 - rowClass\n const rowClass = this.gridOptionsService.get('rowClass');\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 const rowClassFunc = this.gridOptionsService.getCallback('getRowClass');\n if (rowClassFunc) {\n const params = {\n data: rowNode.data,\n node: rowNode,\n rowIndex: rowNode.rowIndex\n };\n const rowClassFuncResult = rowClassFunc(params);\n process(rowClassFuncResult);\n }\n return res;\n }\n preProcessRowClassRules(rowNode) {\n const res = [];\n this.processRowClassRules(rowNode, (className) => {\n res.push(className);\n }, (className) => {\n // not catered for, if creating, no need\n // to remove class as it was never there\n });\n return res;\n }\n processRowClassRules(rowNode, onApplicableClass, onNotApplicableClass) {\n const rowClassParams = {\n data: rowNode.data,\n node: rowNode,\n rowIndex: rowNode.rowIndex,\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context\n };\n this.stylingService.processClassRules(this.gridOptionsService.get('rowClassRules'), rowClassParams, onApplicableClass, onNotApplicableClass);\n }\n calculateRowLevel(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};\n__decorate$o([\n Autowired('stylingService')\n], RowCssClassCalculator.prototype, \"stylingService\", void 0);\n__decorate$o([\n Autowired('gridOptionsService')\n], RowCssClassCalculator.prototype, \"gridOptionsService\", void 0);\nRowCssClassCalculator = __decorate$o([\n Bean('rowCssClassCalculator')\n], RowCssClassCalculator);\n\nvar __decorate$n = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// this logic is used by both SSRM and CSRM\nlet RowNodeSorter = class RowNodeSorter extends BeanStub {\n init() {\n this.isAccentedSort = this.gridOptionsService.is('accentedSort');\n this.primaryColumnsSortGroups = this.gridOptionsService.isColumnsSortingCoupledToGroup();\n this.addManagedPropertyListener('accentedSort', (propChange) => this.isAccentedSort = propChange.currentValue);\n this.addManagedPropertyListener('autoGroupColumnDef', () => this.primaryColumnsSortGroups = this.gridOptionsService.isColumnsSortingCoupledToGroup());\n }\n doFullSort(rowNodes, sortOptions) {\n const mapper = (rowNode, pos) => ({ currentPos: pos, rowNode: rowNode });\n const sortedRowNodes = rowNodes.map(mapper);\n sortedRowNodes.sort(this.compareRowNodes.bind(this, sortOptions));\n return sortedRowNodes.map(item => item.rowNode);\n }\n compareRowNodes(sortOptions, sortedNodeA, sortedNodeB) {\n const nodeA = sortedNodeA.rowNode;\n const nodeB = sortedNodeB.rowNode;\n // Iterate columns, return the first that doesn't match\n for (let i = 0, len = sortOptions.length; i < len; i++) {\n const sortOption = sortOptions[i];\n const isDescending = sortOption.sort === 'desc';\n const valueA = this.getValue(nodeA, sortOption.column);\n const valueB = this.getValue(nodeB, sortOption.column);\n let comparatorResult;\n const providedComparator = this.getComparator(sortOption, nodeA);\n if (providedComparator) {\n //if comparator provided, use it\n comparatorResult = providedComparator(valueA, valueB, nodeA, nodeB, isDescending);\n }\n else {\n //otherwise do our own comparison\n comparatorResult = _.defaultComparator(valueA, valueB, this.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 const validResult = !isNaN(comparatorResult);\n if (validResult && comparatorResult !== 0) {\n return sortOption.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 getComparator(sortOption, rowNode) {\n const column = sortOption.column;\n // comparator on col get preference over everything else\n const comparatorOnCol = column.getColDef().comparator;\n if (comparatorOnCol != null) {\n return comparatorOnCol;\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 const groupLeafField = !rowNode.group && column.getColDef().field;\n if (!groupLeafField) {\n return;\n }\n const primaryColumn = this.columnModel.getPrimaryColumn(groupLeafField);\n if (!primaryColumn) {\n return;\n }\n return primaryColumn.getColDef().comparator;\n }\n getValue(node, column) {\n var _a, _b;\n if (!this.primaryColumnsSortGroups) {\n return this.valueService.getValue(column, node, false, false);\n }\n const isNodeGroupedAtLevel = node.rowGroupColumn === column;\n if (isNodeGroupedAtLevel) {\n const isGroupRows = this.gridOptionsService.isGroupUseEntireRow(this.columnModel.isPivotActive());\n if (isGroupRows) {\n // if the column has a provided a keyCreator, we have to use the key, as the group could be\n // irrelevant to the column value\n const keyCreator = column.getColDef().keyCreator;\n if (keyCreator) {\n return node.key;\n }\n // if the group was generated from the column data, all the leaf children should return the same\n // value\n const leafChild = (_a = node.allLeafChildren) === null || _a === void 0 ? void 0 : _a[0];\n if (leafChild) {\n return this.valueService.getValue(column, leafChild, false, false);\n }\n return undefined;\n }\n const displayCol = this.columnModel.getGroupDisplayColumnForGroup(column.getId());\n if (!displayCol) {\n return undefined;\n }\n return (_b = node.groupData) === null || _b === void 0 ? void 0 : _b[displayCol.getId()];\n }\n if (node.group && column.getColDef().showRowGroup) {\n return undefined;\n }\n return this.valueService.getValue(column, node, false, false);\n }\n};\n__decorate$n([\n Autowired('valueService')\n], RowNodeSorter.prototype, \"valueService\", void 0);\n__decorate$n([\n Autowired('columnModel')\n], RowNodeSorter.prototype, \"columnModel\", void 0);\n__decorate$n([\n PostConstruct\n], RowNodeSorter.prototype, \"init\", null);\nRowNodeSorter = __decorate$n([\n Bean('rowNodeSorter')\n], RowNodeSorter);\n\nvar __decorate$m = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 CtrlsService_1;\nlet CtrlsService = CtrlsService_1 = class CtrlsService extends BeanStub {\n constructor() {\n super(...arguments);\n this.ready = false;\n this.readyCallbacks = [];\n }\n checkReady() {\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.stickyTopCenterRowContainerCtrl != null\n && this.stickyTopLeftRowContainerCtrl != null\n && this.stickyTopRightRowContainerCtrl != null\n && this.centerHeaderRowContainerCtrl != null\n && this.leftHeaderRowContainerCtrl != null\n && this.rightHeaderRowContainerCtrl != null\n && this.fakeHScrollComp != null\n && this.fakeVScrollComp != null\n && this.gridHeaderCtrl != null;\n if (this.ready) {\n const p = this.createReadyParams();\n this.readyCallbacks.forEach(c => c(p));\n this.readyCallbacks.length = 0;\n }\n }\n whenReady(callback) {\n if (this.ready) {\n callback(this.createReadyParams());\n }\n else {\n this.readyCallbacks.push(callback);\n }\n }\n createReadyParams() {\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 stickyTopCenterRowContainerCtrl: this.stickyTopCenterRowContainerCtrl,\n stickyTopLeftRowContainerCtrl: this.stickyTopLeftRowContainerCtrl,\n stickyTopRightRowContainerCtrl: this.stickyTopRightRowContainerCtrl,\n centerHeaderRowContainerCtrl: this.centerHeaderRowContainerCtrl,\n leftHeaderRowContainerCtrl: this.leftHeaderRowContainerCtrl,\n rightHeaderRowContainerCtrl: this.rightHeaderRowContainerCtrl,\n fakeHScrollComp: this.fakeHScrollComp,\n fakeVScrollComp: this.fakeVScrollComp,\n gridBodyCtrl: this.gridBodyCtrl,\n gridCtrl: this.gridCtrl,\n gridHeaderCtrl: this.gridHeaderCtrl,\n };\n }\n registerFakeHScrollComp(comp) {\n this.fakeHScrollComp = comp;\n this.checkReady();\n }\n registerFakeVScrollComp(comp) {\n this.fakeVScrollComp = comp;\n this.checkReady();\n }\n registerGridHeaderCtrl(gridHeaderCtrl) {\n this.gridHeaderCtrl = gridHeaderCtrl;\n this.checkReady();\n }\n registerCenterRowContainerCtrl(ctrl) {\n this.centerRowContainerCtrl = ctrl;\n this.checkReady();\n }\n registerLeftRowContainerCtrl(ctrl) {\n this.leftRowContainerCtrl = ctrl;\n this.checkReady();\n }\n registerRightRowContainerCtrl(ctrl) {\n this.rightRowContainerCtrl = ctrl;\n this.checkReady();\n }\n registerTopCenterRowContainerCtrl(ctrl) {\n this.topCenterRowContainerCtrl = ctrl;\n this.checkReady();\n }\n registerTopLeftRowContainerCon(ctrl) {\n this.topLeftRowContainerCtrl = ctrl;\n this.checkReady();\n }\n registerTopRightRowContainerCtrl(ctrl) {\n this.topRightRowContainerCtrl = ctrl;\n this.checkReady();\n }\n registerStickyTopCenterRowContainerCtrl(ctrl) {\n this.stickyTopCenterRowContainerCtrl = ctrl;\n this.checkReady();\n }\n registerStickyTopLeftRowContainerCon(ctrl) {\n this.stickyTopLeftRowContainerCtrl = ctrl;\n this.checkReady();\n }\n registerStickyTopRightRowContainerCtrl(ctrl) {\n this.stickyTopRightRowContainerCtrl = ctrl;\n this.checkReady();\n }\n registerBottomCenterRowContainerCtrl(ctrl) {\n this.bottomCenterRowContainerCtrl = ctrl;\n this.checkReady();\n }\n registerBottomLeftRowContainerCtrl(ctrl) {\n this.bottomLeftRowContainerCtrl = ctrl;\n this.checkReady();\n }\n registerBottomRightRowContainerCtrl(ctrl) {\n this.bottomRightRowContainerCtrl = ctrl;\n this.checkReady();\n }\n registerHeaderContainer(ctrl, pinned) {\n switch (pinned) {\n case 'left':\n this.leftHeaderRowContainerCtrl = ctrl;\n break;\n case 'right':\n this.rightHeaderRowContainerCtrl = ctrl;\n break;\n default:\n this.centerHeaderRowContainerCtrl = ctrl;\n break;\n }\n this.checkReady();\n }\n registerGridBodyCtrl(ctrl) {\n this.gridBodyCtrl = ctrl;\n this.checkReady();\n }\n registerGridCtrl(ctrl) {\n this.gridCtrl = ctrl;\n this.checkReady();\n }\n getFakeHScrollComp() {\n return this.fakeHScrollComp;\n }\n getFakeVScrollComp() {\n return this.fakeVScrollComp;\n }\n getGridHeaderCtrl() {\n return this.gridHeaderCtrl;\n }\n getGridCtrl() {\n return this.gridCtrl;\n }\n getCenterRowContainerCtrl() {\n return this.centerRowContainerCtrl;\n }\n getTopCenterRowContainerCtrl() {\n return this.topCenterRowContainerCtrl;\n }\n getBottomCenterRowContainerCtrl() {\n return this.bottomCenterRowContainerCtrl;\n }\n getStickyTopCenterRowContainerCtrl() {\n return this.stickyTopCenterRowContainerCtrl;\n }\n getGridBodyCtrl() {\n return this.gridBodyCtrl;\n }\n getHeaderRowContainerCtrls() {\n return [this.leftHeaderRowContainerCtrl, this.rightHeaderRowContainerCtrl, this.centerHeaderRowContainerCtrl];\n }\n getHeaderRowContainerCtrl(pinned) {\n switch (pinned) {\n case 'left': return this.leftHeaderRowContainerCtrl;\n case 'right': return this.rightHeaderRowContainerCtrl;\n default: return this.centerHeaderRowContainerCtrl;\n }\n }\n};\nCtrlsService.NAME = 'ctrlsService';\nCtrlsService = CtrlsService_1 = __decorate$m([\n Bean(CtrlsService_1.NAME)\n], CtrlsService);\n\nvar __decorate$l = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet CtrlsFactory = class CtrlsFactory extends BeanStub {\n constructor() {\n super(...arguments);\n this.registry = {};\n }\n register(meta) {\n this.registry[meta.controllerName] = meta.controllerClass;\n }\n getInstance(name) {\n const ControllerClass = this.registry[name];\n if (ControllerClass == null) {\n return undefined;\n }\n return new ControllerClass();\n }\n};\nCtrlsFactory = __decorate$l([\n Bean('ctrlsFactory')\n], CtrlsFactory);\n\nvar __decorate$k = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass AbstractFakeScrollComp extends Component {\n constructor(template, direction) {\n super(template);\n this.direction = direction;\n this.hideTimeout = null;\n }\n postConstruct() {\n this.addManagedListener(this.eventService, Events.EVENT_SCROLL_VISIBILITY_CHANGED, this.onScrollVisibilityChanged.bind(this));\n this.onScrollVisibilityChanged();\n this.addOrRemoveCssClass('ag-apple-scrollbar', isMacOsUserAgent() || isIOSUserAgent());\n }\n initialiseInvisibleScrollbar() {\n if (this.invisibleScrollbar !== undefined) {\n return;\n }\n this.invisibleScrollbar = isInvisibleScrollbar();\n if (this.invisibleScrollbar) {\n this.hideAndShowInvisibleScrollAsNeeded();\n this.addActiveListenerToggles();\n }\n }\n addActiveListenerToggles() {\n const activateEvents = ['mouseenter', 'mousedown', 'touchstart'];\n const deactivateEvents = ['mouseleave', 'touchend'];\n const eGui = this.getGui();\n activateEvents.forEach(eventName => this.addManagedListener(eGui, eventName, () => this.addOrRemoveCssClass('ag-scrollbar-active', true)));\n deactivateEvents.forEach(eventName => this.addManagedListener(eGui, eventName, () => this.addOrRemoveCssClass('ag-scrollbar-active', false)));\n }\n onScrollVisibilityChanged() {\n // initialiseInvisibleScrollbar should only be called once, but the reason\n // this can't be inside `setComp` or `PostConstruct` is the DOM might not\n // be ready, so we call it until eventually, it gets calculated.\n if (this.invisibleScrollbar === undefined) {\n this.initialiseInvisibleScrollbar();\n }\n this.animationFrameService.requestAnimationFrame(() => this.setScrollVisible());\n }\n hideAndShowInvisibleScrollAsNeeded() {\n this.addManagedListener(this.eventService, Events.EVENT_BODY_SCROLL, (params) => {\n if (params.direction === this.direction) {\n if (this.hideTimeout !== null) {\n window.clearTimeout(this.hideTimeout);\n this.hideTimeout = null;\n }\n this.addOrRemoveCssClass('ag-scrollbar-scrolling', true);\n }\n });\n this.addManagedListener(this.eventService, Events.EVENT_BODY_SCROLL_END, () => {\n this.hideTimeout = window.setTimeout(() => {\n this.addOrRemoveCssClass('ag-scrollbar-scrolling', false);\n this.hideTimeout = null;\n }, 400);\n });\n }\n attemptSettingScrollPosition(value) {\n const viewport = this.getViewport();\n waitUntil(() => isVisible(viewport), () => this.setScrollPosition(value), 100);\n }\n getViewport() {\n return this.eViewport;\n }\n getContainer() {\n return this.eContainer;\n }\n onScrollCallback(fn) {\n this.addManagedListener(this.getViewport(), 'scroll', fn);\n }\n}\n__decorate$k([\n RefSelector('eViewport')\n], AbstractFakeScrollComp.prototype, \"eViewport\", void 0);\n__decorate$k([\n RefSelector('eContainer')\n], AbstractFakeScrollComp.prototype, \"eContainer\", void 0);\n__decorate$k([\n Autowired('scrollVisibleService')\n], AbstractFakeScrollComp.prototype, \"scrollVisibleService\", void 0);\n__decorate$k([\n Autowired('ctrlsService')\n], AbstractFakeScrollComp.prototype, \"ctrlsService\", void 0);\n__decorate$k([\n Autowired('animationFrameService')\n], AbstractFakeScrollComp.prototype, \"animationFrameService\", void 0);\n\nvar __decorate$j = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass FakeHScrollComp extends AbstractFakeScrollComp {\n constructor() {\n super(FakeHScrollComp.TEMPLATE, 'horizontal');\n }\n postConstruct() {\n super.postConstruct();\n // When doing printing, this changes whether cols are pinned or not\n const 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.eventService, Events.EVENT_PINNED_ROW_DATA_CHANGED, this.onPinnedRowDataChanged.bind(this));\n this.addManagedPropertyListener('domLayout', spacerWidthsListener);\n this.ctrlsService.registerFakeHScrollComp(this);\n this.createManagedBean(new CenterWidthFeature(width => this.eContainer.style.width = `${width}px`));\n }\n initialiseInvisibleScrollbar() {\n if (this.invisibleScrollbar !== undefined) {\n return;\n }\n this.enableRtl = this.gridOptionsService.is('enableRtl');\n super.initialiseInvisibleScrollbar();\n if (this.invisibleScrollbar) {\n this.refreshCompBottom();\n }\n }\n onPinnedRowDataChanged() {\n this.refreshCompBottom();\n }\n refreshCompBottom() {\n if (!this.invisibleScrollbar) {\n return;\n }\n const bottomPinnedHeight = this.pinnedRowModel.getPinnedBottomTotalHeight();\n this.getGui().style.bottom = `${bottomPinnedHeight}px`;\n }\n onScrollVisibilityChanged() {\n super.onScrollVisibilityChanged();\n this.setFakeHScrollSpacerWidths();\n }\n setFakeHScrollSpacerWidths() {\n const 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 let rightSpacing = this.columnModel.getDisplayedColumnsRightWidth();\n const scrollOnRight = !this.enableRtl && vScrollShowing;\n const scrollbarWidth = this.gridOptionsService.getScrollbarWidth();\n if (scrollOnRight) {\n rightSpacing += scrollbarWidth;\n }\n setFixedWidth(this.eRightSpacer, rightSpacing);\n this.eRightSpacer.classList.toggle('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 let leftSpacing = this.columnModel.getDisplayedColumnsLeftWidth();\n const scrollOnLeft = this.enableRtl && vScrollShowing;\n if (scrollOnLeft) {\n leftSpacing += scrollbarWidth;\n }\n setFixedWidth(this.eLeftSpacer, leftSpacing);\n this.eLeftSpacer.classList.toggle('ag-scroller-corner', leftSpacing <= scrollbarWidth);\n }\n setScrollVisible() {\n const hScrollShowing = this.scrollVisibleService.isHorizontalScrollShowing();\n const invisibleScrollbar = this.invisibleScrollbar;\n const isSuppressHorizontalScroll = this.gridOptionsService.is('suppressHorizontalScroll');\n const scrollbarWidth = hScrollShowing ? (this.gridOptionsService.getScrollbarWidth() || 0) : 0;\n const adjustedScrollbarWidth = (scrollbarWidth === 0 && invisibleScrollbar) ? 16 : scrollbarWidth;\n const scrollContainerSize = !isSuppressHorizontalScroll ? adjustedScrollbarWidth : 0;\n this.addOrRemoveCssClass('ag-scrollbar-invisible', invisibleScrollbar);\n setFixedHeight(this.getGui(), scrollContainerSize);\n setFixedHeight(this.eViewport, scrollContainerSize);\n setFixedHeight(this.eContainer, scrollContainerSize);\n this.setDisplayed(hScrollShowing, { skipAriaHidden: true });\n }\n getScrollPosition() {\n return getScrollLeft(this.getViewport(), this.enableRtl);\n }\n setScrollPosition(value) {\n if (!isVisible(this.getViewport())) {\n this.attemptSettingScrollPosition(value);\n }\n setScrollLeft(this.getViewport(), value, this.enableRtl);\n }\n}\nFakeHScrollComp.TEMPLATE = `
\n
\n
\n
\n
\n
\n
`;\n__decorate$j([\n RefSelector('eLeftSpacer')\n], FakeHScrollComp.prototype, \"eLeftSpacer\", void 0);\n__decorate$j([\n RefSelector('eRightSpacer')\n], FakeHScrollComp.prototype, \"eRightSpacer\", void 0);\n__decorate$j([\n Autowired('columnModel')\n], FakeHScrollComp.prototype, \"columnModel\", void 0);\n__decorate$j([\n Autowired('pinnedRowModel')\n], FakeHScrollComp.prototype, \"pinnedRowModel\", void 0);\n__decorate$j([\n PostConstruct\n], FakeHScrollComp.prototype, \"postConstruct\", null);\n\nvar __decorate$i = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet PinnedWidthService = class PinnedWidthService extends BeanStub {\n postConstruct() {\n const 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.addManagedPropertyListener('domLayout', listener);\n }\n checkContainerWidths() {\n const printLayout = this.gridOptionsService.isDomLayout('print');\n const newLeftWidth = printLayout ? 0 : this.columnModel.getDisplayedColumnsLeftWidth();\n const 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 getPinnedRightWidth() {\n return this.rightWidth;\n }\n getPinnedLeftWidth() {\n return this.leftWidth;\n }\n};\n__decorate$i([\n Autowired('columnModel')\n], PinnedWidthService.prototype, \"columnModel\", void 0);\n__decorate$i([\n PostConstruct\n], PinnedWidthService.prototype, \"postConstruct\", null);\nPinnedWidthService = __decorate$i([\n Bean('pinnedWidthService')\n], PinnedWidthService);\n\nvar __decorate$h = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet RowNodeEventThrottle = class RowNodeEventThrottle extends BeanStub {\n constructor() {\n super(...arguments);\n this.events = [];\n }\n postConstruct() {\n if (this.rowModel.getType() == 'clientSide') {\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 dispatchExpanded(event) {\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 const func = () => {\n if (this.clientSideRowModel) {\n this.clientSideRowModel.onRowGroupOpened();\n }\n this.events.forEach(e => 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};\n__decorate$h([\n Autowired('animationFrameService')\n], RowNodeEventThrottle.prototype, \"animationFrameService\", void 0);\n__decorate$h([\n Autowired('rowModel')\n], RowNodeEventThrottle.prototype, \"rowModel\", void 0);\n__decorate$h([\n PostConstruct\n], RowNodeEventThrottle.prototype, \"postConstruct\", null);\nRowNodeEventThrottle = __decorate$h([\n Bean('rowNodeEventThrottle')\n], RowNodeEventThrottle);\n\nvar __decorate$g = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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$1 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\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 isTrue(value) {\n return value === true || value === 'true';\n}\nlet GridOptionsService = class GridOptionsService {\n constructor() {\n this.destroyed = false;\n this.domDataKey = '__AG_' + Math.random().toString();\n this.propertyEventService = new EventService();\n }\n // This is quicker then having code call gridOptionsService.get('context')\n get context() {\n return this.gridOptions['context'];\n }\n agWire(gridApi, columnApi) {\n this.gridOptions.api = gridApi;\n this.gridOptions.columnApi = columnApi;\n this.api = gridApi;\n this.columnApi = columnApi;\n }\n init() {\n this.gridOptionLookup = new Set([...ComponentUtil.ALL_PROPERTIES, ...ComponentUtil.EVENT_CALLBACKS]);\n const async = !this.is('suppressAsyncEvents');\n this.eventService.addGlobalListener(this.globalEventHandler.bind(this), async);\n // sets an initial calculation for the scrollbar width\n this.getScrollbarWidth();\n }\n destroy() {\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 /**\n * Is the given GridOption property set to true.\n * @param property GridOption property that has the type `boolean | undefined`\n */\n is(property) {\n return isTrue(this.gridOptions[property]);\n }\n /**\n * Get the raw value of the GridOptions property provided.\n * @param property\n */\n get(property) {\n return this.gridOptions[property];\n }\n /**\n * Get the GridOption property as a number, raw value is returned via a toNumber coercion function.\n * @param property GridOption property that has the type `number | undefined`\n */\n getNum(property) {\n return toNumber(this.gridOptions[property]);\n }\n /**\n * Get the GridOption callback but wrapped so that the common params of api,columnApi and context are automatically applied to the params.\n * @param property GridOption callback properties based on the fact that this property has a callback with params extending AgGridCommon\n */\n getCallback(property) {\n return this.mergeGridCommonParams(this.gridOptions[property]);\n }\n /**\n * Returns `true` if a value has been specified for this GridOption.\n * @param property GridOption property\n */\n exists(property) {\n return exists(this.gridOptions[property]);\n }\n /**\n * Wrap the user callback and attach the api, columnApi and context to the params object on the way through.\n * @param callback User provided callback\n * @returns Wrapped callback where the params object not require api, columnApi and context\n */\n mergeGridCommonParams(callback) {\n if (callback) {\n const wrapped = (callbackParams) => {\n const mergedParams = callbackParams;\n mergedParams.api = this.api;\n mergedParams.columnApi = this.columnApi;\n mergedParams.context = this.context;\n return callback(mergedParams);\n };\n return wrapped;\n }\n return callback;\n }\n /**\n *\n * @param key - key of the GridOption property to update\n * @param newValue - new value for this property\n * @param force - force the property change Event to be fired even if the value has not changed\n * @param eventParams - additional params to merge into the property changed event\n */\n set(key, newValue, force = false, eventParams = {}) {\n if (this.gridOptionLookup.has(key)) {\n const previousValue = this.gridOptions[key];\n if (force || previousValue !== newValue) {\n this.gridOptions[key] = newValue;\n const event = Object.assign({ type: key, currentValue: newValue, previousValue: previousValue }, eventParams);\n this.propertyEventService.dispatchEvent(event);\n }\n }\n }\n addEventListener(key, listener) {\n this.propertyEventService.addEventListener(key, listener);\n }\n removeEventListener(key, listener) {\n this.propertyEventService.removeEventListener(key, listener);\n }\n // responsible for calling the onXXX functions on gridOptions\n globalEventHandler(eventName, event) {\n // prevent events from being fired _after_ the grid has been destroyed\n if (this.destroyed) {\n return;\n }\n const callbackMethodName = ComponentUtil.getCallbackForEvent(eventName);\n if (typeof this.gridOptions[callbackMethodName] === 'function') {\n this.gridOptions[callbackMethodName](event);\n }\n }\n // *************** Helper methods ************************** //\n // Methods to share common GridOptions related logic that goes above accessing a single property\n getGridId() {\n return this.api.getGridId();\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 getScrollbarWidth() {\n if (this.scrollbarWidth == null) {\n const useGridOptions = typeof this.gridOptions.scrollbarWidth === 'number' && this.gridOptions.scrollbarWidth >= 0;\n const 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 isRowModelType(rowModelType) {\n return this.gridOptions.rowModelType === rowModelType ||\n (rowModelType === 'clientSide' && missing(this.gridOptions.rowModelType));\n }\n isDomLayout(domLayout) {\n var _a;\n const gridLayout = (_a = this.gridOptions.domLayout) !== null && _a !== void 0 ? _a : 'normal';\n return gridLayout === domLayout;\n }\n isRowSelection() {\n return this.gridOptions.rowSelection === 'single' || this.gridOptions.rowSelection === 'multiple';\n }\n useAsyncEvents() {\n return !this.is('suppressAsyncEvents');\n }\n isGetRowHeightFunction() {\n return typeof this.gridOptions.getRowHeight === 'function';\n }\n getRowHeightForNode(rowNode, allowEstimate = false, defaultRowHeight) {\n if (defaultRowHeight == null) {\n defaultRowHeight = this.environment.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 const params = {\n node: rowNode,\n data: rowNode.data\n };\n const height = this.getCallback('getRowHeight')(params);\n if (this.isNumeric(height)) {\n if (height === 0) {\n doOnce(() => 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.is('masterDetail')) {\n return this.getMasterDetailRowHeight();\n }\n const rowHeight = this.gridOptions.rowHeight && this.isNumeric(this.gridOptions.rowHeight) ? this.gridOptions.rowHeight : defaultRowHeight;\n return { height: rowHeight, estimated: false };\n }\n getMasterDetailRowHeight() {\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.is('detailRowAutoHeight')) {\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: 300, estimated: false };\n }\n // we don't allow dynamic row height for virtual paging\n getRowHeightAsNumber() {\n if (!this.gridOptions.rowHeight || missing(this.gridOptions.rowHeight)) {\n return this.environment.getDefaultRowHeight();\n }\n const rowHeight = this.gridOptions.rowHeight;\n if (rowHeight && this.isNumeric(rowHeight)) {\n this.environment.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.environment.getDefaultRowHeight();\n }\n isNumeric(value) {\n return !isNaN(value) && typeof value === 'number' && isFinite(value);\n }\n getDomDataKey() {\n return this.domDataKey;\n }\n // returns the dom data, or undefined if not found\n getDomData(element, key) {\n const domData = element[this.getDomDataKey()];\n return domData ? domData[key] : undefined;\n }\n setDomData(element, key, value) {\n const domDataKey = this.getDomDataKey();\n let domData = element[domDataKey];\n if (missing(domData)) {\n domData = {};\n element[domDataKey] = domData;\n }\n domData[key] = value;\n }\n getDocument() {\n // if user is providing document, we use the users one,\n // otherwise we use the document on the global namespace.\n let 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 getWindow() {\n const eDocument = this.getDocument();\n return eDocument.defaultView || window;\n }\n getRootNode() {\n return this.eGridDiv.getRootNode();\n }\n getAsyncTransactionWaitMillis() {\n return exists(this.gridOptions.asyncTransactionWaitMillis) ? this.gridOptions.asyncTransactionWaitMillis : 50;\n }\n isAnimateRows() {\n // never allow animating if enforcing the row order\n if (this.is('ensureDomOrder')) {\n return false;\n }\n return this.is('animateRows');\n }\n isGroupRowsSticky() {\n if (this.is('suppressGroupRowsSticky') ||\n this.is('paginateChildRows') ||\n this.is('groupHideOpenParents')) {\n return false;\n }\n return true;\n }\n isTreeData() {\n return this.is('treeData') && ModuleRegistry.__assertRegistered(ModuleNames.RowGroupingModule, 'Tree Data', this.api.getGridId());\n }\n isMasterDetail() {\n return this.is('masterDetail') && ModuleRegistry.__assertRegistered(ModuleNames.MasterDetailModule, 'masterDetail', this.api.getGridId());\n }\n isEnableRangeSelection() {\n return this.is('enableRangeSelection') && ModuleRegistry.__isRegistered(ModuleNames.RangeSelectionModule, this.api.getGridId());\n }\n isColumnsSortingCoupledToGroup() {\n const autoGroupColumnDef = this.gridOptions.autoGroupColumnDef;\n const isClientSideRowModel = this.isRowModelType('clientSide');\n return isClientSideRowModel && !(autoGroupColumnDef === null || autoGroupColumnDef === void 0 ? void 0 : autoGroupColumnDef.comparator) && !this.isTreeData();\n }\n getGroupAggFiltering() {\n const userValue = this.gridOptions.groupAggFiltering;\n if (typeof userValue === 'function') {\n return this.getCallback('groupAggFiltering');\n }\n if (isTrue(userValue)) {\n return () => true;\n }\n return undefined;\n }\n isGroupMultiAutoColumn() {\n if (this.gridOptions.groupDisplayType) {\n return matchesGroupDisplayType('multipleColumns', this.gridOptions.groupDisplayType);\n }\n // if we are doing hideOpenParents we also show multiple columns, otherwise hideOpenParents would not work\n return this.is('groupHideOpenParents');\n }\n isGroupUseEntireRow(pivotMode) {\n // we never allow groupDisplayType = 'groupRows' if in pivot mode, otherwise we won't see the pivot values.\n if (pivotMode) {\n return false;\n }\n return this.gridOptions.groupDisplayType ? matchesGroupDisplayType('groupRows', this.gridOptions.groupDisplayType) : false;\n }\n};\n__decorate$g([\n Autowired('gridOptions')\n], GridOptionsService.prototype, \"gridOptions\", void 0);\n__decorate$g([\n Autowired('eventService')\n], GridOptionsService.prototype, \"eventService\", void 0);\n__decorate$g([\n Autowired('environment')\n], GridOptionsService.prototype, \"environment\", void 0);\n__decorate$g([\n Autowired('eGridDiv')\n], GridOptionsService.prototype, \"eGridDiv\", void 0);\n__decorate$g([\n __param$1(0, Qualifier('gridApi')),\n __param$1(1, Qualifier('columnApi'))\n], GridOptionsService.prototype, \"agWire\", null);\n__decorate$g([\n PostConstruct\n], GridOptionsService.prototype, \"init\", null);\n__decorate$g([\n PreDestroy\n], GridOptionsService.prototype, \"destroy\", null);\nGridOptionsService = __decorate$g([\n Bean('gridOptionsService')\n], GridOptionsService);\n\nvar __decorate$f = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet LocaleService = class LocaleService extends BeanStub {\n getLocaleTextFunc() {\n const getLocaleText = this.gridOptionsService.getCallback('getLocaleText');\n if (getLocaleText) {\n //key: string, defaultValue: string, variableValues?: string[]\n return (key, defaultValue, variableValues) => {\n const params = {\n key,\n defaultValue,\n variableValues\n };\n return getLocaleText(params);\n };\n }\n const localeText = this.gridOptionsService.get('localeText');\n return (key, defaultValue, variableValues) => {\n let localisedText = localeText && localeText[key];\n if (localisedText && variableValues && variableValues.length) {\n let found = 0;\n while (true) {\n if (found >= variableValues.length) {\n break;\n }\n const idx = localisedText.indexOf('${variable}');\n if (idx === -1) {\n break;\n }\n localisedText = localisedText.replace('${variable}', variableValues[found++]);\n }\n }\n return localisedText !== null && localisedText !== void 0 ? localisedText : defaultValue;\n };\n }\n};\nLocaleService = __decorate$f([\n Bean('localeService')\n], LocaleService);\n\nvar __decorate$e = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass FakeVScrollComp extends AbstractFakeScrollComp {\n constructor() {\n super(FakeVScrollComp.TEMPLATE, 'vertical');\n }\n postConstruct() {\n super.postConstruct();\n this.createManagedBean(new SetHeightFeature(this.eContainer));\n this.ctrlsService.registerFakeVScrollComp(this);\n this.addManagedListener(this.eventService, Events.EVENT_ROW_CONTAINER_HEIGHT_CHANGED, this.onRowContainerHeightChanged.bind(this));\n }\n setScrollVisible() {\n const vScrollShowing = this.scrollVisibleService.isVerticalScrollShowing();\n const invisibleScrollbar = this.invisibleScrollbar;\n const scrollbarWidth = vScrollShowing ? (this.gridOptionsService.getScrollbarWidth() || 0) : 0;\n const adjustedScrollbarWidth = (scrollbarWidth === 0 && invisibleScrollbar) ? 16 : scrollbarWidth;\n this.addOrRemoveCssClass('ag-scrollbar-invisible', invisibleScrollbar);\n setFixedWidth(this.getGui(), adjustedScrollbarWidth);\n setFixedWidth(this.eViewport, adjustedScrollbarWidth);\n setFixedWidth(this.eContainer, adjustedScrollbarWidth);\n this.setDisplayed(vScrollShowing, { skipAriaHidden: true });\n }\n onRowContainerHeightChanged() {\n const gridBodyCtrl = this.ctrlsService.getGridBodyCtrl();\n const gridBodyViewportEl = gridBodyCtrl.getBodyViewportElement();\n if (this.eViewport.scrollTop != gridBodyViewportEl.scrollTop) {\n this.eViewport.scrollTop = gridBodyViewportEl.scrollTop;\n }\n }\n getScrollPosition() {\n return this.getViewport().scrollTop;\n }\n setScrollPosition(value) {\n if (!isVisible(this.getViewport())) {\n this.attemptSettingScrollPosition(value);\n }\n this.getViewport().scrollTop = value;\n }\n}\nFakeVScrollComp.TEMPLATE = `
\n
\n
\n
\n
`;\n__decorate$e([\n PostConstruct\n], FakeVScrollComp.prototype, \"postConstruct\", null);\n\nvar __decorate$d = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst MONTH_LOCALE_TEXT = {\n january: 'January',\n february: 'February',\n march: 'March',\n april: 'April',\n may: 'May',\n june: 'June',\n july: 'July',\n august: 'August',\n september: 'September',\n october: 'October',\n november: 'November',\n december: 'December'\n};\nconst MONTH_KEYS = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'];\nlet DataTypeService = class DataTypeService extends BeanStub {\n constructor() {\n super(...arguments);\n this.dataTypeDefinitions = {};\n this.isWaitingForRowData = false;\n this.isColumnTypeOverrideInDataTypeDefinitions = false;\n // keep track of any column state updates whilst waiting for data types to be inferred\n this.columnStateUpdatesPendingInference = {};\n this.columnStateUpdateListenerDestroyFuncs = [];\n }\n init() {\n this.groupHideOpenParents = this.gridOptionsService.is('groupHideOpenParents');\n this.addManagedPropertyListener('groupHideOpenParents', () => {\n this.groupHideOpenParents = this.gridOptionsService.is('groupHideOpenParents');\n });\n this.processDataTypeDefinitions();\n this.addManagedPropertyListener('dataTypeDefinitions', () => {\n this.processDataTypeDefinitions();\n this.columnModel.recreateColumnDefs('gridOptionsChanged');\n });\n }\n processDataTypeDefinitions() {\n var _a;\n const defaultDataTypes = this.getDefaultDataTypes();\n this.dataTypeDefinitions = {};\n Object.entries(defaultDataTypes).forEach(([cellDataType, dataTypeDefinition]) => {\n this.dataTypeDefinitions[cellDataType] = Object.assign(Object.assign({}, dataTypeDefinition), { groupSafeValueFormatter: this.createGroupSafeValueFormatter(dataTypeDefinition) });\n });\n const dataTypeDefinitions = (_a = this.gridOptionsService.get('dataTypeDefinitions')) !== null && _a !== void 0 ? _a : {};\n this.dataTypeMatchers = {};\n Object.entries(dataTypeDefinitions).forEach(([cellDataType, dataTypeDefinition]) => {\n const mergedDataTypeDefinition = this.processDataTypeDefinition(dataTypeDefinition, dataTypeDefinitions, [cellDataType], defaultDataTypes);\n if (mergedDataTypeDefinition) {\n this.dataTypeDefinitions[cellDataType] = mergedDataTypeDefinition;\n if (dataTypeDefinition.dataTypeMatcher) {\n this.dataTypeMatchers[cellDataType] = dataTypeDefinition.dataTypeMatcher;\n }\n }\n });\n this.checkObjectValueHandlers(defaultDataTypes);\n ['dateString', 'text', 'number', 'boolean', 'date'].forEach((cellDataType) => {\n const overriddenDataTypeMatcher = this.dataTypeMatchers[cellDataType];\n if (overriddenDataTypeMatcher) {\n // remove to maintain correct ordering\n delete this.dataTypeMatchers[cellDataType];\n }\n this.dataTypeMatchers[cellDataType] = overriddenDataTypeMatcher !== null && overriddenDataTypeMatcher !== void 0 ? overriddenDataTypeMatcher : defaultDataTypes[cellDataType].dataTypeMatcher;\n });\n }\n mergeDataTypeDefinitions(parentDataTypeDefinition, childDataTypeDefinition) {\n const mergedDataTypeDefinition = Object.assign(Object.assign({}, parentDataTypeDefinition), childDataTypeDefinition);\n if (parentDataTypeDefinition.columnTypes &&\n childDataTypeDefinition.columnTypes &&\n childDataTypeDefinition.appendColumnTypes) {\n mergedDataTypeDefinition.columnTypes = [\n ...this.convertColumnTypes(parentDataTypeDefinition.columnTypes),\n ...this.convertColumnTypes(childDataTypeDefinition.columnTypes),\n ];\n }\n return mergedDataTypeDefinition;\n }\n processDataTypeDefinition(dataTypeDefinition, dataTypeDefinitions, alreadyProcessedDataTypes, defaultDataTypes) {\n let mergedDataTypeDefinition;\n const extendsCellDataType = dataTypeDefinition.extendsDataType;\n if (dataTypeDefinition.columnTypes) {\n this.isColumnTypeOverrideInDataTypeDefinitions = true;\n }\n if (dataTypeDefinition.extendsDataType === dataTypeDefinition.baseDataType) {\n const baseDataTypeDefinition = defaultDataTypes[extendsCellDataType];\n if (!this.validateDataTypeDefinition(dataTypeDefinition, baseDataTypeDefinition, extendsCellDataType)) {\n return undefined;\n }\n mergedDataTypeDefinition = this.mergeDataTypeDefinitions(baseDataTypeDefinition, dataTypeDefinition);\n }\n else {\n if (alreadyProcessedDataTypes.includes(extendsCellDataType)) {\n doOnce(() => console.warn('AG Grid: Data type definition hierarchies (via the \"extendsDataType\" property) cannot contain circular references.'), 'dataTypeExtendsCircularRef');\n return undefined;\n }\n const extendedDataTypeDefinition = dataTypeDefinitions[extendsCellDataType];\n if (!this.validateDataTypeDefinition(dataTypeDefinition, extendedDataTypeDefinition, extendsCellDataType)) {\n return undefined;\n }\n const mergedExtendedDataTypeDefinition = this.processDataTypeDefinition(extendedDataTypeDefinition, dataTypeDefinitions, [...alreadyProcessedDataTypes, extendsCellDataType], defaultDataTypes);\n if (!mergedExtendedDataTypeDefinition) {\n return undefined;\n }\n mergedDataTypeDefinition = this.mergeDataTypeDefinitions(mergedExtendedDataTypeDefinition, dataTypeDefinition);\n }\n return Object.assign(Object.assign({}, mergedDataTypeDefinition), { groupSafeValueFormatter: this.createGroupSafeValueFormatter(mergedDataTypeDefinition) });\n }\n validateDataTypeDefinition(dataTypeDefinition, parentDataTypeDefinition, parentCellDataType) {\n if (!parentDataTypeDefinition) {\n doOnce(() => console.warn(`AG Grid: The data type definition ${parentCellDataType} does not exist.`), 'dataTypeDefMissing' + parentCellDataType);\n return false;\n }\n if (parentDataTypeDefinition.baseDataType !== dataTypeDefinition.baseDataType) {\n doOnce(() => console.warn('AG Grid: The \"baseDataType\" property of a data type definition must match that of its parent.'), 'dataTypeBaseTypesMatch');\n return false;\n }\n return true;\n }\n createGroupSafeValueFormatter(dataTypeDefinition) {\n if (!dataTypeDefinition.valueFormatter) {\n return undefined;\n }\n return (params) => {\n var _a, _b;\n if ((_a = params.node) === null || _a === void 0 ? void 0 : _a.group) {\n const aggFunc = params.column.getAggFunc();\n if (aggFunc) {\n // the resulting type of these will be the same, so we call valueFormatter anyway\n if (aggFunc === 'first' || aggFunc === 'last') {\n return dataTypeDefinition.valueFormatter(params);\n }\n if (dataTypeDefinition.baseDataType === 'number' && aggFunc !== 'count') {\n if (typeof params.value === 'number') {\n return dataTypeDefinition.valueFormatter(params);\n }\n if (typeof params.value === 'object') {\n if (!params.value) {\n return undefined;\n }\n if ('toNumber' in params.value) {\n return dataTypeDefinition.valueFormatter(Object.assign(Object.assign({}, params), { value: params.value.toNumber() }));\n }\n if ('value' in params.value) {\n return dataTypeDefinition.valueFormatter(Object.assign(Object.assign({}, params), { value: params.value.value }));\n }\n }\n }\n }\n return undefined;\n }\n else if (this.groupHideOpenParents && params.column.isRowGroupActive()) {\n // `groupHideOpenParents` passes leaf values in the group column, so need to format still.\n // If it's not a string, we know it hasn't been formatted. Otherwise check the data type matcher.\n if (typeof params.value !== 'string' || ((_b = dataTypeDefinition.dataTypeMatcher) === null || _b === void 0 ? void 0 : _b.call(dataTypeDefinition, params.value))) {\n return dataTypeDefinition.valueFormatter(params);\n }\n return undefined;\n }\n return dataTypeDefinition.valueFormatter(params);\n };\n }\n updateColDefAndGetDataTypeDefinitionColumnType(colDef, userColDef, colId) {\n let { cellDataType } = userColDef;\n const { field } = userColDef;\n if (cellDataType === undefined) {\n cellDataType = colDef.cellDataType;\n }\n if ((cellDataType == null || cellDataType === true)) {\n cellDataType = this.canInferCellDataType(colDef, userColDef) ? this.inferCellDataType(field, colId) : false;\n }\n if (!cellDataType) {\n colDef.cellDataType = false;\n return undefined;\n }\n const dataTypeDefinition = this.dataTypeDefinitions[cellDataType];\n if (!dataTypeDefinition) {\n doOnce(() => console.warn(`AG Grid: Missing data type definition - \"${cellDataType}\"`), 'dataTypeMissing' + cellDataType);\n return undefined;\n }\n colDef.cellDataType = cellDataType;\n if (dataTypeDefinition.groupSafeValueFormatter) {\n colDef.valueFormatter = dataTypeDefinition.groupSafeValueFormatter;\n }\n if (dataTypeDefinition.valueParser) {\n colDef.valueParser = dataTypeDefinition.valueParser;\n }\n if (!dataTypeDefinition.suppressDefaultProperties) {\n this.setColDefPropertiesForBaseDataType(colDef, dataTypeDefinition, colId);\n }\n return dataTypeDefinition.columnTypes;\n }\n updateColDefAndGetColumnType(colDef, userColDef, colId) {\n var _a, _b;\n const dataTypeDefinitionColumnType = this.updateColDefAndGetDataTypeDefinitionColumnType(colDef, userColDef, colId);\n const columnTypes = (_b = (_a = userColDef.type) !== null && _a !== void 0 ? _a : dataTypeDefinitionColumnType) !== null && _b !== void 0 ? _b : colDef.type;\n colDef.type = columnTypes;\n return columnTypes ? this.convertColumnTypes(columnTypes) : undefined;\n }\n addColumnListeners(column) {\n if (!this.isWaitingForRowData) {\n return;\n }\n const columnStateUpdates = this.columnStateUpdatesPendingInference[column.getColId()];\n if (!columnStateUpdates) {\n return;\n }\n const columnListener = (event) => {\n columnStateUpdates.add(event.key);\n };\n column.addEventListener(Column.EVENT_STATE_UPDATED, columnListener);\n this.columnStateUpdateListenerDestroyFuncs.push(() => column.removeEventListener(Column.EVENT_STATE_UPDATED, columnListener));\n }\n canInferCellDataType(colDef, userColDef) {\n var _a;\n if (this.rowModel.getType() !== 'clientSide') {\n return false;\n }\n const propsToCheckForInference = { cellRenderer: true, valueGetter: true, valueParser: true, refData: true };\n if (this.doColDefPropsPreventInference(userColDef, propsToCheckForInference)) {\n return false;\n }\n const columnTypes = userColDef.type === null ? colDef.type : userColDef.type;\n if (columnTypes) {\n const columnTypeDefs = (_a = this.gridOptionsService.get('columnTypes')) !== null && _a !== void 0 ? _a : {};\n const hasPropsPreventingInference = this.convertColumnTypes(columnTypes).some(columnType => {\n const columnTypeDef = columnTypeDefs[columnType.trim()];\n return columnTypeDef && this.doColDefPropsPreventInference(columnTypeDef, propsToCheckForInference);\n });\n if (hasPropsPreventingInference) {\n return false;\n }\n }\n return !this.doColDefPropsPreventInference(colDef, propsToCheckForInference);\n }\n doColDefPropsPreventInference(colDef, propsToCheckForInference) {\n return [\n ['cellRenderer', 'agSparklineCellRenderer'], ['valueGetter', undefined], ['valueParser', undefined], ['refData', undefined]\n ].some(([prop, comparisonValue]) => this.doesColDefPropPreventInference(colDef, propsToCheckForInference, prop, comparisonValue));\n }\n doesColDefPropPreventInference(colDef, checkProps, prop, comparisonValue) {\n if (!checkProps[prop]) {\n return false;\n }\n const value = colDef[prop];\n if (value === null) {\n checkProps[prop] = false;\n return false;\n }\n else {\n return comparisonValue === undefined ? !!value : value === comparisonValue;\n }\n }\n inferCellDataType(field, colId) {\n var _a;\n if (!field) {\n return undefined;\n }\n let value;\n const initialData = this.getInitialData();\n if (initialData) {\n const fieldContainsDots = field.indexOf('.') >= 0 && !this.gridOptionsService.is('suppressFieldDotNotation');\n value = getValueUsingField(initialData, field, fieldContainsDots);\n }\n else {\n this.initWaitForRowData(colId);\n }\n if (value == null) {\n return undefined;\n }\n const [cellDataType] = (_a = Object.entries(this.dataTypeMatchers).find(([_cellDataType, dataTypeMatcher]) => dataTypeMatcher(value))) !== null && _a !== void 0 ? _a : ['object'];\n return cellDataType;\n }\n getInitialData() {\n const rowData = this.gridOptionsService.get('rowData');\n if (rowData === null || rowData === void 0 ? void 0 : rowData.length) {\n return rowData[0];\n }\n else if (this.initialData) {\n return this.initialData;\n }\n else {\n const rowNodes = this.rowModel\n .getRootNode()\n .allLeafChildren;\n if (rowNodes === null || rowNodes === void 0 ? void 0 : rowNodes.length) {\n return rowNodes[0].data;\n }\n }\n return null;\n }\n initWaitForRowData(colId) {\n this.columnStateUpdatesPendingInference[colId] = new Set();\n if (this.isWaitingForRowData) {\n return;\n }\n this.isWaitingForRowData = true;\n const columnTypeOverridesExist = this.isColumnTypeOverrideInDataTypeDefinitions;\n if (columnTypeOverridesExist) {\n this.columnModel.queueResizeOperations();\n }\n const destroyFunc = this.addManagedListener(this.eventService, Events.EVENT_ROW_DATA_UPDATE_STARTED, (event) => {\n const { firstRowData } = event;\n if (!firstRowData) {\n return;\n }\n destroyFunc === null || destroyFunc === void 0 ? void 0 : destroyFunc();\n this.isWaitingForRowData = false;\n this.processColumnsPendingInference(firstRowData, columnTypeOverridesExist);\n this.columnStateUpdatesPendingInference = {};\n if (columnTypeOverridesExist) {\n this.columnModel.processResizeOperations();\n }\n });\n }\n processColumnsPendingInference(firstRowData, columnTypeOverridesExist) {\n this.initialData = firstRowData;\n const state = [];\n this.columnStateUpdateListenerDestroyFuncs.forEach(destroyFunc => destroyFunc());\n this.columnStateUpdateListenerDestroyFuncs = [];\n const newRowGroupColumnStateWithoutIndex = {};\n const newPivotColumnStateWithoutIndex = {};\n Object.entries(this.columnStateUpdatesPendingInference).forEach(([colId, columnStateUpdates]) => {\n const column = this.columnModel.getGridColumn(colId);\n if (!column) {\n return;\n }\n const oldColDef = column.getColDef();\n if (!this.columnModel.resetColumnDefIntoColumn(column)) {\n return;\n }\n const newColDef = column.getColDef();\n if (columnTypeOverridesExist && newColDef.type && newColDef.type !== oldColDef.type) {\n const updatedColumnState = this.getUpdatedColumnState(column, columnStateUpdates);\n if (updatedColumnState.rowGroup && updatedColumnState.rowGroupIndex == null) {\n newRowGroupColumnStateWithoutIndex[colId] = updatedColumnState;\n }\n if (updatedColumnState.pivot && updatedColumnState.pivotIndex == null) {\n newPivotColumnStateWithoutIndex[colId] = updatedColumnState;\n }\n state.push(updatedColumnState);\n }\n });\n if (columnTypeOverridesExist) {\n state.push(...this.columnModel.generateColumnStateForRowGroupAndPivotIndexes(newRowGroupColumnStateWithoutIndex, newPivotColumnStateWithoutIndex));\n }\n if (state.length) {\n this.columnModel.applyColumnState({ state }, 'cellDataTypeInferred');\n }\n this.initialData = null;\n }\n getUpdatedColumnState(column, columnStateUpdates) {\n const columnState = this.columnModel.getColumnStateFromColDef(column);\n columnStateUpdates.forEach(key => {\n // if the column state has been updated, don't update again\n delete columnState[key];\n if (key === 'rowGroup') {\n delete columnState.rowGroupIndex;\n }\n else if (key === 'pivot') {\n delete columnState.pivotIndex;\n }\n });\n return columnState;\n }\n checkObjectValueHandlers(defaultDataTypes) {\n const resolvedObjectDataTypeDefinition = this.dataTypeDefinitions.object;\n const defaultObjectDataTypeDefinition = defaultDataTypes.object;\n this.hasObjectValueParser = resolvedObjectDataTypeDefinition.valueParser !== defaultObjectDataTypeDefinition.valueParser;\n this.hasObjectValueFormatter = resolvedObjectDataTypeDefinition.valueFormatter !== defaultObjectDataTypeDefinition.valueFormatter;\n }\n convertColumnTypes(type) {\n let typeKeys = [];\n if (type instanceof Array) {\n const invalidArray = type.some((a) => 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 }\n return typeKeys;\n }\n getDateStringTypeDefinition() {\n return this.dataTypeDefinitions.dateString;\n }\n getDateParserFunction() {\n return this.getDateStringTypeDefinition().dateParser;\n }\n getDateFormatterFunction() {\n return this.getDateStringTypeDefinition().dateFormatter;\n }\n checkType(column, value) {\n var _a;\n const colDef = column.getColDef();\n if (!colDef.cellDataType || value == null) {\n return true;\n }\n const dataTypeMatcher = (_a = this.dataTypeDefinitions[colDef.cellDataType]) === null || _a === void 0 ? void 0 : _a.dataTypeMatcher;\n if (!dataTypeMatcher) {\n return true;\n }\n return dataTypeMatcher(value);\n }\n validateColDef(colDef) {\n if (colDef.cellDataType === 'object') {\n if (colDef.valueFormatter === this.dataTypeDefinitions.object.groupSafeValueFormatter && !this.hasObjectValueFormatter) {\n doOnce(() => console.warn('AG Grid: Cell data type is \"object\" but no value formatter has been provided. Please either provide an object data type definition with a value formatter, or set \"colDef.valueFormatter\"'), 'dataTypeObjectValueFormatter');\n }\n if (colDef.editable && colDef.valueParser === this.dataTypeDefinitions.object.valueParser && !this.hasObjectValueParser) {\n doOnce(() => console.warn('AG Grid: Cell data type is \"object\" but no value parser has been provided. Please either provide an object data type definition with a value parser, or set \"colDef.valueParser\"'), 'dataTypeObjectValueParser');\n }\n }\n }\n setColDefPropertiesForBaseDataType(colDef, dataTypeDefinition, colId) {\n const formatValue = (column, node, value) => {\n let valueFormatter = column.getColDef().valueFormatter;\n if (valueFormatter === dataTypeDefinition.groupSafeValueFormatter) {\n valueFormatter = dataTypeDefinition.valueFormatter;\n }\n return this.valueFormatterService.formatValue(column, node, value, valueFormatter);\n };\n const usingSetFilter = ModuleRegistry.__isRegistered(ModuleNames.SetFilterModule, this.context.getGridId());\n const translate = this.localeService.getLocaleTextFunc();\n const mergeFilterParams = (params) => {\n const { filterParams } = colDef;\n colDef.filterParams = typeof filterParams === 'object' ? Object.assign(Object.assign({}, filterParams), params) : params;\n };\n colDef.useValueFormatterForExport = true;\n colDef.useValueParserForImport = true;\n switch (dataTypeDefinition.baseDataType) {\n case 'number': {\n colDef.cellEditor = 'agNumberCellEditor';\n if (usingSetFilter) {\n mergeFilterParams({\n comparator: (a, b) => {\n const valA = a == null ? 0 : parseInt(a);\n const valB = b == null ? 0 : parseInt(b);\n if (valA === valB)\n return 0;\n return valA > valB ? 1 : -1;\n },\n });\n }\n break;\n }\n case 'boolean': {\n colDef.cellEditor = 'agCheckboxCellEditor';\n colDef.cellRenderer = 'agCheckboxCellRenderer';\n colDef.suppressKeyboardEvent = (params) => !!params.colDef.editable && params.event.key === KeyCode.SPACE;\n if (usingSetFilter) {\n mergeFilterParams({\n valueFormatter: (params) => {\n if (!exists(params.value)) {\n return translate('blanks', '(Blanks)');\n }\n return translate(String(params.value), params.value ? 'True' : 'False');\n }\n });\n }\n else {\n mergeFilterParams({\n maxNumConditions: 1,\n filterOptions: [\n 'empty',\n {\n displayKey: 'true',\n displayName: 'True',\n predicate: (_filterValues, cellValue) => cellValue,\n numberOfInputs: 0,\n },\n {\n displayKey: 'false',\n displayName: 'False',\n predicate: (_filterValues, cellValue) => cellValue === false,\n numberOfInputs: 0,\n },\n ]\n });\n }\n break;\n }\n case 'date': {\n colDef.cellEditor = 'agDateCellEditor';\n colDef.keyCreator = (params) => formatValue(params.column, params.node, params.value);\n if (usingSetFilter) {\n mergeFilterParams({\n valueFormatter: (params) => {\n const valueFormatted = formatValue(params.column, params.node, params.value);\n return exists(valueFormatted) ? valueFormatted : translate('blanks', '(Blanks)');\n },\n treeList: true,\n treeListFormatter: (pathKey, level) => {\n if (level === 1 && pathKey != null) {\n const monthKey = MONTH_KEYS[Number(pathKey) - 1];\n return translate(monthKey, MONTH_LOCALE_TEXT[monthKey]);\n }\n return pathKey !== null && pathKey !== void 0 ? pathKey : translate('blanks', '(Blanks)');\n }\n });\n }\n break;\n }\n case 'dateString': {\n colDef.cellEditor = 'agDateStringCellEditor';\n colDef.keyCreator = (params) => formatValue(params.column, params.node, params.value);\n const convertToDate = this.getDateParserFunction();\n if (usingSetFilter) {\n mergeFilterParams({\n valueFormatter: (params) => {\n const valueFormatted = formatValue(params.column, params.node, params.value);\n return exists(valueFormatted) ? valueFormatted : translate('blanks', '(Blanks)');\n },\n treeList: true,\n treeListPathGetter: (value) => {\n const date = convertToDate(value !== null && value !== void 0 ? value : undefined);\n return date ? [String(date.getFullYear()), String(date.getMonth() + 1), String(date.getDate())] : null;\n },\n treeListFormatter: (pathKey, level) => {\n if (level === 1 && pathKey != null) {\n const monthKey = MONTH_KEYS[Number(pathKey) - 1];\n return translate(monthKey, MONTH_LOCALE_TEXT[monthKey]);\n }\n return pathKey !== null && pathKey !== void 0 ? pathKey : translate('blanks', '(Blanks)');\n }\n });\n }\n else {\n mergeFilterParams({\n comparator: (filterDate, cellValue) => {\n const cellAsDate = convertToDate(cellValue);\n if (cellValue == null || cellAsDate < filterDate) {\n return -1;\n }\n if (cellAsDate > filterDate) {\n return 1;\n }\n return 0;\n }\n });\n }\n break;\n }\n case 'object': {\n colDef.cellEditorParams = {\n useFormatter: true,\n };\n colDef.comparator = (a, b) => {\n const column = this.columnModel.getPrimaryColumn(colId);\n const colDef = column === null || column === void 0 ? void 0 : column.getColDef();\n if (!column || !colDef) {\n return 0;\n }\n const valA = a == null ? '' : formatValue(column, null, a);\n const valB = b == null ? '' : formatValue(column, null, b);\n if (valA === valB)\n return 0;\n return valA > valB ? 1 : -1;\n };\n colDef.keyCreator = (params) => formatValue(params.column, params.node, params.value);\n if (usingSetFilter) {\n mergeFilterParams({\n valueFormatter: (params) => {\n const valueFormatted = formatValue(params.column, params.node, params.value);\n return exists(valueFormatted) ? valueFormatted : translate('blanks', '(Blanks)');\n }\n });\n }\n else {\n colDef.filterValueGetter = (params) => formatValue(params.column, params.node, this.valueService.getValue(params.column, params.node));\n }\n break;\n }\n }\n }\n getDefaultDataTypes() {\n const defaultDateFormatMatcher = (value) => !!value.match('^\\\\d{4}-\\\\d{2}-\\\\d{2}$');\n const translate = this.localeService.getLocaleTextFunc();\n return {\n number: {\n baseDataType: 'number',\n valueParser: (params) => params.newValue === '' ? null : Number(params.newValue),\n valueFormatter: (params) => {\n if (params.value == null) {\n return '';\n }\n if (typeof params.value !== 'number' || isNaN(params.value)) {\n return translate('invalidNumber', 'Invalid Number');\n }\n return String(params.value);\n },\n dataTypeMatcher: (value) => typeof value === 'number',\n },\n text: {\n baseDataType: 'text',\n valueParser: (params) => params.newValue === '' ? null : toStringOrNull(params.newValue),\n dataTypeMatcher: (value) => typeof value === 'string',\n },\n boolean: {\n baseDataType: 'boolean',\n valueParser: (params) => params.newValue === '' ? null : String(params.newValue).toLowerCase() === 'true',\n valueFormatter: (params) => params.value == null ? '' : String(params.value),\n dataTypeMatcher: (value) => typeof value === 'boolean',\n },\n date: {\n baseDataType: 'date',\n valueParser: (params) => parseDateTimeFromString(params.newValue == null ? null : String(params.newValue)),\n valueFormatter: (params) => {\n var _a;\n if (params.value == null) {\n return '';\n }\n if (!(params.value instanceof Date) || isNaN(params.value.getTime())) {\n return translate('invalidDate', 'Invalid Date');\n }\n return (_a = serialiseDate(params.value, false)) !== null && _a !== void 0 ? _a : '';\n },\n dataTypeMatcher: (value) => value instanceof Date,\n },\n dateString: {\n baseDataType: 'dateString',\n dateParser: (value) => { var _a; return (_a = parseDateTimeFromString(value)) !== null && _a !== void 0 ? _a : undefined; },\n dateFormatter: (value) => { var _a; return (_a = serialiseDate(value !== null && value !== void 0 ? value : null, false)) !== null && _a !== void 0 ? _a : undefined; },\n valueParser: (params) => defaultDateFormatMatcher(String(params.newValue)) ? params.newValue : null,\n valueFormatter: (params) => defaultDateFormatMatcher(String(params.value)) ? params.value : '',\n dataTypeMatcher: (value) => typeof value === 'string' && defaultDateFormatMatcher(value),\n },\n object: {\n baseDataType: 'object',\n valueParser: () => null,\n valueFormatter: (params) => { var _a; return (_a = toStringOrNull(params.value)) !== null && _a !== void 0 ? _a : ''; },\n }\n };\n }\n};\n__decorate$d([\n Autowired('rowModel')\n], DataTypeService.prototype, \"rowModel\", void 0);\n__decorate$d([\n Autowired('columnModel')\n], DataTypeService.prototype, \"columnModel\", void 0);\n__decorate$d([\n Autowired('columnUtils')\n], DataTypeService.prototype, \"columnUtils\", void 0);\n__decorate$d([\n Autowired('valueService')\n], DataTypeService.prototype, \"valueService\", void 0);\n__decorate$d([\n Autowired('valueFormatterService')\n], DataTypeService.prototype, \"valueFormatterService\", void 0);\n__decorate$d([\n PostConstruct\n], DataTypeService.prototype, \"init\", null);\nDataTypeService = __decorate$d([\n Bean('dataTypeService')\n], DataTypeService);\n\nvar __decorate$c = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet ValueParserService = class ValueParserService extends BeanStub {\n parseValue(column, rowNode, newValue, oldValue) {\n const colDef = column.getColDef();\n const params = {\n node: rowNode,\n data: rowNode === null || rowNode === void 0 ? void 0 : rowNode.data,\n oldValue,\n newValue,\n colDef,\n column,\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context\n };\n const valueParser = colDef.valueParser;\n if (exists(valueParser)) {\n if (typeof valueParser === 'function') {\n return valueParser(params);\n }\n return this.expressionService.evaluate(valueParser, params);\n }\n return newValue;\n }\n};\n__decorate$c([\n Autowired('expressionService')\n], ValueParserService.prototype, \"expressionService\", void 0);\nValueParserService = __decorate$c([\n Bean('valueParserService')\n], ValueParserService);\n\n// creates JavaScript vanilla Grid, including JavaScript (ag-stack) components, which can\n// be wrapped by the framework wrappers\nclass Grid {\n constructor(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, context => {\n const gridComp = new GridComp(eGridDiv);\n context.createBean(gridComp);\n }, undefined, params);\n }\n destroy() {\n if (this.gridOptions && this.gridOptions.api) {\n this.gridOptions.api.destroy();\n }\n }\n}\nlet nextGridId = 1;\n// created services of grid only, no UI, so frameworks can use this if providing\n// their own UI\nclass GridCoreCreator {\n create(eGridDiv, gridOptions, createUi, acceptChanges, params) {\n var _a;\n const debug = !!gridOptions.debug;\n const gridId = (_a = gridOptions.gridId) !== null && _a !== void 0 ? _a : String(nextGridId++);\n const registeredModules = this.getRegisteredModules(params, gridId);\n const beanClasses = this.createBeansList(gridOptions.rowModelType, registeredModules, gridId);\n const providedBeanInstances = this.createProvidedBeans(eGridDiv, gridOptions, params);\n if (!beanClasses) {\n return;\n } // happens when no row model found\n const contextParams = {\n providedBeanInstances: providedBeanInstances,\n beanClasses: beanClasses,\n debug: debug,\n gridId: gridId,\n };\n const logger = new Logger('AG Grid', () => gridOptions.debug);\n const contextLogger = new Logger('Context', () => contextParams.debug);\n const context = new Context(contextParams, contextLogger);\n const 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(() => {\n this.setColumnsAndData(beans);\n this.dispatchGridReadyEvent(beans);\n const isEnterprise = ModuleRegistry.__isRegistered(ModuleNames.EnterpriseCoreModule, gridId);\n logger.log(`initialised successfully, enterprise = ${isEnterprise}`);\n });\n if (acceptChanges) {\n acceptChanges(context);\n }\n }\n registerControllers(beans, registeredModules) {\n registeredModules.forEach(module => {\n if (module.controllers) {\n module.controllers.forEach(meta => beans.ctrlsFactory.register(meta));\n }\n });\n }\n registerStackComponents(beans, registeredModules) {\n const agStackComponents = this.createAgStackComponentsList(registeredModules);\n beans.agStackComponentsRegistry.setupComponents(agStackComponents);\n }\n getRegisteredModules(params, gridId) {\n const passedViaConstructor = params ? params.modules : null;\n const registered = ModuleRegistry.__getRegisteredModules(gridId);\n const allModules = [];\n const mapNames = {};\n // adds to list and removes duplicates\n const addModule = (moduleBased, mod, gridId) => {\n const addIndividualModule = (currentModule) => {\n if (!mapNames[currentModule.moduleName]) {\n mapNames[currentModule.moduleName] = true;\n allModules.push(currentModule);\n ModuleRegistry.__register(currentModule, moduleBased, gridId);\n }\n };\n addIndividualModule(mod);\n if (mod.dependantModules) {\n mod.dependantModules.forEach(m => addModule(moduleBased, m, gridId));\n }\n };\n if (passedViaConstructor) {\n passedViaConstructor.forEach(m => addModule(true, m, gridId));\n }\n if (registered) {\n registered.forEach(m => addModule(!ModuleRegistry.__isPackageBased(), m, undefined));\n }\n return allModules;\n }\n registerModuleUserComponents(beans, registeredModules) {\n const moduleUserComps = this.extractModuleEntity(registeredModules, (module) => module.userComponents ? module.userComponents : []);\n moduleUserComps.forEach(compMeta => {\n beans.userComponentRegistry.registerDefaultComponent(compMeta.componentName, compMeta.componentClass);\n });\n }\n createProvidedBeans(eGridDiv, gridOptions, params) {\n let frameworkOverrides = params ? params.frameworkOverrides : null;\n if (missing(frameworkOverrides)) {\n frameworkOverrides = new VanillaFrameworkOverrides();\n }\n const seed = {\n gridOptions: gridOptions,\n eGridDiv: eGridDiv,\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 createAgStackComponentsList(registeredModules) {\n let 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: 'AgInputDateField', componentClass: AgInputDateField },\n { componentName: 'AgInputRange', componentClass: AgInputRange },\n { componentName: 'AgSelect', componentClass: AgSelect },\n { componentName: 'AgSlider', componentClass: AgSlider },\n { componentName: 'AgGridBody', componentClass: GridBodyComp },\n { componentName: 'AgHeaderRoot', componentClass: GridHeaderComp },\n { componentName: 'AgSortIndicator', componentClass: SortIndicatorComp },\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 { componentName: 'AgFakeVerticalScroll', componentClass: FakeVScrollComp }\n ];\n const moduleAgStackComps = this.extractModuleEntity(registeredModules, (module) => module.agStackComponents ? module.agStackComponents : []);\n components = components.concat(moduleAgStackComps);\n return components;\n }\n createBeansList(rowModelType = 'clientSide', registeredModules, gridId) {\n // only load beans matching the required row model\n const rowModelModules = registeredModules.filter(module => !module.rowModel || module.rowModel === rowModelType);\n // assert that the relevant module has been loaded\n const rowModelModuleNames = {\n clientSide: ModuleNames.ClientSideRowModelModule,\n infinite: ModuleNames.InfiniteRowModelModule,\n serverSide: ModuleNames.ServerSideRowModelModule,\n viewport: ModuleNames.ViewportRowModelModule\n };\n if (!rowModelModuleNames[rowModelType]) {\n console.error('AG Grid: could not find row model for rowModelType = ' + rowModelType);\n return;\n }\n if (!ModuleRegistry.__assertRegistered(rowModelModuleNames[rowModelType], `rowModelType = '${rowModelType}'`, gridId)) {\n return;\n }\n // beans should only contain SERVICES, it should NEVER contain COMPONENTS\n const beans = [\n Beans, RowPositionUtils, CellPositionUtils, HeaderPositionUtils,\n PaginationAutoPageSizeService, GridApi, UserComponentRegistry, AgComponentUtils,\n ComponentMetadataProvider, ResizeObserverService, UserComponentFactory,\n RowContainerHeightService, HorizontalResizeService, LocaleService, GridOptionsValidator,\n PinnedRowModel, DragService, DisplayedGroupCreator, EventService, GridOptionsService,\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, DataTypeService, ValueParserService\n ];\n const moduleBeans = this.extractModuleEntity(rowModelModules, (module) => module.beans ? module.beans : []);\n beans.push(...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 const beansNoDuplicates = [];\n beans.forEach(bean => {\n if (beansNoDuplicates.indexOf(bean) < 0) {\n beansNoDuplicates.push(bean);\n }\n });\n return beansNoDuplicates;\n }\n extractModuleEntity(moduleEntities, extractor) {\n return [].concat(...moduleEntities.map(extractor));\n }\n setColumnsAndData(beans) {\n const columnDefs = beans.gridOptionsService.get('columnDefs');\n beans.columnModel.setColumnDefs(columnDefs || [], \"gridInitializing\");\n beans.rowModel.start();\n }\n dispatchGridReadyEvent(beans) {\n const readyEvent = {\n type: Events.EVENT_GRID_READY,\n };\n beans.eventService.dispatchEvent(readyEvent);\n }\n}\n\nclass BaseComponentWrapper {\n wrap(OriginalConstructor, mandatoryMethodList, optionalMethodList = [], componentType) {\n const wrapper = this.createWrapper(OriginalConstructor, componentType);\n mandatoryMethodList.forEach((methodName => {\n this.createMethod(wrapper, methodName, true);\n }));\n optionalMethodList.forEach((methodName => {\n this.createMethod(wrapper, methodName, false);\n }));\n return wrapper;\n }\n unwrap(comp) {\n return comp;\n }\n createMethod(wrapper, methodName, mandatory) {\n wrapper.addMethod(methodName, this.createMethodProxy(wrapper, methodName, mandatory));\n }\n createMethodProxy(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}\n\nconst DEFAULT_CHART_GROUPS = {\n columnGroup: [\n 'column',\n 'stackedColumn',\n 'normalizedColumn'\n ],\n barGroup: [\n 'bar',\n 'stackedBar',\n 'normalizedBar'\n ],\n pieGroup: [\n 'pie',\n 'doughnut'\n ],\n lineGroup: [\n 'line'\n ],\n scatterGroup: [\n 'scatter',\n 'bubble'\n ],\n areaGroup: [\n 'area',\n 'stackedArea',\n 'normalizedArea'\n ],\n histogramGroup: [\n 'histogram'\n ],\n combinationGroup: [\n 'columnLineCombo',\n 'areaColumnCombo',\n 'customCombo'\n ]\n};\nconst CHART_TOOL_PANEL_ALLOW_LIST = [\n 'chartSettings',\n 'chartData',\n 'chartFormat'\n];\nconst CHART_TOOLBAR_ALLOW_LIST = [\n 'chartUnlink',\n 'chartLink',\n 'chartDownload'\n];\nconst CHART_TOOL_PANEL_MENU_OPTIONS = {\n settings: \"chartSettings\",\n data: \"chartData\",\n format: \"chartFormat\"\n};\n\n/**\n * Internal Use Only: Used to ensure this file is treated as a module until we can use moduleDetection flag in Ts v4.7\n */\nconst __FORCE_MODULE_DETECTION = 0;\n\nvar BarColumnLabelPlacement;\n(function (BarColumnLabelPlacement) {\n BarColumnLabelPlacement[\"InsideBase\"] = \"insideBase\";\n BarColumnLabelPlacement[\"InsideEnd\"] = \"insideEnd\";\n BarColumnLabelPlacement[\"Center\"] = \"center\";\n BarColumnLabelPlacement[\"OutsideEnd\"] = \"outsideEnd\";\n})(BarColumnLabelPlacement || (BarColumnLabelPlacement = {}));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v30.0.5\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nconst 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\nclass ClientSideNodeManager {\n constructor(rootNode, gridOptionsService, eventService, columnModel, 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.gridOptionsService = gridOptionsService;\n this.eventService = eventService;\n this.columnModel = columnModel;\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.childrenAfterAggFilter = [];\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 postConstruct() {\n // func below doesn't have 'this' pointer, so need to pull out these bits\n this.suppressParentsInRowNodes = this.gridOptionsService.is('suppressParentsInRowNodes');\n this.isRowMasterFunc = this.gridOptionsService.get('isRowMaster');\n this.doingTreeData = this.gridOptionsService.isTreeData();\n this.doingMasterDetail = this.gridOptionsService.isMasterDetail();\n }\n getCopyOfNodesMap() {\n return _.cloneObject(this.allNodesMap);\n }\n getRowNode(id) {\n return this.allNodesMap[id];\n }\n setRowData(rowData) {\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 this.dispatchRowDataUpdateStartedEvent(rowData);\n const rootNode = this.rootNode;\n const sibling = this.rootNode.sibling;\n rootNode.childrenAfterFilter = null;\n rootNode.childrenAfterGroup = null;\n rootNode.childrenAfterAggFilter = 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(dataItem => 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.childrenAfterAggFilter = rootNode.childrenAfterAggFilter;\n sibling.childrenAfterSort = rootNode.childrenAfterSort;\n sibling.childrenMapped = rootNode.childrenMapped;\n sibling.allLeafChildren = rootNode.allLeafChildren;\n }\n }\n updateRowData(rowDataTran, rowNodeOrder) {\n this.dispatchRowDataUpdateStartedEvent(rowDataTran.add);\n const rowNodeTransaction = {\n remove: [],\n update: [],\n add: []\n };\n const nodesToUnselect = [];\n this.executeRemove(rowDataTran, rowNodeTransaction, nodesToUnselect);\n this.executeUpdate(rowDataTran, rowNodeTransaction, nodesToUnselect);\n this.executeAdd(rowDataTran, rowNodeTransaction);\n this.updateSelection(nodesToUnselect, 'rowDataChanged');\n if (rowNodeOrder) {\n _.sortRowNodesByOrder(this.rootNode.allLeafChildren, rowNodeOrder);\n }\n return rowNodeTransaction;\n }\n dispatchRowDataUpdateStartedEvent(rowData) {\n const event = {\n type: Events.EVENT_ROW_DATA_UPDATE_STARTED,\n firstRowData: (rowData === null || rowData === void 0 ? void 0 : rowData.length) ? rowData[0] : null\n };\n this.eventService.dispatchEvent(event);\n }\n updateSelection(nodesToUnselect, source) {\n const selectionChanged = nodesToUnselect.length > 0;\n if (selectionChanged) {\n this.selectionService.setNodesSelected({\n newValue: false,\n nodes: nodesToUnselect,\n suppressFinishActions: true,\n source,\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(source);\n if (selectionChanged) {\n const event = {\n type: Events.EVENT_SELECTION_CHANGED,\n source: source\n };\n this.eventService.dispatchEvent(event);\n }\n }\n executeAdd(rowDataTran, rowNodeTransaction) {\n var _a;\n const { add, addIndex } = rowDataTran;\n if (_.missingOrEmpty(add)) {\n return;\n }\n // create new row nodes for each data item\n const newNodes = add.map(item => this.createNode(item, this.rootNode, ClientSideNodeManager.TOP_LEVEL));\n if (typeof addIndex === 'number' && addIndex >= 0) {\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 const { allLeafChildren } = this.rootNode;\n const len = allLeafChildren.length;\n let normalisedAddIndex = addIndex;\n if (this.doingTreeData && addIndex > 0 && len > 0) {\n for (let i = 0; i < len; i++) {\n if (((_a = allLeafChildren[i]) === null || _a === void 0 ? void 0 : _a.rowIndex) == addIndex - 1) {\n normalisedAddIndex = i + 1;\n break;\n }\n }\n }\n const nodesBeforeIndex = allLeafChildren.slice(0, normalisedAddIndex);\n const nodesAfterIndex = allLeafChildren.slice(normalisedAddIndex, allLeafChildren.length);\n this.rootNode.allLeafChildren = [...nodesBeforeIndex, ...newNodes, ...nodesAfterIndex];\n }\n else {\n this.rootNode.allLeafChildren = [...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 executeRemove(rowDataTran, rowNodeTransaction, nodesToUnselect) {\n const { remove } = rowDataTran;\n if (_.missingOrEmpty(remove)) {\n return;\n }\n const rowIdsRemoved = {};\n remove.forEach(item => {\n const 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(rowNode => !rowIdsRemoved[rowNode.id]);\n if (this.rootNode.sibling) {\n this.rootNode.sibling.allLeafChildren = this.rootNode.allLeafChildren;\n }\n }\n executeUpdate(rowDataTran, rowNodeTransaction, nodesToUnselect) {\n const { update } = rowDataTran;\n if (_.missingOrEmpty(update)) {\n return;\n }\n update.forEach(item => {\n const 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 lookupRowNode(data) {\n const getRowIdFunc = this.gridOptionsService.getCallback('getRowId');\n let rowNode;\n if (getRowIdFunc) {\n // find rowNode using id\n const id = getRowIdFunc({ data, level: 0 });\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(node => 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 createNode(dataItem, parent, level) {\n const 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 getRowId callback, this could cause issues in your grid.`);\n }\n this.allNodesMap[node.id] = node;\n this.nextId++;\n return node;\n }\n setMasterForRow(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 const rowGroupColumns = this.columnModel.getRowGroupColumns();\n const numRowGroupColumns = rowGroupColumns ? rowGroupColumns.length : 0;\n // need to take row group into account when determining level\n const masterRowLevel = level + numRowGroupColumns;\n rowNode.expanded = rowNode.master ? this.isExpanded(masterRowLevel) : false;\n }\n }\n }\n isExpanded(level) {\n const expandByDefault = this.gridOptionsService.getNum('groupDefaultExpanded');\n if (expandByDefault === -1) {\n return true;\n }\n return level < expandByDefault;\n }\n}\nClientSideNodeManager.TOP_LEVEL = 0;\nClientSideNodeManager.ROOT_NODE_ID = 'ROOT_NODE_ID';\n\nvar __decorate$b = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 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 = {}));\nlet ClientSideRowModel = class ClientSideRowModel extends BeanStub {\n constructor() {\n super(...arguments);\n this.onRowHeightChanged_debounced = _.debounce(this.onRowHeightChanged.bind(this), 100);\n this.rowsToDisplay = []; // the rows mapped to rows to display\n }\n init() {\n const refreshEverythingFunc = this.refreshModel.bind(this, { step: ClientSideRowModelSteps.EVERYTHING });\n const animate = !this.gridOptionsService.is('suppressAnimationFrame');\n const refreshEverythingAfterColsChangedFunc = this.refreshModel.bind(this, {\n step: ClientSideRowModelSteps.EVERYTHING,\n afterColumnsChanged: true,\n keepRenderedRows: true,\n 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 this.addManagedListener(this.eventService, Events.EVENT_GRID_STYLES_CHANGED, this.onGridStylesChanges.bind(this));\n const refreshMapListener = this.refreshModel.bind(this, {\n step: ClientSideRowModelSteps.MAP,\n keepRenderedRows: true,\n animate\n });\n this.addManagedPropertyListener('groupRemoveSingleChildren', refreshMapListener);\n this.addManagedPropertyListener('groupRemoveLowestSingleChildren', refreshMapListener);\n this.rootNode = new RowNode(this.beans);\n this.nodeManager = new ClientSideNodeManager(this.rootNode, this.gridOptionsService, this.eventService, this.columnModel, this.selectionService, this.beans);\n }\n start() {\n const rowData = this.gridOptionsService.get('rowData');\n if (rowData) {\n this.setRowData(rowData);\n }\n }\n ensureRowHeightsValid(startPixel, endPixel, startLimitIndex, endLimitIndex) {\n let atLeastOneChange;\n let 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 const rowAtStartPixel = this.getRowIndexAtPixel(startPixel);\n const rowAtEndPixel = this.getRowIndexAtPixel(endPixel);\n // keep check to current page if doing pagination\n const firstRow = Math.max(rowAtStartPixel, startLimitIndex);\n const lastRow = Math.min(rowAtEndPixel, endLimitIndex);\n for (let rowIndex = firstRow; rowIndex <= lastRow; rowIndex++) {\n const rowNode = this.getRow(rowIndex);\n if (rowNode.rowHeightEstimated) {\n const rowHeight = this.gridOptionsService.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 setRowTopAndRowIndex() {\n const defaultRowHeight = this.environment.getDefaultRowHeight();\n let 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 const 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 const allowEstimate = this.gridOptionsService.isDomLayout('normal');\n for (let i = 0; i < this.rowsToDisplay.length; i++) {\n const rowNode = this.rowsToDisplay[i];\n if (rowNode.id != null) {\n displayedRowsMapped.add(rowNode.id);\n }\n if (rowNode.rowHeight == null) {\n const rowHeight = this.gridOptionsService.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 clearRowTopAndRowIndex(changedPath, displayedRowsMapped) {\n const changedPathActive = changedPath.isActive();\n const clearIfNotDisplayed = (rowNode) => {\n if (rowNode && rowNode.id != null && !displayedRowsMapped.has(rowNode.id)) {\n rowNode.clearRowTopAndRowIndex();\n }\n };\n const recurse = (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 const isRootNode = rowNode.level == -1; // we need to give special consideration for root node,\n // as expanded=undefined for root node\n const 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 ensureRowsAtPixel(rowNodes, pixel, increment = 0) {\n const indexAtPixelNow = this.getRowIndexAtPixel(pixel);\n const rowNodeAtPixelNow = this.getRow(indexAtPixelNow);\n const animate = !this.gridOptionsService.is('suppressAnimationFrame');\n if (rowNodeAtPixelNow === rowNodes[0]) {\n return false;\n }\n rowNodes.forEach(rowNode => {\n _.removeFromArray(this.rootNode.allLeafChildren, rowNode);\n });\n rowNodes.forEach((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\n });\n return true;\n }\n highlightRowAtPixel(rowNode, pixel) {\n const indexAtPixelNow = pixel != null ? this.getRowIndexAtPixel(pixel) : null;\n const 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 const 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 getHighlightPosition(pixel, rowNode) {\n if (!rowNode) {\n const index = this.getRowIndexAtPixel(pixel);\n rowNode = this.getRow(index || 0);\n if (!rowNode) {\n return RowHighlightPosition.Below;\n }\n }\n const { rowTop, rowHeight } = rowNode;\n return pixel - rowTop < rowHeight / 2 ? RowHighlightPosition.Above : RowHighlightPosition.Below;\n }\n getLastHighlightedRowNode() {\n return this.lastHighlightedRow;\n }\n isLastRowIndexKnown() {\n return true;\n }\n getRowCount() {\n if (this.rowsToDisplay) {\n return this.rowsToDisplay.length;\n }\n return 0;\n }\n getTopLevelRowCount() {\n const showingRootNode = this.rowsToDisplay && this.rowsToDisplay[0] === this.rootNode;\n if (showingRootNode) {\n return 1;\n }\n const filteredChildren = this.rootNode.childrenAfterAggFilter;\n return filteredChildren ? filteredChildren.length : 0;\n }\n getTopLevelRowDisplayedIndex(topLevelIndex) {\n const showingRootNode = this.rowsToDisplay && this.rowsToDisplay[0] === this.rootNode;\n if (showingRootNode) {\n return topLevelIndex;\n }\n let rowNode = this.rootNode.childrenAfterSort[topLevelIndex];\n if (this.gridOptionsService.is('groupHideOpenParents')) {\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 getRowBounds(index) {\n if (_.missing(this.rowsToDisplay)) {\n return null;\n }\n const rowNode = this.rowsToDisplay[index];\n if (rowNode) {\n return {\n rowTop: rowNode.rowTop,\n rowHeight: rowNode.rowHeight\n };\n }\n return null;\n }\n onRowGroupOpened() {\n const animate = this.gridOptionsService.isAnimateRows();\n this.refreshModel({ step: ClientSideRowModelSteps.MAP, keepRenderedRows: true, animate: animate });\n }\n onFilterChanged(event) {\n if (event.afterDataChange) {\n return;\n }\n const animate = this.gridOptionsService.isAnimateRows();\n const primaryOrQuickFilterChanged = event.columns.length === 0 || event.columns.some(col => col.isPrimary());\n const step = primaryOrQuickFilterChanged ? ClientSideRowModelSteps.FILTER : ClientSideRowModelSteps.FILTER_AGGREGATES;\n this.refreshModel({ step: step, keepRenderedRows: true, animate: animate });\n }\n onSortChanged() {\n const animate = this.gridOptionsService.isAnimateRows();\n this.refreshModel({ step: ClientSideRowModelSteps.SORT, keepRenderedRows: true, animate: animate, keepEditingRows: true });\n }\n getType() {\n return 'clientSide';\n }\n onValueChanged() {\n if (this.columnModel.isPivotActive()) {\n this.refreshModel({ step: ClientSideRowModelSteps.PIVOT });\n }\n else {\n this.refreshModel({ step: ClientSideRowModelSteps.AGGREGATE });\n }\n }\n createChangePath(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 const noTransactions = _.missingOrEmpty(rowNodeTransactions);\n const changedPath = new ChangedPath(false, this.rootNode);\n if (noTransactions || this.gridOptionsService.isTreeData()) {\n changedPath.setInactive();\n }\n return changedPath;\n }\n isSuppressModelUpdateAfterUpdateTransaction(params) {\n if (!this.gridOptionsService.is('suppressModelUpdateAfterUpdateTransaction')) {\n return false;\n }\n // return true if we are only doing update transactions\n if (params.rowNodeTransactions == null) {\n return false;\n }\n const transWithAddsOrDeletes = params.rowNodeTransactions.filter(tx => (tx.add != null && tx.add.length > 0) || (tx.remove != null && tx.remove.length > 0));\n const transactionsContainUpdatesOnly = transWithAddsOrDeletes == null || transWithAddsOrDeletes.length == 0;\n return transactionsContainUpdatesOnly;\n }\n buildRefreshModelParams(step) {\n let paramsStep = ClientSideRowModelSteps.EVERYTHING;\n const stepsMapped = {\n everything: ClientSideRowModelSteps.EVERYTHING,\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 undefined;\n }\n const animate = !this.gridOptionsService.is('suppressAnimationFrame');\n const modelParams = {\n step: paramsStep,\n keepRenderedRows: true,\n keepEditingRows: true,\n animate\n };\n return modelParams;\n }\n refreshModel(paramsOrStep) {\n let params = typeof paramsOrStep === 'object' && \"step\" in paramsOrStep ? paramsOrStep : this.buildRefreshModelParams(paramsOrStep);\n if (!params) {\n return;\n }\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 const 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.FILTER_AGGREGATES:\n this.doFilterAggregates(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 const displayedNodesMapped = this.setRowTopAndRowIndex();\n this.clearRowTopAndRowIndex(changedPath, displayedNodesMapped);\n const event = {\n type: Events.EVENT_MODEL_UPDATED,\n animate: params.animate,\n keepRenderedRows: params.keepRenderedRows,\n newData: params.newData,\n newPage: false,\n keepUndoRedoStack: params.keepUndoRedoStack\n };\n this.eventService.dispatchEvent(event);\n }\n isEmpty() {\n const rowsMissing = _.missing(this.rootNode.allLeafChildren) || this.rootNode.allLeafChildren.length === 0;\n return _.missing(this.rootNode) || rowsMissing || !this.columnModel.isReady();\n }\n isRowsToRender() {\n return _.exists(this.rowsToDisplay) && this.rowsToDisplay.length > 0;\n }\n getNodesInRangeForSelection(firstInRange, lastInRange) {\n // if lastSelectedNode is missing, we start at the first row\n let started = !lastInRange;\n let finished = false;\n const result = [];\n const groupsSelectChildren = this.gridOptionsService.is('groupSelectsChildren');\n this.forEachNodeAfterFilterAndSort(rowNode => {\n // range has been closed, skip till end\n if (finished) {\n return;\n }\n if (started) {\n if (rowNode === lastInRange || rowNode === firstInRange) {\n // check if this is the last node we're going to be adding\n finished = true;\n // if the final node was a group node, and we're doing groupSelectsChildren\n // make the exception to select all of it's descendants too\n if (rowNode.group && groupsSelectChildren) {\n result.push(...rowNode.allLeafChildren);\n return;\n }\n }\n }\n if (!started) {\n if (rowNode !== lastInRange && rowNode !== firstInRange) {\n // still haven't hit a boundary node, keep searching\n return;\n }\n started = true;\n }\n // only select leaf nodes if groupsSelectChildren\n const includeThisNode = !rowNode.group || !groupsSelectChildren;\n if (includeThisNode) {\n result.push(rowNode);\n return;\n }\n });\n return result;\n }\n setDatasource(datasource) {\n console.error('AG Grid: should never call setDatasource on clientSideRowController');\n }\n getTopLevelNodes() {\n return this.rootNode ? this.rootNode.childrenAfterGroup : null;\n }\n getRootNode() {\n return this.rootNode;\n }\n getRow(index) {\n return this.rowsToDisplay[index];\n }\n isRowPresent(rowNode) {\n return this.rowsToDisplay.indexOf(rowNode) >= 0;\n }\n getRowIndexAtPixel(pixelToMatch) {\n if (this.isEmpty() || this.rowsToDisplay.length === 0) {\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 let bottomPointer = 0;\n let 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 const lastNode = _.last(this.rowsToDisplay);\n if (lastNode.rowTop <= pixelToMatch) {\n return this.rowsToDisplay.length - 1;\n }\n let oldBottomPointer = -1;\n let oldTopPointer = -1;\n while (true) {\n const midPointer = Math.floor((bottomPointer + topPointer) / 2);\n const 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 // infinite loops happen when there is space between rows. this can happen\n // when Auto Height is active, cos we re-calculate row tops asyncronously\n // when row heights change, which can temporarly result in gaps between rows.\n const caughtInInfiniteLoop = oldBottomPointer === bottomPointer\n && oldTopPointer === topPointer;\n if (caughtInInfiniteLoop) {\n return midPointer;\n }\n oldBottomPointer = bottomPointer;\n oldTopPointer = topPointer;\n }\n }\n isRowInPixel(rowNode, pixelToMatch) {\n const topPixel = rowNode.rowTop;\n const bottomPixel = rowNode.rowTop + rowNode.rowHeight;\n const pixelInRow = topPixel <= pixelToMatch && bottomPixel > pixelToMatch;\n return pixelInRow;\n }\n forEachLeafNode(callback) {\n if (this.rootNode.allLeafChildren) {\n this.rootNode.allLeafChildren.forEach((rowNode, index) => callback(rowNode, index));\n }\n }\n forEachNode(callback, includeFooterNodes = false) {\n this.recursivelyWalkNodesAndCallback({\n nodes: [...(this.rootNode.childrenAfterGroup || [])],\n callback,\n recursionType: RecursionType.Normal,\n index: 0,\n includeFooterNodes\n });\n }\n forEachNodeAfterFilter(callback, includeFooterNodes = false) {\n this.recursivelyWalkNodesAndCallback({\n nodes: [...(this.rootNode.childrenAfterAggFilter || [])],\n callback,\n recursionType: RecursionType.AfterFilter,\n index: 0,\n includeFooterNodes\n });\n }\n forEachNodeAfterFilterAndSort(callback, includeFooterNodes = false) {\n this.recursivelyWalkNodesAndCallback({\n nodes: [...(this.rootNode.childrenAfterSort || [])],\n callback,\n recursionType: RecursionType.AfterFilterAndSort,\n index: 0,\n includeFooterNodes\n });\n }\n forEachPivotNode(callback, includeFooterNodes = false) {\n this.recursivelyWalkNodesAndCallback({\n nodes: [this.rootNode],\n callback,\n recursionType: RecursionType.PivotNodes,\n index: 0,\n includeFooterNodes\n });\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 recursivelyWalkNodesAndCallback(params) {\n var _a;\n const { nodes, callback, recursionType, includeFooterNodes } = params;\n let { index } = params;\n const firstNode = nodes[0];\n if (includeFooterNodes && ((_a = firstNode === null || firstNode === void 0 ? void 0 : firstNode.parent) === null || _a === void 0 ? void 0 : _a.sibling)) {\n nodes.push(firstNode.parent.sibling);\n }\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n callback(node, index++);\n // go to the next level if it is a group\n if (node.hasChildren() && !node.footer) {\n // depending on the recursion type, we pick a difference set of children\n let nodeChildren = null;\n switch (recursionType) {\n case RecursionType.Normal:\n nodeChildren = node.childrenAfterGroup;\n break;\n case RecursionType.AfterFilter:\n nodeChildren = node.childrenAfterAggFilter;\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({\n nodes: [...nodeChildren],\n callback,\n recursionType,\n index,\n includeFooterNodes\n });\n }\n }\n }\n return index;\n }\n // it's possible to recompute the aggregate without doing the other parts\n // + api.refreshClientSideRowModel('aggregate')\n doAggregate(changedPath) {\n if (this.aggregationStage) {\n this.aggregationStage.execute({ rowNode: this.rootNode, changedPath: changedPath });\n }\n }\n doFilterAggregates(changedPath) {\n if (this.filterAggregatesStage) {\n this.filterAggregatesStage.execute({ rowNode: this.rootNode, changedPath: changedPath });\n }\n else {\n // If filterAggregatesStage is undefined, then so is the grouping stage, so all children should be on the rootNode.\n this.rootNode.childrenAfterAggFilter = this.rootNode.childrenAfterFilter;\n }\n }\n // + gridApi.expandAll()\n // + gridApi.collapseAll()\n expandOrCollapseAll(expand) {\n const usingTreeData = this.gridOptionsService.isTreeData();\n const usingPivotMode = this.columnModel.isPivotActive();\n const recursiveExpandOrCollapse = (rowNodes) => {\n if (!rowNodes) {\n return;\n }\n rowNodes.forEach(rowNode => {\n const actionRow = () => {\n rowNode.expanded = expand;\n recursiveExpandOrCollapse(rowNode.childrenAfterGroup);\n };\n if (usingTreeData) {\n const hasChildren = _.exists(rowNode.childrenAfterGroup);\n if (hasChildren) {\n actionRow();\n }\n return;\n }\n if (usingPivotMode) {\n const notLeafGroup = !rowNode.leafGroup;\n if (notLeafGroup) {\n actionRow();\n }\n return;\n }\n const isRowGroup = rowNode.group;\n if (isRowGroup) {\n actionRow();\n }\n });\n };\n if (this.rootNode) {\n recursiveExpandOrCollapse(this.rootNode.childrenAfterGroup);\n }\n this.refreshModel({ step: ClientSideRowModelSteps.MAP });\n const eventSource = expand ? 'expandAll' : 'collapseAll';\n const event = {\n type: Events.EVENT_EXPAND_COLLAPSE_ALL,\n source: eventSource\n };\n this.eventService.dispatchEvent(event);\n }\n doSort(rowNodeTransactions, changedPath) {\n this.sortStage.execute({\n rowNode: this.rootNode,\n rowNodeTransactions: rowNodeTransactions,\n changedPath: changedPath\n });\n }\n doRowGrouping(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.gridOptionsService.is('groupSelectsChildren')) {\n const selectionChanged = this.selectionService.updateGroupsFromChildrenSelections('rowGroupChanged', changedPath);\n if (selectionChanged) {\n const event = {\n type: Events.EVENT_SELECTION_CHANGED,\n source: 'rowGroupChanged'\n };\n this.eventService.dispatchEvent(event);\n }\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 restoreGroupState(groupState) {\n if (!groupState) {\n return;\n }\n _.traverseNodesWithKey(this.rootNode.childrenAfterGroup, (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 doFilter(changedPath) {\n this.filterStage.execute({ rowNode: this.rootNode, changedPath: changedPath });\n }\n doPivot(changedPath) {\n if (this.pivotStage) {\n this.pivotStage.execute({ rowNode: this.rootNode, changedPath: changedPath });\n }\n }\n getGroupState() {\n if (!this.rootNode.childrenAfterGroup || !this.gridOptionsService.is('rememberGroupStateWhenNewData')) {\n return null;\n }\n const result = {};\n _.traverseNodesWithKey(this.rootNode.childrenAfterGroup, (node, key) => result[key] = node.expanded);\n return result;\n }\n getCopyOfNodesMap() {\n return this.nodeManager.getCopyOfNodesMap();\n }\n getRowNode(id) {\n // although id is typed a string, this could be called by the user, and they could have passed a number\n const 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 let res = undefined;\n this.forEachNode(node => {\n if (node.id === id) {\n res = node;\n }\n });\n return res;\n }\n return this.nodeManager.getRowNode(id);\n }\n // rows: the rows to put into the model\n setRowData(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 const groupState = this.getGroupState();\n this.nodeManager.setRowData(rowData);\n // - clears selection\n this.selectionService.reset();\n // - updates filters\n this.filterManager.onNewRowsLoaded('rowDataUpdated');\n // this event kicks off:\n // - shows 'no rows' overlay if needed\n const rowDataUpdatedEvent = {\n type: Events.EVENT_ROW_DATA_UPDATED\n };\n this.eventService.dispatchEvent(rowDataUpdatedEvent);\n this.refreshModel({\n step: ClientSideRowModelSteps.EVERYTHING,\n groupState: groupState,\n newData: true\n });\n }\n batchUpdateRowData(rowDataTransaction, callback) {\n if (this.applyAsyncTransactionsTimeout == null) {\n this.rowDataTransactionBatch = [];\n const waitMillis = this.gridOptionsService.getAsyncTransactionWaitMillis();\n this.applyAsyncTransactionsTimeout = window.setTimeout(() => {\n this.executeBatchUpdateRowData();\n }, waitMillis);\n }\n this.rowDataTransactionBatch.push({ rowDataTransaction: rowDataTransaction, callback: callback });\n }\n flushAsyncTransactions() {\n if (this.applyAsyncTransactionsTimeout != null) {\n clearTimeout(this.applyAsyncTransactionsTimeout);\n this.executeBatchUpdateRowData();\n }\n }\n executeBatchUpdateRowData() {\n this.valueCache.onDataChanged();\n const callbackFuncsBound = [];\n const 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 let forceRowNodeOrder = false;\n if (this.rowDataTransactionBatch) {\n this.rowDataTransactionBatch.forEach(tranItem => {\n const 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(() => {\n callbackFuncsBound.forEach(func => func());\n }, 0);\n }\n if (rowNodeTrans.length > 0) {\n const event = {\n type: Events.EVENT_ASYNC_TRANSACTIONS_FLUSHED,\n results: rowNodeTrans\n };\n this.eventService.dispatchEvent(event);\n }\n this.rowDataTransactionBatch = null;\n this.applyAsyncTransactionsTimeout = undefined;\n }\n updateRowData(rowDataTran, rowNodeOrder) {\n this.valueCache.onDataChanged();\n const 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 const forceRowNodeOrder = typeof rowDataTran.addIndex === 'number';\n this.commonUpdateRowData([rowNodeTran], rowNodeOrder, forceRowNodeOrder);\n return rowNodeTran;\n }\n createRowNodeOrder() {\n const suppressSortOrder = this.gridOptionsService.is('suppressMaintainUnsortedOrder');\n if (suppressSortOrder) {\n return;\n }\n const orderMap = {};\n if (this.rootNode && this.rootNode.allLeafChildren) {\n for (let index = 0; index < this.rootNode.allLeafChildren.length; index++) {\n const node = this.rootNode.allLeafChildren[index];\n orderMap[node.id] = index;\n }\n }\n return orderMap;\n }\n // common to updateRowData and batchUpdateRowData\n commonUpdateRowData(rowNodeTrans, rowNodeOrder, forceRowNodeOrder) {\n const animate = !this.gridOptionsService.is('suppressAnimationFrame');\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\n });\n // - updates filters\n this.filterManager.onNewRowsLoaded('rowDataUpdated');\n const event = {\n type: Events.EVENT_ROW_DATA_UPDATED\n };\n this.eventService.dispatchEvent(event);\n }\n doRowsToDisplay() {\n this.rowsToDisplay = this.flattenStage.execute({ rowNode: this.rootNode });\n }\n onRowHeightChanged() {\n this.refreshModel({ step: ClientSideRowModelSteps.MAP, keepRenderedRows: true, keepEditingRows: true, keepUndoRedoStack: true });\n }\n /** This method is debounced. It is used for row auto-height. If we don't debounce,\n * then the Row Models will end up recalculating each row position\n * for each row height change and result in the Row Renderer laying out rows.\n * This is particularly bad if using print layout, and showing eg 1,000 rows,\n * each row will change it's height, causing Row Model to update 1,000 times.\n */\n onRowHeightChangedDebounced() {\n this.onRowHeightChanged_debounced();\n }\n resetRowHeights() {\n const atLeastOne = this.resetRowHeightsForAllRowNodes();\n this.rootNode.setRowHeight(this.rootNode.rowHeight, true);\n // when pivotMode but pivot not active, root node is displayed on its own\n // because it's only ever displayed alone, refreshing the model (onRowHeightChanged) is not required\n if (atLeastOne) {\n this.onRowHeightChanged();\n }\n }\n resetRowHeightsForAllRowNodes() {\n let atLeastOne = false;\n this.forEachNode(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 const detailNode = rowNode.detailNode;\n if (detailNode) {\n detailNode.setRowHeight(detailNode.rowHeight, true);\n }\n atLeastOne = true;\n });\n return atLeastOne;\n }\n onGridStylesChanges() {\n if (this.columnModel.isAutoRowHeightActive()) {\n return;\n }\n this.resetRowHeights();\n }\n};\n__decorate$b([\n Autowired('columnModel')\n], ClientSideRowModel.prototype, \"columnModel\", void 0);\n__decorate$b([\n Autowired('selectionService')\n], ClientSideRowModel.prototype, \"selectionService\", void 0);\n__decorate$b([\n Autowired('filterManager')\n], ClientSideRowModel.prototype, \"filterManager\", void 0);\n__decorate$b([\n Autowired('valueCache')\n], ClientSideRowModel.prototype, \"valueCache\", void 0);\n__decorate$b([\n Autowired('beans')\n], ClientSideRowModel.prototype, \"beans\", void 0);\n__decorate$b([\n Autowired('filterStage')\n], ClientSideRowModel.prototype, \"filterStage\", void 0);\n__decorate$b([\n Autowired('sortStage')\n], ClientSideRowModel.prototype, \"sortStage\", void 0);\n__decorate$b([\n Autowired('flattenStage')\n], ClientSideRowModel.prototype, \"flattenStage\", void 0);\n__decorate$b([\n Optional('groupStage')\n], ClientSideRowModel.prototype, \"groupStage\", void 0);\n__decorate$b([\n Optional('aggregationStage')\n], ClientSideRowModel.prototype, \"aggregationStage\", void 0);\n__decorate$b([\n Optional('pivotStage')\n], ClientSideRowModel.prototype, \"pivotStage\", void 0);\n__decorate$b([\n Optional('filterAggregatesStage')\n], ClientSideRowModel.prototype, \"filterAggregatesStage\", void 0);\n__decorate$b([\n PostConstruct\n], ClientSideRowModel.prototype, \"init\", null);\nClientSideRowModel = __decorate$b([\n Bean('rowModel')\n], ClientSideRowModel);\n\nvar __decorate$a = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet FilterStage = class FilterStage extends BeanStub {\n execute(params) {\n const { changedPath } = params;\n this.filterService.filter(changedPath);\n }\n};\n__decorate$a([\n Autowired('filterService')\n], FilterStage.prototype, \"filterService\", void 0);\nFilterStage = __decorate$a([\n Bean('filterStage')\n], FilterStage);\n\nvar __decorate$9 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet SortStage = class SortStage extends BeanStub {\n execute(params) {\n const sortOptions = this.sortController.getSortOptions();\n const sortActive = _.exists(sortOptions) && sortOptions.length > 0;\n const 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.gridOptionsService.is('deltaSort');\n const sortContainsGroupColumns = sortOptions.some(opt => !!this.columnModel.getGroupDisplayColumnForGroup(opt.column.getId()));\n this.sortService.sort(sortOptions, sortActive, deltaSort, params.rowNodeTransactions, params.changedPath, sortContainsGroupColumns);\n }\n};\n__decorate$9([\n Autowired('sortService')\n], SortStage.prototype, \"sortService\", void 0);\n__decorate$9([\n Autowired('sortController')\n], SortStage.prototype, \"sortController\", void 0);\n__decorate$9([\n Autowired('columnModel')\n], SortStage.prototype, \"columnModel\", void 0);\nSortStage = __decorate$9([\n Bean('sortStage')\n], SortStage);\n\nvar __decorate$8 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet FlattenStage = class FlattenStage extends BeanStub {\n execute(params) {\n const 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 const result = [];\n // putting value into a wrapper so it's passed by reference\n const nextRowTop = { value: 0 };\n const 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 const showRootNode = skipLeafNodes && rootNode.leafGroup;\n const 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 const atLeastOneRowPresent = result.length > 0;\n const includeGroupTotalFooter = !showRootNode\n // don't show total footer when showRootNode is true (i.e. in pivot mode and no groups)\n && atLeastOneRowPresent\n && this.gridOptionsService.is('groupIncludeTotalFooter');\n if (includeGroupTotalFooter) {\n rootNode.createFooter();\n this.addRowNodeToRowsToDisplay(rootNode.sibling, result, nextRowTop, 0);\n }\n return result;\n }\n recursivelyAddToRowsToDisplay(rowsToFlatten, result, nextRowTop, skipLeafNodes, uiLevel) {\n if (_.missingOrEmpty(rowsToFlatten)) {\n return;\n }\n const hideOpenParents = this.gridOptionsService.is('groupHideOpenParents');\n // these two are mutually exclusive, so if first set, we don't set the second\n const groupRemoveSingleChildren = this.gridOptionsService.is('groupRemoveSingleChildren');\n const groupRemoveLowestSingleChildren = !groupRemoveSingleChildren && this.gridOptionsService.is('groupRemoveLowestSingleChildren');\n for (let i = 0; i < rowsToFlatten.length; i++) {\n const rowNode = rowsToFlatten[i];\n // check all these cases, for working out if this row should be included in the final mapped list\n const isParent = rowNode.hasChildren();\n const isSkippedLeafNode = skipLeafNodes && !isParent;\n const isRemovedSingleChildrenGroup = groupRemoveSingleChildren &&\n isParent &&\n rowNode.childrenAfterGroup.length === 1;\n const 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 row groups')\n const neverAllowToExpand = skipLeafNodes && rowNode.leafGroup;\n const isHiddenOpenParent = hideOpenParents && rowNode.expanded && !rowNode.master && (!neverAllowToExpand);\n const 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 const 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 const 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.gridOptionsService.is('groupIncludeFooter')) {\n this.addRowNodeToRowsToDisplay(rowNode.sibling, result, nextRowTop, uiLevelForChildren);\n }\n }\n }\n else if (rowNode.master && rowNode.expanded) {\n const detailNode = this.createDetailNode(rowNode);\n this.addRowNodeToRowsToDisplay(detailNode, result, nextRowTop, uiLevel);\n }\n }\n }\n // duplicated method, it's also in floatingRowModel\n addRowNodeToRowsToDisplay(rowNode, result, nextRowTop, uiLevel) {\n const isGroupMultiAutoColumn = this.gridOptionsService.isGroupMultiAutoColumn();\n result.push(rowNode);\n rowNode.setUiLevel(isGroupMultiAutoColumn ? 0 : uiLevel);\n }\n createDetailNode(masterNode) {\n if (_.exists(masterNode.detailNode)) {\n return masterNode.detailNode;\n }\n const 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};\n__decorate$8([\n Autowired('columnModel')\n], FlattenStage.prototype, \"columnModel\", void 0);\n__decorate$8([\n Autowired('beans')\n], FlattenStage.prototype, \"beans\", void 0);\nFlattenStage = __decorate$8([\n Bean('flattenStage')\n], FlattenStage);\n\nvar __decorate$7 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet SortService = class SortService extends BeanStub {\n init() {\n this.postSortFunc = this.gridOptionsService.getCallback('postSortRows');\n }\n sort(sortOptions, sortActive, useDeltaSort, rowNodeTransactions, changedPath, sortContainsGroupColumns) {\n const groupMaintainOrder = this.gridOptionsService.is('groupMaintainOrder');\n const groupColumnsPresent = this.columnModel.getAllGridColumns().some(c => c.isRowGroupActive());\n let allDirtyNodes = {};\n if (useDeltaSort && rowNodeTransactions) {\n allDirtyNodes = this.calculateDirtyNodes(rowNodeTransactions);\n }\n const isPivotMode = this.columnModel.isPivotMode();\n const callback = (rowNode) => {\n // we clear out the 'pull down open parents' first, as the values mix up the sorting\n this.pullDownGroupDataForHideOpenParents(rowNode.childrenAfterAggFilter, true);\n // It's pointless to sort rows which aren't being displayed. in pivot mode we don't need to sort the leaf group children.\n const skipSortingPivotLeafs = isPivotMode && rowNode.leafGroup;\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 let skipSortingGroups = groupMaintainOrder && groupColumnsPresent && !rowNode.leafGroup && !sortContainsGroupColumns;\n if (skipSortingGroups) {\n const childrenToBeSorted = rowNode.childrenAfterAggFilter.slice(0);\n if (rowNode.childrenAfterSort) {\n const indexedOrders = {};\n rowNode.childrenAfterSort.forEach((node, idx) => {\n indexedOrders[node.id] = idx;\n });\n childrenToBeSorted.sort((row1, row2) => { var _a, _b; return ((_a = indexedOrders[row1.id]) !== null && _a !== void 0 ? _a : 0) - ((_b = indexedOrders[row2.id]) !== null && _b !== void 0 ? _b : 0); });\n }\n rowNode.childrenAfterSort = childrenToBeSorted;\n }\n else if (!sortActive || skipSortingPivotLeafs) {\n // if there's no sort to make, skip this step\n rowNode.childrenAfterSort = rowNode.childrenAfterAggFilter.slice(0);\n }\n else if (useDeltaSort) {\n rowNode.childrenAfterSort = this.doDeltaSort(rowNode, allDirtyNodes, changedPath, sortOptions);\n }\n else {\n rowNode.childrenAfterSort = this.rowNodeSorter.doFullSort(rowNode.childrenAfterAggFilter, sortOptions);\n }\n if (rowNode.sibling) {\n rowNode.sibling.childrenAfterSort = rowNode.childrenAfterSort;\n }\n this.updateChildIndexes(rowNode);\n if (this.postSortFunc) {\n const params = { nodes: rowNode.childrenAfterSort };\n this.postSortFunc(params);\n }\n };\n if (changedPath) {\n changedPath.forEachChangedNodeDepthFirst(callback);\n }\n this.updateGroupDataForHideOpenParents(changedPath);\n }\n calculateDirtyNodes(rowNodeTransactions) {\n const dirtyNodes = {};\n const addNodesFunc = (rowNodes) => {\n if (rowNodes) {\n rowNodes.forEach(rowNode => dirtyNodes[rowNode.id] = true);\n }\n };\n // all leaf level nodes in the transaction were impacted\n if (rowNodeTransactions) {\n rowNodeTransactions.forEach(tran => {\n addNodesFunc(tran.add);\n addNodesFunc(tran.update);\n addNodesFunc(tran.remove);\n });\n }\n return dirtyNodes;\n }\n doDeltaSort(rowNode, allTouchedNodes, changedPath, sortOptions) {\n const unsortedRows = rowNode.childrenAfterAggFilter;\n const oldSortedRows = rowNode.childrenAfterSort;\n if (!oldSortedRows) {\n return this.rowNodeSorter.doFullSort(unsortedRows, sortOptions);\n }\n const untouchedRowsMap = {};\n const touchedRows = [];\n unsortedRows.forEach(row => {\n if (allTouchedNodes[row.id] || !changedPath.canSkip(row)) {\n touchedRows.push(row);\n }\n else {\n untouchedRowsMap[row.id] = true;\n }\n });\n const sortedUntouchedRows = oldSortedRows.filter(child => untouchedRowsMap[child.id]);\n const mapNodeToSortedNode = (rowNode, pos) => ({ currentPos: pos, rowNode: rowNode });\n const sortedChangedRows = touchedRows\n .map(mapNodeToSortedNode)\n .sort((a, b) => this.rowNodeSorter.compareRowNodes(sortOptions, a, b));\n return this.mergeSortedArrays(sortOptions, sortedChangedRows, sortedUntouchedRows.map(mapNodeToSortedNode)).map(({ rowNode }) => rowNode);\n }\n // Merge two sorted arrays into each other\n mergeSortedArrays(sortOptions, arr1, arr2) {\n const res = [];\n let i = 0;\n let 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 const 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 updateChildIndexes(rowNode) {\n if (_.missing(rowNode.childrenAfterSort)) {\n return;\n }\n const listToSort = rowNode.childrenAfterSort;\n for (let i = 0; i < listToSort.length; i++) {\n const child = listToSort[i];\n const firstChild = i === 0;\n const lastChild = i === rowNode.childrenAfterSort.length - 1;\n child.setFirstChild(firstChild);\n child.setLastChild(lastChild);\n child.setChildIndex(i);\n }\n }\n updateGroupDataForHideOpenParents(changedPath) {\n if (!this.gridOptionsService.is('groupHideOpenParents')) {\n return;\n }\n if (this.gridOptionsService.isTreeData()) {\n const msg = `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(() => console.warn(msg), 'sortService.hideOpenParentsWithTreeData');\n return false;\n }\n // recurse breadth first over group nodes after sort to 'pull down' group data to child groups\n const callback = (rowNode) => {\n this.pullDownGroupDataForHideOpenParents(rowNode.childrenAfterSort, false);\n rowNode.childrenAfterSort.forEach(child => {\n if (child.hasChildren()) {\n callback(child);\n }\n });\n };\n if (changedPath) {\n changedPath.executeFromRootNode(rowNode => callback(rowNode));\n }\n }\n pullDownGroupDataForHideOpenParents(rowNodes, clearOperation) {\n if (!this.gridOptionsService.is('groupHideOpenParents') || _.missing(rowNodes)) {\n return;\n }\n rowNodes.forEach(childRowNode => {\n const groupDisplayCols = this.columnModel.getGroupDisplayColumns();\n groupDisplayCols.forEach(groupDisplayCol => {\n const 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 const displayingGroupKey = showRowGroup;\n const rowGroupColumn = this.columnModel.getPrimaryColumn(displayingGroupKey);\n const 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 const parentToStealFrom = childRowNode.getFirstChildOfFirstChild(rowGroupColumn);\n if (parentToStealFrom) {\n childRowNode.setGroupValue(groupDisplayCol.getId(), parentToStealFrom.key);\n }\n }\n });\n });\n }\n};\n__decorate$7([\n Autowired('columnModel')\n], SortService.prototype, \"columnModel\", void 0);\n__decorate$7([\n Autowired('rowNodeSorter')\n], SortService.prototype, \"rowNodeSorter\", void 0);\n__decorate$7([\n PostConstruct\n], SortService.prototype, \"init\", null);\nSortService = __decorate$7([\n Bean('sortService')\n], SortService);\n\nvar __decorate$6 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet FilterService = class FilterService extends BeanStub {\n filter(changedPath) {\n const filterActive = this.filterManager.isColumnFilterPresent()\n || this.filterManager.isQuickFilterPresent()\n || this.filterManager.isExternalFilterPresent();\n this.filterNodes(filterActive, changedPath);\n }\n filterNodes(filterActive, changedPath) {\n const filterCallback = (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(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 const 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 const 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 }\n else {\n rowNode.childrenAfterFilter = rowNode.childrenAfterGroup;\n }\n if (rowNode.sibling) {\n rowNode.sibling.childrenAfterFilter = rowNode.childrenAfterFilter;\n }\n };\n if (this.doingTreeDataFiltering()) {\n const treeDataDepthFirstFilter = (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 (let i = 0; i < rowNode.childrenAfterGroup.length; i++) {\n const childNode = rowNode.childrenAfterGroup[i];\n // first check if current node passes filter before invoking child nodes\n const foundInParent = alreadyFoundInParent\n || this.filterManager.doesRowPassFilter({ rowNode: childNode });\n if (childNode.childrenAfterGroup) {\n treeDataDepthFirstFilter(rowNode.childrenAfterGroup[i], foundInParent);\n }\n else {\n filterCallback(childNode, foundInParent);\n }\n }\n }\n filterCallback(rowNode, alreadyFoundInParent);\n };\n const treeDataFilterCallback = (rowNode) => treeDataDepthFirstFilter(rowNode, false);\n changedPath.executeFromRootNode(treeDataFilterCallback);\n }\n else {\n const defaultFilterCallback = (rowNode) => filterCallback(rowNode, false);\n changedPath.forEachChangedNodeDepthFirst(defaultFilterCallback, true);\n }\n }\n doingTreeDataFiltering() {\n return this.gridOptionsService.isTreeData() && !this.gridOptionsService.is('excludeChildrenWhenTreeDataFiltering');\n }\n};\n__decorate$6([\n Autowired('filterManager')\n], FilterService.prototype, \"filterManager\", void 0);\nFilterService = __decorate$6([\n Bean(\"filterService\")\n], FilterService);\n\nvar __decorate$5 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet ImmutableService = class ImmutableService extends BeanStub {\n postConstruct() {\n if (this.rowModel.getType() === 'clientSide') {\n this.clientSideRowModel = this.rowModel;\n }\n }\n isActive() {\n const getRowIdProvided = this.gridOptionsService.exists('getRowId');\n // this property is a backwards compatibility property, for those who want\n // the old behaviour of Row ID's but NOT Immutable Data.\n const resetRowDataOnUpdate = this.gridOptionsService.is('resetRowDataOnUpdate');\n if (resetRowDataOnUpdate) {\n return false;\n }\n return getRowIdProvided;\n }\n setRowData(rowData) {\n const transactionAndMap = this.createTransactionForRowData(rowData);\n if (!transactionAndMap) {\n return;\n }\n const [transaction, orderIdMap] = transactionAndMap;\n this.clientSideRowModel.updateRowData(transaction, orderIdMap);\n }\n // converts the setRowData() command to a transaction\n createTransactionForRowData(rowData) {\n if (_.missing(this.clientSideRowModel)) {\n console.error('AG Grid: ImmutableService only works with ClientSideRowModel');\n return;\n }\n const getRowIdFunc = this.gridOptionsService.getCallback('getRowId');\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 const transaction = {\n remove: [],\n update: [],\n add: []\n };\n const existingNodesMap = this.clientSideRowModel.getCopyOfNodesMap();\n const suppressSortOrder = this.gridOptionsService.is('suppressMaintainUnsortedOrder');\n const 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((data, index) => {\n const id = getRowIdFunc({ data, level: 0 });\n const existingNode = existingNodesMap[id];\n if (orderMap) {\n orderMap[id] = index;\n }\n if (existingNode) {\n const 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, (id, rowNode) => {\n if (rowNode) {\n transaction.remove.push(rowNode.data);\n }\n });\n return [transaction, orderMap];\n }\n};\n__decorate$5([\n Autowired('rowModel')\n], ImmutableService.prototype, \"rowModel\", void 0);\n__decorate$5([\n Autowired('rowRenderer')\n], ImmutableService.prototype, \"rowRenderer\", void 0);\n__decorate$5([\n PostConstruct\n], ImmutableService.prototype, \"postConstruct\", null);\nImmutableService = __decorate$5([\n Bean('immutableService')\n], ImmutableService);\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nconst VERSION$2 = '30.0.5';\n\nconst ClientSideRowModelModule = {\n version: VERSION$2,\n moduleName: ModuleNames.ClientSideRowModelModule,\n rowModel: 'clientSide',\n beans: [ClientSideRowModel, FilterStage, SortStage, FlattenStage, SortService, FilterService, ImmutableService],\n};\n\nvar __decorate$4 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass InfiniteBlock extends RowNodeBlock {\n constructor(id, parentCache, params) {\n super(id);\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 }\n postConstruct() {\n this.createRowNodes();\n }\n getBlockStateJson() {\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 setDataAndId(rowNode, data, index) {\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 loadFromDatasource() {\n const 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(() => {\n this.params.datasource.getRows(params);\n }, 0);\n }\n processServerFail() {\n // todo - this method has better handling in SSRM\n }\n createLoadParams() {\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 const 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.gridOptionsService.context\n };\n return params;\n }\n forEachNode(callback, sequence, rowCount) {\n this.rowNodes.forEach((rowNode, index) => {\n const rowIndex = this.startRow + index;\n if (rowIndex < rowCount) {\n callback(rowNode, sequence.next());\n }\n });\n }\n getLastAccessed() {\n return this.lastAccessed;\n }\n getRow(rowIndex, dontTouchLastAccessed = false) {\n if (!dontTouchLastAccessed) {\n this.lastAccessed = this.params.lastAccessedSequence.next();\n }\n const localIndex = rowIndex - this.startRow;\n return this.rowNodes[localIndex];\n }\n getStartRow() {\n return this.startRow;\n }\n getEndRow() {\n return this.endRow;\n }\n // creates empty row nodes, data is missing as not loaded yet\n createRowNodes() {\n this.rowNodes = [];\n for (let i = 0; i < this.params.blockSize; i++) {\n const rowIndex = this.startRow + i;\n const 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 processServerResult(params) {\n this.rowNodes.forEach((rowNode, index) => {\n const data = params.rowData ? params.rowData[index] : undefined;\n if (!rowNode.id && rowNode.alreadyRendered && data) {\n // if the node had no id and was rendered, but we have data for it now, then\n // destroy the old row and copy its position into new row. This prevents an additional\n // set of events being fired as the row renderer tries to understand the changing id\n this.rowNodes[index] = new RowNode(this.beans);\n this.rowNodes[index].setRowIndex(rowNode.rowIndex);\n this.rowNodes[index].setRowTop(rowNode.rowTop);\n // clean up the old row\n rowNode.clearRowTopAndRowIndex();\n }\n this.setDataAndId(this.rowNodes[index], data, this.startRow + index);\n });\n const finalRowCount = params.rowCount != null && params.rowCount >= 0 ? params.rowCount : undefined;\n this.parentCache.pageLoaded(this, finalRowCount);\n }\n destroyRowNodes() {\n this.rowNodes.forEach(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}\n__decorate$4([\n Autowired('beans')\n], InfiniteBlock.prototype, \"beans\", void 0);\n__decorate$4([\n PostConstruct\n], InfiniteBlock.prototype, \"postConstruct\", null);\n__decorate$4([\n PreDestroy\n], InfiniteBlock.prototype, \"destroyRowNodes\", null);\n\nvar __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nclass InfiniteCache extends BeanStub {\n constructor(params) {\n super();\n this.lastRowIndexKnown = false;\n this.blocks = {};\n this.blockCount = 0;\n this.rowCount = params.initialRowCount;\n this.params = params;\n }\n setBeans(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 getRow(rowIndex, dontCreatePage = false) {\n const blockId = Math.floor(rowIndex / this.params.blockSize);\n let 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 createBlock(blockNumber) {\n const 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 refreshCache() {\n const nothingToRefresh = this.blockCount == 0;\n if (nothingToRefresh) {\n this.purgeCache();\n return;\n }\n this.getBlocksInOrder().forEach(block => block.setStateWaitingToLoad());\n this.params.rowNodeBlockLoader.checkBlockToLoad();\n }\n destroyAllBlocks() {\n this.getBlocksInOrder().forEach(block => this.destroyBlock(block));\n }\n getRowCount() {\n return this.rowCount;\n }\n isLastRowIndexKnown() {\n return this.lastRowIndexKnown;\n }\n // block calls this, when page loaded\n pageLoaded(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 purgeBlocksIfNeeded(blockToExclude) {\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 const blocksForPurging = this.getBlocksInOrder().filter(b => b != blockToExclude);\n const lastAccessedComparator = (a, b) => 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 const maxBlocksProvided = this.params.maxBlocksInCache > 0;\n const blocksToKeep = maxBlocksProvided ? this.params.maxBlocksInCache - 1 : null;\n const emptyBlocksToKeep = InfiniteCache.MAX_EMPTY_BLOCKS_TO_KEEP - 1;\n blocksForPurging.forEach((block, index) => {\n const purgeBecauseBlockEmpty = block.getState() === InfiniteBlock.STATE_WAITING_TO_LOAD && index >= emptyBlocksToKeep;\n const 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 isBlockFocused(block) {\n const focusedCell = this.focusService.getFocusCellToUseAfterRefresh();\n if (!focusedCell) {\n return false;\n }\n if (focusedCell.rowPinned != null) {\n return false;\n }\n const blockIndexStart = block.getStartRow();\n const blockIndexEnd = block.getEndRow();\n const hasFocus = focusedCell.rowIndex >= blockIndexStart && focusedCell.rowIndex < blockIndexEnd;\n return hasFocus;\n }\n isBlockCurrentlyDisplayed(block) {\n const startIndex = block.getStartRow();\n const endIndex = block.getEndRow() - 1;\n return this.rowRenderer.isRangeInRenderedViewport(startIndex, endIndex);\n }\n removeBlockFromCache(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 checkRowCount(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 const lastRowIndex = (block.getId() + 1) * this.params.blockSize;\n const lastRowIndexPlusOverflow = lastRowIndex + this.params.overflowSize;\n if (this.rowCount < lastRowIndexPlusOverflow) {\n this.rowCount = lastRowIndexPlusOverflow;\n }\n }\n }\n setRowCount(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 forEachNodeDeep(callback) {\n const sequence = new NumberSequence();\n this.getBlocksInOrder().forEach(block => block.forEachNode(callback, sequence, this.rowCount));\n }\n getBlocksInOrder() {\n // get all page id's as NUMBERS (not strings, as we need to sort as numbers) and in descending order\n const blockComparator = (a, b) => a.getId() - b.getId();\n const blocks = _.getAllValuesInObject(this.blocks).sort(blockComparator);\n return blocks;\n }\n destroyBlock(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 onCacheUpdated() {\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 const event = {\n type: Events.EVENT_STORE_UPDATED\n };\n this.eventService.dispatchEvent(event);\n }\n }\n destroyAllBlocksPastVirtualRowCount() {\n const blocksToDestroy = [];\n this.getBlocksInOrder().forEach(block => {\n const 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(block => this.destroyBlock(block));\n }\n }\n purgeCache() {\n this.getBlocksInOrder().forEach(block => 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 getRowNodesInRange(firstInRange, lastInRange) {\n const result = [];\n let lastBlockId = -1;\n let inActiveRange = false;\n const 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 let foundGapInSelection = false;\n this.getBlocksInOrder().forEach(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(rowNode => {\n const 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 const invalidRange = foundGapInSelection || inActiveRange;\n return invalidRange ? [] : result;\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.\nInfiniteCache.MAX_EMPTY_BLOCKS_TO_KEEP = 2;\n__decorate$3([\n Autowired('rowRenderer')\n], InfiniteCache.prototype, \"rowRenderer\", void 0);\n__decorate$3([\n Autowired(\"focusService\")\n], InfiniteCache.prototype, \"focusService\", void 0);\n__decorate$3([\n __param(0, Qualifier('loggerFactory'))\n], InfiniteCache.prototype, \"setBeans\", null);\n__decorate$3([\n PreDestroy\n], InfiniteCache.prototype, \"destroyAllBlocks\", null);\n\nvar __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet InfiniteRowModel = class InfiniteRowModel extends BeanStub {\n getRowBounds(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 ensureRowHeightsValid(startPixel, endPixel, startLimitIndex, endLimitIndex) {\n return false;\n }\n init() {\n if (!this.gridOptionsService.isRowModelType('infinite')) {\n return;\n }\n this.rowHeight = this.gridOptionsService.getRowHeightAsNumber();\n this.addEventListeners();\n this.addDestroyFunc(() => this.destroyCache());\n this.verifyProps();\n }\n verifyProps() {\n if (this.gridOptionsService.exists('initialGroupOrderComparator')) {\n const message = `AG Grid: initialGroupOrderComparator 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(() => console.warn(message), 'IRM.InitialGroupOrderComparator');\n }\n }\n start() {\n this.setDatasource(this.gridOptionsService.get('datasource'));\n }\n destroyDatasource() {\n if (this.datasource) {\n this.getContext().destroyBean(this.datasource);\n this.rowRenderer.datasourceChanged();\n this.datasource = null;\n }\n }\n addEventListeners() {\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 onFilterChanged() {\n this.reset();\n }\n onSortChanged() {\n this.reset();\n }\n onColumnEverything() {\n let 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 isSortModelDifferent() {\n return !_.jsonEquals(this.cacheParams.sortModel, this.sortController.getSortModel());\n }\n getType() {\n return 'infinite';\n }\n setDatasource(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 isEmpty() {\n return !this.infiniteCache;\n }\n isRowsToRender() {\n return !!this.infiniteCache;\n }\n getNodesInRangeForSelection(firstInRange, lastInRange) {\n return this.infiniteCache ? this.infiniteCache.getRowNodesInRange(firstInRange, lastInRange) : [];\n }\n reset() {\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 const getRowIdFunc = this.gridOptionsService.getCallback('getRowId');\n const userGeneratingIds = getRowIdFunc != null;\n if (!userGeneratingIds) {\n this.selectionService.reset();\n }\n this.resetCache();\n const event = this.createModelUpdatedEvent();\n this.eventService.dispatchEvent(event);\n }\n createModelUpdatedEvent() {\n return {\n type: Events.EVENT_MODEL_UPDATED,\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 resetCache() {\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.gridOptionsService.getNum('infiniteInitialRowCount'), 1),\n maxBlocksInCache: this.gridOptionsService.getNum('maxBlocksInCache'),\n rowHeight: this.gridOptionsService.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.gridOptionsService.getNum('cacheOverflowSize'), 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.gridOptionsService.getNum('cacheBlockSize'), 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 defaultIfInvalid(value, defaultValue) {\n return value > 0 ? value : defaultValue;\n }\n destroyCache() {\n if (this.infiniteCache) {\n this.infiniteCache = this.destroyBean(this.infiniteCache);\n }\n }\n onCacheUpdated() {\n const event = this.createModelUpdatedEvent();\n this.eventService.dispatchEvent(event);\n }\n getRow(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 getRowNode(id) {\n let result;\n this.forEachNode(rowNode => {\n if (rowNode.id === id) {\n result = rowNode;\n }\n });\n return result;\n }\n forEachNode(callback) {\n if (this.infiniteCache) {\n this.infiniteCache.forEachNodeDeep(callback);\n }\n }\n getTopLevelRowCount() {\n return this.getRowCount();\n }\n getTopLevelRowDisplayedIndex(topLevelIndex) {\n return topLevelIndex;\n }\n getRowIndexAtPixel(pixel) {\n if (this.rowHeight !== 0) { // avoid divide by zero error\n const rowIndexForPixel = Math.floor(pixel / this.rowHeight);\n const lastRowIndex = this.getRowCount() - 1;\n if (rowIndexForPixel > lastRowIndex) {\n return lastRowIndex;\n }\n return rowIndexForPixel;\n }\n return 0;\n }\n getRowCount() {\n return this.infiniteCache ? this.infiniteCache.getRowCount() : 0;\n }\n isRowPresent(rowNode) {\n const foundRowNode = this.getRowNode(rowNode.id);\n return !!foundRowNode;\n }\n refreshCache() {\n if (this.infiniteCache) {\n this.infiniteCache.refreshCache();\n }\n }\n purgeCache() {\n if (this.infiniteCache) {\n this.infiniteCache.purgeCache();\n }\n }\n // for iRowModel\n isLastRowIndexKnown() {\n if (this.infiniteCache) {\n return this.infiniteCache.isLastRowIndexKnown();\n }\n return false;\n }\n setRowCount(rowCount, lastRowIndexKnown) {\n if (this.infiniteCache) {\n this.infiniteCache.setRowCount(rowCount, lastRowIndexKnown);\n }\n }\n};\n__decorate$2([\n Autowired('filterManager')\n], InfiniteRowModel.prototype, \"filterManager\", void 0);\n__decorate$2([\n Autowired('sortController')\n], InfiniteRowModel.prototype, \"sortController\", void 0);\n__decorate$2([\n Autowired('selectionService')\n], InfiniteRowModel.prototype, \"selectionService\", void 0);\n__decorate$2([\n Autowired('rowRenderer')\n], InfiniteRowModel.prototype, \"rowRenderer\", void 0);\n__decorate$2([\n Autowired('rowNodeBlockLoader')\n], InfiniteRowModel.prototype, \"rowNodeBlockLoader\", void 0);\n__decorate$2([\n PostConstruct\n], InfiniteRowModel.prototype, \"init\", null);\n__decorate$2([\n PreDestroy\n], InfiniteRowModel.prototype, \"destroyDatasource\", null);\nInfiniteRowModel = __decorate$2([\n Bean('rowModel')\n], InfiniteRowModel);\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nconst VERSION$1 = '30.0.5';\n\nconst InfiniteRowModelModule = {\n version: VERSION$1,\n moduleName: ModuleNames.InfiniteRowModelModule,\n rowModel: 'infinite',\n beans: [InfiniteRowModel],\n};\n\nclass BaseCreator {\n setBeans(beans) {\n this.beans = beans;\n }\n getFileName(fileName) {\n const extension = this.getDefaultFileExtension();\n if (fileName == null || !fileName.length) {\n fileName = this.getDefaultFileName();\n }\n return fileName.indexOf('.') === -1 ? `${fileName}.${extension}` : fileName;\n }\n getData(params) {\n const serializingSession = this.createSerializingSession(params);\n const data = this.beans.gridSerializer.serialize(serializingSession, params);\n return data;\n }\n}\n\nclass BaseGridSerializingSession {\n constructor(config) {\n this.groupColumns = [];\n const { columnModel, valueService, gridOptionsService, valueFormatterService, valueParserService, processCellCallback, processHeaderCallback, processGroupHeaderCallback, processRowGroupCallback, } = config;\n this.columnModel = columnModel;\n this.valueService = valueService;\n this.gridOptionsService = gridOptionsService;\n this.valueFormatterService = valueFormatterService;\n this.valueParserService = valueParserService;\n this.processCellCallback = processCellCallback;\n this.processHeaderCallback = processHeaderCallback;\n this.processGroupHeaderCallback = processGroupHeaderCallback;\n this.processRowGroupCallback = processRowGroupCallback;\n }\n prepare(columnsToExport) {\n this.groupColumns = columnsToExport.filter(col => !!col.getColDef().showRowGroup);\n }\n extractHeaderValue(column) {\n const value = this.getHeaderName(this.processHeaderCallback, column);\n return value != null ? value : '';\n }\n extractRowCellValue(column, index, accumulatedRowIndex, type, node) {\n // we render the group summary text e.g. \"-> Parent -> Child\"...\n const hideOpenParents = this.gridOptionsService.is('groupHideOpenParents');\n const value = ((!hideOpenParents || node.footer) && this.shouldRenderGroupSummaryCell(node, column, index))\n ? this.createValueForGroupNode(node)\n : this.valueService.getValue(column, node);\n const processedValue = this.processCell({\n accumulatedRowIndex,\n rowNode: node,\n column,\n value,\n processCellCallback: this.processCellCallback,\n type\n });\n return processedValue;\n }\n shouldRenderGroupSummaryCell(node, column, currentColumnIndex) {\n var _a;\n const isGroupNode = node && node.group;\n // only on group rows\n if (!isGroupNode) {\n return false;\n }\n const currentColumnGroupIndex = this.groupColumns.indexOf(column);\n if (currentColumnGroupIndex !== -1) {\n if (((_a = node.groupData) === null || _a === void 0 ? void 0 : _a[column.getId()]) != null) {\n return true;\n }\n // if this is a top level footer, always render`Total` in the left-most cell\n if (node.footer && node.level === -1) {\n const colDef = column.getColDef();\n const isFullWidth = colDef == null || colDef.showRowGroup === true;\n return isFullWidth || colDef.showRowGroup === this.columnModel.getRowGroupColumns()[0].getId();\n }\n }\n const isGroupUseEntireRow = this.gridOptionsService.isGroupUseEntireRow(this.columnModel.isPivotMode());\n return currentColumnIndex === 0 && isGroupUseEntireRow;\n }\n getHeaderName(callback, column) {\n if (callback) {\n return callback({\n column: column,\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context\n });\n }\n return this.columnModel.getDisplayNameForColumn(column, 'csv', true);\n }\n createValueForGroupNode(node) {\n if (this.processRowGroupCallback) {\n return this.processRowGroupCallback({\n node: node,\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context,\n });\n }\n const isFooter = node.footer;\n const keys = [node.key];\n if (!this.gridOptionsService.isGroupMultiAutoColumn()) {\n while (node.parent) {\n node = node.parent;\n keys.push(node.key);\n }\n }\n const groupValue = keys.reverse().join(' -> ');\n return isFooter ? `Total ${groupValue}` : groupValue;\n }\n processCell(params) {\n var _a;\n const { accumulatedRowIndex, rowNode, column, value, processCellCallback, type } = params;\n if (processCellCallback) {\n return {\n value: (_a = processCellCallback({\n accumulatedRowIndex,\n column: column,\n node: rowNode,\n value: value,\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context,\n type: type,\n parseValue: (valueToParse) => this.valueParserService.parseValue(column, rowNode, valueToParse, this.valueService.getValue(column, rowNode)),\n formatValue: (valueToFormat) => { var _a; return (_a = this.valueFormatterService.formatValue(column, rowNode, valueToFormat)) !== null && _a !== void 0 ? _a : valueToFormat; }\n })) !== null && _a !== void 0 ? _a : ''\n };\n }\n if (column.getColDef().useValueFormatterForExport) {\n return {\n value: value !== null && value !== void 0 ? value : '',\n valueFormatted: this.valueFormatterService.formatValue(column, rowNode, value),\n };\n }\n return { value: value !== null && value !== void 0 ? value : '' };\n }\n}\n\nclass Downloader {\n static download(fileName, content) {\n const 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 const element = document.createElement('a');\n // @ts-ignore\n const 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(() => {\n // @ts-ignore\n win.URL.revokeObjectURL(url);\n }, 0);\n }\n}\n\nconst LINE_SEPARATOR$1 = '\\r\\n';\nclass CsvSerializingSession extends BaseGridSerializingSession {\n constructor(config) {\n super(config);\n this.isFirstLine = true;\n this.result = '';\n const { suppressQuotes, columnSeparator } = config;\n this.suppressQuotes = suppressQuotes;\n this.columnSeparator = columnSeparator;\n }\n addCustomContent(content) {\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$1);\n this.result += content;\n }\n else {\n content.forEach(row => {\n this.beginNewLine();\n row.forEach((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 onNewHeaderGroupingRow() {\n this.beginNewLine();\n return {\n onColumn: this.onNewHeaderGroupingRowColumn.bind(this)\n };\n }\n onNewHeaderGroupingRowColumn(columnGroup, 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 appendEmptyCells(count) {\n for (let i = 1; i <= count; i++) {\n this.result += this.columnSeparator + this.putInQuotes(\"\");\n }\n }\n onNewHeaderRow() {\n this.beginNewLine();\n return {\n onColumn: this.onNewHeaderRowColumn.bind(this)\n };\n }\n onNewHeaderRowColumn(column, index) {\n if (index != 0) {\n this.result += this.columnSeparator;\n }\n this.result += this.putInQuotes(this.extractHeaderValue(column));\n }\n onNewBodyRow() {\n this.beginNewLine();\n return {\n onColumn: this.onNewBodyRowColumn.bind(this)\n };\n }\n onNewBodyRowColumn(column, index, node) {\n var _a;\n if (index != 0) {\n this.result += this.columnSeparator;\n }\n const rowCellValue = this.extractRowCellValue(column, index, index, 'csv', node);\n this.result += this.putInQuotes((_a = rowCellValue.valueFormatted) !== null && _a !== void 0 ? _a : rowCellValue.value);\n }\n putInQuotes(value) {\n if (this.suppressQuotes) {\n return value;\n }\n if (value === null || value === undefined) {\n return '\"\"';\n }\n let 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 const valueEscaped = stringValue.replace(/\"/g, \"\\\"\\\"\");\n return '\"' + valueEscaped + '\"';\n }\n parse() {\n return this.result;\n }\n beginNewLine() {\n if (!this.isFirstLine) {\n this.result += LINE_SEPARATOR$1;\n }\n this.isFirstLine = false;\n }\n}\n\nvar __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet CsvCreator = class CsvCreator extends BaseCreator {\n postConstruct() {\n this.setBeans({\n gridSerializer: this.gridSerializer,\n gridOptionsService: this.gridOptionsService\n });\n }\n getMergedParams(params) {\n const baseParams = this.gridOptionsService.get('defaultCsvExportParams');\n return Object.assign({}, baseParams, params);\n }\n export(userParams) {\n if (this.isExportSuppressed()) {\n console.warn(`AG Grid: Export cancelled. Export is not allowed as per your configuration.`);\n return '';\n }\n const mergedParams = this.getMergedParams(userParams);\n const data = this.getData(mergedParams);\n const packagedFile = new Blob([\"\\ufeff\", data], { type: 'text/plain' });\n Downloader.download(this.getFileName(mergedParams.fileName), packagedFile);\n return data;\n }\n exportDataAsCsv(params) {\n return this.export(params);\n }\n getDataAsCsv(params, skipDefaultParams = false) {\n const mergedParams = skipDefaultParams\n ? Object.assign({}, params)\n : this.getMergedParams(params);\n return this.getData(mergedParams);\n }\n getDefaultFileName() {\n return 'export.csv';\n }\n getDefaultFileExtension() {\n return 'csv';\n }\n createSerializingSession(params) {\n const { columnModel, valueService, gridOptionsService, valueFormatterService, valueParserService } = this;\n const { processCellCallback, processHeaderCallback, processGroupHeaderCallback, processRowGroupCallback, suppressQuotes, columnSeparator } = params;\n return new CsvSerializingSession({\n columnModel: columnModel,\n valueService,\n gridOptionsService,\n valueFormatterService,\n valueParserService,\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 isExportSuppressed() {\n return this.gridOptionsService.is('suppressCsvExport');\n }\n};\n__decorate$1([\n Autowired('columnModel')\n], CsvCreator.prototype, \"columnModel\", void 0);\n__decorate$1([\n Autowired('valueService')\n], CsvCreator.prototype, \"valueService\", void 0);\n__decorate$1([\n Autowired('gridSerializer')\n], CsvCreator.prototype, \"gridSerializer\", void 0);\n__decorate$1([\n Autowired('gridOptionsService')\n], CsvCreator.prototype, \"gridOptionsService\", void 0);\n__decorate$1([\n Autowired('valueFormatterService')\n], CsvCreator.prototype, \"valueFormatterService\", void 0);\n__decorate$1([\n Autowired('valueParserService')\n], CsvCreator.prototype, \"valueParserService\", void 0);\n__decorate$1([\n PostConstruct\n], CsvCreator.prototype, \"postConstruct\", null);\nCsvCreator = __decorate$1([\n Bean('csvCreator')\n], CsvCreator);\n\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 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 = {}));\nlet GridSerializer = class GridSerializer extends BeanStub {\n serialize(gridSerializingSession, params = {}) {\n const columnsToExport = this.getColumnsToExport(params.allColumns, params.columnKeys);\n const 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 processRow(gridSerializingSession, params, columnsToExport, node) {\n const rowSkipper = params.shouldRowBeSkipped || (() => false);\n const context = this.gridOptionsService.context;\n const api = this.gridOptionsService.api;\n const columnApi = this.gridOptionsService.columnApi;\n const skipSingleChildrenGroup = this.gridOptionsService.is('groupRemoveSingleChildren');\n const skipLowestSingleChildrenGroup = this.gridOptionsService.is('groupRemoveLowestSingleChildren');\n // if onlySelected, we ignore groupHideOpenParents as the user has explicitly selected the rows they wish to export.\n // similarly, if specific rowNodes are provided we do the same. (the clipboard service uses rowNodes to define which rows to export)\n const isClipboardExport = params.rowPositions != null;\n const isExplicitExportSelection = isClipboardExport || !!params.onlySelected;\n const hideOpenParents = this.gridOptionsService.is('groupHideOpenParents') && !isExplicitExportSelection;\n const isLeafNode = this.columnModel.isPivotMode() ? node.leafGroup : !node.group;\n const isFooter = !!node.footer;\n const skipRowGroups = params.skipGroups || params.skipRowGroups;\n const shouldSkipLowestGroup = skipLowestSingleChildrenGroup && node.leafGroup;\n const shouldSkipCurrentGroup = node.allChildrenCount === 1 && (skipSingleChildrenGroup || shouldSkipLowestGroup);\n if (skipRowGroups && params.skipGroups) {\n _.doOnce(() => console.warn('AG Grid: Since v25.2 `skipGroups` has been renamed to `skipRowGroups`.'), 'gridSerializer-skipGroups');\n }\n if ((!isLeafNode && !isFooter && (params.skipRowGroups || shouldSkipCurrentGroup || hideOpenParents)) ||\n (params.onlySelected && !node.isSelected()) ||\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 const nodeIsRootNode = node.level === -1;\n if (nodeIsRootNode && !isLeafNode && !isFooter) {\n return;\n }\n const shouldRowBeSkipped = rowSkipper({ node, api, columnApi, context });\n if (shouldRowBeSkipped) {\n return;\n }\n const rowAccumulator = gridSerializingSession.onNewBodyRow(node);\n columnsToExport.forEach((column, index) => {\n rowAccumulator.onColumn(column, index, node);\n });\n if (params.getCustomContentBelowRow) {\n const content = params.getCustomContentBelowRow({ node, api, columnApi, context });\n if (content) {\n gridSerializingSession.addCustomContent(content);\n }\n }\n }\n appendContent(params) {\n return (gridSerializingSession) => {\n const appendContent = params.customFooter || params.appendContent;\n if (appendContent) {\n if (params.customFooter) {\n _.doOnce(() => 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 prependContent(params) {\n return (gridSerializingSession) => {\n const prependContent = params.customHeader || params.prependContent;\n if (prependContent) {\n if (params.customHeader) {\n _.doOnce(() => 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 prepareSession(columnsToExport) {\n return (gridSerializingSession) => {\n gridSerializingSession.prepare(columnsToExport);\n return gridSerializingSession;\n };\n }\n exportColumnGroups(params, columnsToExport) {\n return (gridSerializingSession) => {\n if (!params.skipColumnGroupHeaders) {\n const groupInstanceIdCreator = new GroupInstanceIdCreator();\n const 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(() => 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 exportHeaders(params, columnsToExport) {\n return (gridSerializingSession) => {\n if (!params.skipHeader && !params.skipColumnHeaders) {\n const gridRowIterator = gridSerializingSession.onNewHeaderRow();\n columnsToExport.forEach((column, index) => {\n gridRowIterator.onColumn(column, index, undefined);\n });\n }\n else if (params.skipHeader) {\n _.doOnce(() => console.warn('AG Grid: Since v25.2 the `skipHeader` param has been renamed to `skipColumnHeaders`.'), 'gridSerializer-skipHeader');\n }\n return gridSerializingSession;\n };\n }\n processPinnedTopRows(params, columnsToExport) {\n return (gridSerializingSession) => {\n const processRow = this.processRow.bind(this, gridSerializingSession, params, columnsToExport);\n if (params.rowPositions) {\n params.rowPositions\n // only pinnedTop rows, other models are processed by `processRows` and `processPinnedBottomsRows`\n .filter(position => position.rowPinned === 'top')\n .sort((a, b) => a.rowIndex - b.rowIndex)\n .map(position => this.pinnedRowModel.getPinnedTopRow(position.rowIndex))\n .forEach(processRow);\n }\n else {\n this.pinnedRowModel.forEachPinnedTopRow(processRow);\n }\n return gridSerializingSession;\n };\n }\n processRows(params, columnsToExport) {\n return (gridSerializingSession) => {\n // when in pivot mode, we always render cols on screen, never 'all columns'\n const rowModel = this.rowModel;\n const rowModelType = rowModel.getType();\n const usingCsrm = rowModelType === 'clientSide';\n const usingSsrm = rowModelType === 'serverSide';\n const onlySelectedNonStandardModel = !usingCsrm && params.onlySelected;\n const processRow = this.processRow.bind(this, gridSerializingSession, params, columnsToExport);\n const { exportedRows = 'filteredAndSorted', } = params;\n if (params.rowPositions) {\n params.rowPositions\n // pinnedRows are processed by `processPinnedTopRows` and `processPinnedBottomsRows`\n .filter(position => position.rowPinned == null)\n .sort((a, b) => a.rowIndex - b.rowIndex)\n .map(position => rowModel.getRow(position.rowIndex))\n .forEach(processRow);\n }\n else if (this.columnModel.isPivotMode()) {\n if (usingCsrm) {\n rowModel.forEachPivotNode(processRow, true);\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 const selectedNodes = this.selectionService.getSelectedNodes();\n this.replicateSortedOrder(selectedNodes);\n // serialize each node\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 (exportedRows === 'all') {\n rowModel.forEachNode(processRow);\n }\n else if (usingCsrm) {\n rowModel.forEachNodeAfterFilterAndSort(processRow, true);\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 replicateSortedOrder(rows) {\n const sortOptions = this.sortController.getSortOptions();\n const compareNodes = (rowA, rowB) => {\n var _a, _b, _c, _d;\n if (rowA.rowIndex != null && rowB.rowIndex != null) {\n // if the rows have rowIndexes, this is the easiest way to compare,\n // as they're already ordered\n return rowA.rowIndex - rowB.rowIndex;\n }\n // if the level is the same, compare these nodes, or their parents\n if (rowA.level === rowB.level) {\n if (((_a = rowA.parent) === null || _a === void 0 ? void 0 : _a.id) === ((_b = rowB.parent) === null || _b === void 0 ? void 0 : _b.id)) {\n return this.rowNodeSorter.compareRowNodes(sortOptions, {\n rowNode: rowA,\n currentPos: (_c = rowA.rowIndex) !== null && _c !== void 0 ? _c : -1,\n }, {\n rowNode: rowB,\n currentPos: (_d = rowB.rowIndex) !== null && _d !== void 0 ? _d : -1,\n });\n }\n // level is same, but parent isn't, compare parents\n return compareNodes(rowA.parent, rowB.parent);\n }\n // if level is different, match levels\n if (rowA.level > rowB.level) {\n return compareNodes(rowA.parent, rowB);\n }\n return compareNodes(rowA, rowB.parent);\n };\n // sort the nodes either by existing row index or compare them\n rows.sort(compareNodes);\n }\n processPinnedBottomRows(params, columnsToExport) {\n return (gridSerializingSession) => {\n const processRow = this.processRow.bind(this, gridSerializingSession, params, columnsToExport);\n if (params.rowPositions) {\n params.rowPositions\n // only pinnedBottom rows, other models are processed by `processRows` and `processPinnedTopRows`\n .filter(position => position.rowPinned === 'bottom')\n .sort((a, b) => a.rowIndex - b.rowIndex)\n .map(position => this.pinnedRowModel.getPinnedBottomRow(position.rowIndex))\n .forEach(processRow);\n }\n else {\n this.pinnedRowModel.forEachPinnedBottomRow(processRow);\n }\n return gridSerializingSession;\n };\n }\n getColumnsToExport(allColumns = false, columnKeys) {\n const 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 const columns = this.gridOptionsService.isTreeData()\n ? this.columnModel.getGridColumns([GROUP_AUTO_COLUMN_ID])\n : [];\n return columns.concat(this.columnModel.getAllGridColumns() || []);\n }\n return this.columnModel.getAllDisplayedColumns();\n }\n recursivelyAddHeaderGroups(displayedGroups, gridSerializingSession, processGroupHeaderCallback) {\n const directChildrenHeaderGroups = [];\n displayedGroups.forEach((columnGroupChild) => {\n const columnGroup = columnGroupChild;\n if (!columnGroup.getChildren) {\n return;\n }\n columnGroup.getChildren().forEach(it => 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 doAddHeaderHeader(gridSerializingSession, displayedGroups, processGroupHeaderCallback) {\n const gridRowIterator = gridSerializingSession.onNewHeaderGroupingRow();\n let columnIndex = 0;\n displayedGroups.forEach((columnGroupChild) => {\n const columnGroup = columnGroupChild;\n let name;\n if (processGroupHeaderCallback) {\n name = processGroupHeaderCallback({\n columnGroup: columnGroup,\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context\n });\n }\n else {\n name = this.columnModel.getDisplayNameForColumnGroup(columnGroup, 'header');\n }\n const collapsibleGroupRanges = columnGroup.getLeafColumns().reduce((collapsibleGroups, currentColumn, currentIdx, arr) => {\n let lastGroup = _.last(collapsibleGroups);\n const 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(columnGroup, name || '', columnIndex++, columnGroup.getLeafColumns().length - 1, collapsibleGroupRanges);\n });\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('rowNodeSorter')\n], GridSerializer.prototype, \"rowNodeSorter\", void 0);\n__decorate([\n Autowired('sortController')\n], GridSerializer.prototype, \"sortController\", void 0);\nGridSerializer = __decorate([\n Bean(\"gridSerializer\")\n], GridSerializer);\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nconst VERSION = '30.0.5';\n\nconst CsvExportModule = {\n version: VERSION,\n moduleName: ModuleNames.CsvExportModule,\n beans: [CsvCreator, GridSerializer]\n};\n\nconst LINE_SEPARATOR = '\\r\\n';\nclass XmlFactory {\n static createHeader(headerElement = {}) {\n const headerStart = '';\n const 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 const att = keys.map((key) => `${key}=\"${headerElement[key]}\"`).join(' ');\n return `${headerStart}xml ${att} ${headerEnd}`;\n }\n static createXml(xmlElement, booleanTransformer) {\n let props = '';\n if (xmlElement.properties) {\n if (xmlElement.properties.prefixedAttributes) {\n xmlElement.properties.prefixedAttributes.forEach((prefixedSet) => {\n Object.keys(prefixedSet.map).forEach((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((key) => {\n props += this.returnAttributeIfPopulated(key, xmlElement.properties.rawMap[key], booleanTransformer);\n });\n }\n }\n let 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((it) => {\n result += this.createXml(it, booleanTransformer);\n });\n }\n return result + '' + LINE_SEPARATOR;\n }\n static returnAttributeIfPopulated(key, value, booleanTransformer) {\n if (!value && value !== '' && value !== 0) {\n return '';\n }\n let xmlValue = value;\n if ((typeof (value) === 'boolean')) {\n if (booleanTransformer) {\n xmlValue = booleanTransformer(value);\n }\n }\n return ` ${key}=\"${xmlValue}\"`;\n }\n}\n\n// table for crc calculation\n// from: https://referencesource.microsoft.com/#System/sys/System/IO/compression/Crc32Helper.cs,3b31978c7d7f7246,references\nconst 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]);\nclass ZipContainer {\n static addFolders(paths) {\n paths.forEach(this.addFolder.bind(this));\n }\n static addFolder(path) {\n this.folders.push({\n path,\n created: new Date(),\n isBase64: false\n });\n }\n static addFile(path, content, isBase64 = false) {\n this.files.push({\n path,\n created: new Date(),\n content,\n isBase64\n });\n }\n static getContent(mimeType = 'application/zip') {\n const textOutput = this.buildFileStream();\n const uInt8Output = this.buildUint8Array(textOutput);\n this.clearStream();\n return new Blob([uInt8Output], { type: mimeType });\n }\n static clearStream() {\n this.folders = [];\n this.files = [];\n }\n static buildFileStream(fData = '') {\n const totalFiles = this.folders.concat(this.files);\n const len = totalFiles.length;\n let foData = '';\n let lL = 0;\n let cL = 0;\n for (const currentFile of totalFiles) {\n const { fileHeader, folderHeader, content } = this.getHeader(currentFile, lL);\n lL += fileHeader.length + content.length;\n cL += folderHeader.length;\n fData += fileHeader + content;\n foData += folderHeader;\n }\n const foEnd = this.buildFolderEnd(len, cL, lL);\n return fData + foData + foEnd;\n }\n static getHeader(currentFile, offset) {\n const { content, path, created, isBase64 } = currentFile;\n const { utf8_encode, decToHex } = _;\n const utfPath = utf8_encode(path);\n const isUTF8 = utfPath !== path;\n const time = this.convertTime(created);\n const dt = this.convertDate(created);\n let extraFields = '';\n if (isUTF8) {\n const uExtraFieldPath = decToHex(1, 1) + decToHex(this.getFromCrc32Table(utfPath), 4) + utfPath;\n extraFields = \"\\x75\\x70\" + decToHex(uExtraFieldPath.length, 2) + uExtraFieldPath;\n }\n const { size, content: convertedContent } = !content ? { size: 0, content: '' } : this.getConvertedContent(content, isBase64);\n const 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 const fileHeader = 'PK\\x03\\x04' + header + utfPath + extraFields;\n const 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, folderHeader, content: convertedContent || '' };\n }\n static getConvertedContent(content, 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\n };\n }\n static buildFolderEnd(tLen, cLen, lLen) {\n const { 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 static buildUint8Array(content) {\n const uint8 = new Uint8Array(content.length);\n for (let i = 0; i < uint8.length; i++) {\n uint8[i] = content.charCodeAt(i);\n }\n return uint8;\n }\n static getFromCrc32Table(content) {\n if (!content.length) {\n return 0;\n }\n const size = content.length;\n const iterable = new Uint8Array(size);\n for (let i = 0; i < size; i++) {\n iterable[i] = content.charCodeAt(i);\n }\n let crc = 0 ^ (-1);\n let j = 0;\n let k = 0;\n let l = 0;\n for (let 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 static convertTime(date) {\n let 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 static convertDate(date) {\n let 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}\nZipContainer.folders = [];\nZipContainer.files = [];\n\nconst AllCommunityModules = [ClientSideRowModelModule, InfiniteRowModelModule, CsvExportModule];\n\nModuleRegistry.registerModules(AllCommunityModules);\n\nexport { AbstractHeaderCellCtrl, AgAbstractField, AgAbstractLabel, AgCheckbox, AgDialog, AgGroupComponent, AgInputDateField, AgInputNumberField, AgInputRange, AgInputTextArea, AgInputTextField, AgMenuItemComponent, AgMenuList, AgMenuPanel, AgPanel, AgPickerField, AgPromise, AgPromiseStatus, AgRadioButton, AgSelect, AgSlider, AgStackComponentsRegistry, AgToggleButton, AlignedGridsService, AllCommunityModules, AnimateShowChangeCellRenderer, AnimateSlideCellRenderer, AnimationFrameService, AutoScrollService, AutoWidthCalculator, Autowired, BarColumnLabelPlacement, BaseComponentWrapper, BaseCreator, BaseGridSerializingSession, Bean, BeanStub, Beans, BodyDropPivotTarget, BodyDropTarget, CHART_TOOLBAR_ALLOW_LIST, CHART_TOOL_PANEL_ALLOW_LIST, CHART_TOOL_PANEL_MENU_OPTIONS, CellComp, CellCtrl, CellNavigationService, CellPositionUtils, CellRangeType, ChangedPath, CheckboxCellEditor, CheckboxCellRenderer, CheckboxSelectionComponent, ClientSideRowModelModule, ClientSideRowModelSteps, ColDefUtil, Column, ColumnApi, ColumnFactory, ColumnGroup, ColumnKeyCreator, ColumnModel, ColumnUtils, Component, ComponentUtil, Context, CssClassApplier, CssClassManager, CsvCreator, CsvExportModule, CtrlsService, CustomTooltipFeature, DEFAULT_CHART_GROUPS, DateCellEditor, DateFilter, DateStringCellEditor, DisplayedGroupCreator, Downloader, DragAndDropService, DragService, DragSourceType, Environment, EventService, Events, ExcelFactoryMode, ExpressionService, FilterManager, FloatingFilterMapper, FocusService, GROUP_AUTO_COLUMN_ID, Grid, GridApi, GridBodyComp, GridBodyCtrl, GridComp, GridCoreCreator, GridCtrl, GridHeaderComp, GridHeaderCtrl, GridOptionsService, GridSerializer, GroupCellRenderer, GroupCellRendererCtrl, GroupInstanceIdCreator, HeaderCellCtrl, HeaderFilterCellComp, HeaderFilterCellCtrl, HeaderGroupCellCtrl, HeaderNavigationDirection, HeaderNavigationService, HeaderPositionUtils, HeaderRowComp, HeaderRowContainerComp, HeaderRowContainerCtrl, HeaderRowCtrl, HeaderRowType, HorizontalDirection, HorizontalResizeService, InfiniteRowModelModule, KeyCode, LargeTextCellEditor, LayoutCssClasses, LocaleService, Logger, LoggerFactory, ManagedFocusFeature, ModuleNames, ModuleRegistry, MouseEventService, MoveColumnFeature, NavigationService, NumberCellEditor, NumberFilter, NumberSequence, Optional, PaginationProxy, PinnedRowModel, PopupComponent, PopupEditorWrapper, PopupService, PositionableFeature, PostConstruct, PreConstruct, PreDestroy, PropertyKeys, ProvidedColumnGroup, ProvidedFilter, Qualifier, QuerySelector, RefSelector, ResizeObserverService, RowAnimationCssClasses, RowContainerComp, RowContainerCtrl, RowContainerName, RowContainerType, RowCtrl, RowHighlightPosition, RowNode, RowNodeBlock, RowNodeBlockLoader, RowNodeSorter, RowPositionUtils, RowRenderer, RowType, ScalarFilter, ScrollVisibleService, SelectCellEditor, SelectableService, SelectionHandleType, ServerSideTransactionResultStatus, SetLeftFeature, SimpleFilter, SortController, SortIndicatorComp, StandardMenuFactory, StylingService, TabGuardClassNames, TabGuardComp, TabGuardCtrl, TabbedLayout, TemplateService, TextCellEditor, TextFilter, TextFloatingFilter, Timer, TouchListener, UserComponentFactory, UserComponentRegistry, ValueCache, ValueFormatterService, ValueParserService, ValueService, VanillaFrameworkOverrides, VerticalDirection, VirtualList, XmlFactory, ZipContainer, _, __FORCE_MODULE_DETECTION, getRowContainerTypeForName, simpleHttpRequest };\n","/**\n * @ag-grid-enterprise/all-modules - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue * @version v30.0.5\n * @link https://www.ag-grid.com/\n * @license Commercial\n */\nimport { PreConstruct, Bean, BeanStub, Autowired, RefSelector, PostConstruct, Component, ModuleNames, Optional, _, Events, ChangedPath, CsvExportModule, KeyCode, EventService, Column, ProvidedColumnGroup, AgMenuList, AgMenuItemComponent, AgCheckbox, CssClassApplier, DragSourceType, DragAndDropService, TouchListener, AutoScrollService, PreDestroy, VirtualList, NumberSequence, RowNode, ManagedFocusFeature, PositionableFeature, TabGuardComp, AgSelect, AgPromise, AgInputTextField, ModuleRegistry, ExcelFactoryMode, XmlFactory, BaseGridSerializingSession, RowType, ZipContainer, Downloader, BaseCreator, GridSerializer, CsvCreator, AgGroupComponent, AgAbstractField, AgRadioButton, AgToggleButton, AgAbstractLabel, AgSlider, DEFAULT_CHART_GROUPS, TabbedLayout, CHART_TOOLBAR_ALLOW_LIST, CHART_TOOL_PANEL_ALLOW_LIST, CHART_TOOL_PANEL_MENU_OPTIONS, AgPanel, CellRangeType, AgDialog, CellCtrl, SelectionHandleType, AgPickerField, Grid, ProvidedFilter, PopupComponent, RowNodeBlock, ServerSideTransactionResultStatus, RowNodeBlockLoader, GROUP_AUTO_COLUMN_ID, TextFilter, AllCommunityModules } from 'ag-grid-community';\nexport * from 'ag-grid-community';\n\nclass MD5 {\n constructor() {\n this.ieCompatibility = false;\n }\n init() {\n this.ieCompatibility = (this.md5('hello') != '5d41402abc4b2a76b9719d911017c592');\n }\n md5cycle(x, k) {\n let 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 cmn(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 ff(a, b, c, d, x, s, t) {\n return this.cmn((b & c) | ((~b) & d), a, b, x, s, t);\n }\n gg(a, b, c, d, x, s, t) {\n return this.cmn((b & d) | (c & (~d)), a, b, x, s, t);\n }\n hh(a, b, c, d, x, s, t) {\n return this.cmn(b ^ c ^ d, a, b, x, s, t);\n }\n ii(a, b, c, d, x, s, t) {\n return this.cmn(c ^ (b | (~d)), a, b, x, s, t);\n }\n md51(s) {\n const n = s.length;\n const state = [1732584193, -271733879, -1732584194, 271733878];\n let 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 const 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 md5blk(s) {\n const md5blks = [];\n /* Andy King said do it this way. */\n for (let 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 rhex(n) {\n const hex_chr = '0123456789abcdef'.split('');\n let 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 hex(x) {\n for (let i = 0; i < x.length; i++) {\n x[i] = this.rhex(x[i]);\n }\n return x.join('');\n }\n md5(s) {\n return this.hex(this.md51(s));\n }\n add32(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 add32Std(a, b) {\n return (a + b) & 0xFFFFFFFF;\n }\n add32Compat(x, y) {\n const lsw = (x & 0xFFFF) + (y & 0xFFFF), msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xFFFF);\n }\n}\n\n// move to general utils\nfunction missingOrEmpty(value) {\n return value == null || value.length === 0;\n}\nfunction exists(value, allowEmptyString = false) {\n return value != null && (value !== '' || allowEmptyString);\n}\nclass LicenseManager {\n constructor(document) {\n this.watermarkMessage = undefined;\n this.document = document;\n this.md5 = new MD5();\n this.md5.init();\n }\n validateLicense() {\n if (missingOrEmpty(LicenseManager.licenseKey)) {\n if (!this.isWebsiteUrl() || this.isForceWatermark()) {\n this.outputMissingLicenseKey();\n }\n }\n else if (LicenseManager.licenseKey.length > 32) {\n if (LicenseManager.licenseKey.indexOf(\"For_Trialing_ag-Grid_Only\") !== -1) {\n this.outputInvalidLicenseKey();\n }\n else {\n const { md5, license, version, isTrial } = LicenseManager.extractLicenseComponents(LicenseManager.licenseKey);\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 }\n else {\n this.outputInvalidLicenseKey();\n }\n }\n static extractExpiry(license) {\n const restrictionHashed = license.substring(license.lastIndexOf('_') + 1, license.length);\n return new Date(parseInt(LicenseManager.decode(restrictionHashed), 10));\n }\n static extractLicenseComponents(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 let cleanedLicenseKey = licenseKey.replace(/[\\u200B-\\u200D\\uFEFF]/g, '');\n cleanedLicenseKey = cleanedLicenseKey.replace(/\\r?\\n|\\r/g, '');\n const hashStart = cleanedLicenseKey.length - 32;\n const md5 = cleanedLicenseKey.substring(hashStart);\n const license = cleanedLicenseKey.substring(0, hashStart);\n const [version, isTrial] = LicenseManager.extractBracketedInformation(cleanedLicenseKey);\n return { md5, license, version, isTrial };\n }\n getLicenseDetails(licenseKey) {\n const { md5, license, version, isTrial } = LicenseManager.extractLicenseComponents(licenseKey);\n let valid = (md5 === this.md5.md5(license)) && licenseKey.indexOf(\"For_Trialing_ag-Grid_Only\") === -1;\n let trialExpired = null;\n let expiry = null;\n if (valid) {\n expiry = LicenseManager.extractExpiry(license);\n valid = !isNaN(expiry.getTime());\n if (isTrial) {\n const now = new Date();\n trialExpired = (expiry < now);\n }\n }\n return {\n licenseKey,\n valid,\n expiry: valid ? LicenseManager.formatDate(expiry) : null,\n version: version ? version : 'legacy',\n isTrial,\n trialExpired\n };\n }\n isDisplayWatermark() {\n return this.isForceWatermark() || (!this.isLocalhost() && !this.isWebsiteUrl() && !missingOrEmpty(this.watermarkMessage));\n }\n getWatermarkMessage() {\n return this.watermarkMessage || '';\n }\n getHostname() {\n const win = (this.document.defaultView || window);\n const loc = win.location;\n const { hostname = '' } = loc;\n return hostname;\n }\n isForceWatermark() {\n const win = (this.document.defaultView || window);\n const loc = win.location;\n const { pathname } = loc;\n return pathname ? pathname.indexOf('forceWatermark') !== -1 : false;\n }\n isWebsiteUrl() {\n const hostname = this.getHostname();\n return hostname.match(/^((?:\\w+\\.)?ag-grid\\.com)$/) !== null;\n }\n isLocalhost() {\n const hostname = this.getHostname();\n return hostname.match(/^(?:127\\.0\\.0\\.1|localhost)$/) !== null;\n }\n static formatDate(date) {\n const monthNames = [\n 'January', 'February', 'March',\n 'April', 'May', 'June', 'July',\n 'August', 'September', 'October',\n 'November', 'December'\n ];\n const day = date.getDate();\n const monthIndex = date.getMonth();\n const year = date.getFullYear();\n return day + ' ' + monthNames[monthIndex] + ' ' + year;\n }\n static getGridReleaseDate() {\n return new Date(parseInt(LicenseManager.decode(LicenseManager.RELEASE_INFORMATION), 10));\n }\n static decode(input) {\n const keystr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n let t = '';\n let n, r, i;\n let s, o, u, a;\n let f = 0;\n const 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.utf8_decode(t);\n return t;\n }\n static utf8_decode(input) {\n input = input.replace(/rn/g, 'n');\n let t = '';\n for (let n = 0; n < input.length; n++) {\n const 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 static setLicenseKey(licenseKey) {\n this.licenseKey = licenseKey;\n }\n static extractBracketedInformation(licenseKey) {\n const 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 const isTrial = matches.filter(match => match === 'TRIAL').length === 1;\n const version = matches.filter(match => match.indexOf(\"v\") === 0).map(match => match.replace(/^v/, \"\"))[0];\n return [version, isTrial];\n }\n validateLicenseKeyForVersion(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 validateLegacyKey(license) {\n const gridReleaseDate = LicenseManager.getGridReleaseDate();\n const expiry = LicenseManager.extractExpiry(license);\n let valid = false;\n let 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 const formattedExpiryDate = LicenseManager.formatDate(expiry);\n const formattedReleaseDate = LicenseManager.formatDate(gridReleaseDate);\n this.outputIncompatibleVersion(formattedExpiryDate, formattedReleaseDate);\n }\n }\n validateForTrial(license) {\n const expiry = LicenseManager.extractExpiry(license);\n const now = new Date();\n let valid = false;\n let 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 const formattedExpiryDate = LicenseManager.formatDate(expiry);\n this.outputExpiredTrialKey(formattedExpiryDate);\n }\n }\n outputInvalidLicenseKey() {\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 outputExpiredTrialKey(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 outputMissingLicenseKey() {\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 outputIncompatibleVersion(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}\nLicenseManager.RELEASE_INFORMATION = 'MTY4OTUzMzE0MDAzNw==';\n\nvar __decorate$2C = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet GridLicenseManager = class GridLicenseManager extends BeanStub {\n validateLicense() {\n this.licenseManager = new LicenseManager(this.gridOptionsService.getDocument());\n this.licenseManager.validateLicense();\n }\n static getLicenseDetails(licenseKey) {\n return new LicenseManager(null).getLicenseDetails(licenseKey);\n }\n isDisplayWatermark() {\n return this.licenseManager.isDisplayWatermark();\n }\n getWatermarkMessage() {\n return this.licenseManager.getWatermarkMessage();\n }\n static setLicenseKey(licenseKey) {\n LicenseManager.setLicenseKey(licenseKey);\n }\n};\n__decorate$2C([\n PreConstruct\n], GridLicenseManager.prototype, \"validateLicense\", null);\nGridLicenseManager = __decorate$2C([\n Bean('licenseManager')\n], GridLicenseManager);\n\nvar __decorate$2B = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass WatermarkComp extends Component {\n constructor() {\n super(/* html*/ `
\n
\n
`);\n }\n postConstruct() {\n const show = this.shouldDisplayWatermark();\n this.setDisplayed(show);\n if (show) {\n this.eLicenseTextRef.innerText = this.licenseManager.getWatermarkMessage();\n window.setTimeout(() => this.addCssClass('ag-opacity-zero'), 0);\n window.setTimeout(() => this.setDisplayed(false), 5000);\n }\n }\n shouldDisplayWatermark() {\n return this.licenseManager.isDisplayWatermark();\n }\n}\n__decorate$2B([\n Autowired('licenseManager')\n], WatermarkComp.prototype, \"licenseManager\", void 0);\n__decorate$2B([\n RefSelector('eLicenseTextRef')\n], WatermarkComp.prototype, \"eLicenseTextRef\", void 0);\n__decorate$2B([\n PostConstruct\n], WatermarkComp.prototype, \"postConstruct\", null);\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nconst VERSION$i = '30.0.5';\n\nconst EnterpriseCoreModule = {\n version: VERSION$i,\n moduleName: ModuleNames.EnterpriseCoreModule,\n beans: [GridLicenseManager],\n agStackComponents: [\n { componentName: 'AgWatermark', componentClass: WatermarkComp }\n ]\n};\n\nvar __decorate$2A = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 ClipboardService_1;\n// Matches value in changeDetectionService\nconst SOURCE_PASTE = 'paste';\nconst EXPORT_TYPE_DRAG_COPY = 'dragCopy';\nconst EXPORT_TYPE_CLIPBOARD = 'clipboard';\nvar CellClearType;\n(function (CellClearType) {\n CellClearType[CellClearType[\"CellRange\"] = 0] = \"CellRange\";\n CellClearType[CellClearType[\"SelectedRows\"] = 1] = \"SelectedRows\";\n CellClearType[CellClearType[\"FocusedCell\"] = 2] = \"FocusedCell\";\n})(CellClearType || (CellClearType = {}));\nlet ClipboardService = ClipboardService_1 = class ClipboardService extends BeanStub {\n constructor() {\n super(...arguments);\n this.lastPasteOperationTime = 0;\n this.navigatorApiFailed = false;\n }\n init() {\n this.logger = this.loggerFactory.create('ClipboardService');\n if (this.rowModel.getType() === 'clientSide') {\n this.clientSideRowModel = this.rowModel;\n }\n this.ctrlsService.whenReady(p => {\n this.gridCtrl = p.gridCtrl;\n });\n }\n pasteFromClipboard() {\n this.logger.log('pasteFromClipboard');\n // Method 1 - native clipboard API, available in modern chrome browsers\n const allowNavigator = !this.gridOptionsService.is('suppressClipboardApi');\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((e) => {\n _.doOnce(() => {\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 pasteFromClipboardLegacy() {\n // Method 2 - if modern API fails, the old school hack\n let defaultPrevented = false;\n const handlePasteEvent = (e) => {\n const currentPastOperationTime = (new Date()).getTime();\n if (currentPastOperationTime - this.lastPasteOperationTime < 50) {\n defaultPrevented = true;\n e.preventDefault();\n }\n this.lastPasteOperationTime = currentPastOperationTime;\n };\n this.executeOnTempElement((textArea) => {\n textArea.addEventListener('paste', handlePasteEvent);\n textArea.focus({ preventScroll: true });\n }, (element) => {\n const data = element.value;\n if (!defaultPrevented) {\n this.processClipboardData(data);\n }\n else {\n this.refocusLastFocusedCell();\n }\n element.removeEventListener('paste', handlePasteEvent);\n });\n }\n refocusLastFocusedCell() {\n const focusedCell = this.focusService.getFocusedCell();\n if (focusedCell) {\n this.focusService.setFocusedCell({\n rowIndex: focusedCell.rowIndex,\n column: focusedCell.column,\n rowPinned: focusedCell.rowPinned,\n forceBrowserFocus: true\n });\n }\n }\n getClipboardDelimiter() {\n const delimiter = this.gridOptionsService.get('clipboardDelimiter');\n return _.exists(delimiter) ? delimiter : '\\t';\n }\n processClipboardData(data) {\n if (data == null) {\n return;\n }\n let parsedData = ClipboardService_1.stringToArray(data, this.getClipboardDelimiter());\n const userFunc = this.gridOptionsService.getCallback('processDataFromClipboard');\n if (userFunc) {\n parsedData = userFunc({ data: parsedData });\n }\n if (parsedData == null) {\n return;\n }\n if (this.gridOptionsService.is('suppressLastEmptyLineOnPaste')) {\n this.removeLastLineIfBlank(parsedData);\n }\n const pasteOperation = (cellsToFlash, updatedRowNodes, focusedCell, changedPath) => {\n const rangeActive = this.rangeService && this.rangeService.isMoreThanOneCell();\n const 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 // This will parse a delimited string into an array of arrays.\n static stringToArray(strData, delimiter = ',') {\n const data = [];\n const isNewline = (char) => char === '\\r' || char === '\\n';\n let insideQuotedField = false;\n if (strData === '') {\n return [['']];\n }\n // iterate over each character, keep track of current row and column (of the returned array)\n for (let row = 0, column = 0, position = 0; position < strData.length; position++) {\n const previousChar = strData[position - 1];\n const currentChar = strData[position];\n const nextChar = strData[position + 1];\n const ensureDataExists = () => {\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 // continue;\n }\n else if (previousChar === undefined || previousChar === delimiter || isNewline(previousChar)) {\n // enter quoted field\n insideQuotedField = true;\n // continue;\n }\n }\n if (!insideQuotedField && currentChar !== '\"') {\n if (currentChar === delimiter) {\n // move to next column\n column++;\n ensureDataExists();\n 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 continue;\n }\n }\n // add current character to current column\n data[row][column] += currentChar;\n }\n return data;\n }\n // common code to paste operations, e.g. paste to cell, paste to range, and copy range down\n doPasteOperation(pasteOperationFunc) {\n const api = this.gridOptionsService.api;\n const columnApi = this.gridOptionsService.columnApi;\n const source = 'clipboard';\n this.eventService.dispatchEvent({\n type: Events.EVENT_PASTE_START,\n api,\n columnApi,\n source\n });\n let changedPath;\n if (this.clientSideRowModel) {\n const onlyChangedColumns = this.gridOptionsService.is('aggregateOnlyChangedColumns');\n changedPath = new ChangedPath(onlyChangedColumns, this.clientSideRowModel.getRootNode());\n }\n const cellsToFlash = {};\n const updatedRowNodes = [];\n const focusedCell = this.focusService.getFocusedCell();\n pasteOperationFunc(cellsToFlash, updatedRowNodes, focusedCell, changedPath);\n const nodesToRefresh = [...updatedRowNodes];\n if (changedPath) {\n this.clientSideRowModel.doAggregate(changedPath);\n // add all nodes impacted by aggregation, as they need refreshed also.\n changedPath.forEachChangedNodeDepthFirst(rowNode => {\n nodesToRefresh.push(rowNode);\n });\n }\n // clipboardService has to do changeDetection itself, to prevent repeat logic in favour of batching.\n // changeDetectionService is disabled for this action.\n this.rowRenderer.refreshCells({ rowNodes: nodesToRefresh });\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 this.refocusLastFocusedCell();\n const event = {\n type: Events.EVENT_PASTE_END,\n source\n };\n this.eventService.dispatchEvent(event);\n }\n pasteIntoActiveRange(clipboardData, cellsToFlash, updatedRowNodes, changedPath) {\n // true if clipboard data can be evenly pasted into range, otherwise false\n const abortRepeatingPasteIntoRows = this.getRangeSize() % clipboardData.length != 0;\n let indexOffset = 0;\n let dataRowIndex = 0;\n const rowCallback = (currentRow, rowNode, columns, index) => {\n const 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 const currentRowData = clipboardData[index - indexOffset];\n // otherwise we are not the first row, so copy\n updatedRowNodes.push(rowNode);\n const processCellFromClipboardFunc = this.gridOptionsService.getCallback('processCellFromClipboard');\n columns.forEach((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 const newValue = this.processCell(rowNode, column, currentRowData[idx], EXPORT_TYPE_DRAG_COPY, processCellFromClipboardFunc, true);\n rowNode.setDataValue(column, newValue, SOURCE_PASTE);\n if (changedPath) {\n changedPath.addParentNode(rowNode.parent, [column]);\n }\n const { rowIndex, rowPinned } = currentRow;\n const cellId = this.cellPositionUtils.createIdFromValues({ rowIndex, column, rowPinned });\n cellsToFlash[cellId] = true;\n });\n dataRowIndex++;\n };\n this.iterateActiveRanges(false, rowCallback);\n }\n pasteStartingFromFocusedCell(parsedData, cellsToFlash, updatedRowNodes, focusedCell, changedPath) {\n if (!focusedCell) {\n return;\n }\n const currentRow = { rowIndex: focusedCell.rowIndex, rowPinned: focusedCell.rowPinned };\n const 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, 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 isPasteSingleValueIntoRange(parsedData) {\n return this.hasOnlyOneValueToPaste(parsedData)\n && this.rangeService != null\n && !this.rangeService.isEmpty();\n }\n pasteSingleValueIntoRange(parsedData, updatedRowNodes, cellsToFlash, changedPath) {\n const value = parsedData[0][0];\n const rowCallback = (currentRow, rowNode, columns) => {\n updatedRowNodes.push(rowNode);\n columns.forEach(column => this.updateCellValue(rowNode, column, value, cellsToFlash, EXPORT_TYPE_CLIPBOARD, changedPath));\n };\n this.iterateActiveRanges(false, rowCallback);\n }\n hasOnlyOneValueToPaste(parsedData) {\n return parsedData.length === 1 && parsedData[0].length === 1;\n }\n copyRangeDown() {\n if (!this.rangeService || this.rangeService.isEmpty()) {\n return;\n }\n const firstRowValues = [];\n const pasteOperation = (cellsToFlash, updatedRowNodes, focusedCell, changedPath) => {\n const processCellForClipboardFunc = this.gridOptionsService.getCallback('processCellForClipboard');\n const processCellFromClipboardFunc = this.gridOptionsService.getCallback('processCellFromClipboard');\n const rowCallback = (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(column => {\n // get the initial values to copy down\n const value = this.processCell(rowNode, column, this.valueService.getValue(column, rowNode), EXPORT_TYPE_DRAG_COPY, processCellForClipboardFunc, false, true);\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((column, index) => {\n if (!column.isCellEditable(rowNode) || column.isSuppressPaste(rowNode)) {\n return;\n }\n const firstRowValue = this.processCell(rowNode, column, firstRowValues[index], EXPORT_TYPE_DRAG_COPY, processCellFromClipboardFunc, true);\n rowNode.setDataValue(column, firstRowValue, SOURCE_PASTE);\n if (changedPath) {\n changedPath.addParentNode(rowNode.parent, [column]);\n }\n const { rowIndex, rowPinned } = currentRow;\n const cellId = this.cellPositionUtils.createIdFromValues({ rowIndex, column, rowPinned });\n cellsToFlash[cellId] = true;\n });\n }\n };\n this.iterateActiveRanges(true, rowCallback);\n };\n this.doPasteOperation(pasteOperation);\n }\n removeLastLineIfBlank(parsedData) {\n // remove last row if empty, excel puts empty last row in\n const lastLine = _.last(parsedData);\n const lastLineIsBlank = lastLine && lastLine.length === 1 && lastLine[0] === '';\n if (lastLineIsBlank) {\n // do not remove the last empty line when that is the only line pasted\n if (parsedData.length === 1) {\n return;\n }\n _.removeFromArray(parsedData, lastLine);\n }\n }\n fireRowChanged(rowNodes) {\n if (this.gridOptionsService.get('editType') !== 'fullRow') {\n return;\n }\n rowNodes.forEach(rowNode => {\n const event = {\n type: Events.EVENT_ROW_VALUE_CHANGED,\n node: rowNode,\n data: rowNode.data,\n rowIndex: rowNode.rowIndex,\n rowPinned: rowNode.rowPinned\n };\n this.eventService.dispatchEvent(event);\n });\n }\n pasteMultipleValues(clipboardGridData, currentRow, updatedRowNodes, columnsToPasteInto, cellsToFlash, type, changedPath) {\n let 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 const skipGroupRows = this.clientSideRowModel != null && !this.gridOptionsService.is('enableGroupEdit') && !this.gridOptionsService.isTreeData();\n const getNextGoodRowNode = () => {\n while (true) {\n if (!rowPointer) {\n return null;\n }\n const 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 const 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(clipboardRowData => {\n const rowNode = getNextGoodRowNode();\n // if we have come to end of rows in grid, then skip\n if (!rowNode) {\n return;\n }\n clipboardRowData.forEach((value, index) => this.updateCellValue(rowNode, columnsToPasteInto[index], value, cellsToFlash, type, changedPath));\n updatedRowNodes.push(rowNode);\n });\n }\n updateCellValue(rowNode, column, value, cellsToFlash, type, changedPath) {\n if (!rowNode ||\n !column ||\n !column.isCellEditable(rowNode) ||\n column.isSuppressPaste(rowNode)) {\n return;\n }\n // if the cell is a group and the col is an aggregation, skip the cell.\n if (rowNode.group && column.isValueActive()) {\n return;\n }\n const processedValue = this.processCell(rowNode, column, value, type, this.gridOptionsService.getCallback('processCellFromClipboard'), true);\n rowNode.setDataValue(column, processedValue, SOURCE_PASTE);\n const { rowIndex, rowPinned } = rowNode;\n const cellId = this.cellPositionUtils.createIdFromValues({ rowIndex: rowIndex, column, rowPinned });\n cellsToFlash[cellId] = true;\n if (changedPath) {\n changedPath.addParentNode(rowNode.parent, [column]);\n }\n }\n copyToClipboard(params = {}) {\n this.copyOrCutToClipboard(params);\n }\n cutToClipboard(params = {}, source = 'api') {\n if (this.gridOptionsService.is('suppressCutToClipboard')) {\n return;\n }\n const startEvent = {\n type: Events.EVENT_CUT_START,\n source\n };\n this.eventService.dispatchEvent(startEvent);\n this.copyOrCutToClipboard(params, true);\n const endEvent = {\n type: Events.EVENT_CUT_END,\n source\n };\n this.eventService.dispatchEvent(endEvent);\n }\n copyOrCutToClipboard(params, cut) {\n let { includeHeaders, includeGroupHeaders } = params;\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.gridOptionsService.is('copyHeadersToClipboard');\n }\n if (includeGroupHeaders == null) {\n includeGroupHeaders = this.gridOptionsService.is('copyGroupHeadersToClipboard');\n }\n const copyParams = { includeHeaders, includeGroupHeaders };\n const shouldCopyRows = !this.gridOptionsService.is('suppressCopyRowsToClipboard');\n let cellClearType = null;\n // Copy priority is Range > Row > Focus\n if (this.rangeService && !this.rangeService.isEmpty() && !this.shouldSkipSingleCellRange()) {\n this.copySelectedRangeToClipboard(copyParams);\n cellClearType = CellClearType.CellRange;\n }\n else if (shouldCopyRows && !this.selectionService.isEmpty()) {\n this.copySelectedRowsToClipboard(copyParams);\n cellClearType = CellClearType.SelectedRows;\n }\n else if (this.focusService.isAnyCellFocused()) {\n this.copyFocusedCellToClipboard(copyParams);\n cellClearType = CellClearType.FocusedCell;\n }\n if (cut && cellClearType !== null) {\n this.clearCellsAfterCopy(cellClearType);\n }\n }\n clearCellsAfterCopy(type) {\n this.eventService.dispatchEvent({ type: Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_START });\n if (type === CellClearType.CellRange) {\n this.rangeService.clearCellRangeCellValues({ cellEventSource: 'clipboardService' });\n }\n else if (type === CellClearType.SelectedRows) {\n this.clearSelectedRows();\n }\n else {\n const focusedCell = this.focusService.getFocusedCell();\n if (focusedCell == null) {\n return;\n }\n const rowNode = this.rowPositionUtils.getRowNode(focusedCell);\n if (rowNode) {\n this.clearCellValue(rowNode, focusedCell.column);\n }\n }\n this.eventService.dispatchEvent({ type: Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_END });\n }\n clearSelectedRows() {\n const selected = this.selectionService.getSelectedNodes();\n const columns = this.columnModel.getAllDisplayedColumns();\n for (const row of selected) {\n for (const col of columns) {\n this.clearCellValue(row, col);\n }\n }\n }\n clearCellValue(rowNode, column) {\n if (!column.isCellEditable(rowNode)) {\n return;\n }\n rowNode.setDataValue(column, null, 'clipboardService');\n }\n shouldSkipSingleCellRange() {\n return this.gridOptionsService.is('suppressCopySingleCellRanges') && !this.rangeService.isMoreThanOneCell();\n }\n iterateActiveRanges(onlyFirst, rowCallback, columnCallback) {\n if (!this.rangeService || this.rangeService.isEmpty()) {\n return;\n }\n const cellRanges = this.rangeService.getCellRanges();\n if (onlyFirst) {\n this.iterateActiveRange(cellRanges[0], rowCallback, columnCallback, true);\n }\n else {\n cellRanges.forEach((range, idx) => this.iterateActiveRange(range, rowCallback, columnCallback, idx === cellRanges.length - 1));\n }\n }\n iterateActiveRange(range, rowCallback, columnCallback, isLastRange) {\n if (!this.rangeService) {\n return;\n }\n let currentRow = this.rangeService.getRangeStartRow(range);\n const lastRow = this.rangeService.getRangeEndRow(range);\n if (columnCallback && range.columns) {\n columnCallback(range.columns);\n }\n let rangeIndex = 0;\n let 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 const 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 copySelectedRangeToClipboard(params = {}) {\n if (!this.rangeService || this.rangeService.isEmpty()) {\n return;\n }\n const allRangesMerge = this.rangeService.areAllRangesAbleToMerge();\n const { data, cellsToFlash } = allRangesMerge ? this.buildDataFromMergedRanges(params) : this.buildDataFromRanges(params);\n this.copyDataToClipboard(data);\n this.dispatchFlashCells(cellsToFlash);\n }\n buildDataFromMergedRanges(params) {\n const columnsSet = new Set();\n const ranges = this.rangeService.getCellRanges();\n const rowPositionsMap = new Map();\n const allRowPositions = [];\n const allCellsToFlash = {};\n ranges.forEach(range => {\n range.columns.forEach(col => columnsSet.add(col));\n const { rowPositions, cellsToFlash } = this.getRangeRowPositionsAndCellsToFlash(range);\n rowPositions.forEach(rowPosition => {\n const rowPositionAsString = `${rowPosition.rowIndex}-${rowPosition.rowPinned || 'null'}`;\n if (!rowPositionsMap.get(rowPositionAsString)) {\n rowPositionsMap.set(rowPositionAsString, true);\n allRowPositions.push(rowPosition);\n }\n });\n Object.assign(allCellsToFlash, cellsToFlash);\n });\n const allColumns = this.columnModel.getAllDisplayedColumns();\n const exportedColumns = Array.from(columnsSet);\n exportedColumns.sort((a, b) => {\n const posA = allColumns.indexOf(a);\n const posB = allColumns.indexOf(b);\n return posA - posB;\n });\n const data = this.buildExportParams({\n columns: exportedColumns,\n rowPositions: allRowPositions,\n includeHeaders: params.includeHeaders,\n includeGroupHeaders: params.includeGroupHeaders,\n });\n return { data, cellsToFlash: allCellsToFlash };\n }\n buildDataFromRanges(params) {\n const ranges = this.rangeService.getCellRanges();\n const data = [];\n const allCellsToFlash = {};\n ranges.forEach(range => {\n const { rowPositions, cellsToFlash } = this.getRangeRowPositionsAndCellsToFlash(range);\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 getRangeRowPositionsAndCellsToFlash(range) {\n const rowPositions = [];\n const cellsToFlash = {};\n const startRow = this.rangeService.getRangeStartRow(range);\n const lastRow = this.rangeService.getRangeEndRow(range);\n let node = startRow;\n while (node) {\n rowPositions.push(node);\n range.columns.forEach(column => {\n const { rowIndex, rowPinned } = node;\n const cellId = this.cellPositionUtils.createIdFromValues({ rowIndex, column, 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, cellsToFlash };\n }\n copyFocusedCellToClipboard(params = {}) {\n const focusedCell = this.focusService.getFocusedCell();\n if (focusedCell == null) {\n return;\n }\n const cellId = this.cellPositionUtils.createId(focusedCell);\n const currentRow = { rowPinned: focusedCell.rowPinned, rowIndex: focusedCell.rowIndex };\n const column = focusedCell.column;\n const 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({ [cellId]: true });\n }\n copySelectedRowsToClipboard(params = {}) {\n const { columnKeys, includeHeaders, includeGroupHeaders } = params;\n const data = this.buildExportParams({\n columns: columnKeys,\n includeHeaders,\n includeGroupHeaders\n });\n this.copyDataToClipboard(data);\n }\n buildExportParams(params) {\n const { columns, rowPositions, includeHeaders = false, includeGroupHeaders = false } = params;\n const exportParams = {\n columnKeys: columns,\n rowPositions,\n skipColumnHeaders: !includeHeaders,\n skipColumnGroupHeaders: !includeGroupHeaders,\n suppressQuotes: true,\n columnSeparator: this.getClipboardDelimiter(),\n onlySelected: !rowPositions,\n processCellCallback: this.gridOptionsService.getCallback('processCellForClipboard'),\n processRowGroupCallback: (params) => this.processRowGroupCallback(params),\n processHeaderCallback: this.gridOptionsService.getCallback('processHeaderForClipboard'),\n processGroupHeaderCallback: this.gridOptionsService.getCallback('processGroupHeaderForClipboard')\n };\n return this.csvCreator.getDataAsCsv(exportParams, true);\n }\n processRowGroupCallback(params) {\n const { node } = params;\n const { key } = node;\n let value = key != null ? key : '';\n if (params.node.footer) {\n let suffix = '';\n if (key && key.length) {\n suffix = ` ${key}`;\n }\n value = `Total${suffix}`;\n }\n const processCellForClipboard = this.gridOptionsService.getCallback('processCellForClipboard');\n if (processCellForClipboard) {\n let column = node.rowGroupColumn;\n if (!column && node.footer && node.level === -1) {\n column = this.columnModel.getRowGroupColumns()[0];\n }\n return processCellForClipboard({\n value,\n node,\n column,\n type: 'clipboard',\n formatValue: (valueToFormat) => { var _a; return (_a = this.valueFormatterService.formatValue(column, node, valueToFormat)) !== null && _a !== void 0 ? _a : valueToFormat; },\n parseValue: (valueToParse) => this.valueParserService.parseValue(column, node, valueToParse, this.valueService.getValue(column, node))\n });\n }\n return value;\n }\n dispatchFlashCells(cellsToFlash) {\n window.setTimeout(() => {\n const event = {\n type: Events.EVENT_FLASH_CELLS,\n cells: cellsToFlash\n };\n this.eventService.dispatchEvent(event);\n }, 0);\n }\n processCell(rowNode, column, value, type, func, canParse, canFormat) {\n var _a;\n if (func) {\n const params = {\n column,\n node: rowNode,\n value,\n type,\n formatValue: (valueToFormat) => { var _a; return (_a = this.valueFormatterService.formatValue(column, rowNode !== null && rowNode !== void 0 ? rowNode : null, valueToFormat)) !== null && _a !== void 0 ? _a : valueToFormat; },\n parseValue: (valueToParse) => this.valueParserService.parseValue(column, rowNode !== null && rowNode !== void 0 ? rowNode : null, valueToParse, this.valueService.getValue(column, rowNode))\n };\n return func(params);\n }\n if (canParse && column.getColDef().useValueParserForImport) {\n return this.valueParserService.parseValue(column, rowNode !== null && rowNode !== void 0 ? rowNode : null, value, this.valueService.getValue(column, rowNode));\n }\n else if (canFormat && column.getColDef().useValueFormatterForExport) {\n return (_a = this.valueFormatterService.formatValue(column, rowNode !== null && rowNode !== void 0 ? rowNode : null, value)) !== null && _a !== void 0 ? _a : value;\n }\n return value;\n }\n copyDataToClipboard(data) {\n const userProvidedFunc = this.gridOptionsService.getCallback('sendToClipboard');\n // method 1 - user provided func\n if (userProvidedFunc) {\n userProvidedFunc({ data });\n return;\n }\n // method 2 - native clipboard API, available in modern chrome browsers\n const allowNavigator = !this.gridOptionsService.is('suppressClipboardApi');\n if (allowNavigator && navigator.clipboard) {\n navigator.clipboard.writeText(data).catch((e) => {\n _.doOnce(() => {\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 copyDataToClipboardLegacy(data) {\n // method 3 - if all else fails, the old school hack\n this.executeOnTempElement(element => {\n const eDocument = this.gridOptionsService.getDocument();\n const 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 const 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 executeOnTempElement(callbackNow, callbackAfter) {\n const eDoc = this.gridOptionsService.getDocument();\n const 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 const 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(() => {\n callbackAfter(eTempInput);\n guiRoot.removeChild(eTempInput);\n }, 100);\n }\n else {\n guiRoot.removeChild(eTempInput);\n }\n }\n getRangeSize() {\n const ranges = this.rangeService.getCellRanges();\n let startRangeIndex = 0;\n let 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};\n__decorate$2A([\n Autowired('csvCreator')\n], ClipboardService.prototype, \"csvCreator\", void 0);\n__decorate$2A([\n Autowired('loggerFactory')\n], ClipboardService.prototype, \"loggerFactory\", void 0);\n__decorate$2A([\n Autowired('selectionService')\n], ClipboardService.prototype, \"selectionService\", void 0);\n__decorate$2A([\n Optional('rangeService')\n], ClipboardService.prototype, \"rangeService\", void 0);\n__decorate$2A([\n Autowired('rowModel')\n], ClipboardService.prototype, \"rowModel\", void 0);\n__decorate$2A([\n Autowired('ctrlsService')\n], ClipboardService.prototype, \"ctrlsService\", void 0);\n__decorate$2A([\n Autowired('valueService')\n], ClipboardService.prototype, \"valueService\", void 0);\n__decorate$2A([\n Autowired('focusService')\n], ClipboardService.prototype, \"focusService\", void 0);\n__decorate$2A([\n Autowired('rowRenderer')\n], ClipboardService.prototype, \"rowRenderer\", void 0);\n__decorate$2A([\n Autowired('columnModel')\n], ClipboardService.prototype, \"columnModel\", void 0);\n__decorate$2A([\n Autowired('cellNavigationService')\n], ClipboardService.prototype, \"cellNavigationService\", void 0);\n__decorate$2A([\n Autowired('cellPositionUtils')\n], ClipboardService.prototype, \"cellPositionUtils\", void 0);\n__decorate$2A([\n Autowired('rowPositionUtils')\n], ClipboardService.prototype, \"rowPositionUtils\", void 0);\n__decorate$2A([\n Autowired('valueFormatterService')\n], ClipboardService.prototype, \"valueFormatterService\", void 0);\n__decorate$2A([\n Autowired('valueParserService')\n], ClipboardService.prototype, \"valueParserService\", void 0);\n__decorate$2A([\n PostConstruct\n], ClipboardService.prototype, \"init\", null);\nClipboardService = ClipboardService_1 = __decorate$2A([\n Bean('clipboardService')\n], ClipboardService);\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nconst VERSION$h = '30.0.5';\n\nconst ClipboardModule = {\n version: VERSION$h,\n moduleName: ModuleNames.ClipboardModule,\n beans: [ClipboardService],\n dependantModules: [\n EnterpriseCoreModule,\n CsvExportModule\n ]\n};\n\nvar __decorate$2z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 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 = {}));\nclass PrimaryColsHeaderPanel extends Component {\n constructor() {\n super(PrimaryColsHeaderPanel.TEMPLATE);\n }\n postConstruct() {\n this.createExpandIcons();\n this.addManagedListener(this.eExpand, 'click', this.onExpandClicked.bind(this));\n this.addManagedListener(this.eExpand, 'keydown', (e) => {\n if (e.key === KeyCode.SPACE) {\n e.preventDefault();\n this.onExpandClicked();\n }\n });\n this.addManagedListener(this.eSelect.getInputElement(), 'click', this.onSelectClicked.bind(this));\n this.eFilterTextField.onValueChange(() => this.onFilterTextChanged());\n this.addManagedListener(this.eFilterTextField.getInputElement(), 'keydown', this.onMiniFilterKeyDown.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.showOrHideOptions.bind(this));\n const translate = this.localeService.getLocaleTextFunc();\n this.eSelect.setInputAriaLabel(translate('ariaColumnSelectAll', 'Toggle Select All Columns'));\n this.eFilterTextField.setInputAriaLabel(translate('ariaFilterColumnsInput', 'Filter Columns Input'));\n this.activateTabIndex([this.eExpand]);\n }\n init(params) {\n this.params = params;\n if (this.columnModel.isReady()) {\n this.showOrHideOptions();\n }\n }\n createExpandIcons() {\n this.eExpand.appendChild((this.eExpandChecked = _.createIconNoSpan('columnSelectOpen', this.gridOptionsService)));\n this.eExpand.appendChild((this.eExpandUnchecked = _.createIconNoSpan('columnSelectClosed', this.gridOptionsService)));\n this.eExpand.appendChild((this.eExpandIndeterminate = _.createIconNoSpan('columnSelectIndeterminate', this.gridOptionsService)));\n this.setExpandState(ExpandState.EXPANDED);\n }\n // we only show expand / collapse if we are showing columns\n showOrHideOptions() {\n const showFilter = !this.params.suppressColumnFilter;\n const showSelect = !this.params.suppressColumnSelectAll;\n const showExpand = !this.params.suppressColumnExpandAll;\n const groupsPresent = this.columnModel.isPrimaryColumnGroupsPresent();\n const translate = this.localeService.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 onFilterTextChanged() {\n if (!this.onFilterTextChangedDebounced) {\n this.onFilterTextChangedDebounced = _.debounce(() => {\n const filterText = this.eFilterTextField.getValue();\n this.dispatchEvent({ type: \"filterChanged\", filterText: filterText });\n }, PrimaryColsHeaderPanel.DEBOUNCE_DELAY);\n }\n this.onFilterTextChangedDebounced();\n }\n onMiniFilterKeyDown(e) {\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(() => this.onSelectClicked(), PrimaryColsHeaderPanel.DEBOUNCE_DELAY);\n }\n }\n onSelectClicked() {\n this.dispatchEvent({ type: this.selectState ? 'unselectAll' : 'selectAll' });\n }\n onExpandClicked() {\n this.dispatchEvent({ type: this.expandState === ExpandState.EXPANDED ? 'collapseAll' : 'expandAll' });\n }\n setExpandState(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 setSelectionState(state) {\n this.selectState = state;\n this.eSelect.setValue(this.selectState);\n }\n}\nPrimaryColsHeaderPanel.DEBOUNCE_DELAY = 300;\nPrimaryColsHeaderPanel.TEMPLATE = `
\n
\n \n \n
`;\n__decorate$2z([\n Autowired('columnModel')\n], PrimaryColsHeaderPanel.prototype, \"columnModel\", void 0);\n__decorate$2z([\n RefSelector('eExpand')\n], PrimaryColsHeaderPanel.prototype, \"eExpand\", void 0);\n__decorate$2z([\n RefSelector('eSelect')\n], PrimaryColsHeaderPanel.prototype, \"eSelect\", void 0);\n__decorate$2z([\n RefSelector('eFilterTextField')\n], PrimaryColsHeaderPanel.prototype, \"eFilterTextField\", void 0);\n__decorate$2z([\n PostConstruct\n], PrimaryColsHeaderPanel.prototype, \"postConstruct\", null);\n\nclass ColumnModelItem {\n constructor(displayName, columnOrGroup, dept, group = false, expanded) {\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 isGroup() { return this.group; }\n getDisplayName() { return this.displayName; }\n getColumnGroup() { return this.columnGroup; }\n getColumn() { return this.column; }\n getDept() { return this.dept; }\n isExpanded() { return !!this.expanded; }\n getChildren() { return this.children; }\n isPassesFilter() { return this.passesFilter; }\n setExpanded(expanded) {\n if (expanded === this.expanded) {\n return;\n }\n this.expanded = expanded;\n this.eventService.dispatchEvent({ type: ColumnModelItem.EVENT_EXPANDED_CHANGED });\n }\n setPassesFilter(passesFilter) {\n this.passesFilter = passesFilter;\n }\n addEventListener(eventType, listener) {\n this.eventService.addEventListener(eventType, listener);\n }\n removeEventListener(eventType, listener) {\n this.eventService.removeEventListener(eventType, listener);\n }\n}\nColumnModelItem.EVENT_EXPANDED_CHANGED = 'expandedChanged';\n\nvar __decorate$2y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass ToolPanelContextMenu extends Component {\n constructor(column, mouseEvent, parentEl) {\n super(/* html */ `
`);\n this.column = column;\n this.mouseEvent = mouseEvent;\n this.parentEl = parentEl;\n this.displayName = null;\n }\n postConstruct() {\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 initializeProperties(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(col => col.isPrimary() && col.isAllowRowGroup());\n this.allowValues = this.columns.some(col => col.isPrimary() && col.isAllowValue());\n this.allowPivoting = this.columnModel.isPivotMode() && this.columns.some(col => col.isPrimary() && col.isAllowPivot());\n }\n buildMenuItemMap() {\n const localeTextFunc = this.localeService.getLocaleTextFunc();\n this.menuItemMap = new Map();\n this.menuItemMap.set('rowGroup', {\n allowedFunction: (col) => col.isPrimary() && col.isAllowRowGroup(),\n activeFunction: (col) => col.isRowGroupActive(),\n activateLabel: () => `${localeTextFunc('groupBy', 'Group by')} ${this.displayName}`,\n deactivateLabel: () => `${localeTextFunc('ungroupBy', 'Un-Group by')} ${this.displayName}`,\n activateFunction: () => {\n const groupedColumns = this.columnModel.getRowGroupColumns();\n this.columnModel.setRowGroupColumns(this.addColumnsToList(groupedColumns), \"toolPanelUi\");\n },\n deActivateFunction: () => {\n const 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: (col) => col.isPrimary() && col.isAllowValue(),\n activeFunction: (col) => col.isValueActive(),\n activateLabel: () => localeTextFunc('addToValues', `Add ${this.displayName} to values`, [this.displayName]),\n deactivateLabel: () => localeTextFunc('removeFromValues', `Remove ${this.displayName} from values`, [this.displayName]),\n activateFunction: () => {\n const valueColumns = this.columnModel.getValueColumns();\n this.columnModel.setValueColumns(this.addColumnsToList(valueColumns), \"toolPanelUi\");\n },\n deActivateFunction: () => {\n const 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: (col) => this.columnModel.isPivotMode() && col.isPrimary() && col.isAllowPivot(),\n activeFunction: (col) => col.isPivotActive(),\n activateLabel: () => localeTextFunc('addToLabels', `Add ${this.displayName} to labels`, [this.displayName]),\n deactivateLabel: () => localeTextFunc('removeFromLabels', `Remove ${this.displayName} from labels`, [this.displayName]),\n activateFunction: () => {\n const pivotColumns = this.columnModel.getPivotColumns();\n this.columnModel.setPivotColumns(this.addColumnsToList(pivotColumns), \"toolPanelUi\");\n },\n deActivateFunction: () => {\n const pivotColumns = this.columnModel.getPivotColumns();\n this.columnModel.setPivotColumns(this.removeColumnsFromList(pivotColumns), \"toolPanelUi\");\n },\n addIcon: 'pivotPanel',\n removeIcon: 'pivotPanel'\n });\n }\n addColumnsToList(columnList) {\n return [...columnList].concat(this.columns.filter(col => columnList.indexOf(col) === -1));\n }\n removeColumnsFromList(columnList) {\n return columnList.filter(col => this.columns.indexOf(col) === -1);\n }\n displayContextMenu() {\n const eGui = this.getGui();\n const menuList = this.createBean(new AgMenuList());\n const menuItemsMapped = this.getMappedMenuItems();\n const localeTextFunc = this.localeService.getLocaleTextFunc();\n let hideFunc = () => { };\n eGui.appendChild(menuList.getGui());\n menuList.addMenuItems(menuItemsMapped);\n menuList.addManagedListener(menuList, AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED, () => {\n this.parentEl.focus();\n hideFunc();\n });\n const addPopupRes = this.popupService.addPopup({\n modal: true,\n eChild: eGui,\n closeOnEsc: true,\n afterGuiAttached: () => this.focusService.focusInto(menuList.getGui()),\n ariaLabel: localeTextFunc('ariaLabelContextMenu', 'Context Menu'),\n closedCallback: (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 isActive() {\n return this.allowGrouping || this.allowValues || this.allowPivoting;\n }\n getMappedMenuItems() {\n const ret = [];\n for (const val of this.menuItemMap.values()) {\n const isInactive = this.columns.some(col => val.allowedFunction(col) && !val.activeFunction(col));\n const isActive = this.columns.some(col => val.allowedFunction(col) && val.activeFunction(col));\n if (isInactive) {\n ret.push({\n name: val.activateLabel(this.displayName),\n icon: _.createIconNoSpan(val.addIcon, this.gridOptionsService, null),\n action: () => val.activateFunction()\n });\n }\n if (isActive) {\n ret.push({\n name: val.deactivateLabel(this.displayName),\n icon: _.createIconNoSpan(val.removeIcon, this.gridOptionsService, null),\n action: () => val.deActivateFunction()\n });\n }\n }\n return ret;\n }\n}\n__decorate$2y([\n Autowired('columnModel')\n], ToolPanelContextMenu.prototype, \"columnModel\", void 0);\n__decorate$2y([\n Autowired('popupService')\n], ToolPanelContextMenu.prototype, \"popupService\", void 0);\n__decorate$2y([\n Autowired('focusService')\n], ToolPanelContextMenu.prototype, \"focusService\", void 0);\n__decorate$2y([\n PostConstruct\n], ToolPanelContextMenu.prototype, \"postConstruct\", null);\n\nvar __decorate$2x = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass ToolPanelColumnGroupComp extends Component {\n constructor(modelItem, allowDragging, eventType, focusWrapper) {\n super();\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.displayName = modelItem.getDisplayName();\n this.allowDragging = allowDragging;\n }\n init() {\n this.setTemplate(ToolPanelColumnGroupComp.TEMPLATE);\n this.eDragHandle = _.createIconNoSpan('columnDrag', this.gridOptionsService);\n this.eDragHandle.classList.add('ag-drag-handle', 'ag-column-select-column-group-drag-handle');\n const checkboxGui = this.cbSelect.getGui();\n const checkboxInput = this.cbSelect.getInputElement();\n checkboxGui.insertAdjacentElement('afterend', this.eDragHandle);\n checkboxInput.setAttribute('tabindex', '-1');\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 const classes = CssClassApplier.getToolPanelClassesFromColDef(this.columnGroup.getColGroupDef(), this.gridOptionsService, null, this.columnGroup);\n classes.forEach(c => this.addOrRemoveCssClass(c, true));\n }\n getColumns() {\n return this.columnGroup.getLeafColumns();\n }\n setupTooltip() {\n const colGroupDef = this.columnGroup.getColGroupDef();\n if (!colGroupDef) {\n return;\n }\n const refresh = () => {\n const newTooltipText = colGroupDef.headerTooltip;\n this.setTooltip(newTooltipText);\n };\n refresh();\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, refresh);\n }\n getTooltipParams() {\n const res = super.getTooltipParams();\n res.location = 'columnToolPanelColumnGroup';\n return res;\n }\n handleKeyDown(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 onContextMenu(e) {\n const { columnGroup, gridOptionsService } = this;\n if (gridOptionsService.is('functionsReadOnly')) {\n return;\n }\n const contextMenu = this.createBean(new ToolPanelContextMenu(columnGroup, e, this.focusWrapper));\n this.addDestroyFunc(() => {\n if (contextMenu.isAlive()) {\n this.destroyBean(contextMenu);\n }\n });\n }\n addVisibilityListenersToAllChildren() {\n this.columnGroup.getLeafColumns().forEach(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 setupDragging() {\n if (!this.allowDragging) {\n _.setDisplayed(this.eDragHandle, false);\n return;\n }\n const hideColumnOnExit = !this.gridOptionsService.is('suppressDragLeaveHidesColumns');\n const dragSource = {\n type: DragSourceType.ToolPanel,\n eElement: this.eDragHandle,\n dragItemName: this.displayName,\n defaultIconName: hideColumnOnExit ? DragAndDropService.ICON_HIDE : DragAndDropService.ICON_NOT_ALLOWED,\n getDragItem: () => this.createDragItem(),\n onDragStarted: () => {\n const event = {\n type: Events.EVENT_COLUMN_PANEL_ITEM_DRAG_START,\n column: this.columnGroup\n };\n this.eventService.dispatchEvent(event);\n },\n onDragStopped: () => {\n const event = {\n type: Events.EVENT_COLUMN_PANEL_ITEM_DRAG_END\n };\n this.eventService.dispatchEvent(event);\n },\n onGridEnter: (dragItem) => {\n if (hideColumnOnExit) {\n // when dragged into the grid, restore the state that was active pre-drag\n this.modelItemUtils.updateColumns({\n columns: this.columnGroup.getLeafColumns(),\n visibleState: dragItem === null || dragItem === void 0 ? void 0 : dragItem.visibleState,\n pivotState: dragItem === null || dragItem === void 0 ? void 0 : dragItem.pivotState,\n eventType: this.eventType\n });\n }\n },\n onGridExit: () => {\n if (hideColumnOnExit) {\n // when dragged outside of the grid, mimic what happens when checkbox is disabled\n // this handles the behaviour for pivot which is different to just hiding a column.\n this.onChangeCommon(false);\n }\n }\n };\n this.dragAndDropService.addDragSource(dragSource, true);\n this.addDestroyFunc(() => this.dragAndDropService.removeDragSource(dragSource));\n }\n createDragItem() {\n const columns = this.columnGroup.getLeafColumns();\n const visibleState = {};\n const pivotState = {};\n columns.forEach(col => {\n const colId = col.getId();\n visibleState[colId] = col.isVisible();\n pivotState[colId] = this.modelItemUtils.createPivotState(col);\n });\n return {\n columns,\n visibleState,\n pivotState\n };\n }\n setupExpandContract() {\n this.eGroupClosedIcon.appendChild(_.createIcon('columnSelectClosed', this.gridOptionsService, null));\n this.eGroupOpenedIcon.appendChild(_.createIcon('columnSelectOpen', this.gridOptionsService, null));\n this.addManagedListener(this.eGroupClosedIcon, 'click', this.onExpandOrContractClicked.bind(this));\n this.addManagedListener(this.eGroupOpenedIcon, 'click', this.onExpandOrContractClicked.bind(this));\n const 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 onLabelClicked() {\n const nextState = !this.cbSelect.getValue();\n this.onChangeCommon(nextState);\n }\n onCheckboxChanged(event) {\n this.onChangeCommon(event.selected);\n }\n getVisibleLeafColumns() {\n const childColumns = [];\n const extractCols = (children) => {\n children.forEach(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 onChangeCommon(nextState) {\n this.refreshAriaLabel();\n if (this.processingColumnStateChange) {\n return;\n }\n this.modelItemUtils.selectAllChildren(this.modelItem.getChildren(), nextState, this.eventType);\n }\n refreshAriaLabel() {\n const translate = this.localeService.getLocaleTextFunc();\n const columnLabel = translate('ariaColumnGroup', 'Column Group');\n const checkboxValue = this.cbSelect.getValue();\n const state = checkboxValue === undefined ?\n translate('ariaIndeterminate', 'indeterminate') :\n (checkboxValue ? translate('ariaVisible', 'visible') : translate('ariaHidden', 'hidden'));\n const 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 onColumnStateChanged() {\n const selectedValue = this.workOutSelectedValue();\n const 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 workOutSelectedValue() {\n const pivotMode = this.columnModel.isPivotMode();\n const visibleLeafColumns = this.getVisibleLeafColumns();\n let checkedCount = 0;\n let uncheckedCount = 0;\n visibleLeafColumns.forEach(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 workOutReadOnlyValue() {\n const pivotMode = this.columnModel.isPivotMode();\n let colsThatCanAction = 0;\n this.columnGroup.getLeafColumns().forEach(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 isColumnChecked(column, pivotMode) {\n if (pivotMode) {\n const pivoted = column.isPivotActive();\n const grouped = column.isRowGroupActive();\n const aggregated = column.isValueActive();\n return pivoted || grouped || aggregated;\n }\n return column.isVisible();\n }\n onExpandOrContractClicked() {\n const oldState = this.modelItem.isExpanded();\n this.modelItem.setExpanded(!oldState);\n }\n onExpandChanged() {\n this.setOpenClosedIcons();\n this.refreshAriaExpanded();\n }\n setOpenClosedIcons() {\n const folderOpen = this.modelItem.isExpanded();\n _.setDisplayed(this.eGroupClosedIcon, !folderOpen);\n _.setDisplayed(this.eGroupOpenedIcon, folderOpen);\n }\n refreshAriaExpanded() {\n _.setAriaExpanded(this.focusWrapper, this.modelItem.isExpanded());\n }\n getDisplayName() {\n return this.displayName;\n }\n onSelectAllChanged(value) {\n const cbValue = this.cbSelect.getValue();\n const readOnly = this.cbSelect.isReadOnly();\n if (!readOnly && ((value && !cbValue) || (!value && cbValue))) {\n this.cbSelect.toggle();\n }\n }\n isSelected() {\n return this.cbSelect.getValue();\n }\n isSelectable() {\n return !this.cbSelect.isReadOnly();\n }\n setSelected(selected) {\n this.cbSelect.setValue(selected, true);\n }\n}\nToolPanelColumnGroupComp.TEMPLATE = `
\n \n \n \n \n \n \n
`;\n__decorate$2x([\n Autowired('columnModel')\n], ToolPanelColumnGroupComp.prototype, \"columnModel\", void 0);\n__decorate$2x([\n Autowired('dragAndDropService')\n], ToolPanelColumnGroupComp.prototype, \"dragAndDropService\", void 0);\n__decorate$2x([\n Autowired('modelItemUtils')\n], ToolPanelColumnGroupComp.prototype, \"modelItemUtils\", void 0);\n__decorate$2x([\n RefSelector('cbSelect')\n], ToolPanelColumnGroupComp.prototype, \"cbSelect\", void 0);\n__decorate$2x([\n RefSelector('eLabel')\n], ToolPanelColumnGroupComp.prototype, \"eLabel\", void 0);\n__decorate$2x([\n RefSelector('eGroupOpenedIcon')\n], ToolPanelColumnGroupComp.prototype, \"eGroupOpenedIcon\", void 0);\n__decorate$2x([\n RefSelector('eGroupClosedIcon')\n], ToolPanelColumnGroupComp.prototype, \"eGroupClosedIcon\", void 0);\n__decorate$2x([\n RefSelector('eColumnGroupIcons')\n], ToolPanelColumnGroupComp.prototype, \"eColumnGroupIcons\", void 0);\n__decorate$2x([\n PostConstruct\n], ToolPanelColumnGroupComp.prototype, \"init\", null);\n\nvar __decorate$2w = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst PRIMARY_COLS_LIST_ITEM_HOVERED = 'ag-list-item-hovered';\nclass PrimaryColsListPanelItemDragFeature extends BeanStub {\n constructor(comp, virtualList) {\n super();\n this.comp = comp;\n this.virtualList = virtualList;\n this.currentDragColumn = null;\n this.lastHoveredColumnItem = null;\n }\n postConstruct() {\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 columnPanelItemDragStart({ column }) {\n this.currentDragColumn = column;\n const currentColumns = this.getCurrentColumns();\n const hasNotMovable = currentColumns.find(col => {\n const colDef = col.getColDef();\n return !!colDef.suppressMovable || !!colDef.lockPosition;\n });\n if (hasNotMovable) {\n this.moveBlocked = true;\n }\n }\n columnPanelItemDragEnd() {\n window.setTimeout(() => {\n this.currentDragColumn = null;\n this.moveBlocked = false;\n }, 10);\n }\n createDropTarget() {\n const dropTarget = {\n isInterestedIn: (type) => type === DragSourceType.ToolPanel,\n getIconName: () => DragAndDropService[this.moveBlocked ? 'ICON_NOT_ALLOWED' : 'ICON_MOVE'],\n getContainer: () => this.comp.getGui(),\n onDragging: (e) => this.onDragging(e),\n onDragStop: () => this.onDragStop(),\n onDragLeave: () => this.onDragLeave()\n };\n this.dragAndDropService.addDropTarget(dropTarget);\n }\n createAutoScrollService() {\n const virtualListGui = this.virtualList.getGui();\n this.autoScrollService = new AutoScrollService({\n scrollContainer: virtualListGui,\n scrollAxis: 'y',\n getVerticalPosition: () => virtualListGui.scrollTop,\n setVerticalPosition: (position) => virtualListGui.scrollTop = position\n });\n }\n onDragging(e) {\n if (!this.currentDragColumn || this.moveBlocked) {\n return;\n }\n const hoveredColumnItem = this.getDragColumnItem(e);\n const comp = this.virtualList.getComponentAt(hoveredColumnItem.rowIndex);\n if (!comp) {\n return;\n }\n const 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 getDragColumnItem(e) {\n const virtualListGui = this.virtualList.getGui();\n const paddingTop = parseFloat(window.getComputedStyle(virtualListGui).paddingTop);\n const rowHeight = this.virtualList.getRowHeight();\n const scrollTop = this.virtualList.getScrollTop();\n const rowIndex = Math.max(0, (e.y - paddingTop + scrollTop) / rowHeight);\n const maxLen = this.comp.getDisplayedColsList().length - 1;\n const 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 onDragStop() {\n if (this.moveBlocked) {\n return;\n }\n const targetIndex = this.getTargetIndex();\n const columnsToMove = this.getCurrentColumns();\n if (targetIndex != null) {\n this.columnModel.moveColumns(columnsToMove, targetIndex, 'toolPanelUi');\n }\n this.clearHoveredItems();\n this.autoScrollService.ensureCleared();\n }\n getMoveDiff(end) {\n const allColumns = this.columnModel.getAllGridColumns();\n const currentColumns = this.getCurrentColumns();\n const currentColumn = currentColumns[0];\n const span = currentColumns.length;\n const currentIndex = allColumns.indexOf(currentColumn);\n if (currentIndex < end) {\n return span;\n }\n return 0;\n }\n getCurrentColumns() {\n if (this.currentDragColumn instanceof ProvidedColumnGroup) {\n return this.currentDragColumn.getLeafColumns();\n }\n return [this.currentDragColumn];\n }\n getTargetIndex() {\n if (!this.lastHoveredColumnItem) {\n return null;\n }\n const columnItemComponent = this.lastHoveredColumnItem.component;\n let isBefore = this.lastHoveredColumnItem.position === 'top';\n let targetColumn;\n if (columnItemComponent instanceof ToolPanelColumnGroupComp) {\n const columns = columnItemComponent.getColumns();\n targetColumn = columns[0];\n isBefore = true;\n }\n else {\n targetColumn = columnItemComponent.getColumn();\n }\n const targetColumnIndex = this.columnModel.getAllGridColumns().indexOf(targetColumn);\n const adjustedTarget = isBefore ? targetColumnIndex : targetColumnIndex + 1;\n const diff = this.getMoveDiff(adjustedTarget);\n return adjustedTarget - diff;\n }\n onDragLeave() {\n this.clearHoveredItems();\n this.autoScrollService.ensureCleared();\n }\n clearHoveredItems() {\n const virtualListGui = this.virtualList.getGui();\n virtualListGui.querySelectorAll(`.${PRIMARY_COLS_LIST_ITEM_HOVERED}`).forEach(el => {\n [\n PRIMARY_COLS_LIST_ITEM_HOVERED,\n 'ag-item-highlight-top',\n 'ag-item-highlight-bottom'\n ].forEach(cls => {\n el.classList.remove(cls);\n });\n });\n this.lastHoveredColumnItem = null;\n }\n}\n__decorate$2w([\n Autowired('columnModel')\n], PrimaryColsListPanelItemDragFeature.prototype, \"columnModel\", void 0);\n__decorate$2w([\n Autowired('dragAndDropService')\n], PrimaryColsListPanelItemDragFeature.prototype, \"dragAndDropService\", void 0);\n__decorate$2w([\n PostConstruct\n], PrimaryColsListPanelItemDragFeature.prototype, \"postConstruct\", null);\n\nvar __decorate$2v = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass ToolPanelColumnComp extends Component {\n constructor(modelItem, allowDragging, groupsExist, focusWrapper) {\n super();\n this.allowDragging = allowDragging;\n this.groupsExist = groupsExist;\n this.focusWrapper = focusWrapper;\n this.processingColumnStateChange = false;\n this.column = modelItem.getColumn();\n this.columnDept = modelItem.getDept();\n this.displayName = modelItem.getDisplayName();\n }\n init() {\n this.setTemplate(ToolPanelColumnComp.TEMPLATE);\n this.eDragHandle = _.createIconNoSpan('columnDrag', this.gridOptionsService);\n this.eDragHandle.classList.add('ag-drag-handle', 'ag-column-select-column-drag-handle');\n const checkboxGui = this.cbSelect.getGui();\n const checkboxInput = this.cbSelect.getInputElement();\n checkboxGui.insertAdjacentElement('afterend', this.eDragHandle);\n checkboxInput.setAttribute('tabindex', '-1');\n const 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 const 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.addManagedPropertyListener('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 const classes = CssClassApplier.getToolPanelClassesFromColDef(this.column.getColDef(), this.gridOptionsService, this.column, null);\n classes.forEach(c => this.addOrRemoveCssClass(c, true));\n }\n getColumn() {\n return this.column;\n }\n setupTooltip() {\n const refresh = () => {\n const 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 getTooltipParams() {\n const res = super.getTooltipParams();\n res.location = 'columnToolPanelColumn';\n res.colDef = this.column.getColDef();\n return res;\n }\n onContextMenu(e) {\n const { column, gridOptionsService } = this;\n if (gridOptionsService.is('functionsReadOnly')) {\n return;\n }\n const contextMenu = this.createBean(new ToolPanelContextMenu(column, e, this.focusWrapper));\n this.addDestroyFunc(() => {\n if (contextMenu.isAlive()) {\n this.destroyBean(contextMenu);\n }\n });\n }\n handleKeyDown(e) {\n if (e.key === KeyCode.SPACE) {\n e.preventDefault();\n if (this.isSelectable()) {\n this.onSelectAllChanged(!this.isSelected());\n }\n }\n }\n onLabelClicked() {\n if (this.gridOptionsService.is('functionsReadOnly')) {\n return;\n }\n const nextState = !this.cbSelect.getValue();\n this.onChangeCommon(nextState);\n }\n onCheckboxChanged(event) {\n this.onChangeCommon(event.selected);\n }\n onChangeCommon(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 refreshAriaLabel() {\n const translate = this.localeService.getLocaleTextFunc();\n const columnLabel = translate('ariaColumn', 'Column');\n const state = this.cbSelect.getValue() ? translate('ariaVisible', 'visible') : translate('ariaHidden', 'hidden');\n const 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 setupDragging() {\n if (!this.allowDragging) {\n _.setDisplayed(this.eDragHandle, false);\n return;\n }\n const hideColumnOnExit = !this.gridOptionsService.is('suppressDragLeaveHidesColumns');\n const dragSource = {\n type: DragSourceType.ToolPanel,\n eElement: this.eDragHandle,\n dragItemName: this.displayName,\n defaultIconName: hideColumnOnExit ? DragAndDropService.ICON_HIDE : DragAndDropService.ICON_NOT_ALLOWED,\n getDragItem: () => this.createDragItem(),\n onDragStarted: () => {\n const event = {\n type: Events.EVENT_COLUMN_PANEL_ITEM_DRAG_START,\n column: this.column\n };\n this.eventService.dispatchEvent(event);\n },\n onDragStopped: () => {\n const event = {\n type: Events.EVENT_COLUMN_PANEL_ITEM_DRAG_END\n };\n this.eventService.dispatchEvent(event);\n },\n onGridEnter: (dragItem) => {\n if (hideColumnOnExit) {\n // when dragged into the grid, restore the state that was active pre-drag\n this.modelItemUtils.updateColumns({\n columns: [this.column],\n visibleState: dragItem === null || dragItem === void 0 ? void 0 : dragItem.visibleState,\n pivotState: dragItem === null || dragItem === void 0 ? void 0 : dragItem.pivotState,\n eventType: 'toolPanelUi'\n });\n }\n },\n onGridExit: () => {\n if (hideColumnOnExit) {\n // when dragged outside of the grid, mimic what happens when checkbox is disabled\n // this handles the behaviour for pivot which is different to just hiding a column.\n this.onChangeCommon(false);\n }\n }\n };\n this.dragAndDropService.addDragSource(dragSource, true);\n this.addDestroyFunc(() => this.dragAndDropService.removeDragSource(dragSource));\n }\n createDragItem() {\n const colId = this.column.getColId();\n const visibleState = { [colId]: this.column.isVisible() };\n const pivotState = { [colId]: this.modelItemUtils.createPivotState(this.column) };\n return {\n columns: [this.column],\n visibleState,\n pivotState\n };\n }\n onColumnStateChanged() {\n this.processingColumnStateChange = true;\n const isPivotMode = this.columnModel.isPivotMode();\n if (isPivotMode) {\n // if reducing, checkbox means column is one of pivot, value or group\n const 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 let canBeToggled = true;\n let 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 const functionsReadOnly = this.gridOptionsService.is('functionsReadOnly');\n // b) column is not allow any functions on it\n const noFunctionsAllowed = !this.column.isAnyFunctionAllowed();\n canBeToggled = !functionsReadOnly && !noFunctionsAllowed;\n canBeDragged = canBeToggled;\n }\n else {\n const { enableRowGroup, enableValue, lockPosition, suppressMovable, lockVisible } = this.column.getColDef();\n const forceDraggable = !!enableRowGroup || !!enableValue;\n const 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 const checkboxPassive = isPivotMode && this.gridOptionsService.is('functionsPassive');\n this.cbSelect.setPassive(checkboxPassive);\n this.processingColumnStateChange = false;\n }\n getDisplayName() {\n return this.displayName;\n }\n onSelectAllChanged(value) {\n if (value !== this.cbSelect.getValue()) {\n if (!this.cbSelect.isReadOnly()) {\n this.cbSelect.toggle();\n }\n }\n }\n isSelected() {\n return this.cbSelect.getValue();\n }\n isSelectable() {\n return !this.cbSelect.isReadOnly();\n }\n isExpandable() {\n return false;\n }\n setExpanded(value) {\n console.warn('AG Grid: can not expand a column item that does not represent a column group header');\n }\n}\nToolPanelColumnComp.TEMPLATE = `
\n \n \n
`;\n__decorate$2v([\n Autowired('columnModel')\n], ToolPanelColumnComp.prototype, \"columnModel\", void 0);\n__decorate$2v([\n Autowired('dragAndDropService')\n], ToolPanelColumnComp.prototype, \"dragAndDropService\", void 0);\n__decorate$2v([\n Autowired('modelItemUtils')\n], ToolPanelColumnComp.prototype, \"modelItemUtils\", void 0);\n__decorate$2v([\n RefSelector('eLabel')\n], ToolPanelColumnComp.prototype, \"eLabel\", void 0);\n__decorate$2v([\n RefSelector('cbSelect')\n], ToolPanelColumnComp.prototype, \"cbSelect\", void 0);\n__decorate$2v([\n PostConstruct\n], ToolPanelColumnComp.prototype, \"init\", null);\n\nvar __decorate$2u = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass UIColumnModel {\n constructor(items) {\n this.items = items;\n }\n getRowCount() {\n return this.items.length;\n }\n getRow(index) {\n return this.items[index];\n }\n}\nconst PRIMARY_COLS_LIST_PANEL_CLASS = 'ag-column-select-list';\nclass PrimaryColsListPanel extends Component {\n constructor() {\n super(PrimaryColsListPanel.TEMPLATE);\n this.destroyColumnItemFuncs = [];\n }\n destroyColumnTree() {\n this.allColsTree = [];\n this.destroyColumnItemFuncs.forEach(f => f());\n this.destroyColumnItemFuncs = [];\n }\n init(params, allowDragging, eventType) {\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 const 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(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 const translate = this.localeService.getLocaleTextFunc();\n const 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((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.gridOptionsService.is('suppressMovableColumns')) {\n this.createManagedBean(new PrimaryColsListPanelItemDragFeature(this, this.virtualList));\n }\n }\n createComponentFromItem(item, listItemElement) {\n if (item.isGroup()) {\n const renderedGroup = new ToolPanelColumnGroupComp(item, this.allowDragging, this.eventType, listItemElement);\n this.getContext().createBean(renderedGroup);\n return renderedGroup;\n }\n const columnComp = new ToolPanelColumnComp(item, this.allowDragging, this.groupsExist, listItemElement);\n this.getContext().createBean(columnComp);\n return columnComp;\n }\n onColumnsChanged() {\n const expandedStates = this.getExpandedStates();\n const pivotModeActive = this.columnModel.isPivotMode();\n const 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 getDisplayedColsList() {\n return this.displayedColsList;\n }\n getExpandedStates() {\n if (!this.allColsTree) {\n return {};\n }\n const res = {};\n this.forEachItem(item => {\n if (!item.isGroup()) {\n return;\n }\n const 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 setExpandedStates(states) {\n if (!this.allColsTree) {\n return;\n }\n this.forEachItem(item => {\n if (!item.isGroup()) {\n return;\n }\n const colGroup = item.getColumnGroup();\n if (colGroup) { // group should always exist, this is defensive\n const expanded = states[colGroup.getId()];\n const groupExistedLastTime = expanded != null;\n if (groupExistedLastTime) {\n item.setExpanded(expanded);\n }\n }\n });\n }\n buildTreeFromWhatGridIsDisplaying() {\n this.colDefService.syncLayoutWithGrid(this.setColumnLayout.bind(this));\n }\n setColumnLayout(colDefs) {\n const 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(colDef => {\n return colDef && typeof colDef.children !== 'undefined';\n });\n this.markFilteredColumns();\n this.flattenAndFilterModel();\n }\n buildTreeFromProvidedColumnDefs() {\n // add column / group comps to tool panel\n this.buildListModel(this.columnModel.getPrimaryColumnTree());\n this.groupsExist = this.columnModel.isPrimaryColumnGroupsPresent();\n }\n buildListModel(columnTree) {\n const columnExpandedListener = this.onColumnExpanded.bind(this);\n const addListeners = (item) => {\n item.addEventListener(ColumnModelItem.EVENT_EXPANDED_CHANGED, columnExpandedListener);\n const removeFunc = item.removeEventListener.bind(item, ColumnModelItem.EVENT_EXPANDED_CHANGED, columnExpandedListener);\n this.destroyColumnItemFuncs.push(removeFunc);\n };\n const recursivelyBuild = (tree, dept, parentList) => {\n tree.forEach(child => {\n if (child instanceof ProvidedColumnGroup) {\n createGroupItem(child, dept, parentList);\n }\n else {\n createColumnItem(child, dept, parentList);\n }\n });\n };\n const createGroupItem = (columnGroup, dept, parentList) => {\n const columnGroupDef = columnGroup.getColGroupDef();\n const skipThisGroup = columnGroupDef && columnGroupDef.suppressColumnsToolPanel;\n if (skipThisGroup) {\n return;\n }\n if (columnGroup.isPadding()) {\n recursivelyBuild(columnGroup.getChildren(), dept, parentList);\n return;\n }\n const displayName = this.columnModel.getDisplayNameForProvidedColumnGroup(null, columnGroup, 'columnToolPanel');\n const 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 const createColumnItem = (column, dept, parentList) => {\n const skipThisColumn = column.getColDef() && column.getColDef().suppressColumnsToolPanel;\n if (skipThisColumn) {\n return;\n }\n const 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 onColumnExpanded() {\n this.flattenAndFilterModel();\n }\n flattenAndFilterModel() {\n this.displayedColsList = [];\n const recursiveFunc = (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 const focusedRow = this.virtualList.getLastFocusedRow();\n this.virtualList.refresh();\n if (focusedRow != null) {\n this.focusRowIfAlive(focusedRow);\n }\n this.notifyListeners();\n }\n focusRowIfAlive(rowIndex) {\n window.setTimeout(() => {\n if (this.isAlive()) {\n this.virtualList.focusRow(rowIndex);\n }\n }, 0);\n }\n forEachItem(callback) {\n const recursiveFunc = (items) => {\n items.forEach(item => {\n callback(item);\n if (item.isGroup()) {\n recursiveFunc(item.getChildren());\n }\n });\n };\n recursiveFunc(this.allColsTree);\n }\n doSetExpandedAll(value) {\n this.forEachItem(item => {\n if (item.isGroup()) {\n item.setExpanded(value);\n }\n });\n }\n setGroupsExpanded(expand, groupIds) {\n if (!groupIds) {\n this.doSetExpandedAll(expand);\n return;\n }\n const expandedGroupIds = [];\n this.forEachItem(item => {\n if (!item.isGroup()) {\n return;\n }\n const groupId = item.getColumnGroup().getId();\n if (groupIds.indexOf(groupId) >= 0) {\n item.setExpanded(expand);\n expandedGroupIds.push(groupId);\n }\n });\n const unrecognisedGroupIds = groupIds.filter(groupId => !_.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 getExpandState() {\n let expandedCount = 0;\n let notExpandedCount = 0;\n this.forEachItem(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 doSetSelectedAll(selectAllChecked) {\n this.modelItemUtils.selectAllChildren(this.allColsTree, selectAllChecked, this.eventType);\n }\n getSelectionState() {\n let checkedCount = 0;\n let uncheckedCount = 0;\n const pivotMode = this.columnModel.isPivotMode();\n this.forEachItem(item => {\n if (item.isGroup()) {\n return;\n }\n if (!item.isPassesFilter()) {\n return;\n }\n const column = item.getColumn();\n const colDef = column.getColDef();\n let checked;\n if (pivotMode) {\n const 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 setFilterText(filterText) {\n this.filterText = _.exists(filterText) ? filterText.toLowerCase() : null;\n this.markFilteredColumns();\n this.flattenAndFilterModel();\n }\n markFilteredColumns() {\n const passesFilter = (item) => {\n if (!_.exists(this.filterText)) {\n return true;\n }\n const displayName = item.getDisplayName();\n return displayName == null || displayName.toLowerCase().indexOf(this.filterText) !== -1;\n };\n const recursivelyCheckFilter = (item, parentPasses) => {\n let atLeastOneChildPassed = false;\n if (item.isGroup()) {\n const groupPasses = passesFilter(item);\n item.getChildren().forEach(child => {\n const childPasses = recursivelyCheckFilter(child, groupPasses || parentPasses);\n if (childPasses) {\n atLeastOneChildPassed = childPasses;\n }\n });\n }\n const filterPasses = (parentPasses || atLeastOneChildPassed) ? true : passesFilter(item);\n item.setPassesFilter(filterPasses);\n return filterPasses;\n };\n this.allColsTree.forEach(item => recursivelyCheckFilter(item, false));\n }\n notifyListeners() {\n this.fireGroupExpandedEvent();\n this.fireSelectionChangedEvent();\n }\n fireGroupExpandedEvent() {\n const expandState = this.getExpandState();\n this.dispatchEvent({ type: 'groupExpanded', state: expandState });\n }\n fireSelectionChangedEvent() {\n const selectionState = this.getSelectionState();\n this.dispatchEvent({ type: 'selectionChanged', state: selectionState });\n }\n}\nPrimaryColsListPanel.TEMPLATE = `
`;\n__decorate$2u([\n Autowired('columnModel')\n], PrimaryColsListPanel.prototype, \"columnModel\", void 0);\n__decorate$2u([\n Autowired('toolPanelColDefService')\n], PrimaryColsListPanel.prototype, \"colDefService\", void 0);\n__decorate$2u([\n Autowired('modelItemUtils')\n], PrimaryColsListPanel.prototype, \"modelItemUtils\", void 0);\n__decorate$2u([\n PreDestroy\n], PrimaryColsListPanel.prototype, \"destroyColumnTree\", null);\n\nvar __decorate$2t = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass PivotModePanel extends Component {\n createTemplate() {\n return /* html */ `
\n \n
`;\n }\n init() {\n this.setTemplate(this.createTemplate());\n this.cbPivotMode.setValue(this.columnModel.isPivotMode());\n const localeTextFunc = this.localeService.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 onBtPivotMode() {\n const newValue = !!this.cbPivotMode.getValue();\n if (newValue !== this.columnModel.isPivotMode()) {\n this.columnModel.setPivotMode(newValue, \"toolPanelUi\");\n const api = this.gridOptionsService.api;\n if (api) {\n api.refreshHeader();\n }\n }\n }\n onPivotModeChanged() {\n const pivotModeActive = this.columnModel.isPivotMode();\n this.cbPivotMode.setValue(pivotModeActive);\n }\n}\n__decorate$2t([\n Autowired('columnModel')\n], PivotModePanel.prototype, \"columnModel\", void 0);\n__decorate$2t([\n RefSelector('cbPivotMode')\n], PivotModePanel.prototype, \"cbPivotMode\", void 0);\n__decorate$2t([\n PreConstruct\n], PivotModePanel.prototype, \"init\", null);\n\nvar __decorate$2s = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet AggregationStage = class AggregationStage extends BeanStub {\n init() {\n this.alwaysAggregateAtRootLevel = this.gridOptionsService.is('alwaysAggregateAtRootLevel');\n this.addManagedPropertyListener('alwaysAggregateAtRootLevel', (propChange) => this.alwaysAggregateAtRootLevel = propChange.currentValue);\n this.groupIncludeTotalFooter = this.gridOptionsService.is('groupIncludeTotalFooter');\n this.addManagedPropertyListener('groupIncludeTotalFooter', (propChange) => this.groupIncludeTotalFooter = propChange.currentValue);\n }\n // it's possible to recompute the aggregate without doing the other parts\n // + api.refreshClientSideRowModel('aggregate')\n execute(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 const noValueColumns = _.missingOrEmpty(this.columnModel.getValueColumns());\n const noUserAgg = !this.gridOptionsService.getCallback('getGroupRowAgg');\n const changedPathActive = params.changedPath && params.changedPath.isActive();\n if (noValueColumns && noUserAgg && changedPathActive) {\n return;\n }\n const aggDetails = this.createAggDetails(params);\n this.recursivelyCreateAggData(aggDetails);\n }\n createAggDetails(params) {\n const pivotActive = this.columnModel.isPivotActive();\n const measureColumns = this.columnModel.getValueColumns();\n const pivotColumns = pivotActive ? this.columnModel.getPivotColumns() : [];\n const aggDetails = {\n changedPath: params.changedPath,\n valueColumns: measureColumns,\n pivotColumns: pivotColumns\n };\n return aggDetails;\n }\n isSuppressAggFilteredOnly() {\n const isGroupAggFiltering = this.gridOptionsService.getGroupAggFiltering() !== undefined;\n return isGroupAggFiltering || this.gridOptionsService.is('suppressAggFilteredOnly');\n }\n recursivelyCreateAggData(aggDetails) {\n // update prop, in case changed since last time\n this.filteredOnly = !this.isSuppressAggFilteredOnly();\n const callback = (rowNode) => {\n const 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 enable the aggregation at the root Node\n const isRootNode = rowNode.level === -1;\n // if total footer is displayed, the value is in use\n if (isRootNode && !this.groupIncludeTotalFooter) {\n const notPivoting = !this.columnModel.isPivotMode();\n if (!this.alwaysAggregateAtRootLevel && notPivoting) {\n return;\n }\n }\n this.aggregateRowNode(rowNode, aggDetails);\n };\n aggDetails.changedPath.forEachChangedNodeDepthFirst(callback, true);\n }\n aggregateRowNode(rowNode, aggDetails) {\n const measureColumnsMissing = aggDetails.valueColumns.length === 0;\n const pivotColumnsMissing = aggDetails.pivotColumns.length === 0;\n const userFunc = this.gridOptionsService.getCallback('getGroupRowAgg');\n let aggResult;\n if (userFunc) {\n const params = { nodes: rowNode.childrenAfterFilter };\n aggResult = userFunc(params);\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 aggregateRowNodeUsingValuesAndPivot(rowNode) {\n var _a;\n const result = {};\n const secondaryColumns = (_a = this.columnModel.getSecondaryColumns()) !== null && _a !== void 0 ? _a : [];\n secondaryColumns.forEach(secondaryCol => {\n const { pivotValueColumn, pivotTotalColumnIds, colId, pivotKeys } = secondaryCol.getColDef();\n if (_.exists(pivotTotalColumnIds)) {\n return;\n }\n const keys = pivotKeys !== null && pivotKeys !== void 0 ? pivotKeys : [];\n let values;\n if (rowNode.leafGroup) {\n // lowest level group, get the values from the mapped set\n values = this.getValuesFromMappedSet(rowNode.childrenMapped, keys, pivotValueColumn);\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, pivotValueColumn.getAggFunc(), pivotValueColumn, rowNode, secondaryCol);\n });\n secondaryColumns.forEach(secondaryCol => {\n const { pivotValueColumn, pivotTotalColumnIds, colId } = secondaryCol.getColDef();\n if (!_.exists(pivotTotalColumnIds)) {\n return;\n }\n const aggResults = [];\n //retrieve results for colIds associated with this pivot total column\n if (!pivotTotalColumnIds || !pivotTotalColumnIds.length) {\n return;\n }\n pivotTotalColumnIds.forEach((currentColId) => {\n aggResults.push(result[currentColId]);\n });\n result[colId] = this.aggregateValues(aggResults, pivotValueColumn.getAggFunc(), pivotValueColumn, rowNode, secondaryCol);\n });\n return result;\n }\n aggregateRowNodeUsingValuesOnly(rowNode, aggDetails) {\n const result = {};\n const changedValueColumns = aggDetails.changedPath.isActive() ?\n aggDetails.changedPath.getValueColumnsForNode(rowNode, aggDetails.valueColumns)\n : aggDetails.valueColumns;\n const notChangedValueColumns = aggDetails.changedPath.isActive() ?\n aggDetails.changedPath.getNotValueColumnsForNode(rowNode, aggDetails.valueColumns)\n : null;\n const values2d = this.getValuesNormal(rowNode, changedValueColumns);\n const oldValues = rowNode.aggData;\n changedValueColumns.forEach((valueColumn, index) => {\n result[valueColumn.getId()] = this.aggregateValues(values2d[index], valueColumn.getAggFunc(), valueColumn, rowNode);\n });\n if (notChangedValueColumns && oldValues) {\n notChangedValueColumns.forEach((valueColumn) => {\n result[valueColumn.getId()] = oldValues[valueColumn.getId()];\n });\n }\n return result;\n }\n getValuesPivotNonLeaf(rowNode, colId) {\n const values = [];\n rowNode.childrenAfterFilter.forEach((node) => {\n const value = node.aggData[colId];\n values.push(value);\n });\n return values;\n }\n getValuesFromMappedSet(mappedSet, keys, valueColumn) {\n let mapPointer = mappedSet;\n keys.forEach(key => (mapPointer = mapPointer ? mapPointer[key] : null));\n if (!mapPointer) {\n return [];\n }\n const values = [];\n mapPointer.forEach((rowNode) => {\n const value = this.valueService.getValue(valueColumn, rowNode);\n values.push(value);\n });\n return values;\n }\n getValuesNormal(rowNode, valueColumns) {\n // create 2d array, of all values for all valueColumns\n const values = [];\n valueColumns.forEach(() => values.push([]));\n const valueColumnCount = valueColumns.length;\n const nodeList = this.filteredOnly ? rowNode.childrenAfterFilter : rowNode.childrenAfterGroup;\n const rowCount = nodeList.length;\n for (let i = 0; i < rowCount; i++) {\n const childNode = nodeList[i];\n for (let j = 0; j < valueColumnCount; j++) {\n const 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 const value = this.valueService.getValue(valueColumn, childNode);\n values[j].push(value);\n }\n }\n return values;\n }\n aggregateValues(values, aggFuncOrString, column, rowNode, pivotResultColumn) {\n const 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 const aggFuncAny = aggFunc;\n const params = {\n values: values,\n column: column,\n colDef: column ? column.getColDef() : undefined,\n pivotResultColumn: pivotResultColumn,\n rowNode: rowNode,\n data: rowNode ? rowNode.data : undefined,\n api: this.gridApi,\n columnApi: this.columnApi,\n context: this.gridOptionsService.context,\n }; // the \"as any\" is needed to allow the deprecation warning messages\n return aggFuncAny(params);\n }\n};\n__decorate$2s([\n Autowired('columnModel')\n], AggregationStage.prototype, \"columnModel\", void 0);\n__decorate$2s([\n Autowired('valueService')\n], AggregationStage.prototype, \"valueService\", void 0);\n__decorate$2s([\n Autowired('aggFuncService')\n], AggregationStage.prototype, \"aggFuncService\", void 0);\n__decorate$2s([\n Autowired('gridApi')\n], AggregationStage.prototype, \"gridApi\", void 0);\n__decorate$2s([\n Autowired('columnApi')\n], AggregationStage.prototype, \"columnApi\", void 0);\n__decorate$2s([\n PostConstruct\n], AggregationStage.prototype, \"init\", null);\nAggregationStage = __decorate$2s([\n Bean('aggregationStage')\n], AggregationStage);\n\nclass BatchRemover {\n constructor() {\n this.allSets = {};\n this.allParents = [];\n }\n removeFromChildrenAfterGroup(parent, child) {\n const set = this.getSet(parent);\n set.removeFromChildrenAfterGroup[child.id] = true;\n }\n isRemoveFromAllLeafChildren(parent, child) {\n const set = this.getSet(parent);\n return !!set.removeFromAllLeafChildren[child.id];\n }\n preventRemoveFromAllLeafChildren(parent, child) {\n const set = this.getSet(parent);\n delete set.removeFromAllLeafChildren[child.id];\n }\n removeFromAllLeafChildren(parent, child) {\n const set = this.getSet(parent);\n set.removeFromAllLeafChildren[child.id] = true;\n }\n getSet(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 getAllParents() {\n return this.allParents;\n }\n flush() {\n this.allParents.forEach(parent => {\n const nodeDetails = this.allSets[parent.id];\n parent.childrenAfterGroup = parent.childrenAfterGroup.filter(child => !nodeDetails.removeFromChildrenAfterGroup[child.id]);\n parent.allLeafChildren = parent.allLeafChildren.filter(child => !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}\n\nvar __decorate$2r = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet GroupStage = class GroupStage extends BeanStub {\n constructor() {\n super(...arguments);\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 }\n postConstruct() {\n this.usingTreeData = this.gridOptionsService.isTreeData();\n if (this.usingTreeData) {\n this.getDataPath = this.gridOptionsService.get('getDataPath');\n }\n }\n execute(params) {\n const details = this.createGroupingDetails(params);\n if (details.transactions) {\n this.handleTransaction(details);\n }\n else {\n const afterColsChanged = params.afterColumnsChanged === true;\n this.shotgunResetEverything(details, afterColsChanged);\n }\n this.positionLeafsAndGroups(params.changedPath);\n this.orderGroups(details.rootNode);\n this.selectableService.updateSelectableAfterGrouping(details.rootNode);\n }\n positionLeafsAndGroups(changedPath) {\n // we don't do group sorting for tree data\n if (this.usingTreeData) {\n return;\n }\n changedPath.forEachChangedNodeDepthFirst(group => {\n if (group.childrenAfterGroup) {\n const leafNodes = [];\n const groupNodes = [];\n let unbalancedNode;\n group.childrenAfterGroup.forEach(row => {\n var _a;\n if (!((_a = row.childrenAfterGroup) === null || _a === void 0 ? void 0 : _a.length)) {\n leafNodes.push(row);\n }\n else {\n if (row.key === '' && !unbalancedNode) {\n unbalancedNode = row;\n }\n else {\n groupNodes.push(row);\n }\n }\n });\n if (unbalancedNode) {\n groupNodes.push(unbalancedNode);\n }\n group.childrenAfterGroup = [...leafNodes, ...groupNodes];\n }\n }, false);\n }\n createGroupingDetails(params) {\n const { rowNode, changedPath, rowNodeTransactions, rowNodeOrder } = params;\n const groupedCols = this.usingTreeData ? null : this.columnModel.getRowGroupColumns();\n const 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.gridOptionsService.is('suppressParentsInRowNodes'),\n expandByDefault: this.gridOptionsService.getNum('groupDefaultExpanded'),\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 handleTransaction(details) {\n details.transactions.forEach(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 const 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 const 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 sortChildren(details) {\n details.changedPath.forEachChangedNodeDepthFirst(node => {\n if (!node.childrenAfterGroup) {\n return;\n }\n const didSort = _.sortRowNodesByOrder(node.childrenAfterGroup, details.rowNodeOrder);\n if (didSort) {\n details.changedPath.addParentNode(node);\n }\n }, false, true);\n }\n orderGroups(rootNode) {\n // we don't do group sorting for tree data\n if (this.usingTreeData) {\n return;\n }\n const comparator = this.gridOptionsService.getCallback('initialGroupOrderComparator');\n if (_.exists(comparator)) {\n recursiveSort(rootNode);\n }\n function recursiveSort(rowNode) {\n const 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((nodeA, nodeB) => comparator({ nodeA, nodeB }));\n rowNode.childrenAfterGroup.forEach((childNode) => recursiveSort(childNode));\n }\n }\n }\n getExistingPathForNode(node, details) {\n const 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 let 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 moveNodesInWrongPath(childNodes, details, batchRemover) {\n childNodes.forEach(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 const infoToKeyMapper = (item) => item.key;\n const oldPath = this.getExistingPathForNode(childNode, details).map(infoToKeyMapper);\n const newPath = this.getGroupInfo(childNode, details).map(infoToKeyMapper);\n const nodeInCorrectPath = _.areEqual(oldPath, newPath);\n if (!nodeInCorrectPath) {\n this.moveNode(childNode, details, batchRemover);\n }\n });\n }\n moveNode(childNode, details, batchRemover) {\n this.removeNodesInStages([childNode], details, batchRemover);\n this.insertOneNode(childNode, details, true, batchRemover);\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 const newParent = childNode.parent;\n details.changedPath.addParentNode(newParent);\n }\n }\n removeNodes(leafRowNodes, details, batchRemover) {\n this.removeNodesInStages(leafRowNodes, details, batchRemover);\n if (details.changedPath.isActive()) {\n leafRowNodes.forEach(rowNode => details.changedPath.addParentNode(rowNode.parent));\n }\n }\n removeNodesInStages(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 const nodeParents = leafRowNodes.map(n => n.parent);\n this.removeEmptyGroups(nodeParents, details);\n }\n }\n forEachParentGroup(details, group, callback) {\n let pointer = group;\n while (pointer && pointer !== details.rootNode) {\n callback(pointer);\n pointer = pointer.parent;\n }\n }\n removeNodesFromParents(nodesToRemove, details, provided) {\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 const batchRemoverIsLocal = provided == null;\n const batchRemoverToUse = provided ? provided : new BatchRemover();\n nodesToRemove.forEach(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, parentNode => {\n batchRemoverToUse.removeFromAllLeafChildren(parentNode, nodeToRemove);\n });\n });\n if (batchRemoverIsLocal) {\n batchRemoverToUse.flush();\n }\n }\n postRemoveCreateFillerNodes(nodesToRemove, details) {\n nodesToRemove.forEach(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 const replaceWithGroup = nodeToRemove.hasChildren();\n if (replaceWithGroup) {\n const oldPath = this.getExistingPathForNode(nodeToRemove, details);\n // because we just removed the userGroup, this will always return new support group\n const newGroupNode = 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.expanded = nodeToRemove.expanded;\n newGroupNode.allLeafChildren = nodeToRemove.allLeafChildren;\n newGroupNode.childrenAfterGroup = nodeToRemove.childrenAfterGroup;\n newGroupNode.childrenMapped = nodeToRemove.childrenMapped;\n newGroupNode.updateHasChildren();\n newGroupNode.childrenAfterGroup.forEach(rowNode => rowNode.parent = newGroupNode);\n }\n });\n }\n removeEmptyGroups(possibleEmptyGroups, details) {\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 let checkAgain = true;\n const groupShouldBeRemoved = (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 const mapKey = this.getChildrenMappedKey(rowNode.key, rowNode.rowGroupColumn);\n const parentRowNode = rowNode.parent;\n const 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 while (checkAgain) {\n checkAgain = false;\n const batchRemover = new BatchRemover();\n possibleEmptyGroups.forEach(possibleEmptyGroup => {\n // remove empty groups\n this.forEachParentGroup(details, possibleEmptyGroup, 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.setSelectedParams({ newValue: false, source: 'rowGroupChanged' });\n }\n });\n });\n batchRemover.flush();\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 removeFromParent(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 const 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 addToParent(child, parent) {\n const mapKey = this.getChildrenMappedKey(child.key, child.rowGroupColumn);\n if (parent) {\n const children = parent.childrenMapped != null;\n if (children) {\n parent.childrenMapped[mapKey] = child;\n }\n parent.childrenAfterGroup.push(child);\n parent.updateHasChildren();\n }\n }\n areGroupColsEqual(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 checkAllGroupDataAfterColsChanged(details) {\n const recurse = (rowNodes) => {\n if (!rowNodes) {\n return;\n }\n rowNodes.forEach(rowNode => {\n const isLeafNode = !this.usingTreeData && !rowNode.group;\n if (isLeafNode) {\n return;\n }\n const 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 shotgunResetEverything(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.filterFromSelection((node) => node && !node.group);\n const { rootNode, groupedCols } = details;\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 const 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 noChangeInGroupingColumns(details, afterColumnsChanged) {\n let noFurtherProcessingNeeded = false;\n const groupDisplayColumns = this.columnModel.getGroupDisplayColumns();\n const newGroupDisplayColIds = groupDisplayColumns ?\n groupDisplayColumns.map(c => 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 insertNodes(newRowNodes, details, isMove) {\n newRowNodes.forEach(rowNode => {\n this.insertOneNode(rowNode, details, isMove);\n if (details.changedPath.isActive()) {\n details.changedPath.addParentNode(rowNode.parent);\n }\n });\n }\n insertOneNode(childNode, details, isMove, batchRemover) {\n const path = this.getGroupInfo(childNode, details);\n const parentGroup = this.findParentForNode(childNode, path, details, batchRemover);\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 findParentForNode(childNode, path, details, batchRemover) {\n let nextNode = details.rootNode;\n path.forEach((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 if (!(batchRemover === null || batchRemover === void 0 ? void 0 : batchRemover.isRemoveFromAllLeafChildren(nextNode, childNode))) {\n nextNode.allLeafChildren.push(childNode);\n }\n else {\n // if this node is about to be removed, prevent that\n batchRemover === null || batchRemover === void 0 ? void 0 : batchRemover.preventRemoveFromAllLeafChildren(nextNode, childNode);\n }\n });\n return nextNode;\n }\n swapGroupWithUserNode(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.sibling = fillerGroup.sibling;\n userGroup.updateHasChildren();\n this.removeFromParent(fillerGroup);\n userGroup.childrenAfterGroup.forEach((rowNode) => rowNode.parent = userGroup);\n this.addToParent(userGroup, fillerGroup.parent);\n }\n getOrCreateNextNode(parentGroup, groupInfo, level, details) {\n const key = this.getChildrenMappedKey(groupInfo.key, groupInfo.rowGroupColumn);\n let 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 createGroup(groupInfo, parent, level, details) {\n const 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 if (this.gridOptionsService.is('groupIncludeFooter')) {\n groupNode.createFooter();\n }\n return groupNode;\n }\n setGroupData(groupNode, groupInfo) {\n groupNode.groupData = {};\n const groupDisplayCols = this.columnModel.getGroupDisplayColumns();\n groupDisplayCols.forEach(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 const 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 getChildrenMappedKey(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 setExpandedInitialValue(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 const userCallback = this.gridOptionsService.getCallback('isGroupOpenByDefault');\n if (userCallback) {\n const 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 const { expandByDefault } = details;\n if (details.expandByDefault === -1) {\n groupNode.expanded = true;\n return;\n }\n // otherwise\n groupNode.expanded = groupNode.level < expandByDefault;\n }\n getGroupInfo(rowNode, details) {\n if (this.usingTreeData) {\n return this.getGroupInfoFromCallback(rowNode);\n }\n return this.getGroupInfoFromGroupColumns(rowNode, details);\n }\n getGroupInfoFromCallback(rowNode) {\n const keys = this.getDataPath ? this.getDataPath(rowNode.data) : null;\n if (keys === null || keys === undefined || keys.length === 0) {\n _.doOnce(() => console.warn(`AG Grid: getDataPath() should not return an empty path for data`, rowNode.data), 'groupStage.getGroupInfoFromCallback');\n }\n const groupInfoMapper = (key) => ({ key, field: null, rowGroupColumn: null });\n return keys ? keys.map(groupInfoMapper) : [];\n }\n getGroupInfoFromGroupColumns(rowNode, details) {\n const res = [];\n details.groupedCols.forEach(groupCol => {\n let key = this.valueService.getKeyForNode(groupCol, rowNode);\n let keyExists = key !== null && key !== undefined && key !== '';\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 const createGroupForEmpty = details.pivotMode || !this.gridOptionsService.is('groupAllowUnbalanced');\n if (createGroupForEmpty && !keyExists) {\n key = '';\n keyExists = true;\n }\n if (keyExists) {\n const item = {\n key: key,\n field: groupCol.getColDef().field,\n rowGroupColumn: groupCol\n };\n res.push(item);\n }\n });\n return res;\n }\n};\n__decorate$2r([\n Autowired('columnModel')\n], GroupStage.prototype, \"columnModel\", void 0);\n__decorate$2r([\n Autowired('selectableService')\n], GroupStage.prototype, \"selectableService\", void 0);\n__decorate$2r([\n Autowired('valueService')\n], GroupStage.prototype, \"valueService\", void 0);\n__decorate$2r([\n Autowired('beans')\n], GroupStage.prototype, \"beans\", void 0);\n__decorate$2r([\n Autowired('selectionService')\n], GroupStage.prototype, \"selectionService\", void 0);\n__decorate$2r([\n PostConstruct\n], GroupStage.prototype, \"postConstruct\", null);\nGroupStage = __decorate$2r([\n Bean('groupStage')\n], GroupStage);\n\nvar __decorate$2q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 PivotColDefService_1;\nlet PivotColDefService = PivotColDefService_1 = class PivotColDefService extends BeanStub {\n createPivotColumnDefs(uniqueValues) {\n // this is passed to the columnModel, to configure the columns and groups we show\n const pivotColumns = this.columnModel.getPivotColumns();\n const valueColumns = this.columnModel.getValueColumns();\n const levelsDeep = pivotColumns.length;\n const pivotColumnGroupDefs = this.recursiveBuildGroup(0, uniqueValues, [], levelsDeep, pivotColumns);\n function extractColDefs(input, arr = []) {\n input.forEach((def) => {\n if (def.children !== undefined) {\n extractColDefs(def.children, arr);\n }\n else {\n arr.push(def);\n }\n });\n return arr;\n }\n const pivotColumnDefs = extractColDefs(pivotColumnGroupDefs);\n // additional columns that contain the aggregated total for each value column per row\n this.addRowGroupTotals(pivotColumnGroupDefs, pivotColumnDefs, valueColumns);\n // additional group columns that contain child totals for each collapsed child column / group\n this.addExpandablePivotGroups(pivotColumnGroupDefs, pivotColumnDefs);\n // additional group columns that contain an aggregated total across all child columns\n this.addPivotTotalsToGroups(pivotColumnGroupDefs, pivotColumnDefs);\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 const pivotColumnDefsClone = pivotColumnDefs.map(colDef => _.cloneObject(colDef));\n return {\n pivotColumnGroupDefs: pivotColumnGroupDefs,\n pivotColumnDefs: pivotColumnDefsClone\n };\n }\n recursiveBuildGroup(index, uniqueValue, pivotKeys, maxDepth, primaryPivotColumns) {\n const measureColumns = this.columnModel.getValueColumns();\n if (index >= maxDepth) { // Base case - build the measure columns\n return this.buildMeasureCols(pivotKeys);\n }\n // sort by either user provided comparator, or our own one\n const primaryPivotColumnDefs = primaryPivotColumns[index].getColDef();\n const comparator = this.headerNameComparator.bind(this, primaryPivotColumnDefs.pivotComparator);\n // Base case for the compact layout, instead of recursing build the last layer of groups as measure columns instead\n if (measureColumns.length === 1 && this.gridOptionsService.is('removePivotHeaderRowWhenSingleValueColumn') && index === maxDepth - 1) {\n const leafCols = [];\n _.iterateObject(uniqueValue, (key) => {\n const newPivotKeys = [...pivotKeys, key];\n leafCols.push(Object.assign(Object.assign({}, this.createColDef(measureColumns[0], key, newPivotKeys)), { columnGroupShow: 'open' }));\n });\n leafCols.sort(comparator);\n return leafCols;\n }\n // Recursive case\n const groups = [];\n _.iterateObject(uniqueValue, (key, value) => {\n const newPivotKeys = [...pivotKeys, key];\n groups.push({\n children: this.recursiveBuildGroup(index + 1, value, newPivotKeys, maxDepth, primaryPivotColumns),\n headerName: key,\n pivotKeys: newPivotKeys,\n columnGroupShow: 'open',\n groupId: this.generateColumnGroupId(newPivotKeys),\n });\n });\n groups.sort(comparator);\n return groups;\n }\n buildMeasureCols(pivotKeys) {\n const measureColumns = this.columnModel.getValueColumns();\n if (measureColumns.length === 0) {\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 return [this.createColDef(null, '-', pivotKeys)];\n }\n return measureColumns.map((measureCol) => {\n const columnName = this.columnModel.getDisplayNameForColumn(measureCol, 'header');\n return Object.assign(Object.assign({}, this.createColDef(measureCol, columnName, pivotKeys)), { columnGroupShow: 'open' });\n });\n }\n ;\n addExpandablePivotGroups(pivotColumnGroupDefs, pivotColumnDefs) {\n if (this.gridOptionsService.is('suppressExpandablePivotGroups') ||\n this.gridOptionsService.get('pivotColumnGroupTotals')) {\n return;\n }\n const recursivelyAddSubTotals = (groupDef, currentPivotColumnDefs, acc) => {\n const group = groupDef;\n if (group.children) {\n const childAcc = new Map();\n group.children.forEach((grp) => {\n recursivelyAddSubTotals(grp, currentPivotColumnDefs, childAcc);\n });\n const firstGroup = !group.children.some(child => child.children);\n this.columnModel.getValueColumns().forEach(valueColumn => {\n const columnName = this.columnModel.getDisplayNameForColumn(valueColumn, 'header');\n const totalColDef = this.createColDef(valueColumn, columnName, groupDef.pivotKeys);\n totalColDef.pivotTotalColumnIds = childAcc.get(valueColumn.getColId());\n totalColDef.columnGroupShow = 'closed';\n totalColDef.aggFunc = valueColumn.getAggFunc();\n if (!firstGroup) {\n // add total colDef to group and pivot colDefs array\n const children = groupDef.children;\n children.push(totalColDef);\n currentPivotColumnDefs.push(totalColDef);\n }\n });\n this.merge(acc, childAcc);\n }\n else {\n const def = groupDef;\n // check that value column exists, i.e. aggFunc is supplied\n if (!def.pivotValueColumn) {\n return;\n }\n const pivotValueColId = def.pivotValueColumn.getColId();\n const arr = acc.has(pivotValueColId) ? acc.get(pivotValueColId) : [];\n arr.push(def.colId);\n acc.set(pivotValueColId, arr);\n }\n };\n pivotColumnGroupDefs.forEach((groupDef) => {\n recursivelyAddSubTotals(groupDef, pivotColumnDefs, new Map());\n });\n }\n addPivotTotalsToGroups(pivotColumnGroupDefs, pivotColumnDefs) {\n if (!this.gridOptionsService.get('pivotColumnGroupTotals')) {\n return;\n }\n const insertAfter = this.gridOptionsService.get('pivotColumnGroupTotals') === 'after';\n const valueCols = this.columnModel.getValueColumns();\n const aggFuncs = valueCols.map(valueCol => 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 const valueColumn = valueCols[0];\n pivotColumnGroupDefs.forEach((groupDef) => {\n this.recursivelyAddPivotTotal(groupDef, pivotColumnDefs, valueColumn, insertAfter);\n });\n }\n recursivelyAddPivotTotal(groupDef, pivotColumnDefs, valueColumn, insertAfter) {\n const group = groupDef;\n if (!group.children) {\n const def = groupDef;\n return def.colId ? [def.colId] : null;\n }\n let colIds = [];\n // need to recurse children first to obtain colIds used in the aggregation stage\n group.children\n .forEach((grp) => {\n const childColIds = this.recursivelyAddPivotTotal(grp, pivotColumnDefs, 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 const localeTextFunc = this.localeService.getLocaleTextFunc();\n const headerName = localeTextFunc('pivotColumnGroupTotals', 'Total');\n //create total colDef using an arbitrary value column as a template\n const totalColDef = this.createColDef(valueColumn, headerName, groupDef.pivotKeys, true);\n totalColDef.pivotTotalColumnIds = colIds;\n totalColDef.aggFunc = valueColumn.getAggFunc();\n // add total colDef to group and pivot colDefs array\n const children = groupDef.children;\n insertAfter ? children.push(totalColDef) : children.unshift(totalColDef);\n pivotColumnDefs.push(totalColDef);\n }\n return colIds;\n }\n addRowGroupTotals(pivotColumnGroupDefs, pivotColumnDefs, valueColumns) {\n if (!this.gridOptionsService.get('pivotRowTotals')) {\n return;\n }\n const insertAfter = this.gridOptionsService.get('pivotRowTotals') === 'after';\n // order of row group totals depends on position\n const valueCols = insertAfter ? valueColumns.slice() : valueColumns.slice().reverse();\n for (let i = 0; i < valueCols.length; i++) {\n const valueCol = valueCols[i];\n let colIds = [];\n pivotColumnGroupDefs.forEach((groupDef) => {\n colIds = colIds.concat(this.extractColIdsForValueColumn(groupDef, valueCol));\n });\n const withGroup = valueCols.length > 1 || !this.gridOptionsService.is('removePivotHeaderRowWhenSingleValueColumn');\n this.createRowGroupTotal(pivotColumnGroupDefs, pivotColumnDefs, valueCol, colIds, insertAfter, withGroup);\n }\n }\n extractColIdsForValueColumn(groupDef, valueColumn) {\n const group = groupDef;\n if (!group.children) {\n const colDef = group;\n return colDef.pivotValueColumn === valueColumn && colDef.colId ? [colDef.colId] : [];\n }\n let colIds = [];\n group.children\n .forEach((grp) => {\n this.extractColIdsForValueColumn(grp, valueColumn);\n const childColIds = this.extractColIdsForValueColumn(grp, valueColumn);\n colIds = colIds.concat(childColIds);\n });\n return colIds;\n }\n createRowGroupTotal(parentChildren, pivotColumnDefs, valueColumn, colIds, insertAfter, addGroup) {\n const measureColumns = this.columnModel.getValueColumns();\n let colDef;\n if (measureColumns.length === 0) {\n colDef = this.createColDef(null, '-', []);\n }\n else {\n const columnName = this.columnModel.getDisplayNameForColumn(valueColumn, 'header');\n colDef = this.createColDef(valueColumn, columnName, []);\n colDef.pivotTotalColumnIds = colIds;\n }\n colDef.colId = PivotColDefService_1.PIVOT_ROW_TOTAL_PREFIX + colDef.colId;\n pivotColumnDefs.push(colDef);\n const valueGroup = addGroup ? {\n children: [colDef],\n pivotKeys: [],\n groupId: `${PivotColDefService_1.PIVOT_ROW_TOTAL_PREFIX}_pivotGroup_${valueColumn.getColId()}`,\n } : colDef;\n insertAfter ? parentChildren.push(valueGroup) : parentChildren.unshift(valueGroup);\n }\n createColDef(valueColumn, headerName, pivotKeys, totalColumn = false) {\n const colDef = {};\n // This is null when there are no measure columns and we're creating placeholder columns\n if (valueColumn) {\n const 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 = this.generateColumnId(pivotKeys || [], valueColumn && !totalColumn ? valueColumn.getColId() : '');\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 // this is to support using pinned rows, normally the data will be extracted from the aggData object using the colId\n // however pinned rows still access the data object by field, this prevents values with dots from being treated as complex objects\n colDef.valueGetter = (params) => { var _a; return (_a = params.data) === null || _a === void 0 ? void 0 : _a[params.colDef.field]; };\n colDef.pivotKeys = pivotKeys;\n colDef.pivotValueColumn = valueColumn;\n if (colDef.filter === true) {\n colDef.filter = 'agNumberColumnFilter';\n }\n return colDef;\n }\n sameAggFuncs(aggFuncs) {\n if (aggFuncs.length == 1) {\n return true;\n }\n //check if all aggFunc's match\n for (let i = 1; i < aggFuncs.length; i++) {\n if (aggFuncs[i] !== aggFuncs[0]) {\n return false;\n }\n }\n return true;\n }\n headerNameComparator(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 merge(m1, m2) {\n m2.forEach((value, key, map) => {\n const existingList = m1.has(key) ? m1.get(key) : [];\n const updatedList = [...existingList, ...value];\n m1.set(key, updatedList);\n });\n }\n generateColumnGroupId(pivotKeys) {\n const pivotCols = this.columnModel.getPivotColumns().map((col) => col.getColId());\n return `pivotGroup_${pivotCols.join('-')}_${pivotKeys.join('-')}`;\n }\n generateColumnId(pivotKeys, measureColumnId) {\n const pivotCols = this.columnModel.getPivotColumns().map((col) => col.getColId());\n return `pivot_${pivotCols.join('-')}_${pivotKeys.join('-')}_${measureColumnId}`;\n }\n};\nPivotColDefService.PIVOT_ROW_TOTAL_PREFIX = 'PivotRowTotal_';\n__decorate$2q([\n Autowired('columnModel')\n], PivotColDefService.prototype, \"columnModel\", void 0);\nPivotColDefService = PivotColDefService_1 = __decorate$2q([\n Bean('pivotColDefService')\n], PivotColDefService);\n\nvar __decorate$2p = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet PivotStage = class PivotStage extends BeanStub {\n constructor() {\n super(...arguments);\n this.uniqueValues = {};\n }\n execute(params) {\n const changedPath = params.changedPath;\n if (this.columnModel.isPivotActive()) {\n this.executePivotOn(changedPath);\n }\n else {\n this.executePivotOff(changedPath);\n }\n }\n executePivotOff(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 executePivotOn(changedPath) {\n const uniqueValues = this.bucketUpRowNodes(changedPath);\n const uniqueValuesChanged = this.setUniqueValues(uniqueValues);\n const aggregationColumns = this.columnModel.getValueColumns();\n const aggregationColumnsHash = aggregationColumns.map((column) => `${column.getId()}-${column.getColDef().headerName}`).join('#');\n const aggregationFuncsHash = aggregationColumns.map((column) => column.getAggFunc().toString()).join('#');\n const aggregationColumnsChanged = this.aggregationColumnsHashLastTime !== aggregationColumnsHash;\n const aggregationFuncsChanged = this.aggregationFuncsHashLastTime !== aggregationFuncsHash;\n this.aggregationColumnsHashLastTime = aggregationColumnsHash;\n this.aggregationFuncsHashLastTime = aggregationFuncsHash;\n const groupColumnsHash = this.columnModel.getRowGroupColumns().map((column) => column.getId()).join('#');\n const groupColumnsChanged = groupColumnsHash !== this.groupColumnsHashLastTime;\n this.groupColumnsHashLastTime = groupColumnsHash;\n if (uniqueValuesChanged || aggregationColumnsChanged || groupColumnsChanged || aggregationFuncsChanged) {\n const { pivotColumnGroupDefs, pivotColumnDefs } = this.pivotColDefService.createPivotColumnDefs(this.uniqueValues);\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 setUniqueValues(newValues) {\n const json1 = JSON.stringify(newValues);\n const json2 = JSON.stringify(this.uniqueValues);\n const 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 bucketUpRowNodes(changedPath) {\n // accessed from inside inner function\n const uniqueValues = {};\n // ensure childrenMapped is cleared, as if a node has been filtered out it should not have mapped children.\n changedPath.forEachChangedNodeDepthFirst(node => {\n if (node.leafGroup) {\n node.childrenMapped = null;\n }\n });\n const recursivelyBucketFilteredChildren = (node) => {\n var _a;\n if (node.leafGroup) {\n this.bucketRowNode(node, uniqueValues);\n }\n else {\n (_a = node.childrenAfterFilter) === null || _a === void 0 ? void 0 : _a.forEach(recursivelyBucketFilteredChildren);\n }\n };\n changedPath.executeFromRootNode(recursivelyBucketFilteredChildren);\n return uniqueValues;\n }\n bucketRowNode(rowNode, uniqueValues) {\n const 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 bucketChildren(children, pivotColumns, pivotIndex, uniqueValues) {\n const mappedChildren = {};\n const pivotColumn = pivotColumns[pivotIndex];\n // map the children out based on the pivot column\n children.forEach((child) => {\n let 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 const result = {};\n _.iterateObject(mappedChildren, (key, value) => {\n result[key] = this.bucketChildren(value, pivotColumns, pivotIndex + 1, uniqueValues[key]);\n });\n return result;\n }\n }\n getPivotColumnDefs() {\n return this.pivotColumnDefs;\n }\n};\n__decorate$2p([\n Autowired('valueService')\n], PivotStage.prototype, \"valueService\", void 0);\n__decorate$2p([\n Autowired('columnModel')\n], PivotStage.prototype, \"columnModel\", void 0);\n__decorate$2p([\n Autowired('pivotColDefService')\n], PivotStage.prototype, \"pivotColDefService\", void 0);\nPivotStage = __decorate$2p([\n Bean('pivotStage')\n], PivotStage);\n\nvar __decorate$2o = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 AggFuncService_1;\n// @ts-ignore\nconst AGBigInt = typeof BigInt === 'undefined' ? null : BigInt;\nlet AggFuncService = AggFuncService_1 = class AggFuncService extends BeanStub {\n constructor() {\n super(...arguments);\n this.aggFuncsMap = {};\n this.initialised = false;\n }\n init() {\n if (this.initialised) {\n return;\n }\n this.initialiseWithDefaultAggregations();\n this.addAggFuncs(this.gridOptionsService.get('aggFuncs'));\n }\n initialiseWithDefaultAggregations() {\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 isAggFuncPossible(column, func) {\n const allKeys = this.getFuncNames(column);\n const allowed = _.includes(allKeys, func);\n const funcExists = _.exists(this.aggFuncsMap[func]);\n return allowed && funcExists;\n }\n getDefaultAggFunc(column) {\n const defaultAgg = column.getColDef().defaultAggFunc;\n if (_.exists(defaultAgg) && this.isAggFuncPossible(column, defaultAgg)) {\n return defaultAgg;\n }\n if (this.isAggFuncPossible(column, AggFuncService_1.AGG_SUM)) {\n return AggFuncService_1.AGG_SUM;\n }\n const allKeys = this.getFuncNames(column);\n return _.existsAndNotEmpty(allKeys) ? allKeys[0] : null;\n }\n addAggFuncs(aggFuncs) {\n _.iterateObject(aggFuncs, this.addAggFunc.bind(this));\n }\n addAggFunc(key, aggFunc) {\n this.init();\n this.aggFuncsMap[key] = aggFunc;\n }\n getAggFunc(name) {\n this.init();\n return this.aggFuncsMap[name];\n }\n getFuncNames(column) {\n const userAllowedFuncs = column.getColDef().allowedAggFuncs;\n return userAllowedFuncs == null ? Object.keys(this.aggFuncsMap).sort() : userAllowedFuncs;\n }\n clear() {\n this.aggFuncsMap = {};\n }\n};\nAggFuncService.AGG_SUM = 'sum';\nAggFuncService.AGG_FIRST = 'first';\nAggFuncService.AGG_LAST = 'last';\nAggFuncService.AGG_MIN = 'min';\nAggFuncService.AGG_MAX = 'max';\nAggFuncService.AGG_COUNT = 'count';\nAggFuncService.AGG_AVG = 'avg';\n__decorate$2o([\n PostConstruct\n], AggFuncService.prototype, \"init\", null);\nAggFuncService = AggFuncService_1 = __decorate$2o([\n Bean('aggFuncService')\n], AggFuncService);\nfunction aggSum(params) {\n const { values } = params;\n let 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 (let i = 0; i < values.length; i++) {\n const 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 const { values } = params;\n let result = null;\n // for optimum performance, we use a for loop here rather than calling any helper methods or using functional code\n for (let i = 0; i < values.length; i++) {\n const 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 const { values } = params;\n let result = null;\n // for optimum performance, we use a for loop here rather than calling any helper methods or using functional code\n for (let i = 0; i < values.length; i++) {\n const 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 _a, _b;\n const { values } = params;\n let result = 0;\n // for optimum performance, we use a for loop here rather than calling any helper methods or using functional code\n for (let i = 0; i < values.length; i++) {\n const 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 // the previous aggregation data\n const existingAggData = (_b = (_a = params.rowNode) === null || _a === void 0 ? void 0 : _a.aggData) === null || _b === void 0 ? void 0 : _b[params.column.getColId()];\n if (existingAggData && existingAggData.value === result) {\n // the underlying values haven't changed, return the old object to avoid triggering change detection\n return existingAggData;\n }\n // it's important to wrap it in the object so we can determine if this is a group level\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 _a, _b, _c;\n const { values } = params;\n let sum = 0; // the logic ensures that we never combine bigint arithmetic with numbers, but TS is hard to please\n let count = 0;\n // for optimum performance, we use a for loop here rather than calling any helper methods or using functional code\n for (let i = 0; i < values.length; i++) {\n const currentValue = values[i];\n let 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 let 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 previous aggregation data\n const existingAggData = (_b = (_a = params.rowNode) === null || _a === void 0 ? void 0 : _a.aggData) === null || _b === void 0 ? void 0 : _b[(_c = params.column) === null || _c === void 0 ? void 0 : _c.getColId()];\n if (existingAggData && existingAggData.count === count && existingAggData.value === value) {\n // the underlying values haven't changed, return the old object to avoid triggering change detection\n return existingAggData;\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,\n 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\nvar __decorate$2n = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass DropZoneColumnComp extends Component {\n constructor(column, dragSourceDropTarget, ghost, dropZonePurpose, horizontal) {\n super();\n this.column = column;\n this.dragSourceDropTarget = dragSourceDropTarget;\n this.ghost = ghost;\n this.dropZonePurpose = dropZonePurpose;\n this.horizontal = horizontal;\n this.popupShowing = false;\n }\n init() {\n this.setTemplate(DropZoneColumnComp.TEMPLATE);\n const eGui = this.getGui();\n const isFunctionsReadOnly = this.gridOptionsService.is('functionsReadOnly');\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.gridOptionsService));\n this.eButton.appendChild(_.createIconNoSpan('cancel', this.gridOptionsService));\n this.setupSort();\n this.displayName = this.columnModel.getDisplayNameForColumn(this.column, 'columnDrop');\n this.setupComponents();\n if (!this.ghost && !isFunctionsReadOnly) {\n this.addDragSource();\n }\n this.setupAria();\n this.addManagedListener(this.eventService, Column.EVENT_SORT_CHANGED, () => {\n this.setupAria();\n });\n this.setupTooltip();\n this.activateTabIndex();\n }\n setupAria() {\n const translate = this.localeService.getLocaleTextFunc();\n const { name, aggFuncName } = this.getColumnAndAggFuncName();\n const aggSeparator = translate('ariaDropZoneColumnComponentAggFuncSeparator', ' of ');\n const sortDirection = {\n asc: translate('ariaDropZoneColumnComponentSortAscending', 'ascending'),\n desc: translate('ariaDropZoneColumnComponentSortDescending', 'descending'),\n };\n const columnSort = this.column.getSort();\n const isSortSuppressed = this.gridOptionsService.is('rowGroupPanelSuppressSort');\n const ariaInstructions = [\n [\n aggFuncName && `${aggFuncName}${aggSeparator}`,\n name,\n this.isGroupingZone() && !isSortSuppressed && columnSort && `, ${sortDirection[columnSort]}`\n ].filter(part => !!part).join(''),\n ];\n const isFunctionsReadOnly = this.gridOptionsService.is('functionsReadOnly');\n if (this.isAggregationZone() && !isFunctionsReadOnly) {\n const aggregationMenuAria = translate('ariaDropZoneColumnValueItemDescription', 'Press ENTER to change the aggregation type');\n ariaInstructions.push(aggregationMenuAria);\n }\n if (this.isGroupingZone() && this.column.getColDef().sortable && !isSortSuppressed) {\n const sortProgressAria = translate('ariaDropZoneColumnGroupItemDescription', 'Press ENTER to sort');\n ariaInstructions.push(sortProgressAria);\n }\n const deleteAria = translate('ariaDropZoneColumnComponentDescription', 'Press DELETE to remove');\n ariaInstructions.push(deleteAria);\n _.setAriaLabel(this.getGui(), ariaInstructions.join('. '));\n }\n setupTooltip() {\n const refresh = () => {\n const 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 setupSort() {\n const canSort = this.column.getColDef().sortable;\n const isGroupingZone = this.isGroupingZone();\n if (!canSort || !isGroupingZone) {\n return;\n }\n if (!this.gridOptionsService.is('rowGroupPanelSuppressSort')) {\n this.eSortIndicator.setupSort(this.column, true);\n const performSort = (event) => {\n event.preventDefault();\n const sortUsingCtrl = this.gridOptionsService.get('multiSortKey') === 'ctrl';\n const multiSort = sortUsingCtrl ? (event.ctrlKey || event.metaKey) : event.shiftKey;\n this.sortController.progressSort(this.column, multiSort, 'uiColumnSorted');\n };\n this.addGuiEventListener('click', performSort);\n this.addGuiEventListener('keydown', (e) => {\n const isEnter = e.key === KeyCode.ENTER;\n if (isEnter && this.isGroupingZone()) {\n performSort(e);\n }\n });\n }\n }\n addDragSource() {\n const dragSource = {\n type: DragSourceType.ToolPanel,\n eElement: this.eDragHandle,\n defaultIconName: DragAndDropService.ICON_HIDE,\n getDragItem: () => this.createDragItem(),\n dragItemName: this.displayName,\n dragSourceDropTarget: this.dragSourceDropTarget\n };\n this.dragAndDropService.addDragSource(dragSource, true);\n this.addDestroyFunc(() => this.dragAndDropService.removeDragSource(dragSource));\n }\n createDragItem() {\n const visibleState = {};\n visibleState[this.column.getId()] = this.column.isVisible();\n return {\n columns: [this.column],\n visibleState: visibleState\n };\n }\n setupComponents() {\n this.setTextValue();\n this.setupRemove();\n if (this.ghost) {\n this.addCssClass('ag-column-drop-cell-ghost');\n }\n if (this.isAggregationZone() && !this.gridOptionsService.is('functionsReadOnly')) {\n this.addGuiEventListener('click', this.onShowAggFuncSelection.bind(this));\n }\n }\n setupRemove() {\n _.setDisplayed(this.eButton, !this.gridOptionsService.is('functionsReadOnly'));\n const agEvent = { type: DropZoneColumnComp.EVENT_COLUMN_REMOVE };\n this.addGuiEventListener('keydown', (e) => {\n const isEnter = e.key === KeyCode.ENTER;\n const isDelete = e.key === KeyCode.DELETE;\n if (isDelete) {\n e.preventDefault();\n this.dispatchEvent(agEvent);\n }\n if (isEnter && this.isAggregationZone() && !this.gridOptionsService.is('functionsReadOnly')) {\n e.preventDefault();\n this.onShowAggFuncSelection();\n }\n });\n this.addManagedListener(this.eButton, 'click', (mouseEvent) => {\n this.dispatchEvent(agEvent);\n mouseEvent.stopPropagation();\n });\n const touchListener = new TouchListener(this.eButton);\n this.addManagedListener(touchListener, TouchListener.EVENT_TAP, () => {\n this.dispatchEvent(agEvent);\n });\n this.addDestroyFunc(touchListener.destroy.bind(touchListener));\n }\n getColumnAndAggFuncName() {\n const name = this.displayName;\n let aggFuncName = '';\n if (this.isAggregationZone()) {\n const 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 const aggFuncString = typeof aggFunc === 'string' ? aggFunc : 'agg';\n const localeTextFunc = this.localeService.getLocaleTextFunc();\n aggFuncName = localeTextFunc(aggFuncString, aggFuncString);\n }\n return { name, aggFuncName };\n }\n setTextValue() {\n const { name, aggFuncName } = this.getColumnAndAggFuncName();\n const displayValue = this.isAggregationZone() ? `${aggFuncName}(${name})` : name;\n const displayValueSanitised = _.escapeString(displayValue);\n this.eText.innerHTML = displayValueSanitised;\n }\n onShowAggFuncSelection() {\n if (this.popupShowing) {\n return;\n }\n this.popupShowing = true;\n const virtualList = new VirtualList('select-agg-func');\n const rows = this.aggFuncService.getFuncNames(this.column);\n const eGui = this.getGui();\n const 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 const ePopup = _.loadTemplate(/* html*/ `
`);\n ePopup.style.top = '0px';\n ePopup.style.left = '0px';\n ePopup.appendChild(virtualListGui);\n ePopup.style.width = `${eGui.clientWidth}px`;\n const focusoutListener = this.addManagedListener(ePopup, 'focusout', (e) => {\n if (!ePopup.contains(e.relatedTarget) && addPopupRes) {\n addPopupRes.hideFunc();\n }\n });\n const popupHiddenFunc = (callbackEvent) => {\n this.destroyBean(virtualList);\n this.popupShowing = false;\n if ((callbackEvent === null || callbackEvent === void 0 ? void 0 : callbackEvent.key) === 'Escape') {\n eGui.focus();\n }\n if (focusoutListener) {\n focusoutListener();\n }\n };\n const translate = this.localeService.getLocaleTextFunc();\n const 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', (e) => {\n if (e.key === KeyCode.ENTER || e.key === KeyCode.SPACE) {\n const row = virtualList.getLastFocusedRow();\n if (row == null) {\n return;\n }\n const comp = virtualList.getComponentAt(row);\n if (comp) {\n comp.selectItem();\n }\n }\n });\n this.popupService.positionPopupByComponent({\n type: 'aggFuncSelect',\n eventSource: eGui,\n ePopup: ePopup,\n keepWithinBounds: true,\n column: this.column,\n position: 'under'\n });\n virtualList.refresh();\n let rowToFocus = rows.findIndex(r => r === this.column.getAggFunc());\n if (rowToFocus === -1) {\n rowToFocus = 0;\n }\n virtualList.focusRow(rowToFocus);\n }\n createAggSelect(hidePopup, value) {\n const itemSelected = () => {\n hidePopup();\n if (this.gridOptionsService.is('functionsPassive')) {\n const event = {\n type: Events.EVENT_COLUMN_AGG_FUNC_CHANGE_REQUEST,\n columns: [this.column],\n aggFunc: value\n };\n this.eventService.dispatchEvent(event);\n }\n else {\n this.columnModel.setColumnAggFunc(this.column, value, \"toolPanelDragAndDrop\");\n }\n };\n const localeTextFunc = this.localeService.getLocaleTextFunc();\n const aggFuncString = value.toString();\n const aggFuncStringTranslated = localeTextFunc(aggFuncString, aggFuncString);\n const comp = new AggItemComp(itemSelected, aggFuncStringTranslated);\n return comp;\n }\n addElementClasses(el, suffix) {\n suffix = suffix ? `-${suffix}` : '';\n const direction = this.horizontal ? 'horizontal' : 'vertical';\n el.classList.add(`ag-column-drop-cell${suffix}`, `ag-column-drop-${direction}-cell${suffix}`);\n }\n isAggregationZone() {\n return this.dropZonePurpose === 'aggregation';\n }\n isGroupingZone() {\n return this.dropZonePurpose === 'rowGroup';\n }\n}\nDropZoneColumnComp.EVENT_COLUMN_REMOVE = 'columnRemove';\nDropZoneColumnComp.TEMPLATE = `\n \n \n \n \n `;\n__decorate$2n([\n Autowired('dragAndDropService')\n], DropZoneColumnComp.prototype, \"dragAndDropService\", void 0);\n__decorate$2n([\n Autowired('columnModel')\n], DropZoneColumnComp.prototype, \"columnModel\", void 0);\n__decorate$2n([\n Autowired('popupService')\n], DropZoneColumnComp.prototype, \"popupService\", void 0);\n__decorate$2n([\n Optional('aggFuncService')\n], DropZoneColumnComp.prototype, \"aggFuncService\", void 0);\n__decorate$2n([\n Autowired('sortController')\n], DropZoneColumnComp.prototype, \"sortController\", void 0);\n__decorate$2n([\n RefSelector('eText')\n], DropZoneColumnComp.prototype, \"eText\", void 0);\n__decorate$2n([\n RefSelector('eDragHandle')\n], DropZoneColumnComp.prototype, \"eDragHandle\", void 0);\n__decorate$2n([\n RefSelector('eButton')\n], DropZoneColumnComp.prototype, \"eButton\", void 0);\n__decorate$2n([\n RefSelector('eSortIndicator')\n], DropZoneColumnComp.prototype, \"eSortIndicator\", void 0);\n__decorate$2n([\n PostConstruct\n], DropZoneColumnComp.prototype, \"init\", null);\nclass AggItemComp extends Component {\n constructor(itemSelected, value) {\n super(/* html */ `
`);\n this.selectItem = itemSelected;\n this.getGui().innerText = value;\n this.addGuiEventListener('click', this.selectItem);\n }\n}\n\nvar __decorate$2m = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass BaseDropZonePanel extends Component {\n constructor(horizontal, dropZonePurpose) {\n super(/* html */ `
`);\n this.horizontal = horizontal;\n this.dropZonePurpose = dropZonePurpose;\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 }\n isHorizontal() {\n return this.horizontal;\n }\n toggleResizable(resizable) {\n this.positionableFeature.setResizable(resizable ? { bottom: true } : false);\n this.resizeEnabled = resizable;\n }\n setBeans(beans) {\n this.beans = beans;\n }\n destroy() {\n this.destroyGui();\n super.destroy();\n }\n destroyGui() {\n this.guiDestroyFunctions.forEach(func => func());\n this.guiDestroyFunctions.length = 0;\n this.childColumnComponents.length = 0;\n _.clearElement(this.getGui());\n _.clearElement(this.eColumnDropList);\n }\n init(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.addManagedPropertyListener('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 handleKeyDown(e) {\n const isVertical = !this.horizontal;\n let isNext = e.key === KeyCode.DOWN;\n let isPrevious = e.key === KeyCode.UP;\n if (!isVertical) {\n const isRtl = this.gridOptionsService.is('enableRtl');\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 const el = this.focusService.findNextFocusableElement(this.getFocusableElement(), false, isPrevious);\n if (el) {\n e.preventDefault();\n el.focus();\n }\n }\n addElementClasses(el, suffix) {\n suffix = suffix ? `-${suffix}` : '';\n const direction = this.horizontal ? 'horizontal' : 'vertical';\n el.classList.add(`ag-column-drop${suffix}`, `ag-column-drop-${direction}${suffix}`);\n }\n setupDropTarget() {\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 isInterestedIn(type) {\n // not interested in row drags\n return type === DragSourceType.HeaderCell || type === DragSourceType.ToolPanel;\n }\n checkInsertIndex(draggingEvent) {\n const newIndex = this.getNewInsertIndex(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 const changed = newIndex !== this.insertIndex;\n if (changed) {\n this.insertIndex = newIndex;\n }\n return changed;\n }\n getNewInsertIndex(draggingEvent) {\n const mouseEvent = draggingEvent.event;\n const mouseLocation = this.horizontal ? mouseEvent.clientX : mouseEvent.clientY;\n const boundsList = this.childColumnComponents.map(col => (col.getGui().getBoundingClientRect()));\n // find the non-ghost component we're hovering\n const hoveredIndex = boundsList.findIndex(rect => (this.horizontal ? (rect.right > mouseLocation && rect.left < mouseLocation) : (rect.top < mouseLocation && rect.bottom > mouseLocation)));\n // not hovering a non-ghost component\n if (hoveredIndex === -1) {\n const enableRtl = this.beans.gridOptionsService.is('enableRtl');\n // if mouse is below or right of all components then new index should be placed last\n const isLast = boundsList.every(rect => (mouseLocation > (this.horizontal ? rect.right : rect.bottom)));\n if (isLast) {\n return enableRtl && this.horizontal ? 0 : this.childColumnComponents.length;\n }\n // if mouse is above or left of all components, new index is first\n const isFirst = boundsList.every(rect => (mouseLocation < (this.horizontal ? rect.left : rect.top)));\n if (isFirst) {\n return enableRtl && this.horizontal ? this.childColumnComponents.length : 0;\n }\n // must be hovering a ghost, don't change the index\n return this.insertIndex;\n }\n // if the old index is equal to or less than the index of our new target\n // we need to shift right, to insert after rather than before\n if (this.insertIndex <= hoveredIndex) {\n return hoveredIndex + 1;\n }\n return hoveredIndex;\n }\n checkDragStartedBySelf(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 onDragging(draggingEvent) {\n this.checkDragStartedBySelf(draggingEvent);\n if (this.checkInsertIndex(draggingEvent)) {\n this.refreshGui();\n }\n }\n onDragEnter(draggingEvent) {\n // this will contain all columns that are potential drops\n const dragColumns = draggingEvent.dragSource.getDragItem().columns || [];\n this.state = BaseDropZonePanel.STATE_NEW_COLUMNS_IN;\n // take out columns that are not droppable\n const goodDragColumns = dragColumns.filter(this.isColumnDroppable.bind(this));\n if (goodDragColumns.length > 0) {\n const hideColumnOnExit = this.isRowGroupPanel() && !this.gridOptionsService.is('suppressRowGroupHidesColumns') && !draggingEvent.fromNudge;\n if (hideColumnOnExit) {\n const dragItem = draggingEvent.dragSource.getDragItem();\n const columns = dragItem.columns;\n this.setColumnsVisible(columns, false, \"uiColumnDragged\");\n }\n this.potentialDndColumns = goodDragColumns;\n this.checkInsertIndex(draggingEvent);\n this.refreshGui();\n }\n }\n setColumnsVisible(columns, visible, source = \"api\") {\n if (columns) {\n const allowedCols = columns.filter(c => !c.getColDef().lockVisible);\n this.colModel.setColumnsVisible(allowedCols, visible, source);\n }\n }\n isPotentialDndColumns() {\n return _.existsAndNotEmpty(this.potentialDndColumns);\n }\n isRowGroupPanel() {\n return this.dropZonePurpose === 'rowGroup';\n }\n onDragLeave(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 const columns = draggingEvent.dragSource.getDragItem().columns || [];\n this.removeColumns(columns);\n }\n if (this.isPotentialDndColumns()) {\n const showColumnOnExit = this.isRowGroupPanel() && !this.gridOptionsService.is('suppressMakeColumnVisibleAfterUnGroup') && !draggingEvent.fromNudge;\n if (showColumnOnExit) {\n const dragItem = draggingEvent.dragSource.getDragItem();\n this.setColumnsVisible(dragItem.columns, true, \"uiColumnDragged\");\n }\n this.potentialDndColumns = [];\n this.refreshGui();\n }\n this.state = BaseDropZonePanel.STATE_NOT_DRAGGING;\n }\n onDragStop() {\n if (this.isPotentialDndColumns()) {\n let 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.gridOptionsService.is('functionsPassive') || !success) {\n this.refreshGui();\n }\n }\n this.state = BaseDropZonePanel.STATE_NOT_DRAGGING;\n }\n removeColumns(columnsToRemove) {\n const newColumnList = this.getExistingColumns().filter(col => !_.includes(columnsToRemove, col));\n this.updateColumns(newColumnList);\n }\n addColumns(columnsToAdd) {\n if (!columnsToAdd) {\n return;\n }\n const newColumnList = this.getExistingColumns().slice();\n const colsToAddNoDuplicates = columnsToAdd.filter(col => newColumnList.indexOf(col) < 0);\n _.insertArrayIntoArray(newColumnList, colsToAddNoDuplicates, this.insertIndex);\n this.updateColumns(newColumnList);\n }\n rearrangeColumns(columnsToAdd) {\n const 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 refreshGui() {\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 const scrollTop = this.eColumnDropList.scrollTop;\n const resizeEnabled = this.resizeEnabled;\n const focusedIndex = this.getFocusedItem();\n let 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 // focus should only be restored when keyboard mode\n // otherwise mouse clicks will cause containers to scroll\n // without no apparent reason.\n if (this.focusService.isKeyboardMode()) {\n this.restoreFocus(focusedIndex, alternateElement);\n }\n }\n getFocusedItem() {\n const eGui = this.getGui();\n const activeElement = this.gridOptionsService.getDocument().activeElement;\n if (!eGui.contains(activeElement)) {\n return -1;\n }\n const items = Array.from(eGui.querySelectorAll('.ag-column-drop-cell'));\n return items.indexOf(activeElement);\n }\n restoreFocus(index, alternateElement) {\n const eGui = this.getGui();\n const 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 const indexToFocus = Math.min(items.length - 1, index);\n const el = items[indexToFocus];\n if (el) {\n el.focus();\n }\n }\n getNonGhostColumns() {\n const existingColumns = this.getExistingColumns();\n if (this.isPotentialDndColumns()) {\n return existingColumns.filter(column => !_.includes(this.potentialDndColumns, column));\n }\n return existingColumns;\n }\n addColumnsToGui() {\n const nonGhostColumns = this.getNonGhostColumns();\n const itemsToAddToGui = nonGhostColumns.map(column => (this.createColumnComponent(column, false)));\n if (this.isPotentialDndColumns()) {\n const dndColumns = this.potentialDndColumns.map(column => (this.createColumnComponent(column, true)));\n if (this.insertIndex >= itemsToAddToGui.length) {\n itemsToAddToGui.push(...dndColumns);\n }\n else {\n itemsToAddToGui.splice(this.insertIndex, 0, ...dndColumns);\n }\n }\n this.appendChild(this.eColumnDropList);\n itemsToAddToGui.forEach((columnComponent, index) => {\n if (index > 0) {\n this.addArrow(this.eColumnDropList);\n }\n this.eColumnDropList.appendChild(columnComponent.getGui());\n });\n this.addAriaLabelsToComponents();\n }\n addAriaLabelsToComponents() {\n this.childColumnComponents.forEach((comp, idx) => {\n const eGui = comp.getGui();\n _.setAriaPosInSet(eGui, idx + 1);\n _.setAriaSetSize(eGui, this.childColumnComponents.length);\n });\n }\n createColumnComponent(column, ghost) {\n const columnComponent = new DropZoneColumnComp(column, this.dropTarget, ghost, this.dropZonePurpose, this.horizontal);\n columnComponent.addEventListener(DropZoneColumnComp.EVENT_COLUMN_REMOVE, this.removeColumns.bind(this, [column]));\n this.beans.context.createBean(columnComponent);\n this.guiDestroyFunctions.push(() => this.destroyBean(columnComponent));\n if (!ghost) {\n this.childColumnComponents.push(columnComponent);\n }\n return columnComponent;\n }\n addIconAndTitleToGui() {\n const eGroupIcon = this.params.icon;\n const eTitleBar = document.createElement('div');\n _.setAriaHidden(eTitleBar, 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 const 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 isExistingColumnsEmpty() {\n return this.getExistingColumns().length === 0;\n }\n addEmptyMessageToGui() {\n if (!this.isExistingColumnsEmpty() || this.isPotentialDndColumns()) {\n return;\n }\n const eMessage = document.createElement('span');\n eMessage.innerHTML = this.params.emptyMessage;\n this.addElementClasses(eMessage, 'empty-message');\n this.eColumnDropList.appendChild(eMessage);\n }\n addArrow(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 const enableRtl = this.beans.gridOptionsService.is('enableRtl');\n const icon = _.createIconNoSpan(enableRtl ? 'smallLeft' : 'smallRight', this.beans.gridOptionsService);\n this.addElementClasses(icon, 'cell-separator');\n eParent.appendChild(icon);\n }\n }\n}\nBaseDropZonePanel.STATE_NOT_DRAGGING = 'notDragging';\nBaseDropZonePanel.STATE_NEW_COLUMNS_IN = 'newColumnsIn';\nBaseDropZonePanel.STATE_REARRANGE_COLUMNS = 'rearrangeColumns';\n__decorate$2m([\n Autowired('columnModel')\n], BaseDropZonePanel.prototype, \"colModel\", void 0);\n__decorate$2m([\n Autowired('focusService')\n], BaseDropZonePanel.prototype, \"focusService\", void 0);\n\nvar __decorate$2l = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass RowGroupDropZonePanel extends BaseDropZonePanel {\n constructor(horizontal) {\n super(horizontal, 'rowGroup');\n }\n passBeansUp() {\n super.setBeans({\n gridOptionsService: this.gridOptionsService,\n eventService: this.eventService,\n context: this.getContext(),\n loggerFactory: this.loggerFactory,\n dragAndDropService: this.dragAndDropService\n });\n const localeTextFunc = this.localeService.getLocaleTextFunc();\n const emptyMessage = localeTextFunc('rowGroupColumnsEmptyMessage', 'Drag here to set row groups');\n const title = localeTextFunc('groups', 'Row Groups');\n super.init({\n dragAndDropIcon: DragAndDropService.ICON_GROUP,\n icon: _.createIconNoSpan('rowGroupPanel', this.gridOptionsService, null),\n emptyMessage: emptyMessage,\n title\n });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.refreshGui.bind(this));\n }\n getAriaLabel() {\n const translate = this.localeService.getLocaleTextFunc();\n const label = translate('ariaRowGroupDropZonePanelLabel', 'Row Groups');\n return label;\n }\n getTooltipParams() {\n const res = super.getTooltipParams();\n res.location = 'rowGroupColumnsList';\n return res;\n }\n isColumnDroppable(column) {\n // we never allow grouping of secondary columns\n if (this.gridOptionsService.is('functionsReadOnly') || !column.isPrimary()) {\n return false;\n }\n return column.isAllowRowGroup() && !column.isRowGroupActive();\n }\n updateColumns(columns) {\n if (this.gridOptionsService.is('functionsPassive')) {\n const event = {\n type: Events.EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST,\n columns: columns\n };\n this.eventService.dispatchEvent(event);\n }\n else {\n this.columnModel.setRowGroupColumns(columns, \"toolPanelUi\");\n }\n }\n getIconName() {\n return this.isPotentialDndColumns() ? DragAndDropService.ICON_GROUP : DragAndDropService.ICON_NOT_ALLOWED;\n }\n getExistingColumns() {\n return this.columnModel.getRowGroupColumns();\n }\n}\n__decorate$2l([\n Autowired('columnModel')\n], RowGroupDropZonePanel.prototype, \"columnModel\", void 0);\n__decorate$2l([\n Autowired('loggerFactory')\n], RowGroupDropZonePanel.prototype, \"loggerFactory\", void 0);\n__decorate$2l([\n Autowired('dragAndDropService')\n], RowGroupDropZonePanel.prototype, \"dragAndDropService\", void 0);\n__decorate$2l([\n PostConstruct\n], RowGroupDropZonePanel.prototype, \"passBeansUp\", null);\n\nvar __decorate$2k = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass PivotDropZonePanel extends BaseDropZonePanel {\n constructor(horizontal) {\n super(horizontal, 'pivot');\n }\n passBeansUp() {\n super.setBeans({\n gridOptionsService: this.gridOptionsService,\n eventService: this.eventService,\n context: this.getContext(),\n loggerFactory: this.loggerFactory,\n dragAndDropService: this.dragAndDropService\n });\n const localeTextFunc = this.localeService.getLocaleTextFunc();\n const emptyMessage = localeTextFunc('pivotColumnsEmptyMessage', 'Drag here to set column labels');\n const title = localeTextFunc('pivots', 'Column Labels');\n super.init({\n dragAndDropIcon: DragAndDropService.ICON_GROUP,\n icon: _.createIconNoSpan('pivotPanel', this.gridOptionsService, 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 getAriaLabel() {\n const translate = this.localeService.getLocaleTextFunc();\n const label = translate('ariaPivotDropZonePanelLabel', 'Column Labels');\n return label;\n }\n getTooltipParams() {\n const res = super.getTooltipParams();\n res.location = 'pivotColumnsList';\n return res;\n }\n refresh() {\n this.checkVisibility();\n this.refreshGui();\n }\n checkVisibility() {\n const 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.gridOptionsService.get('pivotPanelShow')) {\n case 'always':\n this.setDisplayed(pivotMode);\n break;\n case 'onlyWhenPivoting':\n const 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 isColumnDroppable(column) {\n // we never allow grouping of secondary columns\n if (this.gridOptionsService.is('functionsReadOnly') || !column.isPrimary()) {\n return false;\n }\n return column.isAllowPivot() && !column.isPivotActive();\n }\n updateColumns(columns) {\n if (this.gridOptionsService.is('functionsPassive')) {\n const event = {\n type: Events.EVENT_COLUMN_PIVOT_CHANGE_REQUEST,\n columns: columns\n };\n this.eventService.dispatchEvent(event);\n }\n else {\n this.columnModel.setPivotColumns(columns, \"toolPanelUi\");\n }\n }\n getIconName() {\n return this.isPotentialDndColumns() ? DragAndDropService.ICON_PIVOT : DragAndDropService.ICON_NOT_ALLOWED;\n }\n getExistingColumns() {\n return this.columnModel.getPivotColumns();\n }\n}\n__decorate$2k([\n Autowired('columnModel')\n], PivotDropZonePanel.prototype, \"columnModel\", void 0);\n__decorate$2k([\n Autowired('loggerFactory')\n], PivotDropZonePanel.prototype, \"loggerFactory\", void 0);\n__decorate$2k([\n Autowired('dragAndDropService')\n], PivotDropZonePanel.prototype, \"dragAndDropService\", void 0);\n__decorate$2k([\n PostConstruct\n], PivotDropZonePanel.prototype, \"passBeansUp\", null);\n\nvar __decorate$2j = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass GridHeaderDropZones extends Component {\n constructor() {\n super();\n }\n postConstruct() {\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.addManagedPropertyListener('rowGroupPanelShow', this.onRowGroupChanged.bind(this));\n this.onRowGroupChanged();\n }\n createNorthPanel() {\n const topPanelGui = document.createElement('div');\n const 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 onDropPanelVisible() {\n const 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 onRowGroupChanged() {\n if (!this.rowGroupComp) {\n return;\n }\n const rowGroupPanelShow = this.gridOptionsService.get('rowGroupPanelShow');\n if (rowGroupPanelShow === 'always') {\n this.rowGroupComp.setDisplayed(true);\n }\n else if (rowGroupPanelShow === 'onlyWhenGrouping') {\n const grouping = !this.columnModel.isRowGroupEmpty();\n this.rowGroupComp.setDisplayed(grouping);\n }\n else {\n this.rowGroupComp.setDisplayed(false);\n }\n }\n}\n__decorate$2j([\n Autowired('columnModel')\n], GridHeaderDropZones.prototype, \"columnModel\", void 0);\n__decorate$2j([\n PostConstruct\n], GridHeaderDropZones.prototype, \"postConstruct\", null);\n\nvar __decorate$2i = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet FilterAggregatesStage = class FilterAggregatesStage extends BeanStub {\n execute(params) {\n const isPivotMode = this.columnModel.isPivotMode();\n const isAggFilterActive = this.filterManager.isAggregateFilterPresent()\n || this.filterManager.isAggregateQuickFilterPresent();\n // This is the default filter for applying only to leaf nodes, realistically this should not apply as primary agg columns,\n // should not be applied by the filterManager if getGroupAggFiltering is missing. Predicate will apply filters to leaf level.\n const defaultPrimaryColumnPredicate = (params) => !params.node.group;\n // Default secondary column predicate, selecting only leaf level groups.\n const defaultSecondaryColumnPredicate = ((params) => params.node.leafGroup);\n // The predicate to determine whether filters should apply to this row. Either defined by the user in groupAggFiltering or a default depending\n // on current pivot mode status.\n const applyFilterToNode = this.gridOptionsService.getGroupAggFiltering()\n || (isPivotMode ? defaultSecondaryColumnPredicate : defaultPrimaryColumnPredicate);\n const { changedPath } = params;\n const preserveChildren = (node, recursive = false) => {\n if (node.childrenAfterFilter) {\n node.childrenAfterAggFilter = node.childrenAfterFilter;\n if (recursive) {\n node.childrenAfterAggFilter.forEach((child) => preserveChildren(child, recursive));\n }\n this.setAllChildrenCount(node);\n }\n if (node.sibling) {\n node.sibling.childrenAfterAggFilter = node.childrenAfterAggFilter;\n }\n };\n const filterChildren = (node) => {\n var _a;\n node.childrenAfterAggFilter = ((_a = node.childrenAfterFilter) === null || _a === void 0 ? void 0 : _a.filter((child) => {\n var _a;\n const shouldFilterRow = applyFilterToNode({ node: child });\n if (shouldFilterRow) {\n const doesNodePassFilter = this.filterManager.doesRowPassAggregateFilters({ rowNode: child });\n if (doesNodePassFilter) {\n // Node has passed, so preserve children\n preserveChildren(child, true);\n return true;\n }\n }\n const hasChildPassed = (_a = child.childrenAfterAggFilter) === null || _a === void 0 ? void 0 : _a.length;\n return hasChildPassed;\n })) || null;\n this.setAllChildrenCount(node);\n if (node.sibling) {\n node.sibling.childrenAfterAggFilter = node.childrenAfterAggFilter;\n }\n };\n changedPath.forEachChangedNodeDepthFirst(isAggFilterActive ? filterChildren : preserveChildren, true);\n }\n setAllChildrenCountTreeData(rowNode) {\n // for tree data, we include all children, groups and leafs\n let allChildrenCount = 0;\n rowNode.childrenAfterAggFilter.forEach((child) => {\n // include child itself\n allChildrenCount++;\n // include children of children\n allChildrenCount += child.allChildrenCount;\n });\n rowNode.setAllChildrenCount(allChildrenCount);\n }\n setAllChildrenCountGridGrouping(rowNode) {\n // for grid data, we only count the leafs\n let allChildrenCount = 0;\n rowNode.childrenAfterAggFilter.forEach((child) => {\n if (child.group) {\n allChildrenCount += child.allChildrenCount;\n }\n else {\n allChildrenCount++;\n }\n });\n rowNode.setAllChildrenCount(allChildrenCount);\n }\n setAllChildrenCount(rowNode) {\n if (!rowNode.hasChildren()) {\n rowNode.setAllChildrenCount(null);\n return;\n }\n if (this.gridOptionsService.isTreeData()) {\n this.setAllChildrenCountTreeData(rowNode);\n }\n else {\n this.setAllChildrenCountGridGrouping(rowNode);\n }\n }\n};\n__decorate$2i([\n Autowired('filterManager')\n], FilterAggregatesStage.prototype, \"filterManager\", void 0);\n__decorate$2i([\n Autowired('columnModel')\n], FilterAggregatesStage.prototype, \"columnModel\", void 0);\nFilterAggregatesStage = __decorate$2i([\n Bean('filterAggregatesStage')\n], FilterAggregatesStage);\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nconst VERSION$g = '30.0.5';\n\nvar __decorate$2h = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass GroupFilter extends TabGuardComp {\n constructor() {\n super(/* html */ `\n
\n
\n
\n
\n `);\n }\n postConstruct() {\n this.initialiseTabGuard({});\n }\n init(params) {\n this.params = params;\n this.validateParams();\n return this.updateGroups().then(() => {\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, () => this.onColumnRowGroupChanged());\n });\n }\n validateParams() {\n const { colDef } = this.params;\n if (colDef.field) {\n _.doOnce(() => console.warn('AG Grid: Group Column Filter does not work with the colDef property \"field\". This property will be ignored.'), 'groupFilterFieldParam');\n }\n if (colDef.filterValueGetter) {\n _.doOnce(() => console.warn('AG Grid: Group Column Filter does not work with the colDef property \"filterValueGetter\". This property will be ignored.'), 'groupFilterFilterValueGetterParam');\n }\n if (colDef.filterParams) {\n _.doOnce(() => console.warn('AG Grid: Group Column Filter does not work with the colDef property \"filterParams\". This property will be ignored.'), 'groupFilterFilterParams');\n }\n }\n updateGroups() {\n const sourceColumns = this.updateGroupField();\n return this.getUnderlyingFilters(sourceColumns);\n }\n getSourceColumns() {\n this.groupColumn = this.params.column;\n if (this.gridOptionsService.is('treeData')) {\n _.doOnce(() => console.warn('AG Grid: Group Column Filter does not work with Tree Data enabled. Please disable Tree Data, or use a different filter.'), 'groupFilterTreeData');\n return [];\n }\n const sourceColumns = this.columnModel.getSourceColumnsForGroupColumn(this.groupColumn);\n if (!sourceColumns) {\n _.doOnce(() => console.warn('AG Grid: Group Column Filter only works on group columns. Please use a different filter.'), 'groupFilterNotGroupColumn');\n return [];\n }\n return sourceColumns;\n }\n updateGroupField() {\n _.clearElement(this.eGroupField);\n if (this.eGroupFieldSelect) {\n this.destroyBean(this.eGroupFieldSelect);\n }\n const allSourceColumns = this.getSourceColumns();\n const sourceColumns = allSourceColumns.filter(sourceColumn => sourceColumn.isFilterAllowed());\n if (!sourceColumns.length) {\n this.selectedColumn = undefined;\n _.setDisplayed(this.eGroupField, false);\n return null;\n }\n if (allSourceColumns.length === 1) {\n // we only want to hide the group field element if there's only one group column.\n // If there's one group column that has a filter, but multiple columns in total,\n // we should still show the select so the user knows which column it's for.\n this.selectedColumn = sourceColumns[0];\n _.setDisplayed(this.eGroupField, false);\n }\n else {\n // keep the old selected column if it's still valid\n if (!this.selectedColumn || !sourceColumns.some(column => column.getId() === this.selectedColumn.getId())) {\n this.selectedColumn = sourceColumns[0];\n }\n this.createGroupFieldSelectElement(sourceColumns);\n this.eGroupField.appendChild(this.eGroupFieldSelect.getGui());\n this.eGroupField.appendChild(_.loadTemplate(/* html */ `
`));\n _.setDisplayed(this.eGroupField, true);\n }\n return sourceColumns;\n }\n createGroupFieldSelectElement(sourceColumns) {\n this.eGroupFieldSelect = this.createManagedBean(new AgSelect());\n const localeTextFunc = this.localeService.getLocaleTextFunc();\n this.eGroupFieldSelect.setLabel(localeTextFunc('groupFilterSelect', 'Select field:'));\n this.eGroupFieldSelect.setLabelAlignment('top');\n this.eGroupFieldSelect.addOptions(sourceColumns.map(sourceColumn => {\n var _a;\n return ({\n value: sourceColumn.getId(),\n text: (_a = this.columnModel.getDisplayNameForColumn(sourceColumn, 'groupFilter', false)) !== null && _a !== void 0 ? _a : undefined\n });\n }));\n this.eGroupFieldSelect.setValue(this.selectedColumn.getId());\n this.eGroupFieldSelect.onValueChange((newValue) => this.updateSelectedColumn(newValue));\n this.eGroupFieldSelect.addCssClass('ag-group-filter-field-select-wrapper');\n if (sourceColumns.length === 1) {\n this.eGroupFieldSelect.setDisabled(true);\n }\n }\n getUnderlyingFilters(sourceColumns) {\n if (!sourceColumns) {\n this.filterColumnPairs = undefined;\n this.selectedFilter = undefined;\n this.groupColumn.setFilterActive(false, 'columnRowGroupChanged');\n return AgPromise.resolve();\n }\n const filterPromises = [];\n const filterColumnPairs = [];\n sourceColumns.forEach(column => {\n const filterWrapper = this.filterManager.getOrCreateFilterWrapper(column, 'COLUMN_MENU');\n if (filterWrapper === null || filterWrapper === void 0 ? void 0 : filterWrapper.filterPromise) {\n filterPromises.push(filterWrapper.filterPromise.then(filter => {\n if (filter) {\n filterColumnPairs.push({\n filter,\n column\n });\n }\n if (column.getId() === this.selectedColumn.getId()) {\n this.selectedFilter = filter !== null && filter !== void 0 ? filter : undefined;\n }\n return filter;\n }));\n }\n });\n return AgPromise.all(filterPromises).then(() => {\n this.filterColumnPairs = filterColumnPairs;\n this.groupColumn.setFilterActive(this.isFilterActive(), 'columnRowGroupChanged');\n });\n }\n addUnderlyingFilterElement() {\n _.clearElement(this.eUnderlyingFilter);\n if (!this.selectedColumn) {\n return AgPromise.resolve();\n }\n const filterWrapper = this.filterManager.getOrCreateFilterWrapper(this.selectedColumn, 'COLUMN_MENU');\n if (!filterWrapper) {\n return AgPromise.resolve();\n }\n return filterWrapper.guiPromise.then(gui => {\n var _a;\n this.eUnderlyingFilter.appendChild(gui);\n (_a = filterWrapper.filterPromise) === null || _a === void 0 ? void 0 : _a.then(filter => {\n var _a, _b;\n (_a = filter === null || filter === void 0 ? void 0 : filter.afterGuiAttached) === null || _a === void 0 ? void 0 : _a.call(filter, this.afterGuiAttachedParams);\n if (!((_b = this.afterGuiAttachedParams) === null || _b === void 0 ? void 0 : _b.suppressFocus) && this.eGroupFieldSelect && !this.eGroupFieldSelect.isDisabled()) {\n this.eGroupFieldSelect.getFocusableElement().focus();\n }\n });\n });\n }\n updateSelectedColumn(columnId) {\n var _a, _b;\n if (!columnId) {\n return;\n }\n (_b = (_a = this.selectedFilter) === null || _a === void 0 ? void 0 : _a.afterGuiDetached) === null || _b === void 0 ? void 0 : _b.call(_a);\n const selectedFilterColumnPair = this.getFilterColumnPair(columnId);\n this.selectedColumn = selectedFilterColumnPair === null || selectedFilterColumnPair === void 0 ? void 0 : selectedFilterColumnPair.column;\n this.selectedFilter = selectedFilterColumnPair === null || selectedFilterColumnPair === void 0 ? void 0 : selectedFilterColumnPair.filter;\n this.dispatchEvent({\n type: GroupFilter.EVENT_SELECTED_COLUMN_CHANGED\n });\n this.addUnderlyingFilterElement();\n }\n isFilterActive() {\n var _a;\n return !!((_a = this.filterColumnPairs) === null || _a === void 0 ? void 0 : _a.some(({ filter }) => filter.isFilterActive()));\n }\n doesFilterPass() {\n return true;\n }\n getModel() {\n return null;\n }\n setModel() {\n return AgPromise.resolve();\n }\n afterGuiAttached(params) {\n this.afterGuiAttachedParams = params;\n this.addUnderlyingFilterElement();\n }\n afterGuiDetached() {\n var _a, _b;\n _.clearElement(this.eUnderlyingFilter);\n (_b = (_a = this.selectedFilter) === null || _a === void 0 ? void 0 : _a.afterGuiDetached) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n onColumnRowGroupChanged() {\n this.updateGroups().then(() => {\n this.dispatchEvent({\n type: GroupFilter.EVENT_COLUMN_ROW_GROUP_CHANGED\n });\n this.eventService.dispatchEvent({\n type: 'filterAllowedUpdated'\n });\n });\n }\n getFilterColumnPair(columnId) {\n var _a;\n if (!columnId) {\n return undefined;\n }\n return (_a = this.filterColumnPairs) === null || _a === void 0 ? void 0 : _a.find(({ column }) => column.getId() === columnId);\n }\n getSelectedFilter() {\n return this.selectedFilter;\n }\n getSelectedColumn() {\n return this.selectedColumn;\n }\n isFilterAllowed() {\n return !!this.selectedColumn;\n }\n destroy() {\n super.destroy();\n }\n}\nGroupFilter.EVENT_COLUMN_ROW_GROUP_CHANGED = 'columnRowGroupChanged';\nGroupFilter.EVENT_SELECTED_COLUMN_CHANGED = 'selectedColumnChanged';\n__decorate$2h([\n Autowired('filterManager')\n], GroupFilter.prototype, \"filterManager\", void 0);\n__decorate$2h([\n Autowired('columnModel')\n], GroupFilter.prototype, \"columnModel\", void 0);\n__decorate$2h([\n RefSelector('eGroupField')\n], GroupFilter.prototype, \"eGroupField\", void 0);\n__decorate$2h([\n RefSelector('eUnderlyingFilter')\n], GroupFilter.prototype, \"eUnderlyingFilter\", void 0);\n__decorate$2h([\n PostConstruct\n], GroupFilter.prototype, \"postConstruct\", null);\n\nvar __decorate$2g = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass GroupFloatingFilterComp extends Component {\n constructor() {\n super(/* html */ `\n
\n `);\n }\n init(params) {\n this.params = params;\n // we only support showing the underlying floating filter for multiple group columns\n const canShowUnderlyingFloatingFilter = this.gridOptionsService.get('groupDisplayType') === 'multipleColumns';\n return new AgPromise(resolve => {\n this.params.parentFilterInstance(parentFilterInstance => {\n this.parentFilterInstance = parentFilterInstance;\n if (canShowUnderlyingFloatingFilter) {\n this.setupUnderlyingFloatingFilterElement().then(() => resolve());\n }\n else {\n this.setupReadOnlyFloatingFilterElement();\n resolve();\n }\n });\n }).then(() => {\n this.addManagedListener(this.parentFilterInstance, GroupFilter.EVENT_SELECTED_COLUMN_CHANGED, () => this.onSelectedColumnChanged());\n this.addManagedListener(this.parentFilterInstance, GroupFilter.EVENT_COLUMN_ROW_GROUP_CHANGED, () => this.onColumnRowGroupChanged());\n });\n }\n setupReadOnlyFloatingFilterElement() {\n if (!this.eFloatingFilterText) {\n this.eFloatingFilterText = this.createManagedBean(new AgInputTextField());\n const displayName = this.columnModel.getDisplayNameForColumn(this.params.column, 'header', true);\n const translate = this.localeService.getLocaleTextFunc();\n this.eFloatingFilterText\n .setDisabled(true)\n .setInputAriaLabel(`${displayName} ${translate('ariaFilterInput', 'Filter Input')}`)\n .addGuiEventListener('click', () => this.params.showParentFilter());\n }\n this.updateDisplayedValue();\n this.eFloatingFilter.appendChild(this.eFloatingFilterText.getGui());\n }\n setupUnderlyingFloatingFilterElement() {\n this.showingUnderlyingFloatingFilter = false;\n this.underlyingFloatingFilter = undefined;\n _.clearElement(this.eFloatingFilter);\n const column = this.parentFilterInstance.getSelectedColumn();\n // we can only show the underlying filter if there is one instance (e.g. the underlying column is not visible)\n if (column && !column.isVisible()) {\n const compDetails = this.filterManager.getFloatingFilterCompDetails(column, this.params.showParentFilter);\n if (compDetails) {\n if (!this.columnVisibleChangedListener) {\n this.columnVisibleChangedListener = this.addManagedListener(column, Column.EVENT_VISIBLE_CHANGED, this.onColumnVisibleChanged.bind(this));\n }\n return compDetails.newAgStackInstance().then(floatingFilter => {\n var _a, _b;\n this.underlyingFloatingFilter = floatingFilter;\n (_a = this.underlyingFloatingFilter) === null || _a === void 0 ? void 0 : _a.onParentModelChanged((_b = this.parentFilterInstance.getSelectedFilter()) === null || _b === void 0 ? void 0 : _b.getModel());\n this.appendChild(floatingFilter.getGui());\n this.showingUnderlyingFloatingFilter = true;\n });\n }\n }\n // fallback to the read-only version\n this.setupReadOnlyFloatingFilterElement();\n return AgPromise.resolve();\n }\n onColumnVisibleChanged() {\n this.setupUnderlyingFloatingFilterElement();\n }\n onParentModelChanged(_model, event) {\n var _a, _b;\n if (this.showingUnderlyingFloatingFilter) {\n (_a = this.underlyingFloatingFilter) === null || _a === void 0 ? void 0 : _a.onParentModelChanged((_b = this.parentFilterInstance.getSelectedFilter()) === null || _b === void 0 ? void 0 : _b.getModel(), event);\n }\n else {\n this.updateDisplayedValue();\n }\n }\n updateDisplayedValue() {\n if (!this.parentFilterInstance || !this.eFloatingFilterText) {\n return;\n }\n const selectedFilter = this.parentFilterInstance.getSelectedFilter();\n if (!selectedFilter) {\n this.eFloatingFilterText.setValue('');\n this.eFloatingFilterText.setDisplayed(false);\n return;\n }\n this.eFloatingFilterText.setDisplayed(true);\n if (selectedFilter.getModelAsString) {\n const filterModel = selectedFilter.getModel();\n this.eFloatingFilterText.setValue(filterModel == null ? '' : selectedFilter.getModelAsString(filterModel));\n }\n else {\n this.eFloatingFilterText.setValue('');\n }\n }\n onSelectedColumnChanged() {\n if (!this.showingUnderlyingFloatingFilter) {\n this.updateDisplayedValue();\n }\n }\n onColumnRowGroupChanged() {\n if (!this.showingUnderlyingFloatingFilter) {\n this.updateDisplayedValue();\n }\n }\n destroy() {\n super.destroy();\n }\n}\n__decorate$2g([\n Autowired('columnModel')\n], GroupFloatingFilterComp.prototype, \"columnModel\", void 0);\n__decorate$2g([\n Autowired('filterManager')\n], GroupFloatingFilterComp.prototype, \"filterManager\", void 0);\n__decorate$2g([\n RefSelector('eFloatingFilter')\n], GroupFloatingFilterComp.prototype, \"eFloatingFilter\", void 0);\n\nconst RowGroupingModule = {\n version: VERSION$g,\n moduleName: ModuleNames.RowGroupingModule,\n beans: [AggregationStage, FilterAggregatesStage, GroupStage, PivotColDefService, PivotStage, AggFuncService],\n agStackComponents: [\n { componentName: 'AgGridHeaderDropZones', componentClass: GridHeaderDropZones }\n ],\n userComponents: [\n { componentName: 'agGroupColumnFilter', componentClass: GroupFilter },\n { componentName: 'agGroupColumnFloatingFilter', componentClass: GroupFloatingFilterComp },\n ],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n\nvar __decorate$2f = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass ValuesDropZonePanel extends BaseDropZonePanel {\n constructor(horizontal) {\n super(horizontal, 'aggregation');\n }\n passBeansUp() {\n super.setBeans({\n gridOptionsService: this.gridOptionsService,\n eventService: this.eventService,\n context: this.getContext(),\n loggerFactory: this.loggerFactory,\n dragAndDropService: this.dragAndDropService\n });\n const localeTextFunc = this.localeService.getLocaleTextFunc();\n const emptyMessage = localeTextFunc('valueColumnsEmptyMessage', 'Drag here to aggregate');\n const title = localeTextFunc('values', 'Values');\n super.init({\n dragAndDropIcon: DragAndDropService.ICON_AGGREGATE,\n icon: _.createIconNoSpan('valuePanel', this.gridOptionsService, null),\n emptyMessage: emptyMessage,\n title: title\n });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VALUE_CHANGED, this.refreshGui.bind(this));\n }\n getAriaLabel() {\n const translate = this.localeService.getLocaleTextFunc();\n const label = translate('ariaValuesDropZonePanelLabel', 'Values');\n return label;\n }\n getTooltipParams() {\n const res = super.getTooltipParams();\n res.location = 'valueColumnsList';\n return res;\n }\n getIconName() {\n return this.isPotentialDndColumns() ? DragAndDropService.ICON_AGGREGATE : DragAndDropService.ICON_NOT_ALLOWED;\n }\n isColumnDroppable(column) {\n // we never allow grouping of secondary columns\n if (this.gridOptionsService.is('functionsReadOnly') || !column.isPrimary()) {\n return false;\n }\n return column.isAllowValue() && !column.isValueActive();\n }\n updateColumns(columns) {\n if (this.gridOptionsService.is('functionsPassive')) {\n const event = {\n type: Events.EVENT_COLUMN_VALUE_CHANGE_REQUEST,\n columns: columns\n };\n this.eventService.dispatchEvent(event);\n }\n else {\n this.columnModel.setValueColumns(columns, \"toolPanelUi\");\n }\n }\n getExistingColumns() {\n return this.columnModel.getValueColumns();\n }\n}\n__decorate$2f([\n Autowired('columnModel')\n], ValuesDropZonePanel.prototype, \"columnModel\", void 0);\n__decorate$2f([\n Autowired('loggerFactory')\n], ValuesDropZonePanel.prototype, \"loggerFactory\", void 0);\n__decorate$2f([\n Autowired('dragAndDropService')\n], ValuesDropZonePanel.prototype, \"dragAndDropService\", void 0);\n__decorate$2f([\n PostConstruct\n], ValuesDropZonePanel.prototype, \"passBeansUp\", null);\n\nvar __decorate$2e = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass PrimaryColsPanel extends Component {\n constructor() {\n super(PrimaryColsPanel.TEMPLATE);\n }\n // we allow dragging in the toolPanel, but not when this component appears in the column menu\n init(allowDragging, params, eventType) {\n this.allowDragging = allowDragging;\n this.params = params;\n this.eventType = eventType;\n this.primaryColsHeaderPanel.init(this.params);\n const hideFilter = this.params.suppressColumnFilter;\n const hideSelect = this.params.suppressColumnSelectAll;\n const 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 toggleResizable(resizable) {\n this.positionableFeature.setResizable(resizable ? { bottom: true } : false);\n }\n onExpandAll() {\n this.primaryColsListPanel.doSetExpandedAll(true);\n }\n onCollapseAll() {\n this.primaryColsListPanel.doSetExpandedAll(false);\n }\n expandGroups(groupIds) {\n this.primaryColsListPanel.setGroupsExpanded(true, groupIds);\n }\n collapseGroups(groupIds) {\n this.primaryColsListPanel.setGroupsExpanded(false, groupIds);\n }\n setColumnLayout(colDefs) {\n this.primaryColsListPanel.setColumnLayout(colDefs);\n }\n onFilterChanged(event) {\n this.primaryColsListPanel.setFilterText(event.filterText);\n }\n syncLayoutWithGrid() {\n this.primaryColsListPanel.onColumnsChanged();\n }\n onSelectAll() {\n this.primaryColsListPanel.doSetSelectedAll(true);\n }\n onUnselectAll() {\n this.primaryColsListPanel.doSetSelectedAll(false);\n }\n onGroupExpanded(event) {\n this.primaryColsHeaderPanel.setExpandState(event.state);\n }\n onSelectionChange(event) {\n this.primaryColsHeaderPanel.setSelectionState(event.state);\n }\n}\nPrimaryColsPanel.TEMPLATE = `
\n \n \n
`;\n__decorate$2e([\n RefSelector('primaryColsHeaderPanel')\n], PrimaryColsPanel.prototype, \"primaryColsHeaderPanel\", void 0);\n__decorate$2e([\n RefSelector('primaryColsListPanel')\n], PrimaryColsPanel.prototype, \"primaryColsListPanel\", void 0);\n\nvar __decorate$2d = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass ColumnToolPanel extends Component {\n constructor() {\n super(ColumnToolPanel.TEMPLATE);\n this.initialised = false;\n this.childDestroyFuncs = [];\n }\n // lazy initialise the panel\n setVisible(visible) {\n super.setDisplayed(visible);\n if (visible && !this.initialised) {\n this.init(this.params);\n }\n }\n init(params) {\n const 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 this.params = Object.assign(Object.assign(Object.assign({}, defaultParams), params), { context: this.gridOptionsService.context });\n if (this.isRowGroupingModuleLoaded() && !this.params.suppressPivotMode) {\n // DO NOT CHANGE TO createManagedBean\n this.pivotModePanel = this.createBean(new PivotModePanel());\n this.childDestroyFuncs.push(() => this.destroyBean(this.pivotModePanel));\n this.appendChild(this.pivotModePanel);\n }\n // DO NOT CHANGE TO createManagedBean\n this.primaryColsPanel = this.createBean(new PrimaryColsPanel());\n this.childDestroyFuncs.push(() => 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 // DO NOT CHANGE TO createManagedBean\n this.rowGroupDropZonePanel = this.createBean(new RowGroupDropZonePanel(false));\n this.childDestroyFuncs.push(() => this.destroyBean(this.rowGroupDropZonePanel));\n this.appendChild(this.rowGroupDropZonePanel);\n }\n if (!this.params.suppressValues) {\n // DO NOT CHANGE TO createManagedBean\n this.valuesDropZonePanel = this.createBean(new ValuesDropZonePanel(false));\n this.childDestroyFuncs.push(() => this.destroyBean(this.valuesDropZonePanel));\n this.appendChild(this.valuesDropZonePanel);\n }\n if (!this.params.suppressPivots) {\n // DO NOT CHANGE TO createManagedBean\n this.pivotDropZonePanel = this.createBean(new PivotDropZonePanel(false));\n this.childDestroyFuncs.push(() => this.destroyBean(this.pivotDropZonePanel));\n this.appendChild(this.pivotDropZonePanel);\n }\n this.setLastVisible();\n const pivotModeListener = this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, () => {\n this.resetChildrenHeight();\n this.setLastVisible();\n });\n this.childDestroyFuncs.push(() => pivotModeListener());\n }\n this.initialised = true;\n }\n setPivotModeSectionVisible(visible) {\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(() => this.destroyBean(this.pivotModePanel));\n }\n this.setLastVisible();\n }\n setRowGroupsSectionVisible(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 setValuesSectionVisible(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 setPivotSectionVisible(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 setResizers() {\n [\n this.primaryColsPanel,\n this.rowGroupDropZonePanel,\n this.valuesDropZonePanel,\n this.pivotDropZonePanel\n ].forEach(panel => {\n if (!panel) {\n return;\n }\n const eGui = panel.getGui();\n panel.toggleResizable(!eGui.classList.contains('ag-last-column-drop') && !eGui.classList.contains('ag-hidden'));\n });\n }\n setLastVisible() {\n const eGui = this.getGui();\n const columnDrops = Array.prototype.slice.call(eGui.querySelectorAll('.ag-column-drop'));\n columnDrops.forEach(columnDrop => columnDrop.classList.remove('ag-last-column-drop'));\n const columnDropEls = eGui.querySelectorAll('.ag-column-drop:not(.ag-hidden)');\n const lastVisible = _.last(columnDropEls);\n if (lastVisible) {\n lastVisible.classList.add('ag-last-column-drop');\n }\n this.setResizers();\n }\n resetChildrenHeight() {\n const eGui = this.getGui();\n const children = eGui.children;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n child.style.removeProperty('height');\n child.style.removeProperty('flex');\n }\n }\n isRowGroupingModuleLoaded() {\n return ModuleRegistry.__assertRegistered(ModuleNames.RowGroupingModule, 'Row Grouping', this.context.getGridId());\n }\n expandColumnGroups(groupIds) {\n this.primaryColsPanel.expandGroups(groupIds);\n }\n collapseColumnGroups(groupIds) {\n this.primaryColsPanel.collapseGroups(groupIds);\n }\n setColumnLayout(colDefs) {\n this.primaryColsPanel.setColumnLayout(colDefs);\n }\n syncLayoutWithGrid() {\n this.primaryColsPanel.syncLayoutWithGrid();\n }\n destroyChildren() {\n this.childDestroyFuncs.forEach(func => func());\n this.childDestroyFuncs.length = 0;\n _.clearElement(this.getGui());\n }\n refresh() {\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 destroy() {\n this.destroyChildren();\n super.destroy();\n }\n}\nColumnToolPanel.TEMPLATE = `
`;\n__decorate$2d([\n Autowired(\"gridApi\")\n], ColumnToolPanel.prototype, \"gridApi\", void 0);\n__decorate$2d([\n Autowired(\"columnApi\")\n], ColumnToolPanel.prototype, \"columnApi\", void 0);\n\nvar __decorate$2c = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass HorizontalResizeComp extends Component {\n constructor() {\n super(/* html */ `
`);\n this.minWidth = 100;\n this.maxWidth = null;\n }\n setElementToResize(elementToResize) {\n this.elementToResize = elementToResize;\n }\n postConstruct() {\n const 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.onResizeEnd.bind(this)\n });\n this.addDestroyFunc(finishedWithResizeFunc);\n this.setInverted(this.gridOptionsService.is('enableRtl'));\n }\n dispatchResizeEvent(start, end, width) {\n const event = {\n type: Events.EVENT_TOOL_PANEL_SIZE_CHANGED,\n width: width,\n started: start,\n ended: end,\n };\n this.eventService.dispatchEvent(event);\n }\n onResizeStart() {\n this.startingWidth = this.elementToResize.offsetWidth;\n this.dispatchResizeEvent(true, false, this.startingWidth);\n }\n onResizeEnd(delta) {\n return this.onResizing(delta, true);\n }\n onResizing(delta, isEnd = false) {\n const direction = this.inverted ? -1 : 1;\n let 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 this.dispatchResizeEvent(false, isEnd, newWidth);\n }\n setInverted(inverted) {\n this.inverted = inverted;\n }\n setMaxWidth(value) {\n this.maxWidth = value;\n }\n setMinWidth(value) {\n if (value != null) {\n this.minWidth = value;\n }\n else {\n this.minWidth = 100;\n }\n }\n}\n__decorate$2c([\n Autowired('horizontalResizeService')\n], HorizontalResizeComp.prototype, \"horizontalResizeService\", void 0);\n__decorate$2c([\n PostConstruct\n], HorizontalResizeComp.prototype, \"postConstruct\", null);\n\nvar __decorate$2b = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass SideBarButtonComp extends Component {\n constructor(toolPanelDef) {\n super();\n this.toolPanelDef = toolPanelDef;\n }\n getToolPanelId() {\n return this.toolPanelDef.id;\n }\n postConstruct() {\n const template = this.createTemplate();\n this.setTemplate(template);\n this.setLabel();\n this.setIcon();\n this.addManagedListener(this.eToggleButton, 'click', this.onButtonPressed.bind(this));\n this.eToggleButton.setAttribute('id', `ag-${this.getCompId()}-button`);\n }\n createTemplate() {\n const res = /* html */ `
\n \n
`;\n return res;\n }\n setLabel() {\n const translate = this.localeService.getLocaleTextFunc();\n const def = this.toolPanelDef;\n const label = translate(def.labelKey, def.labelDefault);\n this.eLabel.innerText = label;\n }\n setIcon() {\n this.eIconWrapper.insertAdjacentElement('afterbegin', _.createIconNoSpan(this.toolPanelDef.iconKey, this.gridOptionsService));\n }\n onButtonPressed() {\n this.dispatchEvent({ type: SideBarButtonComp.EVENT_TOGGLE_BUTTON_CLICKED });\n }\n setSelected(selected) {\n this.addOrRemoveCssClass('ag-selected', selected);\n _.setAriaExpanded(this.eToggleButton, selected);\n }\n getButtonElement() {\n return this.eToggleButton;\n }\n}\nSideBarButtonComp.EVENT_TOGGLE_BUTTON_CLICKED = 'toggleButtonClicked';\n__decorate$2b([\n RefSelector('eToggleButton')\n], SideBarButtonComp.prototype, \"eToggleButton\", void 0);\n__decorate$2b([\n RefSelector('eIconWrapper')\n], SideBarButtonComp.prototype, \"eIconWrapper\", void 0);\n__decorate$2b([\n RefSelector('eLabel')\n], SideBarButtonComp.prototype, \"eLabel\", void 0);\n__decorate$2b([\n PostConstruct\n], SideBarButtonComp.prototype, \"postConstruct\", null);\n\nvar __decorate$2a = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass SideBarButtonsComp extends Component {\n constructor() {\n super(SideBarButtonsComp.TEMPLATE);\n this.buttonComps = [];\n }\n postConstruct() {\n this.addManagedListener(this.getFocusableElement(), 'keydown', this.handleKeyDown.bind(this));\n }\n handleKeyDown(e) {\n if (e.key !== KeyCode.TAB || !e.shiftKey) {\n return;\n }\n const lastColumn = _.last(this.columnModel.getAllDisplayedColumns());\n if (this.focusService.focusGridView(lastColumn, true)) {\n e.preventDefault();\n }\n }\n setActiveButton(id) {\n this.buttonComps.forEach(comp => {\n comp.setSelected(id === comp.getToolPanelId());\n });\n }\n addButtonComp(def) {\n const buttonComp = this.createBean(new SideBarButtonComp(def));\n this.buttonComps.push(buttonComp);\n this.appendChild(buttonComp);\n buttonComp.addEventListener(SideBarButtonComp.EVENT_TOGGLE_BUTTON_CLICKED, () => {\n this.dispatchEvent({\n type: SideBarButtonsComp.EVENT_SIDE_BAR_BUTTON_CLICKED,\n toolPanelId: def.id\n });\n });\n return buttonComp;\n }\n clearButtons() {\n this.buttonComps = this.destroyBeans(this.buttonComps);\n _.clearElement(this.getGui());\n }\n}\nSideBarButtonsComp.EVENT_SIDE_BAR_BUTTON_CLICKED = 'sideBarButtonClicked';\nSideBarButtonsComp.TEMPLATE = `
`;\n__decorate$2a([\n Autowired('focusService')\n], SideBarButtonsComp.prototype, \"focusService\", void 0);\n__decorate$2a([\n Autowired('columnModel')\n], SideBarButtonsComp.prototype, \"columnModel\", void 0);\n__decorate$2a([\n PostConstruct\n], SideBarButtonsComp.prototype, \"postConstruct\", null);\n__decorate$2a([\n PreDestroy\n], SideBarButtonsComp.prototype, \"clearButtons\", null);\n\nclass SideBarDefParser {\n static parse(toParse) {\n if (!toParse) {\n return undefined;\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 const comps = [];\n toParse.forEach(key => {\n const 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.push(lookupResult);\n });\n if (comps.length === 0) {\n return undefined;\n }\n return {\n toolPanels: comps,\n defaultToolPanel: comps[0].id\n };\n }\n const 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 static parseComponents(from) {\n const result = [];\n if (!from) {\n return result;\n }\n from.forEach((it) => {\n let toAdd = null;\n if (typeof it === 'string') {\n const 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}\nSideBarDefParser.DEFAULT_COLUMN_COMP = {\n id: 'columns',\n labelDefault: 'Columns',\n labelKey: 'columns',\n iconKey: 'columns',\n toolPanel: 'agColumnsToolPanel',\n};\nSideBarDefParser.DEFAULT_FILTER_COMP = {\n id: 'filters',\n labelDefault: 'Filters',\n labelKey: 'filters',\n iconKey: 'filter',\n toolPanel: 'agFiltersToolPanel',\n};\nSideBarDefParser.DEFAULT_BY_KEY = {\n columns: SideBarDefParser.DEFAULT_COLUMN_COMP,\n filters: SideBarDefParser.DEFAULT_FILTER_COMP\n};\n\nvar __decorate$29 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass ToolPanelWrapper extends Component {\n constructor() {\n super(ToolPanelWrapper.TEMPLATE);\n }\n setupResize() {\n const eGui = this.getGui();\n const resizeBar = this.resizeBar = this.createManagedBean(new HorizontalResizeComp());\n eGui.setAttribute('id', `ag-${this.getCompId()}`);\n resizeBar.setElementToResize(eGui);\n this.appendChild(resizeBar);\n }\n getToolPanelId() {\n return this.toolPanelId;\n }\n setToolPanelDef(toolPanelDef) {\n const { id, minWidth, maxWidth, width } = toolPanelDef;\n this.toolPanelId = id;\n this.width = width;\n const params = {};\n const compDetails = this.userComponentFactory.getToolPanelCompDetails(toolPanelDef, params);\n const componentPromise = compDetails.newAgStackInstance();\n if (componentPromise == null) {\n console.warn(`AG Grid: error processing tool panel component ${id}. You need to specify 'toolPanel'`);\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 setToolPanelComponent(compInstance) {\n this.toolPanelCompInstance = compInstance;\n this.appendChild(compInstance.getGui());\n this.addDestroyFunc(() => {\n this.destroyBean(compInstance);\n });\n if (this.width) {\n this.getGui().style.width = `${this.width}px`;\n }\n }\n getToolPanelInstance() {\n return this.toolPanelCompInstance;\n }\n setResizerSizerSide(side) {\n const isRtl = this.gridOptionsService.is('enableRtl');\n const isLeft = side === 'left';\n const inverted = isRtl ? isLeft : !isLeft;\n this.resizeBar.setInverted(inverted);\n }\n refresh() {\n this.toolPanelCompInstance.refresh();\n }\n}\nToolPanelWrapper.TEMPLATE = `
`;\n__decorate$29([\n Autowired(\"userComponentFactory\")\n], ToolPanelWrapper.prototype, \"userComponentFactory\", void 0);\n__decorate$29([\n PostConstruct\n], ToolPanelWrapper.prototype, \"setupResize\", null);\n\nvar __decorate$28 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass SideBarComp extends Component {\n constructor() {\n super(SideBarComp.TEMPLATE);\n this.toolPanelWrappers = [];\n }\n postConstruct() {\n this.sideBarButtonsComp.addEventListener(SideBarButtonsComp.EVENT_SIDE_BAR_BUTTON_CLICKED, this.onToolPanelButtonClicked.bind(this));\n this.setSideBarDef();\n this.addManagedPropertyListener('sideBar', () => {\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 onTabKeyDown(e) {\n if (e.defaultPrevented) {\n return;\n }\n const { focusService, sideBarButtonsComp } = this;\n const eGui = this.getGui();\n const sideBarGui = sideBarButtonsComp.getGui();\n const eDocument = this.gridOptionsService.getDocument();\n const activeElement = eDocument.activeElement;\n const openPanel = eGui.querySelector('.ag-tool-panel-wrapper:not(.ag-hidden)');\n const target = e.target;\n if (!openPanel) {\n return;\n }\n if (sideBarGui.contains(activeElement)) {\n if (focusService.focusInto(openPanel, e.shiftKey)) {\n e.preventDefault();\n }\n return;\n }\n // only handle backwards focus to target the sideBar buttons\n if (!e.shiftKey) {\n return;\n }\n let nextEl = null;\n if (openPanel.contains(activeElement)) {\n nextEl = this.focusService.findNextFocusableElement(openPanel, undefined, true);\n }\n else if (focusService.isTargetUnderManagedComponent(openPanel, target) && e.shiftKey) {\n nextEl = this.focusService.findFocusableElementBeforeTabGuard(openPanel, target);\n }\n if (!nextEl) {\n nextEl = sideBarGui.querySelector('.ag-selected button');\n }\n if (nextEl) {\n e.preventDefault();\n nextEl.focus();\n }\n }\n handleKeyDown(e) {\n const eDocument = this.gridOptionsService.getDocument();\n if (!this.sideBarButtonsComp.getGui().contains(eDocument.activeElement)) {\n return;\n }\n const sideBarGui = this.sideBarButtonsComp.getGui();\n const buttons = Array.prototype.slice.call(sideBarGui.querySelectorAll('.ag-side-button'));\n const currentButton = eDocument.activeElement;\n const currentPos = buttons.findIndex(button => button.contains(currentButton));\n let 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 const innerButton = buttons[nextPos].querySelector('button');\n if (innerButton) {\n innerButton.focus();\n e.preventDefault();\n }\n }\n onToolPanelButtonClicked(event) {\n const id = event.toolPanelId;\n const openedItem = this.openedItem();\n // if item was already open, we close it\n if (openedItem === id) {\n this.openToolPanel(undefined, 'sideBarButtonClicked'); // passing undefined closes\n }\n else {\n this.openToolPanel(id, 'sideBarButtonClicked');\n }\n }\n clearDownUi() {\n this.sideBarButtonsComp.clearButtons();\n this.destroyToolPanelWrappers();\n }\n setSideBarDef() {\n // initially hide side bar\n this.setDisplayed(false);\n const sideBarRaw = this.gridOptionsService.get('sideBar');\n this.sideBar = SideBarDefParser.parse(sideBarRaw);\n if (!!this.sideBar && !!this.sideBar.toolPanels) {\n const shouldDisplaySideBar = !this.sideBar.hiddenByDefault;\n this.setDisplayed(shouldDisplaySideBar);\n const toolPanelDefs = this.sideBar.toolPanels;\n this.createToolPanelsAndSideButtons(toolPanelDefs);\n this.setSideBarPosition(this.sideBar.position);\n if (!this.sideBar.hiddenByDefault) {\n this.openToolPanel(this.sideBar.defaultToolPanel, 'sideBarInitializing');\n }\n }\n }\n getDef() {\n return this.sideBar;\n }\n setSideBarPosition(position) {\n if (!position) {\n position = 'right';\n }\n const isLeft = position === 'left';\n const resizerSide = isLeft ? 'right' : 'left';\n this.addOrRemoveCssClass('ag-side-bar-left', isLeft);\n this.addOrRemoveCssClass('ag-side-bar-right', !isLeft);\n this.toolPanelWrappers.forEach(wrapper => {\n wrapper.setResizerSizerSide(resizerSide);\n });\n return this;\n }\n createToolPanelsAndSideButtons(defs) {\n for (const def of defs) {\n this.createToolPanelAndSideButton(def);\n }\n }\n validateDef(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 false;\n }\n // helpers, in case user doesn't have the right module loaded\n if (def.toolPanel === 'agColumnsToolPanel') {\n const moduleMissing = !ModuleRegistry.__assertRegistered(ModuleNames.ColumnsToolPanelModule, 'Column Tool Panel', this.context.getGridId());\n if (moduleMissing) {\n return false;\n }\n }\n if (def.toolPanel === 'agFiltersToolPanel') {\n const moduleMissing = !ModuleRegistry.__assertRegistered(ModuleNames.FiltersToolPanelModule, 'Filters Tool Panel', this.context.getGridId());\n if (moduleMissing) {\n return false;\n }\n }\n return true;\n }\n createToolPanelAndSideButton(def) {\n if (!this.validateDef(def)) {\n return;\n }\n const button = this.sideBarButtonsComp.addButtonComp(def);\n const wrapper = this.getContext().createBean(new ToolPanelWrapper());\n wrapper.setToolPanelDef(def);\n wrapper.setDisplayed(false);\n const wrapperGui = wrapper.getGui();\n this.appendChild(wrapperGui);\n this.toolPanelWrappers.push(wrapper);\n _.setAriaControls(button.getButtonElement(), wrapperGui);\n }\n refresh() {\n this.toolPanelWrappers.forEach(wrapper => wrapper.refresh());\n }\n openToolPanel(key, source = 'api') {\n const currentlyOpenedKey = this.openedItem();\n if (currentlyOpenedKey === key) {\n return;\n }\n this.toolPanelWrappers.forEach(wrapper => {\n const show = key === wrapper.getToolPanelId();\n wrapper.setDisplayed(show);\n });\n const newlyOpenedKey = this.openedItem();\n const openToolPanelChanged = currentlyOpenedKey !== newlyOpenedKey;\n if (openToolPanelChanged) {\n this.sideBarButtonsComp.setActiveButton(key);\n this.raiseToolPanelVisibleEvent(key, currentlyOpenedKey !== null && currentlyOpenedKey !== void 0 ? currentlyOpenedKey : undefined, source);\n }\n }\n getToolPanelInstance(key) {\n const toolPanelWrapper = this.toolPanelWrappers.filter(toolPanel => 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 raiseToolPanelVisibleEvent(key, previousKey, source) {\n const switchingToolPanel = !!key && !!previousKey;\n if (previousKey) {\n const event = {\n type: Events.EVENT_TOOL_PANEL_VISIBLE_CHANGED,\n source,\n key: previousKey,\n visible: false,\n switchingToolPanel,\n };\n this.eventService.dispatchEvent(event);\n }\n if (key) {\n const event = {\n type: Events.EVENT_TOOL_PANEL_VISIBLE_CHANGED,\n source,\n key,\n visible: true,\n switchingToolPanel,\n };\n this.eventService.dispatchEvent(event);\n }\n }\n close(source = 'api') {\n this.openToolPanel(undefined, source);\n }\n isToolPanelShowing() {\n return !!this.openedItem();\n }\n openedItem() {\n let activeToolPanel = null;\n this.toolPanelWrappers.forEach(wrapper => {\n if (wrapper.isDisplayed()) {\n activeToolPanel = wrapper.getToolPanelId();\n }\n });\n return activeToolPanel;\n }\n destroyToolPanelWrappers() {\n this.toolPanelWrappers.forEach(wrapper => {\n _.removeFromParent(wrapper.getGui());\n this.destroyBean(wrapper);\n });\n this.toolPanelWrappers.length = 0;\n }\n destroy() {\n this.destroyToolPanelWrappers();\n super.destroy();\n }\n}\nSideBarComp.TEMPLATE = `
\n \n
`;\n__decorate$28([\n Autowired('gridApi')\n], SideBarComp.prototype, \"gridApi\", void 0);\n__decorate$28([\n Autowired('focusService')\n], SideBarComp.prototype, \"focusService\", void 0);\n__decorate$28([\n RefSelector('sideBarButtons')\n], SideBarComp.prototype, \"sideBarButtonsComp\", void 0);\n__decorate$28([\n PostConstruct\n], SideBarComp.prototype, \"postConstruct\", null);\n\nvar __decorate$27 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet ToolPanelColDefService = class ToolPanelColDefService extends BeanStub {\n constructor() {\n super(...arguments);\n this.isColGroupDef = (colDef) => colDef && typeof colDef.children !== 'undefined';\n this.getId = (colDef) => {\n return this.isColGroupDef(colDef) ? colDef.groupId : colDef.colId;\n };\n }\n createColumnTree(colDefs) {\n const invalidColIds = [];\n const createDummyColGroup = (abstractColDef, depth) => {\n if (this.isColGroupDef(abstractColDef)) {\n // creating 'dummy' group which is not associated with grid column group\n const groupDef = abstractColDef;\n const groupId = (typeof groupDef.groupId !== 'undefined') ? groupDef.groupId : groupDef.headerName;\n const group = new ProvidedColumnGroup(groupDef, groupId, false, depth);\n const children = [];\n groupDef.children.forEach(def => {\n const child = createDummyColGroup(def, depth + 1);\n // check column exists in case invalid colDef is supplied for primary column\n if (child) {\n children.push(child);\n }\n });\n group.setChildren(children);\n return group;\n }\n else {\n const colDef = abstractColDef;\n const key = colDef.colId ? colDef.colId : colDef.field;\n const column = this.columnModel.getPrimaryColumn(key);\n if (!column) {\n invalidColIds.push(colDef);\n }\n return column;\n }\n };\n const mappedResults = [];\n colDefs.forEach(colDef => {\n const 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 syncLayoutWithGrid(syncLayoutCallback) {\n // extract ordered list of leaf path trees (column group hierarchy for each individual leaf column)\n const leafPathTrees = this.getLeafPathTrees();\n // merge leaf path tree taking split column groups into account\n const mergedColumnTrees = this.mergeLeafPathTrees(leafPathTrees);\n // sync layout with merged column trees\n syncLayoutCallback(mergedColumnTrees);\n }\n getLeafPathTrees() {\n // leaf tree paths are obtained by walking up the tree starting at a column until we reach the top level group.\n const getLeafPathTree = (node, childDef) => {\n let 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 const 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 const colDef = Object.assign({}, node.getColDef());\n // ensure col contains colId\n colDef.colId = node.getColId();\n leafPathTree = colDef;\n }\n // walk tree\n const 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 const allGridColumns = this.columnModel.getAllGridColumns();\n // only primary columns and non row group columns should appear in the tool panel\n const allPrimaryGridColumns = allGridColumns.filter(column => {\n const colDef = column.getColDef();\n return column.isPrimary() && !colDef.showRowGroup;\n });\n // construct a leaf path tree for each column\n return allPrimaryGridColumns.map(col => getLeafPathTree(col, col.getColDef()));\n }\n mergeLeafPathTrees(leafPathTrees) {\n const matchingRootGroupIds = (pathA, pathB) => {\n const bothPathsAreGroups = this.isColGroupDef(pathA) && this.isColGroupDef(pathB);\n return bothPathsAreGroups && this.getId(pathA) === this.getId(pathB);\n };\n const mergeTrees = (treeA, treeB) => {\n if (!this.isColGroupDef(treeB)) {\n return treeA;\n }\n const mergeResult = treeA;\n const groupToMerge = treeB;\n if (groupToMerge.children && groupToMerge.groupId) {\n const added = this.addChildrenToGroup(mergeResult, groupToMerge.groupId, groupToMerge.children[0]);\n if (added) {\n return mergeResult;\n }\n }\n groupToMerge.children.forEach(child => 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 const mergeColDefs = [];\n for (let i = 1; i <= leafPathTrees.length; i++) {\n const first = leafPathTrees[i - 1];\n const 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 addChildrenToGroup(tree, groupId, colDef) {\n const subGroupIsSplit = (currentSubGroup, currentSubGroupToAdd) => {\n const existingChildIds = currentSubGroup.children.map(this.getId);\n const childGroupAlreadyExists = _.includes(existingChildIds, this.getId(currentSubGroupToAdd));\n const lastChild = _.last(currentSubGroup.children);\n const lastChildIsDifferent = lastChild && this.getId(lastChild) !== this.getId(currentSubGroupToAdd);\n return childGroupAlreadyExists && lastChildIsDifferent;\n };\n if (!this.isColGroupDef(tree)) {\n return true;\n }\n const currentGroup = tree;\n const 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 const existingChildIds = currentGroup.children.map(this.getId);\n const 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(subGroup => this.addChildrenToGroup(subGroup, groupId, colDef));\n return false;\n }\n};\n__decorate$27([\n Autowired('columnModel')\n], ToolPanelColDefService.prototype, \"columnModel\", void 0);\nToolPanelColDefService = __decorate$27([\n Bean('toolPanelColDefService')\n], ToolPanelColDefService);\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nconst VERSION$f = '30.0.5';\n\nconst SideBarModule = {\n version: VERSION$f,\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\nvar __decorate$26 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet ModelItemUtils = class ModelItemUtils {\n selectAllChildren(colTree, selectAllChecked, eventType) {\n const cols = this.extractAllLeafColumns(colTree);\n this.setAllColumns(cols, selectAllChecked, eventType);\n }\n setColumn(col, selectAllChecked, eventType) {\n this.setAllColumns([col], selectAllChecked, eventType);\n }\n setAllColumns(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 extractAllLeafColumns(allItems) {\n const res = [];\n const recursiveFunc = (items) => {\n items.forEach(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 setAllVisible(columns, visible, eventType) {\n const colStateItems = [];\n columns.forEach(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 setAllPivot(columns, value, eventType) {\n if (this.gridOptionsService.is('functionsPassive')) {\n this.setAllPivotPassive(columns, value);\n }\n else {\n this.setAllPivotActive(columns, value, eventType);\n }\n }\n setAllPivotPassive(columns, value) {\n const copyOfPivotColumns = this.columnModel.getPivotColumns().slice();\n const copyOfValueColumns = this.columnModel.getValueColumns().slice();\n const copyOfRowGroupColumns = this.columnModel.getRowGroupColumns().slice();\n let pivotChanged = false;\n let valueChanged = false;\n let rowGroupChanged = false;\n const turnOnAction = (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 const turnOffAction = (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 const action = value ? turnOnAction : turnOffAction;\n columns.forEach(action);\n if (pivotChanged) {\n const event = {\n type: Events.EVENT_COLUMN_PIVOT_CHANGE_REQUEST,\n columns: copyOfPivotColumns\n };\n this.eventService.dispatchEvent(event);\n }\n if (rowGroupChanged) {\n const event = {\n type: Events.EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST,\n columns: copyOfRowGroupColumns\n };\n this.eventService.dispatchEvent(event);\n }\n if (valueChanged) {\n const event = {\n type: Events.EVENT_COLUMN_VALUE_CHANGE_REQUEST,\n columns: copyOfRowGroupColumns\n };\n this.eventService.dispatchEvent(event);\n }\n }\n setAllPivotActive(columns, value, eventType) {\n const colStateItems = [];\n const turnOnAction = (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 const 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 const turnOffAction = (col) => {\n const 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 const action = value ? turnOnAction : turnOffAction;\n columns.forEach(action);\n if (colStateItems.length > 0) {\n this.columnModel.applyColumnState({ state: colStateItems }, eventType);\n }\n }\n updateColumns(params) {\n const { columns, visibleState, pivotState, eventType } = params;\n const state = columns.map(column => {\n const colId = column.getColId();\n if (this.columnModel.isPivotMode()) {\n const pivotStateForColumn = pivotState === null || pivotState === void 0 ? void 0 : pivotState[colId];\n return {\n colId,\n pivot: pivotStateForColumn === null || pivotStateForColumn === void 0 ? void 0 : pivotStateForColumn.pivot,\n rowGroup: pivotStateForColumn === null || pivotStateForColumn === void 0 ? void 0 : pivotStateForColumn.rowGroup,\n aggFunc: pivotStateForColumn === null || pivotStateForColumn === void 0 ? void 0 : pivotStateForColumn.aggFunc,\n };\n }\n else {\n return {\n colId,\n hide: !(visibleState === null || visibleState === void 0 ? void 0 : visibleState[colId])\n };\n }\n });\n this.columnModel.applyColumnState({ state }, eventType);\n }\n createPivotState(column) {\n return {\n pivot: column.isPivotActive(),\n rowGroup: column.isRowGroupActive(),\n aggFunc: column.isValueActive() ? column.getAggFunc() : undefined\n };\n }\n};\n__decorate$26([\n Autowired('aggFuncService')\n], ModelItemUtils.prototype, \"aggFuncService\", void 0);\n__decorate$26([\n Autowired('columnModel')\n], ModelItemUtils.prototype, \"columnModel\", void 0);\n__decorate$26([\n Autowired('gridOptionsService')\n], ModelItemUtils.prototype, \"gridOptionsService\", void 0);\n__decorate$26([\n Autowired('eventService')\n], ModelItemUtils.prototype, \"eventService\", void 0);\nModelItemUtils = __decorate$26([\n Bean('modelItemUtils')\n], ModelItemUtils);\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nconst VERSION$e = '30.0.5';\n\nconst ColumnsToolPanelModule = {\n version: VERSION$e,\n moduleName: ModuleNames.ColumnsToolPanelModule,\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\nconst workbook = {\n getTemplate() {\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};\n\nconst excelWorkbook = {\n getTemplate() {\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};\n\nconst column = {\n getTemplate(c) {\n const { width } = c;\n return {\n name: \"Column\",\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Width: width\n }\n }]\n }\n };\n }\n};\n\nconst cell = {\n getTemplate(c) {\n const { mergeAcross, styleId, data } = c;\n const 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 === null || data === void 0 ? void 0 : data.type\n }\n }]\n },\n textNode: data === null || data === void 0 ? void 0 : data.value\n }]\n };\n }\n};\n\nconst row = {\n getTemplate(r) {\n const { cells } = r;\n return {\n name: \"Row\",\n children: cells.map(it => cell.getTemplate(it))\n };\n }\n};\n\nconst worksheet = {\n getTemplate(ws) {\n const { table, name } = ws;\n const { columns, rows } = table;\n const c = columns.map(it => column.getTemplate(it));\n const r = rows.map(it => 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};\n\nconst documentProperties = {\n getTemplate() {\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};\n\nconst alignment = {\n getTemplate(styleProperties) {\n const { vertical, horizontal, indent, readingOrder, rotate, shrinkToFit, verticalText, wrapText } = styleProperties.alignment;\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};\n\nconst borders = {\n getTemplate(styleProperties) {\n const { borderBottom, borderLeft, borderRight, borderTop } = styleProperties.borders;\n return {\n name: 'Borders',\n children: [borderBottom, borderLeft, borderRight, borderTop].map((it, index) => {\n const 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};\n\nconst font = {\n getTemplate(styleProperties) {\n const { bold, fontName, italic, color, outline, shadow, size, strikeThrough, underline, verticalAlign, charSet, family, } = styleProperties.font;\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};\n\nconst interior = {\n getTemplate(styleProperties) {\n const { color, pattern, patternColor } = styleProperties.interior;\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};\n\nconst protection = {\n getTemplate(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};\n\nconst numberFormat = {\n getTemplate(styleProperties) {\n const { format } = styleProperties.numberFormat;\n return {\n name: \"NumberFormat\",\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Format: format\n }\n }]\n }\n };\n }\n};\n\nconst style = {\n getTemplate(styleProperties) {\n const { id, name } = styleProperties;\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};\n\n/**\n * See https://msdn.microsoft.com/en-us/library/aa140066(v=office.10).aspx\n */\nclass ExcelXmlFactory {\n static createExcel(styles, currentWorksheet) {\n const header = this.excelXmlHeader();\n const docProps = documentProperties.getTemplate();\n const eWorkbook = excelWorkbook.getTemplate();\n const wb = this.workbook(docProps, eWorkbook, styles, currentWorksheet);\n return `${header}${XmlFactory.createXml(wb, boolean => boolean ? '1' : '0')}`;\n }\n static workbook(docProperties, eWorkbook, styles, currentWorksheet) {\n const children = [\n docProperties,\n eWorkbook,\n this.stylesXmlElement(styles)\n ].concat(worksheet.getTemplate(currentWorksheet));\n return Object.assign({}, workbook.getTemplate(), { children });\n }\n static excelXmlHeader() {\n return `\n \n `;\n }\n static stylesXmlElement(styles) {\n return {\n name: 'Styles',\n children: styles ? styles.map(it => this.styleXmlElement(it)) : []\n };\n }\n static styleXmlElement(styleProperties) {\n const 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 });\n }\n static addProperty(property, styleProperties) {\n return (children) => {\n if (!styleProperties[property]) {\n return children;\n }\n const options = {\n alignment,\n borders,\n font,\n interior,\n numberFormat,\n protection\n };\n return children.concat(options[property].getTemplate(styleProperties));\n };\n }\n}\nExcelXmlFactory.factoryMode = ExcelFactoryMode.SINGLE_SHEET;\n\nconst INCH_TO_EMU = 9525;\nconst 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\nconst pixelsToPoint = (pixels) => {\n return Math.round(pixels * 72 / 96);\n};\nconst pointsToPixel = (points) => {\n return Math.round(points * 96 / 72);\n};\nconst pixelsToEMU = (value) => {\n return Math.ceil(value * INCH_TO_EMU);\n};\nconst getFontFamilyId = (name) => {\n if (name === undefined) {\n return;\n }\n const families = ['Automatic', 'Roman', 'Swiss', 'Modern', 'Script', 'Decorative'];\n const pos = families.indexOf(name || 'Automatic');\n return Math.max(pos, 0);\n};\nconst getHeightFromProperty = (rowIndex, height) => {\n if (!height) {\n return;\n }\n let finalHeight;\n if (typeof height === 'number') {\n finalHeight = height;\n }\n else {\n const heightFunc = height;\n finalHeight = heightFunc({ rowIndex });\n }\n return pixelsToPoint(finalHeight);\n};\nconst setExcelImageTotalWidth = (image, columnsToExport) => {\n const { colSpan, column } = image.position;\n if (image.width) {\n if (colSpan) {\n const columnsInSpan = columnsToExport.slice(column - 1, column + colSpan - 1);\n let totalWidth = 0;\n for (let i = 0; i < columnsInSpan.length; i++) {\n const 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};\nconst setExcelImageTotalHeight = (image, rowHeight) => {\n const { rowSpan, row } = image.position;\n if (image.height) {\n if (rowSpan) {\n let totalHeight = 0;\n let counter = 0;\n for (let i = row; i < row + rowSpan; i++) {\n const 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};\nconst createXmlPart = (body) => {\n const header = XmlFactory.createHeader({\n encoding: 'UTF-8',\n standalone: 'yes'\n });\n const xmlBody = XmlFactory.createXml(body);\n return `${header}${xmlBody}`;\n};\nconst getExcelColumnName = (colIdx) => {\n const startCode = 65;\n const tableWidth = 26;\n const fromCharCode = String.fromCharCode;\n const pos = Math.floor(colIdx / tableWidth);\n const 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\nclass BaseExcelSerializingSession extends BaseGridSerializingSession {\n constructor(config) {\n super(config);\n this.mixedStyles = {};\n this.mixedStyleCounter = 0;\n this.rows = [];\n this.config = Object.assign({}, config);\n this.stylesByIds = {};\n this.config.baseExcelStyles.forEach(style => {\n this.stylesByIds[style.id] = style;\n });\n this.excelStyles = [...this.config.baseExcelStyles];\n }\n addCustomContent(customContent) {\n customContent.forEach(row => {\n const rowLen = this.rows.length + 1;\n let outlineLevel;\n if (!this.config.suppressRowOutline && row.outlineLevel != null) {\n outlineLevel = row.outlineLevel;\n }\n const rowObj = {\n height: getHeightFromProperty(rowLen, row.height || this.config.rowHeight),\n cells: (row.cells || []).map((cell, idx) => {\n var _a, _b, _c;\n const image = this.addImage(rowLen, this.columnsToExport[idx], (_a = cell.data) === null || _a === void 0 ? void 0 : _a.value);\n let excelStyles = null;\n if (cell.styleId) {\n excelStyles = typeof cell.styleId === 'string' ? [cell.styleId] : cell.styleId;\n }\n const excelStyleId = this.getStyleId(excelStyles);\n if (image) {\n return this.createCell(excelStyleId, this.getDataTypeForValue(image.value), image.value == null ? '' : image.value);\n }\n const value = (_c = (_b = cell.data) === null || _b === void 0 ? void 0 : _b.value) !== null && _c !== void 0 ? _c : '';\n const type = this.getDataTypeForValue(value);\n if (cell.mergeAcross) {\n return this.createMergedCell(excelStyleId, type, value, cell.mergeAcross);\n }\n return this.createCell(excelStyleId, type, value);\n }),\n outlineLevel\n };\n if (row.collapsed != null) {\n rowObj.collapsed = row.collapsed;\n }\n if (row.hidden != null) {\n rowObj.hidden = row.hidden;\n }\n this.rows.push(rowObj);\n });\n }\n onNewHeaderGroupingRow() {\n const currentCells = [];\n this.rows.push({\n cells: currentCells,\n height: getHeightFromProperty(this.rows.length + 1, this.config.headerRowHeight)\n });\n return {\n onColumn: (columnGroup, header, index, span, collapsibleRanges) => {\n const styleIds = this.config.styleLinker({ rowType: RowType.HEADER_GROUPING, rowIndex: 1, value: `grouping-${header}`, columnGroup });\n currentCells.push(Object.assign(Object.assign({}, this.createMergedCell(this.getStyleId(styleIds), this.getDataTypeForValue('string'), header, span)), { collapsibleRanges }));\n }\n };\n }\n onNewHeaderRow() {\n return this.onNewRow(this.onNewHeaderColumn, this.config.headerRowHeight);\n }\n onNewBodyRow(node) {\n const rowAccumulator = this.onNewRow(this.onNewBodyColumn, this.config.rowHeight);\n if (node) {\n this.addRowOutlineIfNecessary(node);\n }\n return rowAccumulator;\n }\n addRowOutlineIfNecessary(node) {\n const { gridOptionsService, suppressRowOutline, rowGroupExpandState = 'expanded' } = this.config;\n const isGroupHideOpenParents = gridOptionsService.is('groupHideOpenParents');\n if (isGroupHideOpenParents || suppressRowOutline || node.level == null) {\n return;\n }\n const padding = node.footer ? 1 : 0;\n const currentRow = _.last(this.rows);\n currentRow.outlineLevel = node.level + padding;\n if (rowGroupExpandState === 'expanded') {\n return;\n }\n const collapseAll = rowGroupExpandState === 'collapsed';\n if (node.isExpandable()) {\n const isExpanded = !collapseAll && node.expanded;\n currentRow.collapsed = !isExpanded;\n }\n currentRow.hidden =\n // always show the node if there is no parent to be expanded\n !!node.parent &&\n // or if it is a child of the root node\n node.parent.level !== -1 &&\n (collapseAll || this.isAnyParentCollapsed(node.parent));\n }\n isAnyParentCollapsed(node) {\n while (node && node.level !== -1) {\n if (!node.expanded) {\n return true;\n }\n node = node.parent;\n }\n return false;\n }\n prepare(columnsToExport) {\n super.prepare(columnsToExport);\n this.columnsToExport = [...columnsToExport];\n this.cols = columnsToExport.map((col, i) => this.convertColumnToExcel(col, i));\n }\n parse() {\n // adding custom content might have made some rows wider than the grid, so add new columns\n const longestRow = this.rows.reduce((a, b) => 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 const 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 isFormula(value) {\n if (value == null) {\n return false;\n }\n return this.config.autoConvertFormulas && value.toString().startsWith('=');\n }\n isNumerical(value) {\n if (typeof value === 'bigint') {\n return true;\n }\n return isFinite(value) && value !== '' && !isNaN(parseFloat(value));\n }\n getStyleById(styleId) {\n if (styleId == null) {\n return null;\n }\n return this.stylesByIds[styleId] || null;\n }\n convertColumnToExcel(column, index) {\n const columnWidth = this.config.columnWidth;\n if (columnWidth) {\n if (typeof columnWidth === 'number') {\n return { width: columnWidth };\n }\n return { width: columnWidth({ column, index }) };\n }\n if (column) {\n const smallestUsefulWidth = 75;\n return { width: Math.max(column.getActualWidth(), smallestUsefulWidth) };\n }\n return {};\n }\n onNewHeaderColumn(rowIndex, currentCells) {\n return (column, index) => {\n const nameForCol = this.extractHeaderValue(column);\n const styleIds = this.config.styleLinker({ rowType: RowType.HEADER, rowIndex, value: nameForCol, column });\n currentCells.push(this.createCell(this.getStyleId(styleIds), this.getDataTypeForValue('string'), nameForCol));\n };\n }\n onNewRow(onNewColumnAccumulator, height) {\n const 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 onNewBodyColumn(rowIndex, currentCells) {\n let skipCols = 0;\n return (column, index, node) => {\n if (skipCols > 0) {\n skipCols -= 1;\n return;\n }\n const { value: valueForCell, valueFormatted } = this.extractRowCellValue(column, index, rowIndex, 'excel', node);\n const styleIds = this.config.styleLinker({ rowType: RowType.BODY, rowIndex, value: valueForCell, column, node });\n const excelStyleId = this.getStyleId(styleIds);\n const colSpan = column.getColSpan(node);\n const 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, valueFormatted));\n }\n };\n }\n getStyleId(styleIds) {\n if (!styleIds || !styleIds.length) {\n return null;\n }\n if (styleIds.length === 1) {\n return styleIds[0];\n }\n const key = styleIds.join(\"-\");\n if (!this.mixedStyles[key]) {\n this.addNewMixedStyle(styleIds);\n }\n return this.mixedStyles[key].excelID;\n }\n addNewMixedStyle(styleIds) {\n this.mixedStyleCounter += 1;\n const excelId = `mixedStyle${this.mixedStyleCounter}`;\n const resultantStyle = {};\n styleIds.forEach((styleId) => {\n this.excelStyles.forEach((excelStyle) => {\n if (excelStyle.id === styleId) {\n _.mergeDeep(resultantStyle, _.deepCloneObject(excelStyle));\n }\n });\n });\n resultantStyle.id = excelId;\n resultantStyle.name = excelId;\n const 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}\n\nclass ExcelXmlSerializingSession extends BaseExcelSerializingSession {\n createExcel(data) {\n return ExcelXmlFactory.createExcel(this.excelStyles, data);\n }\n getDataTypeForValue(valueForCell) {\n return this.isNumerical(valueForCell) ? 'Number' : 'String';\n }\n getType(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 addImage() {\n return;\n }\n createCell(styleId, type, value, valueFormatted) {\n const actualStyle = this.getStyleById(styleId);\n if (!(actualStyle === null || actualStyle === void 0 ? void 0 : actualStyle.dataType) && type === 'String' && valueFormatted) {\n value = valueFormatted;\n }\n const 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 getValueTransformed(typeTransformed, value) {\n const wrapText = (val) => {\n if (this.config.suppressTextAsCDATA) {\n return _.escapeString(val);\n }\n const cdataStart = '';\n const 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 const convertBoolean = (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 createMergedCell(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}\n\nconst coreFactory = {\n getTemplate(author) {\n const dt = new Date();\n const 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};\n\nconst contentTypeFactory = {\n getTemplate(config) {\n const { name, ContentType, Extension, PartName } = config;\n return {\n name,\n properties: {\n rawMap: {\n Extension,\n PartName,\n ContentType\n }\n }\n };\n }\n};\n\nconst contentTypesFactory = {\n getTemplate(sheetLen) {\n const worksheets = new Array(sheetLen).fill(undefined).map((v, i) => ({\n name: 'Override',\n ContentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml',\n PartName: `/xl/worksheets/sheet${i + 1}.xml`\n }));\n const sheetsWithImages = ExcelXlsxFactory.worksheetImages.size;\n const imageTypesObject = {};\n ExcelXlsxFactory.workbookImageIds.forEach((v) => {\n imageTypesObject[v.type] = true;\n });\n const imageDocs = new Array(sheetsWithImages).fill(undefined).map((v, i) => ({\n name: 'Override',\n ContentType: 'application/vnd.openxmlformats-officedocument.drawing+xml',\n PartName: `/xl/drawings/drawing${i + 1}.xml`\n }));\n const imageTypes = Object.keys(imageTypesObject).map(ext => ({\n name: 'Default',\n ContentType: `image/${ext}`,\n Extension: ext\n }));\n const children = [\n ...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(contentType => 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\n };\n }\n};\n\nconst getAnchor = (name, imageAnchor) => ({\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});\nconst getExt = (image) => {\n const 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 const 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\n };\n};\nconst getNvPicPr = (image, index) => ({\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});\nconst getColorDetails = (color) => {\n if (!color.saturation && !color.tint) {\n return;\n }\n const 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};\nconst getDuoTone = (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};\nconst getBlipFill = (image, index) => {\n let blipChildren;\n if (image.transparency) {\n const 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 }\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};\nconst getSpPr = (image, imageBoxSize) => {\n const 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 const rotation = image.rotation;\n xfrm.properties = {\n rawMap: {\n rot: Math.min(Math.max(rotation, 0), 360) * 60000\n }\n };\n }\n const prstGeom = {\n name: 'a:prstGeom',\n properties: {\n rawMap: {\n prst: 'rect'\n }\n },\n children: [{ name: 'a:avLst' }]\n };\n const ret = {\n name: 'xdr:spPr',\n children: [xfrm, prstGeom]\n };\n return ret;\n};\nconst getImageBoxSize = (image) => {\n image.fitCell = !!image.fitCell || (!image.width || !image.height);\n const { position = {}, fitCell, width = 0, height = 0, totalHeight, totalWidth } = image;\n const { offsetX = 0, offsetY = 0, row = 1, rowSpan = 1, column = 1, colSpan = 1 } = position;\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};\nconst getPicture = (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};\nconst drawingFactory = {\n getTemplate(config) {\n const { sheetIndex } = config;\n const sheetImages = ExcelXlsxFactory.worksheetImages.get(sheetIndex);\n const sheetImageIds = ExcelXlsxFactory.worksheetImageIds.get(sheetIndex);\n const children = sheetImages.map((image, idx) => {\n const 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\n };\n }\n};\n\nconst getColorChildren = (props) => {\n const [type, innerType, val, lastClr] = props;\n return {\n name: `a:${type}`,\n children: [{\n name: `a:${innerType}`,\n properties: {\n rawMap: {\n val,\n lastClr\n }\n }\n }]\n };\n};\nconst colorScheme = {\n getTemplate() {\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};\n\nconst getFont$1 = (props) => {\n const [type, typeface, script, panose] = props;\n return {\n name: `a:${type}`,\n properties: {\n rawMap: {\n script,\n typeface,\n panose\n }\n }\n };\n};\nconst fontScheme = {\n getTemplate() {\n const { 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$1(['latin', 'Calibri Light', undefined, '020F0302020204030204']),\n getFont$1(['ea', '']),\n getFont$1(['cs', '']),\n getFont$1(['font', utf8_encode('游ゴシック Light'), 'Jpan']),\n getFont$1(['font', utf8_encode('맑은 고딕'), 'Hang']),\n getFont$1(['font', utf8_encode('等线 Light'), 'Hans']),\n getFont$1(['font', utf8_encode('新細明體'), 'Hant']),\n getFont$1(['font', 'Times New Roman', 'Arab']),\n getFont$1(['font', 'Times New Roman', 'Hebr']),\n getFont$1(['font', 'Tahoma', 'Thai']),\n getFont$1(['font', 'Nyala', 'Ethi']),\n getFont$1(['font', 'Vrinda', 'Beng']),\n getFont$1(['font', 'Shruti', 'Gujr']),\n getFont$1(['font', 'MoolBoran', 'Khmr']),\n getFont$1(['font', 'Tunga', 'Knda']),\n getFont$1(['font', 'Raavi', 'Guru']),\n getFont$1(['font', 'Euphemia', 'Cans']),\n getFont$1(['font', 'Plantagenet Cherokee', 'Cher']),\n getFont$1(['font', 'Microsoft Yi Baiti', 'Yiii']),\n getFont$1(['font', 'Microsoft Himalaya', 'Tibt']),\n getFont$1(['font', 'MV Boli', 'Thaa']),\n getFont$1(['font', 'Mangal', 'Deva']),\n getFont$1(['font', 'Gautami', 'Telu']),\n getFont$1(['font', 'Latha', 'Taml']),\n getFont$1(['font', 'Estrangelo Edessa', 'Syrc']),\n getFont$1(['font', 'Kalinga', 'Orya']),\n getFont$1(['font', 'Kartika', 'Mlym']),\n getFont$1(['font', 'DokChampa', 'Laoo']),\n getFont$1(['font', 'Iskoola Pota', 'Sinh']),\n getFont$1(['font', 'Mongolian Baiti', 'Mong']),\n getFont$1(['font', 'Times New Roman', 'Viet']),\n getFont$1(['font', 'Microsoft Uighur', 'Uigh']),\n getFont$1(['font', 'Sylfaen', 'Geor']),\n getFont$1(['font', 'Arial', 'Armn']),\n getFont$1(['font', 'Leelawadee UI', 'Bugi']),\n getFont$1(['font', 'Microsoft JhengHei', 'Bopo']),\n getFont$1(['font', 'Javanese Text', 'Java']),\n getFont$1(['font', 'Segoe UI', 'Lisu']),\n getFont$1(['font', 'Myanmar Text', 'Mymr']),\n getFont$1(['font', 'Ebrima', 'Nkoo']),\n getFont$1(['font', 'Nirmala UI', 'Olck']),\n getFont$1(['font', 'Ebrima', 'Osma']),\n getFont$1(['font', 'Phagspa', 'Phag']),\n getFont$1(['font', 'Estrangelo Edessa', 'Syrn']),\n getFont$1(['font', 'Estrangelo Edessa', 'Syrj']),\n getFont$1(['font', 'Estrangelo Edessa', 'Syre']),\n getFont$1(['font', 'Nirmala UI', 'Sora']),\n getFont$1(['font', 'Microsoft Tai Le', 'Tale']),\n getFont$1(['font', 'Microsoft New Tai Lue', 'Talu']),\n getFont$1(['font', 'Ebrima', 'Tfng'])\n ]\n }, {\n name: 'a:minorFont',\n children: [\n getFont$1(['latin', 'Calibri', undefined, '020F0502020204030204']),\n getFont$1(['ea', '']),\n getFont$1(['cs', '']),\n getFont$1(['font', utf8_encode('游ゴシック'), 'Jpan']),\n getFont$1(['font', utf8_encode('맑은 고딕'), 'Hang']),\n getFont$1(['font', utf8_encode('等线'), 'Hans']),\n getFont$1(['font', utf8_encode('新細明體'), 'Hant']),\n getFont$1(['font', 'Arial', 'Arab']),\n getFont$1(['font', 'Arial', 'Hebr']),\n getFont$1(['font', 'Tahoma', 'Thai']),\n getFont$1(['font', 'Nyala', 'Ethi']),\n getFont$1(['font', 'Vrinda', 'Beng']),\n getFont$1(['font', 'Shruti', 'Gujr']),\n getFont$1(['font', 'DaunPenh', 'Khmr']),\n getFont$1(['font', 'Tunga', 'Knda']),\n getFont$1(['font', 'Raavi', 'Guru']),\n getFont$1(['font', 'Euphemia', 'Cans']),\n getFont$1(['font', 'Plantagenet Cherokee', 'Cher']),\n getFont$1(['font', 'Microsoft Yi Baiti', 'Yiii']),\n getFont$1(['font', 'Microsoft Himalaya', 'Tibt']),\n getFont$1(['font', 'MV Boli', 'Thaa']),\n getFont$1(['font', 'Mangal', 'Deva']),\n getFont$1(['font', 'Gautami', 'Telu']),\n getFont$1(['font', 'Latha', 'Taml']),\n getFont$1(['font', 'Estrangelo Edessa', 'Syrc']),\n getFont$1(['font', 'Kalinga', 'Orya']),\n getFont$1(['font', 'Kartika', 'Mlym']),\n getFont$1(['font', 'DokChampa', 'Laoo']),\n getFont$1(['font', 'Iskoola Pota', 'Sinh']),\n getFont$1(['font', 'Mongolian Baiti', 'Mong']),\n getFont$1(['font', 'Arial', 'Viet']),\n getFont$1(['font', 'Microsoft Uighur', 'Uigh']),\n getFont$1(['font', 'Sylfaen', 'Geor']),\n getFont$1(['font', 'Arial', 'Armn']),\n getFont$1(['font', 'Leelawadee UI', 'Bugi']),\n getFont$1(['font', 'Microsoft JhengHei', 'Bopo']),\n getFont$1(['font', 'Javanese Text', 'Java']),\n getFont$1(['font', 'Segoe UI', 'Lisu']),\n getFont$1(['font', 'Myanmar Text', 'Mymr']),\n getFont$1(['font', 'Ebrima', 'Nkoo']),\n getFont$1(['font', 'Nirmala UI', 'Olck']),\n getFont$1(['font', 'Ebrima', 'Osma']),\n getFont$1(['font', 'Phagspa', 'Phag']),\n getFont$1(['font', 'Estrangelo Edessa', 'Syrn']),\n getFont$1(['font', 'Estrangelo Edessa', 'Syrj']),\n getFont$1(['font', 'Estrangelo Edessa', 'Syre']),\n getFont$1(['font', 'Nirmala UI', 'Sora']),\n getFont$1(['font', 'Microsoft Tai Le', 'Tale']),\n getFont$1(['font', 'Microsoft New Tai Lue', 'Talu']),\n getFont$1(['font', 'Ebrima', 'Tfng'])\n ]\n }]\n };\n }\n};\n\nconst getPropertyVal = (name, val, children) => ({\n name: `a:${name}`,\n properties: {\n rawMap: {\n val\n }\n },\n children\n});\nconst getGs = (props) => {\n const [pos, schemeColor, satMod, lumMod, tint, shade] = props;\n const 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\n }\n },\n children: [{\n name: 'a:schemeClr',\n properties: {\n rawMap: {\n val: schemeColor\n }\n },\n children\n }]\n };\n};\nconst getSolidFill = (val, children) => ({\n name: 'a:solidFill',\n children: [getPropertyVal('schemeClr', val, children)]\n});\nconst getGradFill = (props) => {\n const [rotWithShape, gs1, gs2, gs3, lin] = props;\n const [ang, scaled] = lin;\n return {\n name: 'a:gradFill',\n properties: {\n rawMap: {\n 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};\nconst getLine = (props) => {\n const [w, cap, cmpd, algn] = props;\n return {\n name: 'a:ln',\n properties: {\n rawMap: { w, cap, cmpd, 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};\nconst getEffectStyle = (shadow) => {\n const children = [];\n if (shadow) {\n const [blurRad, dist, dir, algn, rotWithShape] = shadow;\n children.push({\n name: 'a:outerShdw',\n properties: {\n rawMap: { blurRad, dist, dir, algn, 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 } : {})]\n };\n};\nconst getFillStyleList = () => ({\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});\nconst getLineStyleList = () => ({\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});\nconst getEffectStyleList = () => ({\n name: 'a:effectStyleLst',\n children: [\n getEffectStyle(),\n getEffectStyle(),\n getEffectStyle(['57150', '19050', '5400000', 'ctr', '0'])\n ]\n});\nconst getBgFillStyleList = () => ({\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});\nconst formatScheme = {\n getTemplate() {\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};\n\nconst themeElements = {\n getTemplate() {\n return {\n name: \"a:themeElements\",\n children: [\n colorScheme.getTemplate(),\n fontScheme.getTemplate(),\n formatScheme.getTemplate()\n ]\n };\n }\n};\n\nconst officeTheme = {\n getTemplate() {\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};\n\nconst buildSharedString = (strMap) => {\n const ret = [];\n strMap.forEach((val, key) => {\n const textNode = key.toString();\n const 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 const 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};\nconst sharedStrings = {\n getTemplate(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};\n\nfunction prepareString(str) {\n const split = str.split(/(\\[[^\\]]*\\])/);\n for (let i = 0; i < split.length; i++) {\n // excel formulas require symbols to be escaped. Excel also requires $ to be \n // placed in quotes but only when the $ is not wrapped inside of square brackets.\n let currentString = split[i];\n if (!currentString.length) {\n continue;\n }\n if (!currentString.startsWith('[')) {\n currentString = currentString.replace(/\\$/g, '\"$\"');\n }\n split[i] = _.escapeString(currentString);\n }\n return split.join('');\n}\nconst numberFormatFactory = {\n getTemplate(numberFormat) {\n let { formatCode, numFmtId } = numberFormat;\n if (formatCode.length) {\n formatCode = prepareString(formatCode);\n }\n return {\n name: \"numFmt\",\n properties: {\n rawMap: {\n formatCode,\n numFmtId\n }\n }\n };\n }\n};\n\nconst numberFormatsFactory = {\n getTemplate(numberFormats) {\n return {\n name: \"numFmts\",\n properties: {\n rawMap: {\n count: numberFormats.length\n }\n },\n children: numberFormats.map(numberFormat => numberFormatFactory.getTemplate(numberFormat))\n };\n }\n};\n\nconst fontFactory = {\n getTemplate(font) {\n const { size, colorTheme, color = 'FF000000', fontName = 'Calibri', family, scheme, italic, bold, strikeThrough, outline, shadow, underline, verticalAlign } = font;\n const 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 };\n }\n};\n\nconst fontsFactory = {\n getTemplate(fonts) {\n return {\n name: \"fonts\",\n properties: {\n rawMap: {\n count: fonts.length\n }\n },\n children: fonts.map(font => fontFactory.getTemplate(font))\n };\n }\n};\n\nconst fillFactory = {\n getTemplate(fill) {\n const { patternType, fgTheme, fgTint, fgRgb, bgRgb, bgIndexed } = fill;\n const pf = {\n name: 'patternFill',\n properties: {\n rawMap: {\n 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};\n\nconst fillsFactory = {\n getTemplate(fills) {\n return {\n name: \"fills\",\n properties: {\n rawMap: {\n count: fills.length\n }\n },\n children: fills.map(fill => fillFactory.getTemplate(fill))\n };\n }\n};\n\nconst getWeightName = (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};\nconst mappedBorderNames = {\n None: 'None',\n Dot: 'Dotted',\n Dash: 'Dashed',\n Double: 'Double',\n DashDot: 'DashDot',\n DashDotDot: 'DashDotDot',\n SlantDashDot: 'SlantDashDot'\n};\nconst mediumBorders = ['Dashed', 'DashDot', 'DashDotDot'];\nconst 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};\nconst 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};\nconst verticalAlignmentMap = {\n Automatic: undefined,\n Top: 'top',\n Bottom: 'bottom',\n Center: 'center',\n Justify: 'justify',\n Distributed: 'distributed',\n JustifyDistributed: 'justify'\n};\nconst convertLegacyPattern = (name) => {\n if (!name) {\n return 'none';\n }\n return colorMap[name] || name;\n};\nconst convertLegacyColor = (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};\nconst convertLegacyBorder = (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 const namedWeight = getWeightName(weight);\n const 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};\nconst convertLegacyHorizontalAlignment = (alignment) => {\n return horizontalAlignmentMap[alignment] || 'general';\n};\nconst convertLegacyVerticalAlignment = (alignment) => {\n return verticalAlignmentMap[alignment] || undefined;\n};\n\nconst getBorderColor = (color) => {\n return {\n name: 'color',\n properties: {\n rawMap: {\n rgb: convertLegacyColor(color || '#000000')\n }\n }\n };\n};\nconst borderFactory$1 = {\n getTemplate(border) {\n const { left, right, top, bottom, diagonal } = border;\n const leftChildren = left ? [getBorderColor(left.color)] : undefined;\n const rightChildren = right ? [getBorderColor(right.color)] : undefined;\n const topChildren = top ? [getBorderColor(top.color)] : undefined;\n const bottomChildren = bottom ? [getBorderColor(bottom.color)] : undefined;\n const 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};\n\nconst bordersFactory = {\n getTemplate(borders) {\n return {\n name: \"borders\",\n properties: {\n rawMap: {\n count: borders.length\n }\n },\n children: borders.map(border => borderFactory$1.getTemplate(border))\n };\n }\n};\n\nconst getReadingOrderId = (readingOrder) => {\n const order = ['Context', 'LeftToRight', 'RightToLeft'];\n const pos = order.indexOf(readingOrder);\n return Math.max(pos, 0);\n};\nconst alignmentFactory = {\n getTemplate(alignment) {\n const { horizontal, indent, readingOrder, rotate, shrinkToFit, vertical, wrapText } = alignment;\n return {\n name: 'alignment',\n properties: {\n rawMap: {\n horizontal: horizontal && convertLegacyHorizontalAlignment(horizontal),\n indent,\n readingOrder: readingOrder && getReadingOrderId(readingOrder),\n textRotation: rotate,\n shrinkToFit,\n vertical: vertical && convertLegacyVerticalAlignment(vertical),\n wrapText\n }\n }\n };\n }\n};\n\nconst protectionFactory = {\n getTemplate(protection) {\n const locked = protection.protected === false ? 0 : 1;\n const hidden = protection.hideFormula === true ? 1 : 0;\n return {\n name: 'protection',\n properties: {\n rawMap: {\n hidden,\n locked\n }\n }\n };\n }\n};\n\nconst xfFactory = {\n getTemplate(xf) {\n const { alignment, borderId, fillId, fontId, numFmtId, protection, xfId } = xf;\n const 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,\n fillId,\n applyFont: fontId ? 1 : undefined,\n fontId,\n applyNumberFormat: numFmtId ? 1 : undefined,\n numFmtId,\n xfId\n }\n },\n children: children.length ? children : undefined\n };\n }\n};\n\nconst cellStylesXfsFactory = {\n getTemplate(xfs) {\n return {\n name: \"cellStyleXfs\",\n properties: {\n rawMap: {\n count: xfs.length\n }\n },\n children: xfs.map(xf => xfFactory.getTemplate(xf))\n };\n }\n};\n\nconst cellXfsFactory = {\n getTemplate(xfs) {\n return {\n name: \"cellXfs\",\n properties: {\n rawMap: {\n count: xfs.length\n }\n },\n children: xfs.map(xf => xfFactory.getTemplate(xf))\n };\n }\n};\n\nconst borderFactory = {\n getTemplate(cellStyle) {\n const { builtinId, name, xfId } = cellStyle;\n return {\n name: \"cellStyle\",\n properties: {\n rawMap: {\n builtinId,\n name,\n xfId\n }\n }\n };\n }\n};\n\nconst cellStylesFactory = {\n getTemplate(cellStyles) {\n return {\n name: \"cellStyles\",\n properties: {\n rawMap: {\n count: cellStyles.length\n }\n },\n children: cellStyles.map(cellStyle => borderFactory.getTemplate(cellStyle))\n };\n }\n};\n\nlet stylesMap;\nlet registeredNumberFmts;\nlet registeredFonts;\nlet registeredFills;\nlet registeredBorders;\nlet registeredCellStyleXfs;\nlet registeredCellXfs;\nlet registeredCellStyles;\nlet currentSheet;\nconst getStyleName = (name, currentSheet) => {\n if (name.indexOf('mixedStyle') !== -1 && currentSheet > 1) {\n name += `_${currentSheet}`;\n }\n return name;\n};\nconst resetStylesheetValues = () => {\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};\nconst registerFill = (fill) => {\n const convertedPattern = convertLegacyPattern(fill.pattern);\n const convertedFillColor = convertLegacyColor(fill.color);\n const convertedPatternColor = convertLegacyColor(fill.patternColor);\n let pos = registeredFills.findIndex(currentFill => {\n const { patternType, fgRgb, bgRgb } = currentFill;\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};\nconst registerNumberFmt = (format) => {\n format = _.utf8_encode(format);\n if (numberFormatMap[format]) {\n return numberFormatMap[format];\n }\n let pos = registeredNumberFmts.findIndex(currentFormat => 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};\nconst registerBorders = (borders) => {\n const { borderBottom, borderTop, borderLeft, borderRight } = borders;\n let bottomStyle;\n let topStyle;\n let leftStyle;\n let rightStyle;\n let bottomColor;\n let topColor;\n let leftColor;\n let 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 let pos = registeredBorders.findIndex(currentBorder => {\n const { left, right, top, bottom } = currentBorder;\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 const { style: clS, color: clC } = left || {};\n const { style: crS, color: crC } = right || {};\n const { style: ctS, color: ctC } = top || {};\n const { style: cbS, color: cbC } = bottom || {};\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};\nconst registerFont = (font) => {\n const { fontName: name = 'Calibri', color, size, bold, italic, outline, shadow, strikeThrough, underline, family, verticalAlign } = font;\n const utf8Name = name ? _.utf8_encode(name) : name;\n const convertedColor = convertLegacyColor(color);\n const familyId = getFontFamilyId(family);\n const convertedUnderline = underline ? underline.toLocaleLowerCase() : undefined;\n const convertedVerticalAlign = verticalAlign ? verticalAlign.toLocaleLowerCase() : undefined;\n let pos = registeredFonts.findIndex(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,\n bold,\n italic,\n outline,\n shadow,\n strikeThrough,\n underline: convertedUnderline,\n verticalAlign: convertedVerticalAlign,\n family: familyId != null ? familyId.toString() : undefined\n });\n }\n return pos;\n};\nconst registerStyle = (config) => {\n const { alignment, borders, font, interior, numberFormat, protection } = config;\n let { id } = config;\n let currentFill = 0;\n let currentBorder = 0;\n let currentFont = 0;\n let 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,\n borderId: currentBorder || 0,\n fillId: currentFill || 0,\n fontId: currentFont || 0,\n numFmtId: currentNumberFmt || 0,\n protection,\n xfId: 0\n });\n};\nconst stylesheetFactory = {\n getTemplate(defaultFontSize) {\n const numberFormats = numberFormatsFactory.getTemplate(registeredNumberFmts);\n const fonts = fontsFactory.getTemplate(registeredFonts.map(font => (Object.assign(Object.assign({}, font), { size: font.size != null ? font.size : defaultFontSize }))));\n const fills = fillsFactory.getTemplate(registeredFills);\n const borders = bordersFactory.getTemplate(registeredBorders);\n const cellStylesXfs = cellStylesXfsFactory.getTemplate(registeredCellStyleXfs);\n const cellXfs = cellXfsFactory.getTemplate(registeredCellXfs);\n const 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};\nconst getStyleId = (name, currentSheet) => {\n return stylesMap[getStyleName(name, currentSheet)] || 0;\n};\nconst registerStyles = (styles, _currentSheet) => {\n currentSheet = _currentSheet;\n if (currentSheet === 1) {\n resetStylesheetValues();\n }\n styles.forEach(registerStyle);\n};\n\nconst sheetFactory = {\n getTemplate(name, idx) {\n const 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};\n\nconst sheetsFactory = {\n getTemplate(names) {\n return {\n name: \"sheets\",\n children: names.map((sheet, idx) => sheetFactory.getTemplate(sheet, idx))\n };\n }\n};\n\nconst workbookFactory = {\n getTemplate(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};\n\n// https://docs.microsoft.com/en-us/office/troubleshoot/excel/determine-column-widths\nconst getExcelCellWidth = (width) => Math.ceil((width - 12) / 7 + 1);\nconst columnFactory = {\n getTemplate(config) {\n const { min, max, outlineLevel, s, width, hidden, bestFit } = config;\n let excelWidth = 1;\n let 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};\n\nconst convertLegacyType = (type) => {\n const t = type.charAt(0).toLowerCase();\n return t === 's' ? 'inlineStr' : t;\n};\nconst cellFactory = {\n getTemplate(config, idx, currentSheet) {\n const { ref, data, styleId } = config;\n const { type, value } = data || { type: 'empty', value: null };\n let 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 const 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 let 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 });\n }\n};\n\nconst addEmptyCells = (cells, rowIdx) => {\n const mergeMap = [];\n let posCounter = 0;\n for (let i = 0; i < cells.length; i++) {\n const 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 (let i = mergeMap.length - 1; i >= 0; i--) {\n const mergedCells = [];\n const cell = cells[mergeMap[i].pos];\n for (let 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(mergeMap[i].pos + 1, 0, ...mergedCells);\n }\n }\n }\n};\nconst shouldDisplayCell = (cell) => { var _a; return ((_a = cell.data) === null || _a === void 0 ? void 0 : _a.value) !== '' || cell.styleId !== undefined; };\nconst rowFactory = {\n getTemplate(config, idx, currentSheet) {\n const { collapsed, hidden, height, outlineLevel, cells = [] } = config;\n addEmptyCells(cells, idx);\n const children = cells.filter(shouldDisplayCell).map((cell, idx) => cellFactory.getTemplate(cell, idx, currentSheet));\n return {\n name: \"row\",\n properties: {\n rawMap: {\n r: idx + 1,\n collapsed: collapsed ? '1' : '0',\n hidden: hidden ? '1' : '0',\n ht: height,\n customHeight: height != null ? '1' : '0',\n spans: '1:1',\n outlineLevel: outlineLevel || undefined\n }\n },\n children\n };\n }\n};\n\nconst mergeCellFactory = {\n getTemplate(ref) {\n return {\n name: 'mergeCell',\n properties: {\n rawMap: {\n ref: ref\n }\n }\n };\n }\n};\n\nconst getMergedCellsAndAddColumnGroups = (rows, cols, suppressColumnOutline) => {\n const mergedCells = [];\n const cellsWithCollapsibleGroups = [];\n rows.forEach((currentRow, rowIdx) => {\n const cells = currentRow.cells;\n let merges = 0;\n let lastCol;\n cells.forEach((currentCell, cellIdx) => {\n const min = cellIdx + merges + 1;\n const start = getExcelColumnName(min);\n const outputRow = rowIdx + 1;\n if (currentCell.mergeAcross) {\n merges += currentCell.mergeAcross;\n const end = getExcelColumnName(cellIdx + merges + 1);\n mergedCells.push(`${start}${outputRow}:${end}${outputRow}`);\n }\n if (!cols[min - 1]) {\n cols[min - 1] = {};\n }\n const { collapsibleRanges } = currentCell;\n if (collapsibleRanges) {\n collapsibleRanges.forEach(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((a, b) => {\n if (a[0] !== b[0]) {\n return a[0] - b[0];\n }\n return b[1] - a[1];\n });\n const rangeMap = new Map();\n const outlineLevel = new Map();\n cellsWithCollapsibleGroups.filter(currentRange => {\n const rangeString = currentRange.toString();\n const inMap = rangeMap.get(rangeString);\n if (inMap) {\n return false;\n }\n rangeMap.set(rangeString, true);\n return true;\n }).forEach(range => {\n const refCol = cols.find(col => col.min == range[0] && col.max == range[1]);\n const currentOutlineLevel = outlineLevel.get(range[0]);\n cols.push({\n min: range[0],\n max: range[1],\n outlineLevel: suppressColumnOutline ? undefined : (currentOutlineLevel || 1),\n width: (refCol || { width: 100 }).width\n });\n outlineLevel.set(range[0], (currentOutlineLevel || 0) + 1);\n });\n return mergedCells;\n};\nconst getPageOrientation = (orientation) => {\n if (!orientation || (orientation !== 'Portrait' && orientation !== 'Landscape')) {\n return 'portrait';\n }\n return orientation.toLocaleLowerCase();\n};\nconst getPageSize = (pageSize) => {\n if (pageSize == null) {\n return 1;\n }\n const 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 const pos = positions.indexOf(pageSize);\n return pos === -1 ? 1 : (pos + 1);\n};\nconst addColumns = (columns) => {\n return (children) => {\n if (columns.length) {\n children.push({\n name: 'cols',\n children: columns.map(column => columnFactory.getTemplate(column))\n });\n }\n return children;\n };\n};\nconst addSheetData = (rows, sheetNumber) => {\n return (children) => {\n if (rows.length) {\n children.push({\n name: 'sheetData',\n children: rows.map((row, idx) => rowFactory.getTemplate(row, idx, sheetNumber))\n });\n }\n return children;\n };\n};\nconst addMergeCells = (mergeCells) => {\n return (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(mergedCell => mergeCellFactory.getTemplate(mergedCell))\n });\n }\n return children;\n };\n};\nconst addPageMargins = (margins) => {\n return (children) => {\n const { top = 0.75, right = 0.7, bottom = 0.75, left = 0.7, header = 0.3, footer = 0.3 } = margins;\n children.push({\n name: 'pageMargins',\n properties: {\n rawMap: { bottom, footer, header, left, right, top }\n }\n });\n return children;\n };\n};\nconst addPageSetup = (pageSetup) => {\n return (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};\nconst replaceHeaderFooterTokens = (value) => {\n const 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, (key, val) => {\n value = value.replace(key, val);\n });\n return value;\n};\nconst getHeaderPosition = (position) => {\n if (position === 'Center') {\n return 'C';\n }\n if (position === 'Right') {\n return 'R';\n }\n return 'L';\n};\nconst applyHeaderFontStyle = (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};\nconst processHeaderFooterContent = (content) => content.reduce((prev, curr) => {\n const pos = getHeaderPosition(curr.position);\n const output = applyHeaderFontStyle(`${prev}&${pos}`, curr.font);\n return `${output}${_.escapeString(replaceHeaderFooterTokens(curr.value))}`;\n}, '');\nconst buildHeaderFooter = (headerFooterConfig) => {\n const rules = ['all', 'first', 'even'];\n const headersAndFooters = [];\n rules.forEach(rule => {\n const headerFooter = headerFooterConfig[rule];\n const namePrefix = rule === 'all' ? 'odd' : rule;\n if (!headerFooter || (!headerFooter.header && !headerFooter.footer)) {\n return;\n }\n _.iterateObject(headerFooter, (key, value) => {\n const 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};\nconst addHeaderFooter = (headerFooterConfig) => {\n return (children) => {\n if (!headerFooterConfig) {\n return children;\n }\n const differentFirst = headerFooterConfig.first != null ? 1 : 0;\n const differentOddEven = headerFooterConfig.even != null ? 1 : 0;\n children.push({\n name: 'headerFooter',\n properties: {\n rawMap: {\n differentFirst,\n differentOddEven\n }\n },\n children: buildHeaderFooter(headerFooterConfig)\n });\n return children;\n };\n};\nconst addDrawingRel = (currentSheet) => {\n return (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};\nconst addSheetPr = () => {\n return (children) => {\n children.push({\n name: 'sheetPr',\n children: [{\n name: 'outlinePr',\n properties: {\n rawMap: {\n summaryBelow: 0\n }\n }\n }]\n });\n return children;\n };\n};\nconst addSheetFormatPr = (rows) => {\n return (children) => {\n const maxOutline = rows.reduce((prev, row) => {\n if (row.outlineLevel && row.outlineLevel > prev) {\n return row.outlineLevel;\n }\n return prev;\n }, 0);\n children.push({\n name: 'sheetFormatPr',\n properties: {\n rawMap: {\n baseColWidth: 10,\n defaultRowHeight: 16,\n outlineLevelRow: maxOutline ? maxOutline : undefined\n }\n }\n });\n return children;\n };\n};\nconst worksheetFactory = {\n getTemplate(params) {\n const { worksheet, currentSheet, config } = params;\n const { margins = {}, pageSetup, headerFooterConfig, suppressColumnOutline } = config;\n const { table } = worksheet;\n const { rows, columns } = table;\n const mergedCells = (columns && columns.length) ? getMergedCellsAndAddColumnGroups(rows, columns, !!suppressColumnOutline) : [];\n const createWorksheetChildren = _.compose(addSheetPr(), addSheetFormatPr(rows), addColumns(columns), addSheetData(rows, currentSheet + 1), addMergeCells(mergedCells), addPageMargins(margins), addPageSetup(pageSetup), addHeaderFooter(headerFooterConfig), addDrawingRel(currentSheet));\n const 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\n };\n }\n};\n\nconst relationshipFactory = {\n getTemplate(config) {\n const { Id, Type, Target } = config;\n return {\n name: \"Relationship\",\n properties: {\n rawMap: {\n Id,\n Type,\n Target\n }\n }\n };\n }\n};\n\nconst relationshipsFactory = {\n getTemplate(c) {\n const children = c.map(relationship => 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\n };\n }\n};\n\n/**\n * See https://www.ecma-international.org/news/TC45_current_work/OpenXML%20White%20Paper.pdf\n */\nclass ExcelXlsxFactory {\n static createExcel(styles, worksheet, config) {\n this.addSheetName(worksheet);\n registerStyles(styles, this.sheetNames.length);\n return this.createWorksheet(worksheet, config);\n }\n static buildImageMap(image, rowIndex, col, columnsToExport, rowHeight) {\n const currentSheetIndex = this.sheetNames.length;\n const 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 const calculatedImage = image;\n setExcelImageTotalWidth(calculatedImage, columnsToExport);\n setExcelImageTotalHeight(calculatedImage, rowHeight);\n if (registeredImage) {\n const currentSheetImages = registeredImage.find(currentImage => 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 static buildSheetImageMap(sheetIndex, image) {\n let worksheetImageIdMap = this.worksheetImageIds.get(sheetIndex);\n if (!worksheetImageIdMap) {\n worksheetImageIdMap = new Map();\n this.worksheetImageIds.set(sheetIndex, worksheetImageIdMap);\n }\n const 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 static addSheetName(worksheet) {\n const name = _.escapeString(worksheet.name) || '';\n let append = '';\n while (this.sheetNames.indexOf(`${name}${append}`) !== -1) {\n if (append === '') {\n append = '_1';\n }\n else {\n const curr = parseInt(append.slice(1), 10);\n append = `_${curr + 1}`;\n }\n }\n worksheet.name = `${name}${append}`;\n this.sheetNames.push(worksheet.name);\n }\n static getStringPosition(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 static resetFactory() {\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 static createWorkbook() {\n return createXmlPart(workbookFactory.getTemplate(this.sheetNames));\n }\n static createStylesheet(defaultFontSize) {\n return createXmlPart(stylesheetFactory.getTemplate(defaultFontSize));\n }\n static createSharedStrings() {\n return createXmlPart(sharedStrings.getTemplate(this.sharedStrings));\n }\n static createCore(author) {\n return createXmlPart(coreFactory.getTemplate(author));\n }\n static createContentTypes(sheetLen) {\n return createXmlPart(contentTypesFactory.getTemplate(sheetLen));\n }\n static createRels() {\n const 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 static createTheme() {\n return createXmlPart(officeTheme.getTemplate());\n }\n static createWorkbookRels(sheetLen) {\n const worksheets = new Array(sheetLen).fill(undefined).map((v, i) => ({\n Id: `rId${i + 1}`,\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet',\n Target: `worksheets/sheet${i + 1}.xml`\n }));\n const rs = relationshipsFactory.getTemplate([\n ...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 static createDrawing(sheetIndex) {\n return createXmlPart(drawingFactory.getTemplate({ sheetIndex }));\n }\n static createDrawingRel(sheetIndex) {\n const worksheetImageIds = this.worksheetImageIds.get(sheetIndex);\n const XMLArr = [];\n worksheetImageIds.forEach((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 static createWorksheetDrawingRel(currentRelationIndex) {\n const 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 static createWorksheet(worksheet, config) {\n return createXmlPart(worksheetFactory.getTemplate({\n worksheet,\n currentSheet: this.sheetNames.length - 1,\n config\n }));\n }\n}\nExcelXlsxFactory.sharedStrings = new Map();\nExcelXlsxFactory.sheetNames = [];\n/** Maps images to sheet */\nExcelXlsxFactory.images = new Map();\n/** Maps sheets to images */\nExcelXlsxFactory.worksheetImages = new Map();\n/** Maps all workbook images to a global Id */\nExcelXlsxFactory.workbookImageIds = new Map();\n/** Maps all sheet images to unique Ids */\nExcelXlsxFactory.worksheetImageIds = new Map();\nExcelXlsxFactory.factoryMode = ExcelFactoryMode.SINGLE_SHEET;\n\nclass ExcelXlsxSerializingSession extends BaseExcelSerializingSession {\n createExcel(data) {\n const { excelStyles, config } = this;\n return ExcelXlsxFactory.createExcel(excelStyles, data, config);\n }\n getDataTypeForValue(valueForCell) {\n if (valueForCell === undefined) {\n return 'empty';\n }\n return this.isNumerical(valueForCell) ? 'n' : 's';\n }\n getType(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 addImage(rowIndex, column, value) {\n if (!this.config.addImageToCell) {\n return;\n }\n const 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 createCell(styleId, type, value, valueFormatted) {\n const actualStyle = this.getStyleById(styleId);\n if (!(actualStyle === null || actualStyle === void 0 ? void 0 : actualStyle.dataType) && type === 's' && valueFormatted) {\n value = valueFormatted;\n }\n const 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 createMergedCell(styleId, type, value, numOfCells) {\n const 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 getCellValue(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}\n\nvar __decorate$25 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst getMultipleSheetsAsExcel = (params) => {\n const { data, fontSize = 11, author = 'AG Grid' } = params;\n const 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 let imgCounter = 0;\n ExcelXlsxFactory.images.forEach(value => {\n const firstImage = value[0].image[0];\n const ext = firstImage.imageType;\n ZipContainer.addFile(`xl/media/image${++imgCounter}.${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 const sheetLen = data.length;\n let imageRelationCounter = 0;\n data.forEach((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 const mimeType = params.mimeType || 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n return ZipContainer.getContent(mimeType);\n};\nconst exportMultipleSheetsAsExcel = (params) => {\n const { fileName = 'export.xlsx' } = params;\n const contents = getMultipleSheetsAsExcel(params);\n if (contents) {\n Downloader.download(fileName, contents);\n }\n};\nconst createImageRelationsForSheet = (sheetIndex, currentRelationIndex) => {\n const drawingFolder = 'xl/drawings';\n const drawingFileName = `${drawingFolder}/drawing${currentRelationIndex + 1}.xml`;\n const relFileName = `${drawingFolder}/_rels/drawing${currentRelationIndex + 1}.xml.rels`;\n const 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};\nlet ExcelCreator = class ExcelCreator extends BaseCreator {\n constructor() {\n super(...arguments);\n this.exportMode = 'xlsx';\n }\n postConstruct() {\n this.setBeans({\n gridSerializer: this.gridSerializer,\n gridOptionsService: this.gridOptionsService\n });\n }\n getMergedParams(params) {\n const baseParams = this.gridOptionsService.get('defaultExcelExportParams');\n return Object.assign({}, baseParams, params);\n }\n getData(params) {\n this.setExportMode(params.exportMode || 'xlsx');\n return super.getData(params);\n }\n export(userParams) {\n if (this.isExportSuppressed()) {\n console.warn(`AG Grid: Export cancelled. Export is not allowed as per your configuration.`);\n return '';\n }\n const mergedParams = this.getMergedParams(userParams);\n const data = this.getData(mergedParams);\n const exportParams = {\n data: [data],\n fontSize: mergedParams.fontSize,\n author: mergedParams.author,\n mimeType: mergedParams.mimeType\n };\n const packageFile = this.packageFile(exportParams);\n if (packageFile) {\n Downloader.download(this.getFileName(mergedParams.fileName), packageFile);\n }\n return data;\n }\n exportDataAsExcel(params) {\n return this.export(params);\n }\n getDataAsExcel(params) {\n const mergedParams = this.getMergedParams(params);\n const data = this.getData(mergedParams);\n if (params && params.exportMode === 'xml') {\n return data;\n }\n const exportParams = {\n data: [data],\n fontSize: mergedParams.fontSize,\n author: mergedParams.author,\n mimeType: mergedParams.mimeType\n };\n return this.packageFile(exportParams);\n }\n setFactoryMode(factoryMode, exportMode = 'xlsx') {\n const factory = exportMode === 'xlsx' ? ExcelXlsxFactory : ExcelXmlFactory;\n factory.factoryMode = factoryMode;\n }\n getFactoryMode(exportMode) {\n const factory = exportMode === 'xlsx' ? ExcelXlsxFactory : ExcelXmlFactory;\n return factory.factoryMode;\n }\n getSheetDataForExcel(params) {\n const mergedParams = this.getMergedParams(params);\n const data = this.getData(mergedParams);\n return data;\n }\n getMultipleSheetsAsExcel(params) {\n return getMultipleSheetsAsExcel(params);\n }\n exportMultipleSheetsAsExcel(params) {\n return exportMultipleSheetsAsExcel(params);\n }\n getDefaultFileName() {\n return `export.${this.getExportMode()}`;\n }\n getDefaultFileExtension() {\n return this.getExportMode();\n }\n createSerializingSession(params) {\n const { columnModel, valueService, gridOptionsService, valueFormatterService, valueParserService } = this;\n const isXlsx = this.getExportMode() === 'xlsx';\n let sheetName = 'ag-grid';\n if (params.sheetName != null) {\n sheetName = _.utf8_encode(params.sheetName.toString().substr(0, 31));\n }\n const config = Object.assign(Object.assign({}, params), { sheetName,\n columnModel,\n valueService,\n gridOptionsService,\n valueFormatterService,\n valueParserService, headerRowHeight: params.headerRowHeight || params.rowHeight, baseExcelStyles: this.gridOptionsService.get('excelStyles') || [], styleLinker: this.styleLinker.bind(this) });\n return new (isXlsx ? ExcelXlsxSerializingSession : ExcelXmlSerializingSession)(config);\n }\n styleLinker(params) {\n const { rowType, rowIndex, value, column, columnGroup, node } = params;\n const isHeader = rowType === RowType.HEADER;\n const isGroupHeader = rowType === RowType.HEADER_GROUPING;\n const col = (isHeader ? column : columnGroup);\n let headerClasses = [];\n if (isHeader || isGroupHeader) {\n headerClasses.push('header');\n if (isGroupHeader) {\n headerClasses.push('headerGroup');\n }\n if (col) {\n headerClasses = headerClasses.concat(CssClassApplier.getHeaderClassesFromColDef(col.getDefinition(), this.gridOptionsService, column || null, columnGroup || null));\n }\n return headerClasses;\n }\n const styles = this.gridOptionsService.get('excelStyles');\n const applicableStyles = [\"cell\"];\n if (!styles || !styles.length) {\n return applicableStyles;\n }\n const styleIds = styles.map((it) => {\n return it.id;\n });\n this.stylingService.processAllCellClasses(column.getDefinition(), {\n value,\n data: node.data,\n node: node,\n colDef: column.getDefinition(),\n column: column,\n rowIndex: rowIndex,\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context\n }, (className) => {\n if (styleIds.indexOf(className) > -1) {\n applicableStyles.push(className);\n }\n });\n return applicableStyles.sort((left, right) => {\n return (styleIds.indexOf(left) < styleIds.indexOf(right)) ? -1 : 1;\n });\n }\n isExportSuppressed() {\n return this.gridOptionsService.is('suppressExcelExport');\n }\n setExportMode(exportMode) {\n this.exportMode = exportMode;\n }\n getExportMode() {\n return this.exportMode;\n }\n packageFile(params) {\n if (this.getExportMode() === 'xml') {\n const mimeType = params.mimeType || 'application/vnd.ms-excel';\n return new Blob([\"\\ufeff\", params.data[0]], { type: mimeType });\n }\n return getMultipleSheetsAsExcel(params);\n }\n};\n__decorate$25([\n Autowired('columnModel')\n], ExcelCreator.prototype, \"columnModel\", void 0);\n__decorate$25([\n Autowired('valueService')\n], ExcelCreator.prototype, \"valueService\", void 0);\n__decorate$25([\n Autowired('stylingService')\n], ExcelCreator.prototype, \"stylingService\", void 0);\n__decorate$25([\n Autowired('gridSerializer')\n], ExcelCreator.prototype, \"gridSerializer\", void 0);\n__decorate$25([\n Autowired('gridOptionsService')\n], ExcelCreator.prototype, \"gridOptionsService\", void 0);\n__decorate$25([\n Autowired('valueFormatterService')\n], ExcelCreator.prototype, \"valueFormatterService\", void 0);\n__decorate$25([\n Autowired('valueParserService')\n], ExcelCreator.prototype, \"valueParserService\", void 0);\n__decorate$25([\n PostConstruct\n], ExcelCreator.prototype, \"postConstruct\", null);\nExcelCreator = __decorate$25([\n Bean('excelCreator')\n], ExcelCreator);\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nconst VERSION$d = '30.0.5';\n\nconst ExcelExportModule = {\n version: VERSION$d,\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\nvar __decorate$24 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 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 = {}));\nclass FiltersToolPanelHeaderPanel extends Component {\n preConstruct() {\n this.setTemplate(/* html */ `
\n
\n \n
`);\n }\n postConstruct() {\n const translate = this.localeService.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 init(params) {\n this.params = params;\n if (this.columnModel.isReady()) {\n this.showOrHideOptions();\n }\n }\n createExpandIcons() {\n this.eExpand.appendChild(this.eExpandChecked = _.createIconNoSpan('columnSelectOpen', this.gridOptionsService));\n this.eExpand.appendChild(this.eExpandUnchecked = _.createIconNoSpan('columnSelectClosed', this.gridOptionsService));\n this.eExpand.appendChild(this.eExpandIndeterminate = _.createIconNoSpan('columnSelectIndeterminate', this.gridOptionsService));\n }\n // we only show expand / collapse if we are showing filters\n showOrHideOptions() {\n const showFilterSearch = !this.params.suppressFilterSearch;\n const showExpand = !this.params.suppressExpandAll;\n const translate = this.localeService.getLocaleTextFunc();\n this.eFilterTextField.setInputPlaceholder(translate('searchOoo', 'Search...'));\n const isFilterGroupPresent = (col) => col.getOriginalParent() && col.isFilterAllowed();\n const filterGroupsPresent = this.columnModel.getAllGridColumns().some(isFilterGroupPresent);\n _.setDisplayed(this.eFilterTextField.getGui(), showFilterSearch);\n _.setDisplayed(this.eExpand, showExpand && filterGroupsPresent);\n }\n onSearchTextChanged() {\n if (!this.onSearchTextChangedDebounced) {\n this.onSearchTextChangedDebounced = _.debounce(() => {\n this.dispatchEvent({ type: 'searchChanged', searchText: this.eFilterTextField.getValue() });\n }, 300);\n }\n this.onSearchTextChangedDebounced();\n }\n onExpandClicked() {\n const event = this.currentExpandState === EXPAND_STATE.EXPANDED ? { type: 'collapseAll' } : { type: 'expandAll' };\n this.dispatchEvent(event);\n }\n setExpandState(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}\n__decorate$24([\n Autowired('columnModel')\n], FiltersToolPanelHeaderPanel.prototype, \"columnModel\", void 0);\n__decorate$24([\n RefSelector('eExpand')\n], FiltersToolPanelHeaderPanel.prototype, \"eExpand\", void 0);\n__decorate$24([\n RefSelector('eFilterTextField')\n], FiltersToolPanelHeaderPanel.prototype, \"eFilterTextField\", void 0);\n__decorate$24([\n PreConstruct\n], FiltersToolPanelHeaderPanel.prototype, \"preConstruct\", null);\n__decorate$24([\n PostConstruct\n], FiltersToolPanelHeaderPanel.prototype, \"postConstruct\", null);\n\nvar __decorate$23 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass ToolPanelFilterComp extends Component {\n constructor(hideHeader = false) {\n super(ToolPanelFilterComp.TEMPLATE);\n this.expanded = false;\n this.hideHeader = hideHeader;\n }\n postConstruct() {\n this.eExpandChecked = _.createIconNoSpan('columnSelectOpen', this.gridOptionsService);\n this.eExpandUnchecked = _.createIconNoSpan('columnSelectClosed', this.gridOptionsService);\n this.eExpand.appendChild(this.eExpandChecked);\n this.eExpand.appendChild(this.eExpandUnchecked);\n }\n setColumn(column) {\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', (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 _.setDisplayed(this.eFilterIcon, this.isFilterActive(), { skipAriaHidden: true });\n _.setDisplayed(this.eExpandChecked, false);\n if (this.hideHeader) {\n _.setDisplayed(this.eFilterToolPanelHeader, false);\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 this.addManagedListener(this.eventService, Events.EVENT_FILTER_DESTROYED, this.onFilterDestroyed.bind(this));\n }\n getColumn() {\n return this.column;\n }\n getColumnFilterName() {\n return this.columnModel.getDisplayNameForColumn(this.column, 'filterToolPanel', false);\n }\n addCssClassToTitleBar(cssClass) {\n this.eFilterToolPanelHeader.classList.add(cssClass);\n }\n addInIcon(iconName, eParent, column) {\n if (eParent == null) {\n return;\n }\n const eIcon = _.createIconNoSpan(iconName, this.gridOptionsService, column);\n eParent.appendChild(eIcon);\n }\n isFilterActive() {\n return this.filterManager.isFilterActive(this.column);\n }\n onFilterChanged() {\n _.setDisplayed(this.eFilterIcon, this.isFilterActive(), { skipAriaHidden: true });\n this.dispatchEvent({ type: Column.EVENT_FILTER_CHANGED });\n }\n onFilterDestroyed(event) {\n if (this.expanded &&\n event.source === 'api' &&\n event.column.getId() === this.column.getId() &&\n this.columnModel.getPrimaryColumn(this.column)) {\n // filter was visible and has been destroyed by the API. If the column still exists, need to recreate UI component\n this.removeFilterElement();\n this.addFilterElement();\n }\n }\n toggleExpanded() {\n this.expanded ? this.collapse() : this.expand();\n }\n expand() {\n if (this.expanded) {\n return;\n }\n this.expanded = true;\n _.setAriaExpanded(this.eFilterToolPanelHeader, true);\n _.setDisplayed(this.eExpandChecked, true);\n _.setDisplayed(this.eExpandUnchecked, false);\n this.addFilterElement();\n }\n addFilterElement() {\n const filterPanelWrapper = _.loadTemplate(/* html */ `
`);\n const filterWrapper = this.filterManager.getOrCreateFilterWrapper(this.column, 'TOOLBAR');\n if (!filterWrapper) {\n return;\n }\n const { filterPromise, guiPromise } = filterWrapper;\n filterPromise === null || filterPromise === void 0 ? void 0 : filterPromise.then(filter => {\n this.underlyingFilter = filter;\n if (!filter) {\n return;\n }\n guiPromise.then(filterContainerEl => {\n if (filterContainerEl) {\n filterPanelWrapper.appendChild(filterContainerEl);\n }\n this.agFilterToolPanelBody.appendChild(filterPanelWrapper);\n if (filter.afterGuiAttached) {\n filter.afterGuiAttached({ container: 'toolPanel' });\n }\n });\n });\n }\n collapse() {\n var _a, _b;\n if (!this.expanded) {\n return;\n }\n this.expanded = false;\n _.setAriaExpanded(this.eFilterToolPanelHeader, false);\n this.removeFilterElement();\n _.setDisplayed(this.eExpandChecked, false);\n _.setDisplayed(this.eExpandUnchecked, true);\n (_b = (_a = this.underlyingFilter) === null || _a === void 0 ? void 0 : _a.afterGuiDetached) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n removeFilterElement() {\n _.clearElement(this.agFilterToolPanelBody);\n }\n isExpanded() {\n return this.expanded;\n }\n refreshFilter(isDisplayed) {\n var _a;\n if (!this.expanded) {\n return;\n }\n const filter = this.underlyingFilter;\n if (!filter) {\n return;\n }\n if (isDisplayed) {\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 else {\n (_a = filter.afterGuiDetached) === null || _a === void 0 ? void 0 : _a.call(filter);\n }\n }\n onFilterOpened(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}\nToolPanelFilterComp.TEMPLATE = `\n
\n
\n
\n \n \n
\n
\n
`;\n__decorate$23([\n RefSelector('eFilterToolPanelHeader')\n], ToolPanelFilterComp.prototype, \"eFilterToolPanelHeader\", void 0);\n__decorate$23([\n RefSelector('eFilterName')\n], ToolPanelFilterComp.prototype, \"eFilterName\", void 0);\n__decorate$23([\n RefSelector('agFilterToolPanelBody')\n], ToolPanelFilterComp.prototype, \"agFilterToolPanelBody\", void 0);\n__decorate$23([\n RefSelector('eFilterIcon')\n], ToolPanelFilterComp.prototype, \"eFilterIcon\", void 0);\n__decorate$23([\n RefSelector('eExpand')\n], ToolPanelFilterComp.prototype, \"eExpand\", void 0);\n__decorate$23([\n Autowired('filterManager')\n], ToolPanelFilterComp.prototype, \"filterManager\", void 0);\n__decorate$23([\n Autowired('columnModel')\n], ToolPanelFilterComp.prototype, \"columnModel\", void 0);\n__decorate$23([\n PostConstruct\n], ToolPanelFilterComp.prototype, \"postConstruct\", null);\n\nvar __decorate$22 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass ToolPanelFilterGroupComp extends Component {\n constructor(columnGroup, childFilterComps, expandedCallback, depth, showingColumn) {\n super();\n this.columnGroup = columnGroup;\n this.childFilterComps = childFilterComps;\n this.depth = depth;\n this.expandedCallback = expandedCallback;\n this.showingColumn = showingColumn;\n }\n preConstruct() {\n const groupParams = {\n cssIdentifier: 'filter-toolpanel',\n direction: 'vertical'\n };\n this.setTemplate(ToolPanelFilterGroupComp.TEMPLATE, { filterGroupComp: groupParams });\n }\n init() {\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(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 setupTooltip() {\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 const refresh = () => {\n const 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 getTooltipParams() {\n const res = super.getTooltipParams();\n res.location = 'filterToolPanelColumnGroup';\n return res;\n }\n addCssClassToTitleBar(cssClass) {\n this.filterGroupComp.addCssClassToTitleBar(cssClass);\n }\n refreshFilters(isDisplayed) {\n this.childFilterComps.forEach(filterComp => {\n if (filterComp instanceof ToolPanelFilterGroupComp) {\n filterComp.refreshFilters(isDisplayed);\n }\n else {\n filterComp.refreshFilter(isDisplayed);\n }\n });\n }\n isColumnGroup() {\n return this.columnGroup instanceof ProvidedColumnGroup;\n }\n isExpanded() {\n return this.filterGroupComp.isExpanded();\n }\n getChildren() {\n return this.childFilterComps;\n }\n getFilterGroupName() {\n return this.filterGroupName ? this.filterGroupName : '';\n }\n getFilterGroupId() {\n return this.columnGroup.getId();\n }\n hideGroupItem(hide, index) {\n this.filterGroupComp.hideItem(hide, index);\n }\n hideGroup(hide) {\n this.setDisplayed(!hide);\n }\n forEachToolPanelFilterChild(action) {\n this.childFilterComps.forEach(filterComp => {\n if (filterComp instanceof ToolPanelFilterComp) {\n action(filterComp);\n }\n });\n }\n addExpandCollapseListeners() {\n const expandListener = this.isColumnGroup() ?\n () => this.expandedCallback() :\n () => this.forEachToolPanelFilterChild(filterComp => filterComp.expand());\n const collapseListener = this.isColumnGroup() ?\n () => this.expandedCallback() :\n () => this.forEachToolPanelFilterChild(filterComp => filterComp.collapse());\n this.addManagedListener(this.filterGroupComp, AgGroupComponent.EVENT_EXPANDED, expandListener);\n this.addManagedListener(this.filterGroupComp, AgGroupComponent.EVENT_COLLAPSED, collapseListener);\n }\n getColumns() {\n if (this.columnGroup instanceof ProvidedColumnGroup) {\n return this.columnGroup.getLeafColumns();\n }\n return [this.columnGroup];\n }\n addFilterChangedListeners() {\n this.getColumns().forEach(column => {\n this.addManagedListener(column, Column.EVENT_FILTER_CHANGED, () => 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 refreshFilterClass() {\n const columns = this.getColumns();\n const anyChildFiltersActive = () => columns.some(col => col.isFilterActive());\n this.filterGroupComp.addOrRemoveCssClass('ag-has-filter', anyChildFiltersActive());\n }\n onFilterOpened(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 expand() {\n this.filterGroupComp.toggleGroupExpand(true);\n }\n collapse() {\n this.filterGroupComp.toggleGroupExpand(false);\n }\n setGroupTitle() {\n this.filterGroupName = (this.columnGroup instanceof ProvidedColumnGroup) ?\n this.getColumnGroupName(this.columnGroup) : this.getColumnName(this.columnGroup);\n this.filterGroupComp.setTitle(this.filterGroupName || '');\n }\n getColumnGroupName(columnGroup) {\n return this.columnModel.getDisplayNameForProvidedColumnGroup(null, columnGroup, 'filterToolPanel');\n }\n getColumnName(column) {\n return this.columnModel.getDisplayNameForColumn(column, 'filterToolPanel', false);\n }\n destroyFilters() {\n this.childFilterComps = this.destroyBeans(this.childFilterComps);\n _.clearElement(this.getGui());\n }\n destroy() {\n this.destroyFilters();\n super.destroy();\n }\n}\nToolPanelFilterGroupComp.TEMPLATE = `
\n \n
`;\n__decorate$22([\n RefSelector('filterGroupComp')\n], ToolPanelFilterGroupComp.prototype, \"filterGroupComp\", void 0);\n__decorate$22([\n Autowired('columnModel')\n], ToolPanelFilterGroupComp.prototype, \"columnModel\", void 0);\n__decorate$22([\n PreConstruct\n], ToolPanelFilterGroupComp.prototype, \"preConstruct\", null);\n__decorate$22([\n PostConstruct\n], ToolPanelFilterGroupComp.prototype, \"init\", null);\n\nvar __decorate$21 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass FiltersToolPanelListPanel extends Component {\n constructor() {\n super(FiltersToolPanelListPanel.TEMPLATE);\n this.initialised = false;\n this.filterGroupComps = [];\n }\n init(params) {\n this.initialised = true;\n const defaultParams = {\n suppressExpandAll: false,\n suppressFilterSearch: false,\n suppressSyncLayoutWithGrid: false,\n api: this.gridApi,\n columnApi: this.columnApi,\n context: this.gridOptionsService.context\n };\n _.mergeDeep(defaultParams, params);\n this.params = defaultParams;\n if (!this.params.suppressSyncLayoutWithGrid) {\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_MOVED, () => this.onColumnsChanged());\n }\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, () => this.onColumnsChanged());\n this.addManagedListener(this.eventService, Events.EVENT_TOOL_PANEL_VISIBLE_CHANGED, (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.key === 'filters') {\n this.refreshFilters(event.visible);\n }\n });\n if (this.columnModel.isReady()) {\n this.onColumnsChanged();\n }\n }\n onColumnsChanged() {\n const pivotModeActive = this.columnModel.isPivotMode();\n const shouldSyncColumnLayoutWithGrid = !this.params.suppressSyncLayoutWithGrid && !pivotModeActive;\n shouldSyncColumnLayoutWithGrid ? this.syncFilterLayout() : this.buildTreeFromProvidedColumnDefs();\n }\n syncFilterLayout() {\n this.toolPanelColDefService.syncLayoutWithGrid(this.setFiltersLayout.bind(this));\n }\n buildTreeFromProvidedColumnDefs() {\n const columnTree = this.columnModel.getPrimaryColumnTree();\n this.recreateFilters(columnTree);\n }\n setFiltersLayout(colDefs) {\n const columnTree = this.toolPanelColDefService.createColumnTree(colDefs);\n this.recreateFilters(columnTree);\n }\n recreateFilters(columnTree) {\n // Underlying filter comp/element won't get recreated if the column still exists (the element just gets detached/re-attached).\n // We can therefore restore focus if an element in the filter tool panel was focused.\n const activeElement = this.gridOptionsService.getDocument().activeElement;\n // Want to restore the expansion state where possible.\n const expansionState = this.getExpansionState();\n this.destroyFilters();\n this.filterGroupComps = this.recursivelyAddComps(columnTree, 0, expansionState);\n const len = this.filterGroupComps.length;\n if (len) {\n // skip the destroy function because this will be managed\n // by the `destroyFilters` function\n this.filterGroupComps.forEach(comp => 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 // We only care about restoring focus if the originally focused element was in the filter tool panel.\n if (this.getGui().contains(activeElement)) {\n activeElement.focus();\n }\n }\n recursivelyAddComps(tree, depth, expansionState) {\n return _.flatten(tree.map(child => {\n if (child instanceof ProvidedColumnGroup) {\n return _.flatten(this.recursivelyAddFilterGroupComps(child, depth, expansionState));\n }\n const column = child;\n if (!this.shouldDisplayFilter(column)) {\n return [];\n }\n const hideFilterCompHeader = depth === 0;\n const filterComp = new ToolPanelFilterComp(hideFilterCompHeader);\n this.createBean(filterComp);\n filterComp.setColumn(column);\n if (expansionState.get(column.getId())) {\n // Default state on creation and desired state are both collapsed. Expand if expanded before.\n filterComp.expand();\n }\n if (depth > 0) {\n return filterComp;\n }\n const filterGroupComp = this.createBean(new ToolPanelFilterGroupComp(column, [filterComp], this.onGroupExpanded.bind(this), depth, true));\n filterGroupComp.addCssClassToTitleBar('ag-filter-toolpanel-header');\n if (!expansionState.get(filterGroupComp.getFilterGroupId())) {\n // Default state on creation is expanded. Desired initial state is collapsed. Always collapse unless expanded before.\n filterGroupComp.collapse();\n }\n return filterGroupComp;\n }));\n }\n recursivelyAddFilterGroupComps(columnGroup, depth, expansionState) {\n if (!this.filtersExistInChildren(columnGroup.getChildren())) {\n return;\n }\n const colGroupDef = columnGroup.getColGroupDef();\n if (colGroupDef && colGroupDef.suppressFiltersToolPanel) {\n return [];\n }\n const newDepth = columnGroup.isPadding() ? depth : depth + 1;\n const childFilterComps = _.flatten(this.recursivelyAddComps(columnGroup.getChildren(), newDepth, expansionState));\n if (columnGroup.isPadding()) {\n return childFilterComps;\n }\n const filterGroupComp = new ToolPanelFilterGroupComp(columnGroup, childFilterComps, this.onGroupExpanded.bind(this), depth, false);\n this.createBean(filterGroupComp);\n filterGroupComp.addCssClassToTitleBar('ag-filter-toolpanel-header');\n if (expansionState.get(filterGroupComp.getFilterGroupId()) === false) {\n // Default state on creation is expanded. Desired initial state is expanded. Only collapse if collapsed before.\n filterGroupComp.collapse();\n }\n return [filterGroupComp];\n }\n filtersExistInChildren(tree) {\n return tree.some(child => {\n if (child instanceof ProvidedColumnGroup) {\n return this.filtersExistInChildren(child.getChildren());\n }\n return this.shouldDisplayFilter(child);\n });\n }\n shouldDisplayFilter(column) {\n const suppressFiltersToolPanel = column.getColDef() && column.getColDef().suppressFiltersToolPanel;\n return column.isFilterAllowed() && !suppressFiltersToolPanel;\n }\n getExpansionState() {\n const expansionState = new Map();\n const recursiveGetExpansionState = (filterGroupComp) => {\n expansionState.set(filterGroupComp.getFilterGroupId(), filterGroupComp.isExpanded());\n filterGroupComp.getChildren().forEach(child => {\n if (child instanceof ToolPanelFilterGroupComp) {\n recursiveGetExpansionState(child);\n }\n else {\n expansionState.set(child.getColumn().getId(), child.isExpanded());\n }\n });\n };\n this.filterGroupComps.forEach(recursiveGetExpansionState);\n return expansionState;\n }\n // we don't support refreshing, but must implement because it's on the tool panel interface\n refresh() { }\n // lazy initialise the panel\n setVisible(visible) {\n super.setDisplayed(visible);\n if (visible && !this.initialised) {\n this.init(this.params);\n }\n }\n expandFilterGroups(expand, groupIds) {\n const updatedGroupIds = [];\n const updateGroupExpandState = (filterGroup) => {\n const groupId = filterGroup.getFilterGroupId();\n const 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(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 const unrecognisedGroupIds = groupIds.filter(groupId => 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 expandFilters(expand, colIds) {\n const updatedColIds = [];\n const updateGroupExpandState = (filterComp) => {\n if (filterComp instanceof ToolPanelFilterGroupComp) {\n let anyChildrenChanged = false;\n filterComp.getChildren().forEach(child => {\n const childUpdated = updateGroupExpandState(child);\n if (childUpdated) {\n if (expand) {\n filterComp.expand();\n anyChildrenChanged = true;\n }\n else if (!filterComp.isColumnGroup()) {\n // we only collapse columns wrapped in groups\n filterComp.collapse();\n }\n }\n });\n return anyChildrenChanged;\n }\n const colId = filterComp.getColumn().getColId();\n const 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 const unrecognisedColIds = colIds.filter(colId => 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 onGroupExpanded() {\n this.fireExpandedEvent();\n }\n fireExpandedEvent() {\n let expandedCount = 0;\n let notExpandedCount = 0;\n const updateExpandCounts = (filterGroup) => {\n if (!filterGroup.isColumnGroup()) {\n return;\n }\n filterGroup.isExpanded() ? expandedCount++ : notExpandedCount++;\n filterGroup.getChildren().forEach(child => {\n if (child instanceof ToolPanelFilterGroupComp) {\n updateExpandCounts(child);\n }\n });\n };\n this.filterGroupComps.forEach(updateExpandCounts);\n let 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 performFilterSearch(searchText) {\n this.searchFilterText = _.exists(searchText) ? searchText.toLowerCase() : null;\n this.searchFilters(this.searchFilterText);\n }\n searchFilters(searchFilter) {\n const passesFilter = (groupName) => {\n return !_.exists(searchFilter) || groupName.toLowerCase().indexOf(searchFilter) !== -1;\n };\n const recursivelySearch = (filterItem, parentPasses) => {\n if (!(filterItem instanceof ToolPanelFilterGroupComp)) {\n return passesFilter(filterItem.getColumnFilterName() || '');\n }\n const children = filterItem.getChildren();\n const groupNamePasses = passesFilter(filterItem.getFilterGroupName());\n // if group or parent already passed - ensure this group and all children are visible\n const alreadyPassed = parentPasses || groupNamePasses;\n if (alreadyPassed) {\n // ensure group visible\n filterItem.hideGroup(false);\n // ensure all children are visible\n for (let 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 let anyChildPasses = false;\n children.forEach((child, index) => {\n const 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 let firstVisible;\n let lastVisible;\n this.filterGroupComps.forEach((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 setFirstAndLastVisible(firstIdx, lastIdx) {\n this.filterGroupComps.forEach((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 refreshFilters(isDisplayed) {\n this.filterGroupComps.forEach(filterGroupComp => filterGroupComp.refreshFilters(isDisplayed));\n }\n destroyFilters() {\n this.filterGroupComps = this.destroyBeans(this.filterGroupComps);\n _.clearElement(this.getGui());\n }\n destroy() {\n this.destroyFilters();\n super.destroy();\n }\n}\nFiltersToolPanelListPanel.TEMPLATE = `
`;\n__decorate$21([\n Autowired(\"gridApi\")\n], FiltersToolPanelListPanel.prototype, \"gridApi\", void 0);\n__decorate$21([\n Autowired(\"columnApi\")\n], FiltersToolPanelListPanel.prototype, \"columnApi\", void 0);\n__decorate$21([\n Autowired('toolPanelColDefService')\n], FiltersToolPanelListPanel.prototype, \"toolPanelColDefService\", void 0);\n__decorate$21([\n Autowired('columnModel')\n], FiltersToolPanelListPanel.prototype, \"columnModel\", void 0);\n\nvar __decorate$20 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass FiltersToolPanel extends Component {\n constructor() {\n super(FiltersToolPanel.TEMPLATE);\n this.initialised = false;\n this.listenerDestroyFuncs = [];\n }\n init(params) {\n // if initialised is true, means this is a refresh\n if (this.initialised) {\n this.listenerDestroyFuncs.forEach(func => func());\n this.listenerDestroyFuncs = [];\n }\n this.initialised = true;\n const defaultParams = {\n suppressExpandAll: false,\n suppressFilterSearch: false,\n suppressSyncLayoutWithGrid: false,\n api: this.gridApi,\n columnApi: this.columnApi,\n };\n this.params = Object.assign(Object.assign(Object.assign({}, defaultParams), params), { context: this.gridOptionsService.context });\n this.filtersToolPanelHeaderPanel.init(this.params);\n this.filtersToolPanelListPanel.init(this.params);\n const hideExpand = this.params.suppressExpandAll;\n const 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 setVisible(visible) {\n super.setDisplayed(visible);\n if (visible && !this.initialised) {\n this.init(this.params);\n }\n }\n onExpandAll() {\n this.filtersToolPanelListPanel.expandFilterGroups(true);\n }\n onCollapseAll() {\n this.filtersToolPanelListPanel.expandFilterGroups(false);\n }\n onSearchChanged(event) {\n this.filtersToolPanelListPanel.performFilterSearch(event.searchText);\n }\n setFilterLayout(colDefs) {\n this.filtersToolPanelListPanel.setFiltersLayout(colDefs);\n }\n onGroupExpanded(event) {\n this.filtersToolPanelHeaderPanel.setExpandState(event.state);\n }\n expandFilterGroups(groupIds) {\n this.filtersToolPanelListPanel.expandFilterGroups(true, groupIds);\n }\n collapseFilterGroups(groupIds) {\n this.filtersToolPanelListPanel.expandFilterGroups(false, groupIds);\n }\n expandFilters(colIds) {\n this.filtersToolPanelListPanel.expandFilters(true, colIds);\n }\n collapseFilters(colIds) {\n this.filtersToolPanelListPanel.expandFilters(false, colIds);\n }\n syncLayoutWithGrid() {\n this.filtersToolPanelListPanel.syncFilterLayout();\n }\n refresh() {\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 destroy() {\n super.destroy();\n }\n}\nFiltersToolPanel.TEMPLATE = `
\n \n \n
`;\n__decorate$20([\n RefSelector('filtersToolPanelHeaderPanel')\n], FiltersToolPanel.prototype, \"filtersToolPanelHeaderPanel\", void 0);\n__decorate$20([\n RefSelector('filtersToolPanelListPanel')\n], FiltersToolPanel.prototype, \"filtersToolPanelListPanel\", void 0);\n__decorate$20([\n Autowired('gridApi')\n], FiltersToolPanel.prototype, \"gridApi\", void 0);\n__decorate$20([\n Autowired('columnApi')\n], FiltersToolPanel.prototype, \"columnApi\", void 0);\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nconst VERSION$c = '30.0.5';\n\nconst FiltersToolPanelModule = {\n version: VERSION$c,\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\nvar __extends$15 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * The interval methods don't mutate Date parameters.\n */\nvar TimeInterval = /** @class */ (function () {\n function TimeInterval(encode, decode, rangeCallback) {\n this._encode = encode;\n this._decode = decode;\n this._rangeCallback = rangeCallback;\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 var d = new Date(date);\n var e = this._encode(d);\n return this._decode(e);\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 var d = new Date(Number(date) - 1);\n var e = this._encode(d);\n return this._decode(e + 1);\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 Range start.\n * @param stop Range end.\n * @param extend If specified, the requested range will be extended to the closest \"nice\" values.\n */\n TimeInterval.prototype.range = function (start, stop, extend) {\n var _a;\n var rangeCallback = (_a = this._rangeCallback) === null || _a === void 0 ? void 0 : _a.call(this, start, stop);\n var e0 = this._encode(extend ? this.floor(start) : this.ceil(start));\n var e1 = this._encode(extend ? this.ceil(stop) : this.floor(stop));\n if (e1 < e0) {\n return [];\n }\n var range = [];\n for (var e = e0; e <= e1; e++) {\n var d = this._decode(e);\n range.push(d);\n }\n rangeCallback === null || rangeCallback === void 0 ? void 0 : rangeCallback();\n return range;\n };\n return TimeInterval;\n}());\nvar CountableTimeInterval = /** @class */ (function (_super) {\n __extends$15(CountableTimeInterval, _super);\n function CountableTimeInterval() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CountableTimeInterval.prototype.getOffset = function (snapTo, step) {\n var s = typeof snapTo === 'number' || snapTo instanceof Date ? this._encode(new Date(snapTo)) : 0;\n return Math.floor(s) % step;\n };\n /**\n * Returns a filtered view of this interval representing every step'th date.\n * It can be a number of minutes, hours, days etc.\n * Must be a positive integer.\n * @param step\n */\n CountableTimeInterval.prototype.every = function (step, options) {\n var _this = this;\n var offset = 0;\n var rangeCallback;\n var _a = (options !== null && options !== void 0 ? options : {}).snapTo, snapTo = _a === void 0 ? 'start' : _a;\n if (typeof snapTo === 'string') {\n var initialOffset_1 = offset;\n rangeCallback = function (start, stop) {\n var s = snapTo === 'start' ? start : stop;\n offset = _this.getOffset(s, step);\n return function () { return (offset = initialOffset_1); };\n };\n }\n else if (typeof snapTo === 'number') {\n offset = this.getOffset(new Date(snapTo), step);\n }\n else if (snapTo instanceof Date) {\n offset = this.getOffset(snapTo, step);\n }\n var encode = function (date) {\n var e = _this._encode(date);\n return Math.floor((e - offset) / step);\n };\n var decode = function (encoded) {\n return _this._decode(encoded * step + offset);\n };\n var interval = new TimeInterval(encode, decode, rangeCallback);\n return interval;\n };\n return CountableTimeInterval;\n}(TimeInterval));\n\nfunction encode$b(date) {\n return date.getTime();\n}\nfunction decode$b(encoded) {\n return new Date(encoded);\n}\nvar millisecond = new CountableTimeInterval(encode$b, decode$b);\n\n// Common time unit sizes in milliseconds.\nnew Date(0).getFullYear();\nvar durationSecond = 1000;\nvar durationMinute = durationSecond * 60;\nvar durationHour = durationMinute * 60;\nvar durationDay = durationHour * 24;\nvar durationWeek = durationDay * 7;\nvar durationMonth = durationDay * 30;\nvar durationYear = durationDay * 365;\n\nvar offset$2 = new Date().getTimezoneOffset() * durationMinute;\nfunction encode$a(date) {\n return Math.floor((date.getTime() - offset$2) / durationSecond);\n}\nfunction decode$a(encoded) {\n return new Date(offset$2 + encoded * durationSecond);\n}\nvar second = new CountableTimeInterval(encode$a, decode$a);\n\nvar offset$1 = new Date().getTimezoneOffset() * durationMinute;\nfunction encode$9(date) {\n return Math.floor((date.getTime() - offset$1) / durationMinute);\n}\nfunction decode$9(encoded) {\n return new Date(offset$1 + encoded * durationMinute);\n}\nvar minute = new CountableTimeInterval(encode$9, decode$9);\n\nvar offset = new Date().getTimezoneOffset() * durationMinute;\nfunction encode$8(date) {\n return Math.floor((date.getTime() - offset) / durationHour);\n}\nfunction decode$8(encoded) {\n return new Date(offset + encoded * durationHour);\n}\nvar hour = new CountableTimeInterval(encode$8, decode$8);\n\nfunction encode$7(date) {\n var tzOffsetMs = date.getTimezoneOffset() * 60000;\n return Math.floor((date.getTime() - tzOffsetMs) / durationDay);\n}\nfunction decode$7(encoded) {\n var d = new Date(1970, 0, 1);\n d.setDate(d.getDate() + encoded);\n return d;\n}\nvar day = new CountableTimeInterval(encode$7, decode$7);\n\n// Set date to n-th day of the week.\nfunction weekday(n) {\n var base = new Date(2023, 0, 1 + n).getTime();\n function encode(date) {\n var dateMs = date.getTime();\n return Math.floor((dateMs - base) / durationWeek);\n }\n function decode(encoded) {\n var d = new Date(base);\n d.setDate(d.getDate() + encoded * 7);\n return d;\n }\n return new CountableTimeInterval(encode, decode);\n}\nvar sunday = weekday(0);\nvar monday = weekday(1);\nvar tuesday = weekday(2);\nvar wednesday = weekday(3);\nvar thursday = weekday(4);\nvar friday = weekday(5);\nvar saturday = weekday(6);\n\nfunction encode$6(date) {\n return date.getFullYear() * 12 + date.getMonth();\n}\nfunction decode$6(encoded) {\n var year = Math.floor(encoded / 12);\n var month = encoded - year * 12;\n return new Date(year, month, 1);\n}\nvar month = new CountableTimeInterval(encode$6, decode$6);\n\nfunction encode$5(date) {\n return date.getFullYear();\n}\nfunction decode$5(encoded) {\n // Note: assigning years through the constructor\n // will break for years 0 - 99 AD (will turn 1900's).\n var d = new Date();\n d.setFullYear(encoded);\n d.setMonth(0, 1);\n d.setHours(0, 0, 0, 0);\n return d;\n}\nvar year = new CountableTimeInterval(encode$5, decode$5);\n\nfunction encode$4(date) {\n return Math.floor(date.getTime() / durationMinute);\n}\nfunction decode$4(encoded) {\n return new Date(encoded * durationMinute);\n}\nvar utcMinute = new CountableTimeInterval(encode$4, decode$4);\n\nfunction encode$3(date) {\n return Math.floor(date.getTime() / durationHour);\n}\nfunction decode$3(encoded) {\n return new Date(encoded * durationHour);\n}\nvar utcHour = new CountableTimeInterval(encode$3, decode$3);\n\nfunction encode$2(date) {\n return Math.floor(date.getTime() / durationDay);\n}\nfunction decode$2(encoded) {\n var d = new Date(0);\n d.setUTCDate(d.getUTCDate() + encoded);\n d.setUTCHours(0, 0, 0, 0);\n return d;\n}\nvar utcDay = new CountableTimeInterval(encode$2, decode$2);\n\nfunction encode$1(date) {\n return date.getUTCFullYear() * 12 + date.getUTCMonth();\n}\nfunction decode$1(encoded) {\n var year = Math.floor(encoded / 12);\n var month = encoded - year * 12;\n return new Date(Date.UTC(year, month, 1));\n}\nvar utcMonth = new CountableTimeInterval(encode$1, decode$1);\n\nfunction encode(date) {\n return date.getUTCFullYear();\n}\nfunction decode(encoded) {\n // Note: assigning years through the constructor\n // will break for years 0 - 99 AD (will turn 1900's).\n var d = new Date();\n d.setUTCFullYear(encoded);\n d.setUTCMonth(0, 1);\n d.setUTCHours(0, 0, 0, 0);\n return d;\n}\nvar utcYear = new CountableTimeInterval(encode, decode);\n\nvar time = /*#__PURE__*/Object.freeze({\n __proto__: null,\n millisecond: millisecond,\n second: second,\n minute: minute,\n hour: hour,\n day: day,\n sunday: sunday,\n monday: monday,\n tuesday: tuesday,\n wednesday: wednesday,\n thursday: thursday,\n friday: friday,\n saturday: saturday,\n month: month,\n year: year,\n utcMinute: utcMinute,\n utcHour: utcHour,\n utcDay: utcDay,\n utcMonth: utcMonth,\n utcYear: utcYear\n});\n\nvar MOBILE = [/Android/i, /webOS/i, /iPhone/i, /iPad/i, /iPod/i, /BlackBerry/i, /Windows Phone/i];\nfunction isDesktop() {\n var userAgent = navigator.userAgent;\n if (MOBILE.some(function (r) { return r.test(userAgent); })) {\n return false;\n }\n return true;\n}\n\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(_a) {\n var _b = _a.document, document = _b === void 0 ? window.document : _b, _c = _a.width, width = _c === void 0 ? 600 : _c, _d = _a.height, height = _d === void 0 ? 300 : _d, _e = _a.domLayer, domLayer = _e === void 0 ? false : _e, _f = _a.zIndex, zIndex = _f === void 0 ? 0 : _f, _g = _a.name, name = _g === void 0 ? undefined : _g, _h = _a.overrideDevicePixelRatio, overrideDevicePixelRatio = _h === void 0 ? undefined : _h;\n this._container = undefined;\n this._enabled = true;\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 // Create canvas and immediately apply width + height to avoid out-of-memory\n // errors on iOS/iPadOS Safari.\n this.element = document.createElement('canvas');\n this.element.width = width;\n this.element.height = height;\n this.context = this.element.getContext('2d');\n this.imageSource = this.context.canvas;\n var style = this.element.style;\n style.userSelect = 'none';\n style.display = 'block';\n if (domLayer) {\n style.position = 'absolute';\n style.zIndex = String(zIndex);\n style.top = '0';\n style.left = '0';\n style.pointerEvents = 'none';\n style.opacity = \"1\";\n if (name) {\n this.element.id = name;\n }\n }\n this.setPixelRatio(overrideDevicePixelRatio);\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: false,\n configurable: true\n });\n Object.defineProperty(HdpiCanvas.prototype, \"enabled\", {\n get: function () {\n return this._enabled;\n },\n set: function (value) {\n this.element.style.display = value ? 'block' : 'none';\n this._enabled = !!value;\n },\n enumerable: false,\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 // Workaround memory allocation quirks in iOS Safari by resizing to 0x0 and clearing.\n // See https://bugs.webkit.org/show_bug.cgi?id=195325.\n this.element.width = 0;\n this.element.height = 0;\n this.context.clearRect(0, 0, 0, 0);\n Object.freeze(this);\n };\n HdpiCanvas.prototype.snapshot = function () {\n // No-op for compatibility with HdpiOffscreenCanvas.\n };\n HdpiCanvas.prototype.clear = function () {\n this.context.save();\n this.context.resetTransform();\n this.context.clearRect(0, 0, this.width, this.height);\n this.context.restore();\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 downloaded file.\n * @param fileFormat The file format, the default is `image/png`\n */\n HdpiCanvas.prototype.download = function (fileName, fileFormat) {\n if (fileFormat === void 0) { fileFormat = 'image/png'; }\n fileName = (fileName !== null && fileName !== void 0 ? fileName : '').trim() || 'image';\n var dataUrl = this.getDataURL(fileFormat);\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: false,\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 !== null && ratio !== void 0 ? ratio : window.devicePixelRatio;\n if (!isDesktop()) {\n // Mobile browsers have stricter memory limits, we reduce rendering resolution to\n // improve stability on mobile browsers. iOS Safari 12->16 are pain-points since they\n // have memory allocation quirks - see https://bugs.webkit.org/show_bug.cgi?id=195325.\n pixelRatio = 1;\n }\n HdpiCanvas.overrideScale(this.context, pixelRatio);\n this._pixelRatio = pixelRatio;\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: false,\n configurable: true\n });\n Object.defineProperty(HdpiCanvas.prototype, \"width\", {\n get: function () {\n return this._width;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(HdpiCanvas.prototype, \"height\", {\n get: function () {\n return this._height;\n },\n enumerable: false,\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 this._textMeasuringContext = canvas.getContext('2d');\n return this._textMeasuringContext;\n },\n enumerable: false,\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: false,\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 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 keep using the SVG for text measurement in Firefox for now.\n !isFirefox &&\n !isSafari,\n getTransform: this.textMeasuringContext.getTransform !== undefined,\n });\n return this._has;\n },\n enumerable: false,\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 else {\n throw new Error('AG Charts - Unable to restore() past depth 0');\n }\n },\n setTransform: function (a, b, c, d, e, f) {\n if (typeof a === 'object') {\n this.$setTransform(a);\n }\n else {\n this.$setTransform(a * scale, b * scale, c * scale, d * scale, e * scale, f * scale);\n }\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 },\n verifyDepthZero: function () {\n if (depth !== 0) {\n throw new Error('AG Charts - Save/restore depth is non-zero: ' + depth);\n }\n },\n };\n for (var name_1 in overrides) {\n if (Object.prototype.hasOwnProperty.call(overrides, 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}());\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 __assign$v = (undefined && undefined.__assign) || function () {\n __assign$v = 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$v.apply(this, arguments);\n};\nvar __read$N = (undefined && undefined.__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 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.clone = 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 BBox.prototype.equals = function (other) {\n return this.x === other.x && this.y === other.y && this.width === other.width && this.height === other.height;\n };\n BBox.prototype.containsPoint = function (x, y) {\n return x >= this.x && x <= this.x + this.width && y >= this.y && y <= this.y + this.height;\n };\n BBox.prototype.collidesBBox = function (other) {\n return (this.x < other.x + other.width &&\n this.x + this.width > other.x &&\n this.y < other.y + other.height &&\n this.y + this.height > other.y);\n };\n BBox.prototype.isInfinite = function () {\n return (Math.abs(this.x) === Infinity ||\n Math.abs(this.y) === Infinity ||\n Math.abs(this.width) === Infinity ||\n Math.abs(this.height) === Infinity);\n };\n BBox.prototype.shrink = function (amount, position) {\n var _this = this;\n var apply = function (pos, amt) {\n switch (pos) {\n case 'top':\n _this.y += amt;\n // eslint-disable-next-line no-fallthrough\n case 'bottom':\n _this.height -= amt;\n break;\n case 'left':\n _this.x += amt;\n // eslint-disable-next-line no-fallthrough\n case 'right':\n _this.width -= amt;\n break;\n case 'vertical':\n _this.y += amt;\n _this.height -= amt * 2;\n break;\n case 'horizontal':\n _this.x += amt;\n _this.width -= amt * 2;\n break;\n default:\n _this.x += amt;\n _this.width -= amt * 2;\n _this.y += amt;\n _this.height -= amt * 2;\n }\n };\n if (typeof amount === 'number') {\n apply(position, amount);\n }\n else {\n Object.entries(amount).forEach(function (_a) {\n var _b = __read$N(_a, 2), pos = _b[0], amt = _b[1];\n return apply(pos, amt);\n });\n }\n return this;\n };\n BBox.prototype.grow = function (amount, position) {\n if (typeof amount === 'number') {\n this.shrink(-amount, position);\n }\n else {\n var paddingCopy = __assign$v({}, amount);\n for (var key in paddingCopy) {\n paddingCopy[key] *= -1;\n }\n this.shrink(paddingCopy);\n }\n return this;\n };\n BBox.merge = function (boxes) {\n var left = Infinity;\n var top = Infinity;\n var right = -Infinity;\n var bottom = -Infinity;\n boxes.forEach(function (box) {\n if (box.x < left) {\n left = box.x;\n }\n if (box.y < top) {\n top = box.y;\n }\n if (box.x + box.width > right) {\n right = box.x + box.width;\n }\n if (box.y + box.height > bottom) {\n bottom = box.y + box.height;\n }\n });\n return new BBox(left, top, right - left, bottom - top);\n };\n return BBox;\n}());\n\nvar __read$M = (undefined && undefined.__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 __spreadArray$u = (undefined && undefined.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\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 Object.defineProperty(Matrix.prototype, \"e\", {\n get: function () {\n return __spreadArray$u([], __read$M(this.elements));\n },\n enumerable: false,\n configurable: true\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 Object.defineProperty(Matrix.prototype, \"identity\", {\n get: function () {\n var e = this.elements;\n return e[0] === 1 && e[1] === 0 && e[2] === 0 && e[3] === 1 && e[4] === 0 && e[5] === 0;\n },\n enumerable: false,\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 = A[0] * B[0] + A[2] * B[1], b = A[1] * B[0] + A[3] * B[1], c = A[0] * B[2] + A[2] * B[3], d = A[1] * B[2] + A[3] * B[3], e = A[0] * B[4] + A[2] * B[5] + A[4], f = A[1] * B[4] + A[3] * B[5] + A[5];\n C = C !== null && C !== void 0 ? C : A;\n C[0] = a;\n C[1] = b;\n C[2] = c;\n C[3] = d;\n C[4] = e;\n C[5] = f;\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 el = this.elements;\n var a = el[0], b = el[1], c = el[2], d = el[3];\n var e = el[4], f = el[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 el = this.elements;\n var a = el[0], b = el[1], c = el[2], d = el[3];\n var e = el[4], f = el[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 el = this.elements;\n var a = el[0], b = el[1], c = el[2], d = el[3];\n var e = el[4], f = el[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 el[0] = d;\n el[1] = -b;\n el[2] = -c;\n el[3] = a;\n el[4] = c * f - d * e;\n el[5] = b * e - a * f;\n return this;\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, target) {\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 = Math.abs(h_w * xx) + Math.abs(h_h * yx);\n var h = Math.abs(h_w * xy) + Math.abs(h_h * yy);\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 (sourceMatrix) {\n return Matrix.instance.setElements(sourceMatrix.elements);\n };\n Matrix.updateTransformMatrix = function (matrix, scalingX, scalingY, rotation, translationX, translationY, opts) {\n // Assume that centers of scaling and rotation are at the origin.\n var _a = __read$M([0, 0], 2), bbcx = _a[0], bbcy = _a[1];\n var sx = scalingX;\n var sy = scalingY;\n var scx;\n var scy;\n if (sx === 1 && sy === 1) {\n scx = 0;\n scy = 0;\n }\n else {\n scx = (opts === null || opts === void 0 ? void 0 : opts.scalingCenterX) == null ? bbcx : opts === null || opts === void 0 ? void 0 : opts.scalingCenterX;\n scy = (opts === null || opts === void 0 ? void 0 : opts.scalingCenterY) == null ? bbcy : opts === null || opts === void 0 ? void 0 : opts.scalingCenterY;\n }\n var r = 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 = (opts === null || opts === void 0 ? void 0 : opts.rotationCenterX) == null ? bbcx : opts === null || opts === void 0 ? void 0 : opts.rotationCenterX;\n rcy = (opts === null || opts === void 0 ? void 0 : opts.rotationCenterY) == null ? bbcy : opts === null || opts === void 0 ? void 0 : opts.rotationCenterY;\n }\n var tx = translationX;\n var ty = 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 matrix.setElements([\n cos * sx,\n sin * sx,\n -sin * sy,\n cos * sy,\n cos * tx4 - sin * ty4 + rcx + tx,\n sin * tx4 + cos * ty4 + rcy + ty,\n ]);\n return matrix;\n };\n Matrix.fromContext = function (ctx) {\n var domMatrix = ctx.getTransform();\n return new Matrix([domMatrix.a, domMatrix.b, domMatrix.c, domMatrix.d, domMatrix.e, domMatrix.f]);\n };\n Matrix.instance = new Matrix();\n return Matrix;\n}());\n\nvar ID_MAP = {};\nfunction resetIds() {\n for (var key in ID_MAP) {\n delete ID_MAP[key];\n }\n}\nfunction createId$1(instance) {\n var _a;\n var constructor = instance.constructor;\n var className = Object.prototype.hasOwnProperty.call(constructor, 'className')\n ? constructor.className\n : constructor.name;\n if (!className) {\n throw new Error(\"The \" + constructor + \" is missing the 'className' property.\");\n }\n var nextId = ((_a = ID_MAP[className]) !== null && _a !== void 0 ? _a : 0) + 1;\n ID_MAP[className] = nextId;\n return className + '-' + nextId;\n}\n\nvar RedrawType;\n(function (RedrawType) {\n RedrawType[RedrawType[\"NONE\"] = 0] = \"NONE\";\n // Canvas doesn't need clearing, an incremental re-rerender is sufficient.\n RedrawType[RedrawType[\"TRIVIAL\"] = 1] = \"TRIVIAL\";\n // Group needs clearing, a semi-incremental re-render is sufficient.\n RedrawType[RedrawType[\"MINOR\"] = 2] = \"MINOR\";\n // Canvas needs to be cleared for these redraw types.\n RedrawType[RedrawType[\"MAJOR\"] = 3] = \"MAJOR\";\n})(RedrawType || (RedrawType = {}));\n/** @returns true if new Function() is disabled in the current execution context. */\nfunction functionConstructorAvailable() {\n try {\n new Function('return true');\n return true;\n }\n catch (e) {\n return false;\n }\n}\nvar STRING_FUNCTION_USEABLE = functionConstructorAvailable();\nfunction SceneChangeDetection(opts) {\n var _a = opts !== null && opts !== void 0 ? opts : {}, changeCb = _a.changeCb, convertor = _a.convertor;\n return function (target, key) {\n // `target` is either a constructor (static member) or prototype (instance member)\n var privateKey = \"__\" + key;\n if (target[key]) {\n return;\n }\n if (STRING_FUNCTION_USEABLE && changeCb == null && convertor == null) {\n prepareFastGetSet(target, key, privateKey, opts);\n }\n else {\n prepareSlowGetSet(target, key, privateKey, opts);\n }\n };\n}\nfunction prepareFastGetSet(target, key, privateKey, opts) {\n var _a = opts !== null && opts !== void 0 ? opts : {}, _b = _a.redraw, redraw = _b === void 0 ? RedrawType.TRIVIAL : _b, _c = _a.type, type = _c === void 0 ? 'normal' : _c, _d = _a.checkDirtyOnAssignment, checkDirtyOnAssignment = _d === void 0 ? false : _d;\n // Optimised code-path.\n // Remove all conditional logic from runtime - generate a setter with the exact necessary\n // steps, as these setters are called a LOT during update cycles.\n var setterJs = new Function('value', \"\\n const oldValue = this.\" + privateKey + \";\\n if (value !== oldValue) {\\n this.\" + privateKey + \" = value;\\n \" + (type === 'normal' ? \"this.markDirty(this, \" + redraw + \");\" : '') + \"\\n \" + (type === 'transform' ? \"this.markDirtyTransform(\" + redraw + \");\" : '') + \"\\n \" + (type === 'path'\n ? \"if (!this._dirtyPath) { this._dirtyPath = true; this.markDirty(this, \" + redraw + \"); }\"\n : '') + \"\\n \" + (type === 'font'\n ? \"if (!this._dirtyFont) { this._dirtyFont = true; this.markDirty(this, \" + redraw + \"); }\"\n : '') + \"\\n }\\n \" + (checkDirtyOnAssignment\n ? \"if (value != null && value._dirty > \" + RedrawType.NONE + \") { this.markDirty(value, value._dirty); }\"\n : '') + \"\\n\");\n var getterJs = new Function(\"return this.\" + privateKey + \";\");\n Object.defineProperty(target, key, {\n set: setterJs,\n get: getterJs,\n enumerable: true,\n configurable: true,\n });\n}\nfunction prepareSlowGetSet(target, key, privateKey, opts) {\n var _a = opts !== null && opts !== void 0 ? opts : {}, _b = _a.redraw, redraw = _b === void 0 ? RedrawType.TRIVIAL : _b, _c = _a.type, type = _c === void 0 ? 'normal' : _c, changeCb = _a.changeCb, convertor = _a.convertor, _d = _a.checkDirtyOnAssignment, checkDirtyOnAssignment = _d === void 0 ? false : _d;\n // Unoptimised but 'safe' code-path, for environments with CSP headers and no 'unsafe-eval'.\n // We deliberately do not support debug branches found in the optimised path above, since\n // for large data-set series performance deteriorates with every extra branch here.\n var setter = function (value) {\n var oldValue = this[privateKey];\n value = convertor ? convertor(value) : value;\n if (value !== oldValue) {\n this[privateKey] = value;\n if (type === 'normal')\n this.markDirty(this, redraw);\n if (type === 'transform')\n this.markDirtyTransform(redraw);\n if (type === 'path' && !this._dirtyPath) {\n this._dirtyPath = true;\n this.markDirty(this, redraw);\n }\n if (type === 'font' && !this._dirtyFont) {\n this._dirtyFont = true;\n this.markDirty(this, redraw);\n }\n if (changeCb)\n changeCb(this);\n }\n if (checkDirtyOnAssignment && value != null && value._dirty > RedrawType.NONE)\n this.markDirty(value, value._dirty);\n };\n var getter = function () {\n return this[privateKey];\n };\n Object.defineProperty(target, key, {\n set: setter,\n get: getter,\n enumerable: true,\n configurable: true,\n });\n}\nvar ChangeDetectable = /** @class */ (function () {\n function ChangeDetectable() {\n this._dirty = RedrawType.MAJOR;\n }\n ChangeDetectable.prototype.markDirty = function (_source, type) {\n if (type === void 0) { type = RedrawType.TRIVIAL; }\n if (this._dirty > type) {\n return;\n }\n this._dirty = type;\n };\n ChangeDetectable.prototype.markClean = function (_opts) {\n this._dirty = RedrawType.NONE;\n };\n ChangeDetectable.prototype.isDirty = function () {\n return this._dirty > RedrawType.NONE;\n };\n return ChangeDetectable;\n}());\n\nvar __extends$14 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1$ = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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$E = (undefined && undefined.__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$L = (undefined && undefined.__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 __spreadArray$t = (undefined && undefined.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar PointerEvents;\n(function (PointerEvents) {\n PointerEvents[PointerEvents[\"All\"] = 0] = \"All\";\n PointerEvents[PointerEvents[\"None\"] = 1] = \"None\";\n})(PointerEvents || (PointerEvents = {}));\nvar zIndexChangedCallback = function (o) {\n if (o.parent) {\n o.parent.dirtyZIndex = true;\n }\n o.zIndexChanged();\n};\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 (_super) {\n __extends$14(Node, _super);\n function Node(_a) {\n var _b = _a === void 0 ? {} : _a, isVirtual = _b.isVirtual;\n var _this = _super.call(this) || this;\n /** Unique number to allow creation order to be easily determined. */\n _this.serialNumber = Node._nextSerialNumber++;\n /**\n * Unique node ID in the form `ClassName-NaturalNumber`.\n */\n _this.id = createId$1(_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._virtualChildren = [];\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 _this.visible = true;\n _this.dirtyZIndex = false;\n _this.zIndex = 0;\n /** Discriminators for render order within a zIndex. */\n _this.zIndexSubOrder = undefined;\n _this.pointerEvents = PointerEvents.All;\n _this.isVirtual = isVirtual !== null && isVirtual !== void 0 ? isVirtual : false;\n return _this;\n }\n Object.defineProperty(Node.prototype, \"datum\", {\n /**\n * Some arbitrary data bound to the node.\n */\n get: function () {\n var _a;\n if (this._datum !== undefined) {\n return this._datum;\n }\n return (_a = this._parent) === null || _a === void 0 ? void 0 : _a.datum;\n },\n set: function (datum) {\n this._datum = datum;\n },\n enumerable: false,\n configurable: true\n });\n Node.prototype._setLayerManager = function (value) {\n var e_1, _a, e_2, _b;\n this._layerManager = value;\n this._debug = value === null || value === void 0 ? void 0 : value.debug;\n try {\n for (var _c = __values$E(this._children), _d = _c.next(); !_d.done; _d = _c.next()) {\n var child = _d.value;\n child._setLayerManager(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n try {\n for (var _e = __values$E(this._virtualChildren), _f = _e.next(); !_f.done; _f = _e.next()) {\n var child = _f.value;\n child._setLayerManager(value);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\n }\n finally { if (e_2) throw e_2.error; }\n }\n };\n Object.defineProperty(Node.prototype, \"layerManager\", {\n get: function () {\n return this._layerManager;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"parent\", {\n get: function () {\n return this._parent;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"children\", {\n get: function () {\n var e_3, _a;\n if (this._virtualChildren.length === 0)\n return this._children;\n var result = __spreadArray$t([], __read$L(this._children));\n try {\n for (var _b = __values$E(this._virtualChildren), _c = _b.next(); !_c.done; _c = _b.next()) {\n var next = _c.value;\n result.push.apply(result, __spreadArray$t([], __read$L(next.children)));\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 enumerable: false,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"virtualChildren\", {\n get: function () {\n return this._virtualChildren;\n },\n enumerable: false,\n configurable: true\n });\n Node.prototype.hasVirtualChildren = function () {\n return this._virtualChildren.length > 0;\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 var e_4, _a;\n // Passing a single parameter to an open-ended version of `append`\n // would be 30-35% slower than this.\n if (!Array.isArray(nodes)) {\n nodes = [nodes];\n }\n try {\n for (var nodes_1 = __values$E(nodes), nodes_1_1 = nodes_1.next(); !nodes_1_1.done; nodes_1_1 = nodes_1.next()) {\n var node = nodes_1_1.value;\n if (node.parent) {\n throw new Error(node + \" already belongs to another parent: \" + node.parent + \".\");\n }\n if (node.layerManager) {\n throw new Error(node + \" already belongs to a scene: \" + node.layerManager + \".\");\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 if (node.isVirtual) {\n this._virtualChildren.push(node);\n }\n else {\n this._children.push(node);\n }\n this.childSet[node.id] = true;\n node._parent = this;\n node._setLayerManager(this.layerManager);\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (nodes_1_1 && !nodes_1_1.done && (_a = nodes_1.return)) _a.call(nodes_1);\n }\n finally { if (e_4) throw e_4.error; }\n }\n this.dirtyZIndex = true;\n this.markDirty(this, RedrawType.MAJOR);\n };\n Node.prototype.appendChild = function (node) {\n this.append(node);\n return node;\n };\n Node.prototype.removeChild = function (node) {\n var error = function () {\n throw new Error(\"The node to be removed is not a child of this node.\");\n };\n if (node.parent !== this) {\n error();\n }\n if (node.isVirtual) {\n var i = this._virtualChildren.indexOf(node);\n if (i < 0)\n error();\n this._virtualChildren.splice(i, 1);\n }\n else {\n var i = this._children.indexOf(node);\n if (i < 0)\n error();\n this._children.splice(i, 1);\n }\n delete this.childSet[node.id];\n node._parent = undefined;\n node._setLayerManager();\n this.dirtyZIndex = true;\n this.markDirty(node, RedrawType.MAJOR);\n return node;\n };\n Node.prototype.calculateCumulativeMatrix = function () {\n this.computeTransformMatrix();\n var matrix = Matrix.flyweight(this.matrix);\n var parent = this.parent;\n while (parent) {\n parent.computeTransformMatrix();\n matrix.preMultiplySelf(parent.matrix);\n parent = parent.parent;\n }\n return matrix;\n };\n Node.prototype.transformPoint = function (x, y) {\n var matrix = this.calculateCumulativeMatrix();\n return matrix.invertSelf().transformPoint(x, y);\n };\n Node.prototype.inverseTransformPoint = function (x, y) {\n var matrix = this.calculateCumulativeMatrix();\n return matrix.transformPoint(x, y);\n };\n Node.prototype.transformBBox = function (bbox) {\n var matrix = this.calculateCumulativeMatrix();\n return matrix.invertSelf().transformBBox(bbox);\n };\n Node.prototype.inverseTransformBBox = function (bbox) {\n var matrix = this.calculateCumulativeMatrix();\n return matrix.transformBBox(bbox);\n };\n Node.prototype.markDirtyTransform = function () {\n this.dirtyTransform = true;\n this.markDirty(this, RedrawType.MAJOR);\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 */\n Node.prototype.pickNode = function (x, y) {\n var _a;\n if (!this.visible || this.pointerEvents === PointerEvents.None || !this.containsPoint(x, y)) {\n return;\n }\n var children = this.children;\n if (children.length > 1000) {\n // Try to optimise which children to interrogate; BBox calculation is an approximation\n // for more complex shapes, so discarding items based on this will save a lot of\n // processing when the point is nowhere near the child.\n for (var i = children.length - 1; i >= 0; i--) {\n var child = children[i];\n var containsPoint = (_a = child.computeTransformedBBox()) === null || _a === void 0 ? void 0 : _a.containsPoint(x, y);\n var hit = containsPoint ? child.pickNode(x, y) : undefined;\n if (hit) {\n return hit;\n }\n }\n }\n else 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) {\n // a leaf node, but not a container leaf\n return this;\n }\n };\n Node.prototype.findNodes = function (predicate) {\n var e_5, _a;\n var result = predicate(this) ? [this] : [];\n try {\n for (var _b = __values$E(this.children), _c = _b.next(); !_c.done; _c = _b.next()) {\n var child = _c.value;\n var childResult = child.findNodes(predicate);\n if (childResult) {\n result.push.apply(result, __spreadArray$t([], __read$L(childResult)));\n }\n }\n }\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_5) throw e_5.error; }\n }\n return result;\n };\n Node.prototype.computeBBox = function () {\n return;\n };\n Node.prototype.computeTransformedBBox = function () {\n var bbox = this.computeBBox();\n if (!bbox) {\n return undefined;\n }\n this.computeTransformMatrix();\n var matrix = Matrix.flyweight(this.matrix);\n var parent = this.parent;\n while (parent) {\n parent.computeTransformMatrix();\n matrix.preMultiplySelf(parent.matrix);\n parent = parent.parent;\n }\n matrix.transformBBox(bbox, bbox);\n return bbox;\n };\n Node.prototype.computeTransformMatrix = function () {\n if (!this.dirtyTransform) {\n return;\n }\n var _a = this, matrix = _a.matrix, scalingX = _a.scalingX, scalingY = _a.scalingY, rotation = _a.rotation, translationX = _a.translationX, translationY = _a.translationY, scalingCenterX = _a.scalingCenterX, scalingCenterY = _a.scalingCenterY, rotationCenterX = _a.rotationCenterX, rotationCenterY = _a.rotationCenterY;\n Matrix.updateTransformMatrix(matrix, scalingX, scalingY, rotation, translationX, translationY, {\n scalingCenterX: scalingCenterX,\n scalingCenterY: scalingCenterY,\n rotationCenterX: rotationCenterX,\n rotationCenterY: rotationCenterY,\n });\n matrix.inverseTo(this.inverseMatrix);\n this.dirtyTransform = false;\n };\n Node.prototype.render = function (renderCtx) {\n var stats = renderCtx.stats;\n this._dirty = RedrawType.NONE;\n if (stats)\n stats.nodesRendered++;\n };\n Node.prototype.clearBBox = function (ctx) {\n var bbox = this.computeBBox();\n if (bbox == null) {\n return;\n }\n var x = bbox.x, y = bbox.y, width = bbox.width, height = bbox.height;\n var topLeft = this.transformPoint(x, y);\n var bottomRight = this.transformPoint(x + width, y + height);\n ctx.clearRect(topLeft.x, topLeft.y, bottomRight.x - topLeft.x, bottomRight.y - topLeft.y);\n };\n Node.prototype.markDirty = function (_source, type, parentType) {\n if (type === void 0) { type = RedrawType.TRIVIAL; }\n if (parentType === void 0) { parentType = type; }\n if (this._dirty > type) {\n return;\n }\n if (this._dirty === type && type === parentType) {\n return;\n }\n this._dirty = type;\n if (this.parent) {\n this.parent.markDirty(this, parentType);\n }\n else if (this.layerManager) {\n this.layerManager.markDirty();\n }\n };\n Object.defineProperty(Node.prototype, \"dirty\", {\n get: function () {\n return this._dirty;\n },\n enumerable: false,\n configurable: true\n });\n Node.prototype.markClean = function (opts) {\n var e_6, _a, e_7, _b;\n var _c = opts !== null && opts !== void 0 ? opts : {}, _d = _c.force, force = _d === void 0 ? false : _d, _e = _c.recursive, recursive = _e === void 0 ? true : _e;\n if (this._dirty === RedrawType.NONE && !force) {\n return;\n }\n this._dirty = RedrawType.NONE;\n if (recursive !== false) {\n try {\n for (var _f = __values$E(this._virtualChildren), _g = _f.next(); !_g.done; _g = _f.next()) {\n var child = _g.value;\n child.markClean({ force: force });\n }\n }\n catch (e_6_1) { e_6 = { error: e_6_1 }; }\n finally {\n try {\n if (_g && !_g.done && (_a = _f.return)) _a.call(_f);\n }\n finally { if (e_6) throw e_6.error; }\n }\n }\n if (recursive === true) {\n try {\n for (var _h = __values$E(this._children), _j = _h.next(); !_j.done; _j = _h.next()) {\n var child = _j.value;\n child.markClean({ force: force });\n }\n }\n catch (e_7_1) { e_7 = { error: e_7_1 }; }\n finally {\n try {\n if (_j && !_j.done && (_b = _h.return)) _b.call(_h);\n }\n finally { if (e_7) throw e_7.error; }\n }\n }\n };\n Node.prototype.visibilityChanged = function () {\n // Override point for sub-classes to react to visibility changes.\n };\n Object.defineProperty(Node.prototype, \"nodeCount\", {\n get: function () {\n var e_8, _a, e_9, _b;\n var count = 1;\n var dirtyCount = this._dirty >= RedrawType.NONE || this.dirtyTransform ? 1 : 0;\n var visibleCount = this.visible ? 1 : 0;\n var countChild = function (child) {\n var _a = child.nodeCount, childCount = _a.count, childVisibleCount = _a.visibleCount, childDirtyCount = _a.dirtyCount;\n count += childCount;\n visibleCount += childVisibleCount;\n dirtyCount += childDirtyCount;\n };\n try {\n for (var _c = __values$E(this._children), _d = _c.next(); !_d.done; _d = _c.next()) {\n var child = _d.value;\n countChild(child);\n }\n }\n catch (e_8_1) { e_8 = { error: e_8_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_8) throw e_8.error; }\n }\n try {\n for (var _e = __values$E(this._virtualChildren), _f = _e.next(); !_f.done; _f = _e.next()) {\n var child = _f.value;\n countChild(child);\n }\n }\n catch (e_9_1) { e_9 = { error: e_9_1 }; }\n finally {\n try {\n if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\n }\n finally { if (e_9) throw e_9.error; }\n }\n return { count: count, visibleCount: visibleCount, dirtyCount: dirtyCount };\n },\n enumerable: false,\n configurable: true\n });\n Node.prototype.zIndexChanged = function () {\n // Override point for sub-classes.\n };\n Node._nextSerialNumber = 0;\n __decorate$1$([\n SceneChangeDetection({ type: 'transform' })\n ], Node.prototype, \"scalingX\", void 0);\n __decorate$1$([\n SceneChangeDetection({ type: 'transform' })\n ], Node.prototype, \"scalingY\", void 0);\n __decorate$1$([\n SceneChangeDetection({ type: 'transform' })\n ], Node.prototype, \"scalingCenterX\", void 0);\n __decorate$1$([\n SceneChangeDetection({ type: 'transform' })\n ], Node.prototype, \"scalingCenterY\", void 0);\n __decorate$1$([\n SceneChangeDetection({ type: 'transform' })\n ], Node.prototype, \"rotationCenterX\", void 0);\n __decorate$1$([\n SceneChangeDetection({ type: 'transform' })\n ], Node.prototype, \"rotationCenterY\", void 0);\n __decorate$1$([\n SceneChangeDetection({ type: 'transform' })\n ], Node.prototype, \"rotation\", void 0);\n __decorate$1$([\n SceneChangeDetection({ type: 'transform' })\n ], Node.prototype, \"translationX\", void 0);\n __decorate$1$([\n SceneChangeDetection({ type: 'transform' })\n ], Node.prototype, \"translationY\", void 0);\n __decorate$1$([\n SceneChangeDetection({ redraw: RedrawType.MAJOR, changeCb: function (o) { return o.visibilityChanged(); } })\n ], Node.prototype, \"visible\", void 0);\n __decorate$1$([\n SceneChangeDetection({\n redraw: RedrawType.TRIVIAL,\n changeCb: zIndexChangedCallback,\n })\n ], Node.prototype, \"zIndex\", void 0);\n __decorate$1$([\n SceneChangeDetection({\n redraw: RedrawType.TRIVIAL,\n changeCb: zIndexChangedCallback,\n })\n ], Node.prototype, \"zIndexSubOrder\", void 0);\n return Node;\n}(ChangeDetectable));\n\nfunction ascendingStringNumberUndefined(a, b) {\n var diff = 0;\n if (typeof a === 'number' && typeof b === 'number') {\n diff = a - b;\n }\n else if (typeof a === 'string' && typeof b === 'string') {\n diff = a.localeCompare(b);\n }\n else if (a == null && b == null) ;\n else if (a == null) {\n diff = -1;\n }\n else if (b == null) {\n diff = 1;\n }\n else {\n diff = String(a).localeCompare(String(b));\n }\n return diff;\n}\nfunction compoundAscending(a, b, comparator) {\n var toLiteral = function (v) {\n if (typeof v === 'function') {\n return v();\n }\n return v;\n };\n for (var idx in a) {\n var diff = comparator(toLiteral(a[idx]), toLiteral(b[idx]));\n if (diff !== 0) {\n return diff;\n }\n }\n return 0;\n}\n\nvar doOnceFlags$1 = {};\n/**\n * If the key was passed before, then doesn't execute the func\n */\nfunction doOnce$1(func, key) {\n if (doOnceFlags$1[key]) {\n return;\n }\n func();\n doOnceFlags$1[key] = true;\n}\n\nvar __read$K = (undefined && undefined.__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 __spreadArray$s = (undefined && undefined.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar Logger = {\n debug: function () {\n var logContent = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n logContent[_i] = arguments[_i];\n }\n console.log.apply(console, __spreadArray$s([], __read$K(logContent)));\n },\n warn: function (message) {\n var logContent = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n logContent[_i - 1] = arguments[_i];\n }\n console.warn.apply(console, __spreadArray$s([\"AG Charts - \" + message], __read$K(logContent)));\n },\n error: function (message) {\n var logContent = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n logContent[_i - 1] = arguments[_i];\n }\n if (typeof message === 'object') {\n console.error.apply(console, __spreadArray$s([\"AG Charts error\", message], __read$K(logContent)));\n }\n else {\n console.error.apply(console, __spreadArray$s([\"AG Charts - \" + message], __read$K(logContent)));\n }\n },\n warnOnce: function (message) {\n var logContent = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n logContent[_i - 1] = arguments[_i];\n }\n doOnce$1(function () { return Logger.warn.apply(Logger, __spreadArray$s([message], __read$K(logContent))); }, \"Logger.warn: \" + message);\n },\n errorOnce: function (message) {\n var logContent = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n logContent[_i - 1] = arguments[_i];\n }\n doOnce$1(function () { return Logger.error.apply(Logger, __spreadArray$s([message], __read$K(logContent))); }, \"Logger.warn: \" + message);\n },\n};\n\nvar __extends$13 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$u = (undefined && undefined.__assign) || function () {\n __assign$u = 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$u.apply(this, arguments);\n};\nvar __decorate$1_ = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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$D = (undefined && undefined.__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$J = (undefined && undefined.__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 __spreadArray$r = (undefined && undefined.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar Group = /** @class */ (function (_super) {\n __extends$13(Group, _super);\n function Group(opts) {\n var _a;\n var _this = _super.call(this, { isVirtual: opts === null || opts === void 0 ? void 0 : opts.isVirtual }) || this;\n _this.opts = opts;\n _this.opacity = 1;\n _this.lastBBox = undefined;\n var _b = opts !== null && opts !== void 0 ? opts : {}, zIndex = _b.zIndex, zIndexSubOrder = _b.zIndexSubOrder;\n _this.isContainerNode = true;\n if (zIndex !== undefined) {\n _this.zIndex = zIndex;\n }\n if (zIndexSubOrder !== undefined) {\n _this.zIndexSubOrder = zIndexSubOrder;\n }\n _this.name = (_a = _this.opts) === null || _a === void 0 ? void 0 : _a.name;\n return _this;\n }\n Group.prototype.zIndexChanged = function () {\n var _a;\n if (this.layer) {\n (_a = this._layerManager) === null || _a === void 0 ? void 0 : _a.moveLayer(this.layer, this.zIndex, this.zIndexSubOrder);\n }\n };\n Group.prototype.isLayer = function () {\n return this.layer != null;\n };\n Group.prototype._setLayerManager = function (scene) {\n var _this = this;\n var _a, _b;\n if (this._layerManager && this.layer) {\n this._layerManager.removeLayer(this.layer);\n this.layer = undefined;\n }\n if (this.layer) {\n throw new Error('AG Charts - unable to deregister scene rendering layer!');\n }\n _super.prototype._setLayerManager.call(this, scene);\n if (scene && ((_a = this.opts) === null || _a === void 0 ? void 0 : _a.layer)) {\n var _c = (_b = this.opts) !== null && _b !== void 0 ? _b : {}, zIndex = _c.zIndex, zIndexSubOrder = _c.zIndexSubOrder, name_1 = _c.name;\n var getComputedOpacity = function () { return _this.getComputedOpacity(); };\n var getVisibility = function () { return _this.getVisibility(); };\n this.layer = scene.addLayer({ zIndex: zIndex, zIndexSubOrder: zIndexSubOrder, name: name_1, getComputedOpacity: getComputedOpacity, getVisibility: getVisibility });\n }\n };\n Group.prototype.getComputedOpacity = function () {\n var opacity = 1;\n var node = this;\n do {\n if (node instanceof Group) {\n opacity *= node.opacity;\n }\n } while ((node = node.parent));\n return opacity;\n };\n Group.prototype.getVisibility = function () {\n var node = this;\n var visible = this.visible;\n while ((node = node.parent)) {\n if (node.visible) {\n continue;\n }\n visible = node.visible;\n }\n return visible;\n };\n Group.prototype.visibilityChanged = function () {\n if (this.layer) {\n this.layer.enabled = this.visible;\n }\n };\n Group.prototype.markDirty = function (source, type) {\n if (type === void 0) { type = RedrawType.TRIVIAL; }\n if (this.isVirtual) {\n // Always percolate directly for virtual nodes - they don't exist for rendering purposes.\n _super.prototype.markDirty.call(this, source, type);\n return;\n }\n // Downgrade dirty-ness percolated to parent in special cases.\n var parentType = type;\n if (type < RedrawType.MINOR) {\n parentType = RedrawType.TRIVIAL;\n }\n else if (this.layer != null) {\n parentType = RedrawType.TRIVIAL;\n }\n _super.prototype.markDirty.call(this, source, type, parentType);\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 this.computeTransformMatrix();\n return Group.computeBBox(this.children);\n };\n Group.prototype.computeTransformedBBox = function () {\n return this.computeBBox();\n };\n Group.prototype.render = function (renderCtx) {\n var e_1, _a, e_2, _b, e_3, _c;\n var _d, _e;\n var _f = this.opts, _g = _f === void 0 ? {} : _f, _h = _g.name, name = _h === void 0 ? undefined : _h;\n var _j = this._debug, _k = _j === void 0 ? {} : _j, _l = _k.consoleLog, consoleLog = _l === void 0 ? false : _l;\n var _m = this, dirty = _m.dirty, dirtyZIndex = _m.dirtyZIndex, layer = _m.layer, children = _m.children, clipRect = _m.clipRect, dirtyTransform = _m.dirtyTransform;\n var ctx = renderCtx.ctx, forceRender = renderCtx.forceRender, clipBBox = renderCtx.clipBBox;\n var resized = renderCtx.resized, stats = renderCtx.stats;\n var canvasCtxTransform = ctx.getTransform();\n var isDirty = dirty >= RedrawType.MINOR || dirtyZIndex || resized;\n var isChildDirty = isDirty;\n var isChildLayerDirty = false;\n try {\n for (var children_1 = __values$D(children), children_1_1 = children_1.next(); !children_1_1.done; children_1_1 = children_1.next()) {\n var child = children_1_1.value;\n isChildDirty || (isChildDirty = child.layerManager == null && child.dirty >= RedrawType.TRIVIAL);\n isChildLayerDirty || (isChildLayerDirty = child.layerManager != null && child.dirty >= RedrawType.TRIVIAL);\n if (isChildDirty) {\n break;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (children_1_1 && !children_1_1.done && (_a = children_1.return)) _a.call(children_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n if (name && consoleLog) {\n Logger.debug({ name: name, group: this, isDirty: isDirty, isChildDirty: isChildDirty, dirtyTransform: dirtyTransform, renderCtx: renderCtx, forceRender: forceRender });\n }\n if (dirtyTransform) {\n forceRender = 'dirtyTransform';\n }\n else if (layer) {\n // If bounding-box of a layer changes, force re-render.\n var currentBBox = this.computeBBox();\n if (this.lastBBox === undefined || !this.lastBBox.equals(currentBBox)) {\n forceRender = 'dirtyTransform';\n this.lastBBox = currentBBox;\n }\n }\n if (!isDirty && !isChildDirty && !isChildLayerDirty && !forceRender) {\n if (name && consoleLog && stats) {\n var counts = this.nodeCount;\n Logger.debug({ name: name, result: 'skipping', renderCtx: renderCtx, counts: counts, group: this });\n }\n if (layer && stats) {\n stats.layersSkipped++;\n stats.nodesSkipped += this.nodeCount.count;\n }\n this.markClean({ recursive: false });\n // Nothing to do.\n return;\n }\n var groupVisible = this.visible;\n if (layer) {\n // Switch context to the canvas layer we use for this group.\n ctx = layer.context;\n ctx.save();\n ctx.resetTransform();\n if (forceRender !== 'dirtyTransform') {\n forceRender = isChildDirty || dirtyZIndex;\n }\n if (forceRender)\n layer.clear();\n if (clipBBox) {\n // clipBBox is in the canvas coordinate space, when we hit a layer we apply the new clipping at which point there are no transforms in play\n var width = clipBBox.width, height = clipBBox.height, x = clipBBox.x, y = clipBBox.y;\n if (consoleLog) {\n Logger.debug({ name: name, clipBBox: clipBBox, ctxTransform: ctx.getTransform(), renderCtx: renderCtx, group: this });\n }\n this.clipCtx(ctx, x, y, width, height);\n }\n ctx.setTransform(canvasCtxTransform);\n }\n else {\n // Only apply opacity if this isn't a distinct layer - opacity will be applied\n // at composition time.\n ctx.globalAlpha *= this.opacity;\n }\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 this.computeTransformMatrix();\n this.matrix.toContext(ctx);\n if (clipRect) {\n // clipRect is in the group's coordinate space\n var x = clipRect.x, y = clipRect.y, width = clipRect.width, height = clipRect.height;\n ctx.save();\n if (consoleLog) {\n Logger.debug({ name: name, clipRect: clipRect, ctxTransform: ctx.getTransform(), renderCtx: renderCtx, group: this });\n }\n this.clipCtx(ctx, x, y, width, height);\n // clipBBox is in the canvas coordinate space, when we hit a layer we apply the new clipping at which point there are no transforms in play\n clipBBox = this.matrix.transformBBox(clipRect);\n }\n var hasVirtualChildren = this.hasVirtualChildren();\n if (dirtyZIndex) {\n this.sortChildren(children);\n if (forceRender !== 'dirtyTransform')\n forceRender = true;\n }\n else if (hasVirtualChildren) {\n this.sortChildren(children);\n }\n // Reduce churn if renderCtx is identical.\n var renderContextChanged = forceRender !== renderCtx.forceRender || clipBBox !== renderCtx.clipBBox || ctx !== renderCtx.ctx;\n var childRenderContext = renderContextChanged ? __assign$u(__assign$u({}, renderCtx), { ctx: ctx, forceRender: forceRender, clipBBox: clipBBox }) : renderCtx;\n // Render visible children.\n var skipped = 0;\n try {\n for (var children_2 = __values$D(children), children_2_1 = children_2.next(); !children_2_1.done; children_2_1 = children_2.next()) {\n var child = children_2_1.value;\n if (!child.visible || !groupVisible) {\n // Skip invisible children, but make sure their dirty flag is reset.\n child.markClean();\n if (stats)\n skipped += child.nodeCount.count;\n continue;\n }\n if (!forceRender && child.dirty === RedrawType.NONE) {\n // Skip children that don't need to be redrawn.\n if (stats)\n skipped += child.nodeCount.count;\n continue;\n }\n // Render marks this node (and children) as clean - no need to explicitly markClean().\n ctx.save();\n child.render(childRenderContext);\n ctx.restore();\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (children_2_1 && !children_2_1.done && (_b = children_2.return)) _b.call(children_2);\n }\n finally { if (e_2) throw e_2.error; }\n }\n if (stats)\n stats.nodesSkipped += skipped;\n // Render marks this node as clean - no need to explicitly markClean().\n _super.prototype.render.call(this, renderCtx);\n if (clipRect) {\n ctx.restore();\n }\n if (hasVirtualChildren) {\n try {\n // Mark virtual nodes as clean and their virtual children - all other nodes have already\n // been visited and marked clean.\n for (var _o = __values$D(this.virtualChildren), _p = _o.next(); !_p.done; _p = _o.next()) {\n var child = _p.value;\n child.markClean({ recursive: 'virtual' });\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (_p && !_p.done && (_c = _o.return)) _c.call(_o);\n }\n finally { if (e_3) throw e_3.error; }\n }\n }\n if (layer) {\n if (stats)\n stats.layersRendered++;\n ctx.restore();\n if (forceRender)\n layer.snapshot();\n // Check for save/restore depth of zero!\n (_e = (_d = layer.context).verifyDepthZero) === null || _e === void 0 ? void 0 : _e.call(_d);\n }\n if (name && consoleLog && stats) {\n var counts = this.nodeCount;\n Logger.debug({ name: name, result: 'rendered', skipped: skipped, renderCtx: renderCtx, counts: counts, group: this });\n }\n };\n Group.prototype.sortChildren = function (children) {\n this.dirtyZIndex = false;\n children.sort(function (a, b) {\n var _a, _b;\n return compoundAscending(__spreadArray$r(__spreadArray$r([a.zIndex], __read$J(((_a = a.zIndexSubOrder) !== null && _a !== void 0 ? _a : [undefined, undefined]))), [a.serialNumber]), __spreadArray$r(__spreadArray$r([b.zIndex], __read$J(((_b = b.zIndexSubOrder) !== null && _b !== void 0 ? _b : [undefined, undefined]))), [b.serialNumber]), ascendingStringNumberUndefined);\n });\n };\n Group.prototype.clipCtx = function (ctx, x, y, width, height) {\n ctx.beginPath();\n ctx.moveTo(x, y);\n ctx.lineTo(x + width, y);\n ctx.lineTo(x + width, y + height);\n ctx.lineTo(x, y + height);\n ctx.closePath();\n ctx.clip();\n };\n Group.computeBBox = function (nodes) {\n var left = Infinity;\n var right = -Infinity;\n var top = Infinity;\n var bottom = -Infinity;\n nodes.forEach(function (n) {\n if (!n.visible) {\n return;\n }\n var bbox = n.computeTransformedBBox();\n if (!bbox) {\n return;\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 /**\n * Transforms bbox given in the canvas coordinate space to bbox in this group's coordinate space and\n * sets this group's clipRect to the transformed bbox.\n * @param bbox clipRect bbox in the canvas coordinate space.\n */\n Group.prototype.setClipRectInGroupCoordinateSpace = function (bbox) {\n this.clipRect = bbox ? this.transformBBox(bbox) : undefined;\n };\n Group.className = 'Group';\n __decorate$1_([\n SceneChangeDetection({\n redraw: RedrawType.MAJOR,\n convertor: function (v) { return Math.min(1, Math.max(0, v)); },\n })\n ], Group.prototype, \"opacity\", void 0);\n return Group;\n}(Node));\n\n/**\n * Wraps a native OffscreenCanvas and overrides its OffscreenCanvasRenderingContext2D to\n * provide resolution independent rendering based on `window.devicePixelRatio`.\n */\nvar HdpiOffscreenCanvas = /** @class */ (function () {\n // The width/height attributes of the Canvas element default to\n // 300/150 according to w3.org.\n function HdpiOffscreenCanvas(_a) {\n var _b = _a.width, width = _b === void 0 ? 600 : _b, _c = _a.height, height = _c === void 0 ? 300 : _c, _d = _a.overrideDevicePixelRatio, overrideDevicePixelRatio = _d === void 0 ? undefined : _d;\n this.enabled = true;\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.canvas = new OffscreenCanvas(width, height);\n this.context = this.canvas.getContext('2d');\n this.imageSource = this.canvas.transferToImageBitmap();\n this.setPixelRatio(overrideDevicePixelRatio);\n this.resize(width, height);\n }\n HdpiOffscreenCanvas.isSupported = function () {\n return window['OffscreenCanvas'] != null;\n };\n HdpiOffscreenCanvas.prototype.snapshot = function () {\n this.imageSource.close();\n this.imageSource = this.canvas.transferToImageBitmap();\n };\n HdpiOffscreenCanvas.prototype.destroy = function () {\n this.imageSource.close();\n // Workaround memory allocation quirks in iOS Safari by resizing to 0x0 and clearing.\n // See https://bugs.webkit.org/show_bug.cgi?id=195325.\n this.canvas.width = 0;\n this.canvas.height = 0;\n this.context.clearRect(0, 0, 0, 0);\n };\n HdpiOffscreenCanvas.prototype.clear = function () {\n this.context.save();\n this.context.resetTransform();\n this.context.clearRect(0, 0, this.width, this.height);\n this.context.restore();\n };\n Object.defineProperty(HdpiOffscreenCanvas.prototype, \"pixelRatio\", {\n get: function () {\n return this._pixelRatio;\n },\n enumerable: false,\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 HdpiOffscreenCanvas.prototype.setPixelRatio = function (ratio) {\n var pixelRatio = ratio !== null && ratio !== void 0 ? ratio : window.devicePixelRatio;\n if (!isDesktop()) {\n // Mobile browsers have stricter memory limits, we reduce rendering resolution to\n // improve stability on mobile browsers. iOS Safari 12->16 are pain-points since they\n // have memory allocation quirks - see https://bugs.webkit.org/show_bug.cgi?id=195325.\n pixelRatio = 1;\n }\n HdpiCanvas.overrideScale(this.context, pixelRatio);\n this._pixelRatio = pixelRatio;\n };\n Object.defineProperty(HdpiOffscreenCanvas.prototype, \"width\", {\n get: function () {\n return this._width;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(HdpiOffscreenCanvas.prototype, \"height\", {\n get: function () {\n return this._height;\n },\n enumerable: false,\n configurable: true\n });\n HdpiOffscreenCanvas.prototype.resize = function (width, height) {\n if (!(width > 0 && height > 0)) {\n return;\n }\n var _a = this, canvas = _a.canvas, context = _a.context, pixelRatio = _a.pixelRatio;\n canvas.width = Math.round(width * pixelRatio);\n canvas.height = Math.round(height * pixelRatio);\n context.resetTransform();\n this._width = width;\n this._height = height;\n };\n return HdpiOffscreenCanvas;\n}());\n\nfunction windowValue(name) {\n /**\n * Redeclaration of window that is safe for use with Gatsby server-side (webpack) compilation.\n */\n var WINDOW = typeof window !== 'undefined'\n ? window\n : // typeof global !== 'undefined' ? (global as any) :\n undefined;\n return WINDOW === null || WINDOW === void 0 ? void 0 : WINDOW[name];\n}\n\nvar SceneDebugLevel;\n(function (SceneDebugLevel) {\n SceneDebugLevel[SceneDebugLevel[\"SUMMARY\"] = 0] = \"SUMMARY\";\n SceneDebugLevel[SceneDebugLevel[\"DETAILED\"] = 1] = \"DETAILED\";\n})(SceneDebugLevel || (SceneDebugLevel = {}));\n\nvar __assign$t = (undefined && undefined.__assign) || function () {\n __assign$t = 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$t.apply(this, arguments);\n};\nvar __awaiter$g = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$g = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read$I = (undefined && undefined.__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 __spreadArray$q = (undefined && undefined.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar __values$C = (undefined && undefined.__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};\nfunction buildSceneNodeHighlight() {\n var _a;\n var config = (_a = windowValue('agChartsSceneDebug')) !== null && _a !== void 0 ? _a : [];\n if (typeof config === 'string') {\n config = [config];\n }\n var result = [];\n config.forEach(function (name) {\n if (name === 'layout') {\n result.push('seriesRoot', 'legend', 'root', /.*Axis-\\d+-axis.*/);\n }\n else {\n result.push(name);\n }\n });\n return result;\n}\nvar Scene = /** @class */ (function () {\n function Scene(opts) {\n var _a, _b, _c;\n this.id = createId$1(this);\n this.layers = [];\n this._nextZIndex = 0;\n this._nextLayerId = 0;\n this._dirty = false;\n this._root = null;\n this.debug = {\n dirtyTree: false,\n stats: false,\n renderBoundingBoxes: false,\n consoleLog: false,\n level: SceneDebugLevel.SUMMARY,\n sceneNodeHighlight: [],\n };\n var _d = opts.document, document = _d === void 0 ? window.document : _d, _e = opts.mode, mode = _e === void 0 ? (_a = windowValue('agChartsSceneRenderModel')) !== null && _a !== void 0 ? _a : 'adv-composite' : _e, width = opts.width, height = opts.height, _f = opts.overrideDevicePixelRatio, overrideDevicePixelRatio = _f === void 0 ? undefined : _f;\n this.overrideDevicePixelRatio = overrideDevicePixelRatio;\n this.opts = { document: document, mode: mode };\n this.debug.consoleLog = [true, 'scene'].includes(windowValue('agChartsDebug'));\n this.debug.level = ['scene'].includes(windowValue('agChartsDebug'))\n ? SceneDebugLevel.DETAILED\n : SceneDebugLevel.SUMMARY;\n this.debug.stats = (_b = windowValue('agChartsSceneStats')) !== null && _b !== void 0 ? _b : false;\n this.debug.dirtyTree = (_c = windowValue('agChartsSceneDirtyTree')) !== null && _c !== void 0 ? _c : false;\n this.debug.sceneNodeHighlight = buildSceneNodeHighlight();\n this.canvas = new HdpiCanvas({ document: document, width: width, height: height, overrideDevicePixelRatio: overrideDevicePixelRatio });\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: false,\n configurable: true\n });\n Scene.prototype.download = function (fileName, fileFormat) {\n this.canvas.download(fileName, fileFormat);\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: false,\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: false,\n configurable: true\n });\n Scene.prototype.resize = function (width, height) {\n width = Math.round(width);\n height = Math.round(height);\n // HdpiCanvas doesn't allow width/height <= 0.\n var lessThanZero = width <= 0 || height <= 0;\n var nan = isNaN(width) || isNaN(height);\n var unchanged = width === this.width && height === this.height;\n if (unchanged || nan || lessThanZero) {\n return false;\n }\n this.pendingSize = [width, height];\n this.markDirty();\n return true;\n };\n Scene.prototype.addLayer = function (opts) {\n var _a;\n var mode = this.opts.mode;\n var layeredModes = ['composite', 'dom-composite', 'adv-composite'];\n if (!layeredModes.includes(mode)) {\n return undefined;\n }\n var _b = opts.zIndex, zIndex = _b === void 0 ? this._nextZIndex++ : _b, name = opts.name, zIndexSubOrder = opts.zIndexSubOrder, getComputedOpacity = opts.getComputedOpacity, getVisibility = opts.getVisibility;\n var _c = this, width = _c.width, height = _c.height, overrideDevicePixelRatio = _c.overrideDevicePixelRatio;\n var domLayer = mode === 'dom-composite';\n var advLayer = mode === 'adv-composite';\n var canvas = !advLayer || !HdpiOffscreenCanvas.isSupported()\n ? new HdpiCanvas({\n document: this.opts.document,\n width: width,\n height: height,\n domLayer: domLayer,\n zIndex: zIndex,\n name: name,\n overrideDevicePixelRatio: overrideDevicePixelRatio,\n })\n : new HdpiOffscreenCanvas({\n width: width,\n height: height,\n overrideDevicePixelRatio: overrideDevicePixelRatio,\n });\n var newLayer = {\n id: this._nextLayerId++,\n name: name,\n zIndex: zIndex,\n zIndexSubOrder: zIndexSubOrder,\n canvas: canvas,\n getComputedOpacity: getComputedOpacity,\n getVisibility: getVisibility,\n };\n if (zIndex >= this._nextZIndex) {\n this._nextZIndex = zIndex + 1;\n }\n this.layers.push(newLayer);\n this.sortLayers();\n if (domLayer) {\n var domCanvases = this.layers\n .map(function (v) { return v.canvas; })\n .filter(function (v) { return v instanceof HdpiCanvas; });\n var newLayerIndex = domCanvases.findIndex(function (v) { return v === canvas; });\n var lastLayer = (_a = domCanvases[newLayerIndex - 1]) !== null && _a !== void 0 ? _a : this.canvas;\n lastLayer.element.insertAdjacentElement('afterend', canvas.element);\n }\n if (this.debug.consoleLog) {\n Logger.debug('Scene.addLayer() - layers', this.layers);\n }\n return newLayer.canvas;\n };\n Scene.prototype.removeLayer = function (canvas) {\n var index = this.layers.findIndex(function (l) { return l.canvas === canvas; });\n if (index >= 0) {\n this.layers.splice(index, 1);\n canvas.destroy();\n this.markDirty();\n if (this.debug.consoleLog) {\n Logger.debug('Scene.removeLayer() - layers', this.layers);\n }\n }\n };\n Scene.prototype.moveLayer = function (canvas, newZIndex, newZIndexSubOrder) {\n var layer = this.layers.find(function (l) { return l.canvas === canvas; });\n if (layer) {\n layer.zIndex = newZIndex;\n layer.zIndexSubOrder = newZIndexSubOrder;\n this.sortLayers();\n this.markDirty();\n if (this.debug.consoleLog) {\n Logger.debug('Scene.moveLayer() - layers', this.layers);\n }\n }\n };\n Scene.prototype.sortLayers = function () {\n this.layers.sort(function (a, b) {\n var _a, _b;\n return compoundAscending(__spreadArray$q(__spreadArray$q([a.zIndex], __read$I(((_a = a.zIndexSubOrder) !== null && _a !== void 0 ? _a : [undefined, undefined]))), [a.id]), __spreadArray$q(__spreadArray$q([b.zIndex], __read$I(((_b = b.zIndexSubOrder) !== null && _b !== void 0 ? _b : [undefined, undefined]))), [b.id]), ascendingStringNumberUndefined);\n });\n };\n Scene.prototype.markDirty = function () {\n this._dirty = true;\n };\n Object.defineProperty(Scene.prototype, \"dirty\", {\n get: function () {\n return this._dirty;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Scene.prototype, \"root\", {\n get: function () {\n return this._root;\n },\n set: function (node) {\n var _this = this;\n if (node === this._root) {\n return;\n }\n if (this._root) {\n this._root._setLayerManager();\n }\n this._root = node;\n if (node) {\n // If `node` is the root node of another scene ...\n if (node.parent === null && node.layerManager && node.layerManager !== this) {\n node.layerManager.root = null;\n }\n node._setLayerManager({\n addLayer: function (opts) { return _this.addLayer(opts); },\n moveLayer: function () {\n var opts = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n opts[_i] = arguments[_i];\n }\n return _this.moveLayer.apply(_this, __spreadArray$q([], __read$I(opts)));\n },\n removeLayer: function () {\n var opts = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n opts[_i] = arguments[_i];\n }\n return _this.removeLayer.apply(_this, __spreadArray$q([], __read$I(opts)));\n },\n markDirty: function () { return _this.markDirty(); },\n canvas: this.canvas,\n debug: __assign$t(__assign$t({}, this.debug), { consoleLog: this.debug.level >= SceneDebugLevel.DETAILED }),\n });\n }\n this.markDirty();\n },\n enumerable: false,\n configurable: true\n });\n /** Alternative to destroy() that preserves re-usable resources. */\n Scene.prototype.strip = function () {\n var e_1, _a;\n var layers = this.layers;\n try {\n for (var layers_1 = __values$C(layers), layers_1_1 = layers_1.next(); !layers_1_1.done; layers_1_1 = layers_1.next()) {\n var layer = layers_1_1.value;\n layer.canvas.destroy();\n delete layer['canvas'];\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (layers_1_1 && !layers_1_1.done && (_a = layers_1.return)) _a.call(layers_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n layers.splice(0, layers.length);\n this.root = null;\n this._dirty = false;\n this.canvas.context.resetTransform();\n };\n Scene.prototype.destroy = function () {\n this.container = undefined;\n this.strip();\n this.canvas.destroy();\n Object.assign(this, { canvas: undefined, ctx: undefined });\n };\n Scene.prototype.render = function (opts) {\n var _a;\n return __awaiter$g(this, void 0, void 0, function () {\n var _b, _c, debugSplitTimes, _d, extraDebugStats, _e, canvas, ctx, root, layers, pendingSize, mode, renderCtx, canvasCleared, _f, dirtyTree, paths;\n var _g;\n return __generator$g(this, function (_h) {\n _b = opts !== null && opts !== void 0 ? opts : {}, _c = _b.debugSplitTimes, debugSplitTimes = _c === void 0 ? [performance.now()] : _c, _d = _b.extraDebugStats, extraDebugStats = _d === void 0 ? {} : _d;\n _e = this, canvas = _e.canvas, ctx = _e.canvas.context, root = _e.root, layers = _e.layers, pendingSize = _e.pendingSize, mode = _e.opts.mode;\n if (pendingSize) {\n (_g = this.canvas).resize.apply(_g, __spreadArray$q([], __read$I(pendingSize)));\n this.layers.forEach(function (layer) {\n var _a;\n return (_a = layer.canvas).resize.apply(_a, __spreadArray$q([], __read$I(pendingSize)));\n });\n this.pendingSize = undefined;\n }\n if (root && !root.visible) {\n this._dirty = false;\n return [2 /*return*/];\n }\n if (root && !this.dirty) {\n if (this.debug.consoleLog) {\n Logger.debug('Scene.render() - no-op', {\n redrawType: RedrawType[root.dirty],\n tree: this.buildTree(root),\n });\n }\n this.debugStats(debugSplitTimes, ctx, undefined, extraDebugStats);\n return [2 /*return*/];\n }\n renderCtx = {\n ctx: ctx,\n forceRender: true,\n resized: !!pendingSize,\n debugNodes: {},\n };\n if (this.debug.stats === 'detailed') {\n renderCtx.stats = { layersRendered: 0, layersSkipped: 0, nodesRendered: 0, nodesSkipped: 0 };\n }\n canvasCleared = false;\n if (!root || root.dirty >= RedrawType.TRIVIAL) {\n // start with a blank canvas, clear previous drawing\n canvasCleared = true;\n canvas.clear();\n }\n if (root && this.debug.dirtyTree) {\n _f = this.buildDirtyTree(root), dirtyTree = _f.dirtyTree, paths = _f.paths;\n Logger.debug('Scene.render() - dirtyTree', { dirtyTree: dirtyTree, paths: paths });\n }\n if (root && canvasCleared) {\n if (this.debug.consoleLog) {\n Logger.debug('Scene.render() - before', {\n redrawType: RedrawType[root.dirty],\n canvasCleared: canvasCleared,\n tree: this.buildTree(root),\n });\n }\n if (root.visible) {\n ctx.save();\n root.render(renderCtx);\n ctx.restore();\n }\n }\n if (mode !== 'dom-composite' && layers.length > 0 && canvasCleared) {\n this.sortLayers();\n ctx.save();\n ctx.setTransform(1 / canvas.pixelRatio, 0, 0, 1 / canvas.pixelRatio, 0, 0);\n layers.forEach(function (_a) {\n var _b = _a.canvas, imageSource = _b.imageSource, enabled = _b.enabled, getComputedOpacity = _a.getComputedOpacity, getVisibility = _a.getVisibility;\n if (!enabled || !getVisibility()) {\n return;\n }\n ctx.globalAlpha = getComputedOpacity();\n ctx.drawImage(imageSource, 0, 0);\n });\n ctx.restore();\n }\n // Check for save/restore depth of zero!\n (_a = ctx.verifyDepthZero) === null || _a === void 0 ? void 0 : _a.call(ctx);\n this._dirty = false;\n this.debugStats(debugSplitTimes, ctx, renderCtx.stats, extraDebugStats);\n this.debugSceneNodeHighlight(ctx, this.debug.sceneNodeHighlight, renderCtx.debugNodes);\n if (root && this.debug.consoleLog) {\n Logger.debug('Scene.render() - after', {\n redrawType: RedrawType[root.dirty],\n canvasCleared: canvasCleared,\n tree: this.buildTree(root),\n });\n }\n return [2 /*return*/];\n });\n });\n };\n Scene.prototype.debugStats = function (debugSplitTimes, ctx, renderCtxStats, extraDebugStats) {\n var e_2, _a;\n if (extraDebugStats === void 0) { extraDebugStats = {}; }\n var end = performance.now();\n if (this.debug.stats) {\n var start = debugSplitTimes[0];\n debugSplitTimes.push(end);\n var pct = function (rendered, skipped) {\n var total = rendered + skipped;\n return rendered + \" / \" + total + \" (\" + Math.round((100 * rendered) / total) + \"%)\";\n };\n var time_1 = function (start, end) {\n return Math.round((end - start) * 100) / 100 + \"ms\";\n };\n var _b = renderCtxStats !== null && renderCtxStats !== void 0 ? renderCtxStats : {}, _c = _b.layersRendered, layersRendered = _c === void 0 ? 0 : _c, _d = _b.layersSkipped, layersSkipped = _d === void 0 ? 0 : _d, _e = _b.nodesRendered, nodesRendered = _e === void 0 ? 0 : _e, _f = _b.nodesSkipped, nodesSkipped = _f === void 0 ? 0 : _f;\n var splits = debugSplitTimes\n .map(function (t, i) { return (i > 0 ? time_1(debugSplitTimes[i - 1], t) : null); })\n .filter(function (v) { return v != null; })\n .join(' + ');\n var extras = Object.entries(extraDebugStats)\n .map(function (_a) {\n var _b = __read$I(_a, 2), k = _b[0], v = _b[1];\n return k + \": \" + v;\n })\n .join(' ; ');\n var stats = [\n time_1(start, end) + \" (\" + splits + \")\",\n \"\" + extras,\n this.debug.stats === 'detailed' ? \"Layers: \" + pct(layersRendered, layersSkipped) : null,\n this.debug.stats === 'detailed' ? \"Nodes: \" + pct(nodesRendered, nodesSkipped) : null,\n ].filter(function (v) { return v != null; });\n var statsSize = stats.map(function (t) { return [t, HdpiCanvas.getTextSize(t, ctx.font)]; });\n var width = Math.max.apply(Math, __spreadArray$q([], __read$I(statsSize.map(function (_a) {\n var _b = __read$I(_a, 2), width = _b[1].width;\n return width;\n }))));\n var height = statsSize.reduce(function (total, _a) {\n var _b = __read$I(_a, 2), height = _b[1].height;\n return total + height;\n }, 0);\n ctx.save();\n ctx.fillStyle = 'white';\n ctx.fillRect(0, 0, width, height);\n ctx.fillStyle = 'black';\n var y = 0;\n try {\n for (var statsSize_1 = __values$C(statsSize), statsSize_1_1 = statsSize_1.next(); !statsSize_1_1.done; statsSize_1_1 = statsSize_1.next()) {\n var _g = __read$I(statsSize_1_1.value, 2), stat = _g[0], size = _g[1];\n y += size.height;\n ctx.fillText(stat, 2, y);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (statsSize_1_1 && !statsSize_1_1.done && (_a = statsSize_1.return)) _a.call(statsSize_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n ctx.restore();\n }\n };\n Scene.prototype.debugSceneNodeHighlight = function (ctx, sceneNodeHighlight, debugNodes) {\n var e_3, _a, e_4, _b, e_5, _c;\n var _d;\n var regexpPredicate = function (matcher) { return function (n) {\n if (matcher.test(n.id)) {\n return true;\n }\n return n instanceof Group && n.name != null && matcher.test(n.name);\n }; };\n var stringPredicate = function (match) { return function (n) {\n if (match === n.id) {\n return true;\n }\n return n instanceof Group && n.name != null && match === n.name;\n }; };\n try {\n for (var sceneNodeHighlight_1 = __values$C(sceneNodeHighlight), sceneNodeHighlight_1_1 = sceneNodeHighlight_1.next(); !sceneNodeHighlight_1_1.done; sceneNodeHighlight_1_1 = sceneNodeHighlight_1.next()) {\n var next = sceneNodeHighlight_1_1.value;\n if (typeof next === 'string' && debugNodes[next] != null)\n continue;\n var predicate = typeof next === 'string' ? stringPredicate(next) : regexpPredicate(next);\n var nodes = (_d = this.root) === null || _d === void 0 ? void 0 : _d.findNodes(predicate);\n if (!nodes || nodes.length === 0) {\n Logger.debug(\"Scene.render() - no debugging node with id [\" + next + \"] in scene graph.\");\n continue;\n }\n try {\n for (var nodes_1 = (e_4 = void 0, __values$C(nodes)), nodes_1_1 = nodes_1.next(); !nodes_1_1.done; nodes_1_1 = nodes_1.next()) {\n var node = nodes_1_1.value;\n if (node instanceof Group && node.name) {\n debugNodes[node.name] = node;\n }\n else {\n debugNodes[node.id] = node;\n }\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (nodes_1_1 && !nodes_1_1.done && (_b = nodes_1.return)) _b.call(nodes_1);\n }\n finally { if (e_4) throw e_4.error; }\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (sceneNodeHighlight_1_1 && !sceneNodeHighlight_1_1.done && (_a = sceneNodeHighlight_1.return)) _a.call(sceneNodeHighlight_1);\n }\n finally { if (e_3) throw e_3.error; }\n }\n ctx.save();\n try {\n for (var _e = __values$C(Object.entries(debugNodes)), _f = _e.next(); !_f.done; _f = _e.next()) {\n var _g = __read$I(_f.value, 2), name_1 = _g[0], node = _g[1];\n var bbox = node.computeTransformedBBox();\n if (!bbox) {\n Logger.debug(\"Scene.render() - no bbox for debugged node [\" + name_1 + \"].\");\n continue;\n }\n ctx.globalAlpha = 0.8;\n ctx.strokeStyle = 'red';\n ctx.lineWidth = 1;\n ctx.strokeRect(bbox.x, bbox.y, bbox.width, bbox.height);\n ctx.fillStyle = 'red';\n ctx.strokeStyle = 'white';\n ctx.font = '16px sans-serif';\n ctx.textBaseline = 'top';\n ctx.textAlign = 'left';\n ctx.lineWidth = 2;\n ctx.strokeText(name_1, bbox.x, bbox.y, bbox.width);\n ctx.fillText(name_1, bbox.x, bbox.y, bbox.width);\n }\n }\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\n finally {\n try {\n if (_f && !_f.done && (_c = _e.return)) _c.call(_e);\n }\n finally { if (e_5) throw e_5.error; }\n }\n ctx.restore();\n };\n Scene.prototype.buildTree = function (node) {\n var _this = this;\n var _a, _b;\n var name = (_a = (node instanceof Group ? node.name : null)) !== null && _a !== void 0 ? _a : node.id;\n return __assign$t(__assign$t({ name: name, node: node, dirty: RedrawType[node.dirty] }, (((_b = node.parent) === null || _b === void 0 ? void 0 : _b.isVirtual)\n ? {\n virtualParentDirty: RedrawType[node.parent.dirty],\n virtualParent: node.parent,\n }\n : {})), node.children\n .map(function (c) { return _this.buildTree(c); })\n .reduce(function (result, childTree) {\n var treeNodeName = childTree.name;\n var _a = childTree.node, visible = _a.visible, opacity = _a.opacity, zIndex = _a.zIndex, zIndexSubOrder = _a.zIndexSubOrder, childNode = childTree.node, virtualParent = childTree.virtualParent;\n if (!visible || opacity <= 0) {\n treeNodeName = \"(\" + treeNodeName + \")\";\n }\n if (childNode instanceof Group && childNode.isLayer()) {\n treeNodeName = \"*\" + treeNodeName + \"*\";\n }\n var key = [\n \"\" + (treeNodeName !== null && treeNodeName !== void 0 ? treeNodeName : ''),\n \"z: \" + zIndex,\n zIndexSubOrder &&\n \"zo: \" + zIndexSubOrder\n .map(function (v) { return (typeof v === 'function' ? v() + \" (fn)\" : v); })\n .join(' / '),\n virtualParent && \"(virtual parent)\",\n ]\n .filter(function (v) { return !!v; })\n .join(' ');\n var selectedKey = key;\n var index = 1;\n while (result[selectedKey] != null && index < 100) {\n selectedKey = key + \" (\" + index++ + \")\";\n }\n result[selectedKey] = childTree;\n return result;\n }, {}));\n };\n Scene.prototype.buildDirtyTree = function (node) {\n var _this = this;\n var _a;\n if (node.dirty === RedrawType.NONE) {\n return { dirtyTree: {}, paths: [] };\n }\n var childrenDirtyTree = node.children.map(function (c) { return _this.buildDirtyTree(c); }).filter(function (c) { return c.paths.length > 0; });\n var name = (_a = (node instanceof Group ? node.name : null)) !== null && _a !== void 0 ? _a : node.id;\n var paths = childrenDirtyTree.length === 0\n ? [name]\n : childrenDirtyTree\n .map(function (c) { return c.paths; })\n .reduce(function (r, p) { return r.concat(p); }, [])\n .map(function (p) { return name + \".\" + p; });\n return {\n dirtyTree: __assign$t({ name: name, node: node, dirty: RedrawType[node.dirty] }, childrenDirtyTree\n .map(function (c) { return c.dirtyTree; })\n .filter(function (t) { return t.dirty !== undefined; })\n .reduce(function (result, childTree) {\n var _a;\n result[(_a = childTree.name) !== null && _a !== void 0 ? _a : ''] = childTree;\n return result;\n }, {})),\n paths: paths,\n };\n };\n Scene.className = 'Scene';\n return Scene;\n}());\n\nvar Gradient = /** @class */ (function () {\n function Gradient() {\n this.stops = [];\n }\n return Gradient;\n}());\n\nvar twoPi = Math.PI * 2;\n/**\n * Normalize the given angle to be in the [0, 2π) interval.\n * @param radians Angle in radians.\n */\nfunction normalizeAngle360(radians) {\n radians %= twoPi;\n radians += twoPi;\n radians %= twoPi;\n return radians;\n}\nfunction 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 */\nfunction 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}\nfunction toRadians$1(degrees) {\n return (degrees / 180) * Math.PI;\n}\nfunction toDegrees(radians) {\n return (radians / Math.PI) * 180;\n}\n\nvar __extends$12 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar LinearGradient = /** @class */ (function (_super) {\n __extends$12(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 // Gradient 0° angle starts at top according to CSS spec\n var angleOffset = 90;\n var _a = this, stops = _a.stops, angle = _a.angle;\n var radians = normalizeAngle360(toRadians$1(angle + angleOffset));\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 diagonal = Math.sqrt(h * h + w * w) / 2;\n var diagonalAngle = Math.atan2(h, w);\n var quarteredAngle = void 0;\n if (radians < Math.PI / 2) {\n quarteredAngle = radians;\n }\n else if (radians < Math.PI) {\n quarteredAngle = Math.PI - radians;\n }\n else if (radians < (3 * Math.PI) / 2) {\n quarteredAngle = radians - Math.PI;\n }\n else {\n quarteredAngle = 2 * Math.PI - radians;\n }\n var l = diagonal * Math.abs(Math.cos(quarteredAngle - diagonalAngle));\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));\n\nvar __extends$11 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1Z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 LINEAR_GRADIENT_REGEXP = /^linear-gradient\\((.*?)deg,\\s*(.*?)\\s*\\)$/i;\nvar Shape = /** @class */ (function (_super) {\n __extends$11(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.fillShadow = Shape.defaultStyles.fillShadow;\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 similar 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 (Object.prototype.hasOwnProperty.call(styles, property) &&\n Object.prototype.hasOwnProperty.call(protoStyles, property)) {\n this[property] = styles[property];\n }\n }\n };\n Shape.prototype.updateGradient = function () {\n var fill = this.fill;\n var linearGradientMatch;\n if ((fill === null || fill === void 0 ? void 0 : fill.startsWith('linear-gradient')) && (linearGradientMatch = LINEAR_GRADIENT_REGEXP.exec(fill))) {\n var angle = parseFloat(linearGradientMatch[1]);\n var colors_1 = [];\n var colorsPart = linearGradientMatch[2];\n var colorRegex = /(#[0-9a-f]+)|(rgba?\\(.+?\\))|([a-z]+)/gi;\n var c = void 0;\n while ((c = colorRegex.exec(colorsPart))) {\n colors_1.push(c[0]);\n }\n this.gradient = new LinearGradient();\n this.gradient.angle = angle;\n this.gradient.stops = colors_1.map(function (color, index) {\n var offset = index / (colors_1.length - 1);\n return { offset: offset, color: color };\n });\n }\n else {\n this.gradient = undefined;\n }\n };\n /**\n * Returns a device-pixel aligned coordinate (or length if length is supplied).\n *\n * NOTE: Not suitable for strokes, since the stroke needs to be offset to the middle\n * of a device pixel.\n */\n Shape.prototype.align = function (start, length) {\n var _a, _b, _c;\n var pixelRatio = (_c = (_b = (_a = this.layerManager) === null || _a === void 0 ? void 0 : _a.canvas) === null || _b === void 0 ? void 0 : _b.pixelRatio) !== null && _c !== void 0 ? _c : 1;\n var alignedStart = Math.round(start * pixelRatio) / pixelRatio;\n if (length == undefined) {\n return alignedStart;\n }\n if (length === 0) {\n return 0;\n }\n if (length < 1) {\n // Avoid hiding crisp shapes\n return Math.ceil(length * pixelRatio) / pixelRatio;\n }\n // Account for the rounding of alignedStart by increasing length to compensate before\n // alignment.\n return Math.round((length + start) * pixelRatio) / pixelRatio - alignedStart;\n };\n Shape.prototype.fillStroke = function (ctx) {\n this.renderFill(ctx);\n this.renderStroke(ctx);\n };\n Shape.prototype.renderFill = function (ctx) {\n if (this.fill) {\n var globalAlpha = ctx.globalAlpha;\n this.applyFill(ctx);\n this.applyFillAlpha(ctx);\n this.applyShadow(ctx);\n ctx.fill();\n ctx.globalAlpha = globalAlpha;\n }\n ctx.shadowColor = 'rgba(0, 0, 0, 0)';\n };\n Shape.prototype.applyFill = function (ctx) {\n if (this.gradient) {\n ctx.fillStyle = this.gradient.createGradient(ctx, this.computeBBox());\n }\n else {\n ctx.fillStyle = this.fill;\n }\n };\n Shape.prototype.applyFillAlpha = function (ctx) {\n var globalAlpha = ctx.globalAlpha;\n ctx.globalAlpha = globalAlpha * this.opacity * this.fillOpacity;\n };\n Shape.prototype.applyShadow = function (ctx) {\n var _a, _b;\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 pixelRatio = (_b = (_a = this.layerManager) === null || _a === void 0 ? void 0 : _a.canvas.pixelRatio) !== null && _b !== void 0 ? _b : 1;\n var fillShadow = this.fillShadow;\n if (fillShadow === null || fillShadow === void 0 ? void 0 : 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 };\n Shape.prototype.renderStroke = function (ctx) {\n if (this.stroke && this.strokeWidth) {\n var globalAlpha = ctx.globalAlpha;\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 ctx.stroke();\n ctx.globalAlpha = globalAlpha;\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 = Object.assign({}, {\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 });\n __decorate$1Z([\n SceneChangeDetection({ redraw: RedrawType.MINOR })\n ], Shape.prototype, \"fillOpacity\", void 0);\n __decorate$1Z([\n SceneChangeDetection({ redraw: RedrawType.MINOR })\n ], Shape.prototype, \"strokeOpacity\", void 0);\n __decorate$1Z([\n SceneChangeDetection({ redraw: RedrawType.MINOR, changeCb: function (s) { return s.updateGradient(); } })\n ], Shape.prototype, \"fill\", void 0);\n __decorate$1Z([\n SceneChangeDetection({ redraw: RedrawType.MINOR })\n ], Shape.prototype, \"stroke\", void 0);\n __decorate$1Z([\n SceneChangeDetection({ redraw: RedrawType.MINOR })\n ], Shape.prototype, \"strokeWidth\", void 0);\n __decorate$1Z([\n SceneChangeDetection({ redraw: RedrawType.MINOR })\n ], Shape.prototype, \"lineDash\", void 0);\n __decorate$1Z([\n SceneChangeDetection({ redraw: RedrawType.MINOR })\n ], Shape.prototype, \"lineDashOffset\", void 0);\n __decorate$1Z([\n SceneChangeDetection({ redraw: RedrawType.MINOR })\n ], Shape.prototype, \"lineCap\", void 0);\n __decorate$1Z([\n SceneChangeDetection({ redraw: RedrawType.MINOR })\n ], Shape.prototype, \"lineJoin\", void 0);\n __decorate$1Z([\n SceneChangeDetection({\n redraw: RedrawType.MINOR,\n convertor: function (v) { return Math.min(1, Math.max(0, v)); },\n })\n ], Shape.prototype, \"opacity\", void 0);\n __decorate$1Z([\n SceneChangeDetection({ redraw: RedrawType.MINOR, checkDirtyOnAssignment: true })\n ], Shape.prototype, \"fillShadow\", void 0);\n return Shape;\n}(Node));\n\nvar __extends$10 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1Y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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$B = (undefined && undefined.__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 ellipsis = '\\u2026';\nfunction SceneFontChangeDetection(opts) {\n var _a = opts !== null && opts !== void 0 ? opts : {}, _b = _a.redraw, redraw = _b === void 0 ? RedrawType.MAJOR : _b, changeCb = _a.changeCb;\n return SceneChangeDetection({ redraw: redraw, type: 'font', changeCb: changeCb });\n}\nvar Text = /** @class */ (function (_super) {\n __extends$10(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.lines = [];\n _this.text = undefined;\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 // TextMetrics are used if lineHeight is not defined.\n _this.lineHeight = undefined;\n return _this;\n }\n Text.prototype._setLines = function () {\n this.lines = splitText(this.text);\n };\n Object.defineProperty(Text.prototype, \"font\", {\n get: function () {\n if (this._font == null || this._dirtyFont) {\n this._dirtyFont = false;\n this._font = getFont(this);\n }\n return this._font;\n },\n enumerable: false,\n configurable: true\n });\n Text.prototype.computeBBox = function () {\n return HdpiCanvas.has.textMetrics\n ? getPreciseBBox(this.lines, this.x, this.y, this)\n : getApproximateBBox(this.lines, this.x, this.y, this);\n };\n Text.prototype.getLineHeight = function (line) {\n var _a, _b;\n if (this.lineHeight)\n return this.lineHeight;\n if (HdpiCanvas.has.textMetrics) {\n var metrics = HdpiCanvas.measureText(line, this.font, this.textBaseline, this.textAlign);\n return (((_a = metrics.fontBoundingBoxAscent) !== null && _a !== void 0 ? _a : metrics.emHeightAscent) +\n ((_b = metrics.fontBoundingBoxDescent) !== null && _b !== void 0 ? _b : metrics.emHeightDescent));\n }\n return HdpiCanvas.getTextSize(line, this.font).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.render = function (renderCtx) {\n var ctx = renderCtx.ctx, forceRender = renderCtx.forceRender, stats = renderCtx.stats;\n if (this.dirty === RedrawType.NONE && !forceRender) {\n if (stats)\n stats.nodesSkipped += this.nodeCount.count;\n return;\n }\n if (!this.lines.length || !this.layerManager) {\n if (stats)\n stats.nodesSkipped += this.nodeCount.count;\n return;\n }\n this.computeTransformMatrix();\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.layerManager.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 fillShadow = this.fillShadow;\n if (fillShadow === null || fillShadow === void 0 ? void 0 : 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 this.renderLines(function (line, x, y) { return ctx.fillText(line, 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 _b = this, lineDash = _b.lineDash, lineDashOffset = _b.lineDashOffset, lineCap = _b.lineCap, lineJoin = _b.lineJoin;\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 this.renderLines(function (line, x, y) { return ctx.strokeText(line, x, y); });\n }\n _super.prototype.render.call(this, renderCtx);\n };\n Text.prototype.renderLines = function (renderCallback) {\n var _this = this;\n var _a = this, lines = _a.lines, x = _a.x, y = _a.y;\n var lineHeights = this.lines.map(function (line) { return _this.getLineHeight(line); });\n var totalHeight = lineHeights.reduce(function (a, b) { return a + b; }, 0);\n var offsetY = -(totalHeight - lineHeights[0]) * getVerticalOffset(this.textBaseline);\n for (var i = 0; i < lines.length; i++) {\n renderCallback(lines[i], x, y + offsetY);\n offsetY += lineHeights[i];\n }\n };\n Text.wrap = function (text, maxWidth, maxHeight, textProps, wrapping) {\n var e_1, _a;\n var font = getFont(textProps);\n var measurer = createTextMeasurer(font);\n var lines = text.split(/\\r?\\n/g);\n if (lines.length === 0) {\n return '';\n }\n if (wrapping === 'never') {\n return Text.truncateLine(lines[0], maxWidth, measurer, false);\n }\n var result = [];\n var cumulativeHeight = 0;\n try {\n for (var lines_1 = __values$B(lines), lines_1_1 = lines_1.next(); !lines_1_1.done; lines_1_1 = lines_1.next()) {\n var line = lines_1_1.value;\n var wrappedLine = Text.wrapLine(line, maxWidth, maxHeight, measurer, textProps, wrapping, cumulativeHeight);\n result.push(wrappedLine.result);\n cumulativeHeight = wrappedLine.cumulativeHeight;\n if (wrappedLine.truncated) {\n break;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (lines_1_1 && !lines_1_1.done && (_a = lines_1.return)) _a.call(lines_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return result.join('\\n').trim();\n };\n Text.wrapLine = function (text, maxWidth, maxHeight, measurer, textProps, wrapping, cumulativeHeight) {\n text = text.trim();\n if (!text) {\n return { result: '', truncated: false, cumulativeHeight: cumulativeHeight };\n }\n var initialSize = measurer.size(text);\n if (initialSize.width <= maxWidth) {\n // Text fits into a single line\n return { result: text, truncated: false, cumulativeHeight: cumulativeHeight + initialSize.height };\n }\n if (initialSize.height > maxHeight || measurer.width('W') > maxWidth) {\n // Not enough space for a single line or character\n return { result: '', truncated: true, cumulativeHeight: cumulativeHeight };\n }\n var words = text.split(/\\s+/g);\n var wrapResult = Text.wrapLineSequentially(words, maxWidth, maxHeight, measurer, textProps, wrapping, cumulativeHeight);\n cumulativeHeight = wrapResult.cumulativeHeight;\n var lines = wrapResult.lines;\n if (!(wrapResult.wordsBrokenOrTruncated || wrapResult.linesTruncated)) {\n // If no word breaks or truncations, try the balanced wrapping\n var linesCount = wrapResult.lines.length;\n var balanced = Text.wrapLineBalanced(words, maxWidth, measurer, linesCount);\n if (balanced.length === lines.length) {\n // Some lines can't be balanced properly because of unusually long words\n lines = balanced;\n }\n }\n var wrappedText = lines.map(function (ln) { return ln.join(' '); }).join('\\n');\n return { result: wrappedText, truncated: wrapResult.linesTruncated, cumulativeHeight: cumulativeHeight };\n };\n Text.breakWord = function (word, firstLineWidth, maxWidth, hyphens, measurer) {\n var e_2, _a;\n var isPunctuationAt = function (index) { return Text.punctuationMarks.includes(word[index]); };\n var h = hyphens ? measurer.width('-') : 0;\n var breaks = [];\n var partWidth = 0;\n var p = 0;\n for (var i = 0; i < word.length; i++) {\n var c = word[i];\n var w = measurer.width(c);\n var limit = p === 0 ? firstLineWidth : maxWidth;\n if (partWidth + w + h > limit) {\n breaks.push(i);\n partWidth = 0;\n p++;\n }\n partWidth += w;\n }\n var parts = [];\n var start = 0;\n try {\n for (var breaks_1 = __values$B(breaks), breaks_1_1 = breaks_1.next(); !breaks_1_1.done; breaks_1_1 = breaks_1.next()) {\n var index = breaks_1_1.value;\n var part = word.substring(start, index);\n if (hyphens && part.length > 0 && !isPunctuationAt(index - 1) && !isPunctuationAt(index)) {\n part += '-';\n }\n parts.push(part);\n start = index;\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (breaks_1_1 && !breaks_1_1.done && (_a = breaks_1.return)) _a.call(breaks_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n parts.push(word.substring(start));\n return parts;\n };\n Text.truncateLine = function (text, maxWidth, measurer, forceEllipsis) {\n var lineWidth = measurer.width(text);\n if (lineWidth < maxWidth && !forceEllipsis) {\n return text;\n }\n var ellipsisWidth = measurer.width(ellipsis);\n if (lineWidth + ellipsisWidth <= maxWidth) {\n return \"\" + text + ellipsis;\n }\n var index = Math.floor((text.length * maxWidth) / lineWidth) + 1;\n var trunc;\n var truncWidth;\n do {\n trunc = text.substring(0, index);\n truncWidth = measurer.width(trunc);\n } while (--index >= 0 && truncWidth + ellipsisWidth > maxWidth);\n return \"\" + trunc + ellipsis;\n };\n Text.wrapLineSequentially = function (words, maxWidth, maxHeight, measurer, textProps, wrapping, cumulativeHeight) {\n var fontSize = textProps.fontSize, _a = textProps.lineHeight, lineHeight = _a === void 0 ? fontSize * Text.defaultLineHeightRatio : _a;\n var breakWord = wrapping === 'always' || wrapping === 'hyphenate';\n var hyphenate = wrapping === 'hyphenate';\n var spaceWidth = measurer.width(' ');\n var wordsBrokenOrTruncated = false;\n var linesTruncated = false;\n var lines = [];\n var currentLine = [];\n var lineWidth = 0;\n var addNewLine = function () {\n var expectedHeight = cumulativeHeight + lineHeight;\n if (expectedHeight >= maxHeight) {\n // Truncate the last line\n var lastLine = currentLine.join(' ');\n var trunc = Text.truncateLine(lastLine, maxWidth, measurer, true);\n currentLine.splice(0, currentLine.length, trunc);\n linesTruncated = true;\n return false;\n }\n // Add new line\n currentLine = [];\n lineWidth = 0;\n cumulativeHeight = expectedHeight;\n lines.push(currentLine);\n return true;\n };\n if (!addNewLine()) {\n return { lines: lines, linesTruncated: true, wordsBrokenOrTruncated: wordsBrokenOrTruncated, cumulativeHeight: cumulativeHeight };\n }\n for (var i = 0; i < words.length; i++) {\n var word = words[i];\n var wordWidth = measurer.width(word);\n var expectedSpaceWidth = currentLine.length === 0 ? 0 : spaceWidth;\n var expectedLineWidth = lineWidth + expectedSpaceWidth + wordWidth;\n if (expectedLineWidth <= maxWidth) {\n // If the word fits, add it to the current line\n currentLine.push(word);\n lineWidth = expectedLineWidth;\n continue;\n }\n if (wordWidth <= maxWidth) {\n // If the word is not too long, put it onto new line\n if (!addNewLine()) {\n break;\n }\n currentLine.push(word);\n lineWidth = wordWidth;\n continue;\n }\n // Handle a long word\n wordsBrokenOrTruncated = true;\n if (breakWord) {\n // Break the word into parts\n var availWidth = maxWidth - lineWidth - expectedSpaceWidth;\n var parts = Text.breakWord(word, availWidth, maxWidth, hyphenate, measurer);\n var breakLoop = false;\n for (var p = 0; p < parts.length; p++) {\n var part = parts[p];\n part && currentLine.push(part);\n if (p === parts.length - 1) {\n lineWidth = measurer.width(part);\n }\n else if (!addNewLine()) {\n breakLoop = true;\n break;\n }\n }\n if (breakLoop)\n break;\n }\n else {\n // Truncate the word\n if (!addNewLine()) {\n break;\n }\n var trunc = Text.truncateLine(word, maxWidth, measurer, true);\n currentLine.push(trunc);\n if (i < words.length - 1) {\n linesTruncated = true;\n }\n break;\n }\n }\n return { lines: lines, linesTruncated: linesTruncated, wordsBrokenOrTruncated: wordsBrokenOrTruncated, cumulativeHeight: cumulativeHeight };\n };\n Text.wrapLineBalanced = function (words, maxWidth, measurer, linesCount) {\n var e_3, _a;\n var totalWordsWidth = words.reduce(function (sum, w) { return sum + measurer.width(w); }, 0);\n var spaceWidth = measurer.width(' ');\n var totalSpaceWidth = spaceWidth * (words.length - linesCount - 2);\n var averageLineWidth = (totalWordsWidth + totalSpaceWidth) / linesCount;\n var lines = [];\n var currentLine = [];\n var lineWidth = measurer.width(words[0]);\n var newLine = true;\n try {\n for (var words_1 = __values$B(words), words_1_1 = words_1.next(); !words_1_1.done; words_1_1 = words_1.next()) {\n var word = words_1_1.value;\n var width = measurer.width(word);\n if (newLine) {\n // New line\n currentLine = [];\n currentLine.push(word);\n lineWidth = width;\n newLine = false;\n lines.push(currentLine);\n continue;\n }\n var expectedLineWidth = lineWidth + spaceWidth + width;\n if (expectedLineWidth <= averageLineWidth) {\n // Keep adding words to the line\n currentLine.push(word);\n lineWidth = expectedLineWidth;\n }\n else if (expectedLineWidth <= maxWidth) {\n // Add the last word to the line\n currentLine.push(word);\n newLine = true;\n }\n else {\n // Put the word onto the next line\n currentLine = [word];\n lineWidth = width;\n lines.push(currentLine);\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (words_1_1 && !words_1_1.done && (_a = words_1.return)) _a.call(words_1);\n }\n finally { if (e_3) throw e_3.error; }\n }\n return lines;\n };\n Text.prototype.setFont = function (props) {\n this.fontFamily = props.fontFamily;\n this.fontSize = props.fontSize;\n this.fontStyle = props.fontStyle;\n this.fontWeight = props.fontWeight;\n };\n Text.prototype.setAlign = function (props) {\n this.textAlign = props.textAlign;\n this.textBaseline = props.textBaseline;\n };\n Text.className = 'Text';\n // The default line spacing for document editors is usually 1.15\n Text.defaultLineHeightRatio = 1.15;\n Text.defaultStyles = Object.assign({}, Shape.defaultStyles, {\n textAlign: 'start',\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 10,\n fontFamily: 'sans-serif',\n textBaseline: 'alphabetic',\n });\n Text.punctuationMarks = ['.', ',', '-', ':', ';', '!', '?', \"'\", '\"', '(', ')'];\n __decorate$1Y([\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], Text.prototype, \"x\", void 0);\n __decorate$1Y([\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], Text.prototype, \"y\", void 0);\n __decorate$1Y([\n SceneChangeDetection({ redraw: RedrawType.MAJOR, changeCb: function (o) { return o._setLines(); } })\n ], Text.prototype, \"text\", void 0);\n __decorate$1Y([\n SceneFontChangeDetection()\n ], Text.prototype, \"fontStyle\", void 0);\n __decorate$1Y([\n SceneFontChangeDetection()\n ], Text.prototype, \"fontWeight\", void 0);\n __decorate$1Y([\n SceneFontChangeDetection()\n ], Text.prototype, \"fontSize\", void 0);\n __decorate$1Y([\n SceneFontChangeDetection()\n ], Text.prototype, \"fontFamily\", void 0);\n __decorate$1Y([\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], Text.prototype, \"textAlign\", void 0);\n __decorate$1Y([\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], Text.prototype, \"textBaseline\", void 0);\n __decorate$1Y([\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], Text.prototype, \"lineHeight\", void 0);\n return Text;\n}(Shape));\nfunction createTextMeasurer(font) {\n var cache = new Map();\n var getTextSize = function (text) { return HdpiCanvas.getTextSize(text, font); };\n var getLineWidth = function (text) {\n if (cache.has(text)) {\n return cache.get(text);\n }\n var width = getTextSize(text).width;\n cache.set(text, width);\n return width;\n };\n return { size: getTextSize, width: getLineWidth };\n}\nfunction getFont(fontProps) {\n var fontFamily = fontProps.fontFamily, fontSize = fontProps.fontSize, fontStyle = fontProps.fontStyle, fontWeight = fontProps.fontWeight;\n return [fontStyle !== null && fontStyle !== void 0 ? fontStyle : '', fontWeight !== null && fontWeight !== void 0 ? fontWeight : '', fontSize + 'px', fontFamily].join(' ').trim();\n}\nfunction measureText(lines, x, y, textProps) {\n return HdpiCanvas.has.textMetrics\n ? getPreciseBBox(lines, x, y, textProps)\n : getApproximateBBox(lines, x, y, textProps);\n}\nfunction getPreciseBBox(lines, x, y, textProps) {\n var _a, _b;\n var left = 0;\n var top = 0;\n var width = 0;\n var height = 0;\n // Distance between first and last base lines.\n var baselineDistance = 0;\n var font = getFont(textProps);\n var lineHeight = textProps.lineHeight, _c = textProps.textBaseline, textBaseline = _c === void 0 ? Text.defaultStyles.textBaseline : _c, _d = textProps.textAlign, textAlign = _d === void 0 ? Text.defaultStyles.textAlign : _d;\n for (var i = 0; i < lines.length; i++) {\n var metrics = HdpiCanvas.measureText(lines[i], font, textBaseline, textAlign);\n left = Math.max(left, metrics.actualBoundingBoxLeft);\n width = Math.max(width, metrics.width);\n if (i == 0) {\n top += metrics.actualBoundingBoxAscent;\n height += metrics.actualBoundingBoxAscent;\n }\n else {\n baselineDistance += (_a = metrics.fontBoundingBoxAscent) !== null && _a !== void 0 ? _a : metrics.emHeightAscent;\n }\n if (i == lines.length - 1) {\n height += metrics.actualBoundingBoxDescent;\n }\n else {\n baselineDistance += (_b = metrics.fontBoundingBoxDescent) !== null && _b !== void 0 ? _b : metrics.emHeightDescent;\n }\n }\n if (lineHeight !== undefined) {\n baselineDistance = (lines.length - 1) * lineHeight;\n }\n height += baselineDistance;\n top += baselineDistance * getVerticalOffset(textBaseline);\n return new BBox(x - left, y - top, width, height);\n}\nfunction getApproximateBBox(lines, x, y, textProps) {\n var width = 0;\n var firstLineHeight = 0;\n // Distance between first and last base lines.\n var baselineDistance = 0;\n var font = getFont(textProps);\n var lineHeight = textProps.lineHeight, _a = textProps.textBaseline, textBaseline = _a === void 0 ? Text.defaultStyles.textBaseline : _a, _b = textProps.textAlign, textAlign = _b === void 0 ? Text.defaultStyles.textAlign : _b;\n if (lines.length > 0) {\n var lineSize = HdpiCanvas.getTextSize(lines[0], font);\n width = lineSize.width;\n firstLineHeight = lineSize.height;\n }\n for (var i = 1; i < lines.length; i++) {\n var lineSize = HdpiCanvas.getTextSize(lines[i], font);\n width = Math.max(width, lineSize.width);\n baselineDistance += lineHeight !== null && lineHeight !== void 0 ? lineHeight : lineSize.height;\n }\n switch (textAlign) {\n case 'end':\n case 'right':\n x -= width;\n break;\n case 'center':\n x -= width / 2;\n }\n switch (textBaseline) {\n case 'alphabetic':\n y -= firstLineHeight * 0.7 + baselineDistance * 0.5;\n break;\n case 'middle':\n y -= firstLineHeight * 0.45 + baselineDistance * 0.5;\n break;\n case 'ideographic':\n y -= firstLineHeight + baselineDistance;\n break;\n case 'hanging':\n y -= firstLineHeight * 0.2 + baselineDistance * 0.5;\n break;\n case 'bottom':\n y -= firstLineHeight + baselineDistance;\n break;\n }\n return new BBox(x, y, width, firstLineHeight + baselineDistance);\n}\nfunction getVerticalOffset(textBaseline) {\n switch (textBaseline) {\n case 'top':\n case 'hanging':\n return 0;\n case 'bottom':\n case 'alphabetic':\n case 'ideographic':\n return 1;\n case 'middle':\n return 0.5;\n }\n}\nfunction splitText(text) {\n return typeof text === 'string' ? text.split(/\\r?\\n/g) : [];\n}\n\nvar Observable = /** @class */ (function () {\n function Observable() {\n this.allEventListeners = new Map();\n }\n Observable.prototype.addEventListener = function (type, listener) {\n if (typeof listener !== 'function') {\n throw new Error('AG Charts - listener must be a Function');\n }\n var allEventListeners = this.allEventListeners;\n var eventListeners = allEventListeners.get(type);\n if (!eventListeners) {\n eventListeners = new Set();\n allEventListeners.set(type, eventListeners);\n }\n if (!eventListeners.has(listener)) {\n eventListeners.add(listener);\n }\n };\n Observable.prototype.removeEventListener = function (type, listener) {\n var allEventListeners = this.allEventListeners;\n var eventListeners = allEventListeners.get(type);\n if (!eventListeners) {\n return;\n }\n eventListeners.delete(listener);\n if (eventListeners.size === 0) {\n allEventListeners.delete(type);\n }\n };\n Observable.prototype.hasEventListener = function (type) {\n return this.allEventListeners.has(type);\n };\n Observable.prototype.clearEventListeners = function () {\n this.allEventListeners.clear();\n };\n Observable.prototype.fireEvent = function (event) {\n var listeners = this.allEventListeners.get(event.type);\n listeners === null || listeners === void 0 ? void 0 : listeners.forEach(function (listener) { return listener(event); });\n };\n return Observable;\n}());\n\nvar isString$2 = function (v) { return typeof v === 'string'; };\nvar isStringObject$1 = function (v) {\n return !!v && Object.prototype.hasOwnProperty.call(v, 'toString') && isString$2(v.toString());\n};\nvar isDate$1 = function (v) { return v instanceof Date && !isNaN(+v); };\nfunction isDiscrete(value) {\n return isString$2(value) || isStringObject$1(value);\n}\nfunction isContinuous(value) {\n var isNumberObject = function (v) {\n return !!v && Object.prototype.hasOwnProperty.call(v, 'valueOf') && isNumber$4(v.valueOf());\n };\n var isDate = function (v) { return v instanceof Date && !isNaN(+v); };\n return isNumber$4(value) || isNumberObject(value) || isDate(value);\n}\nfunction checkDatum(value, isContinuousScale) {\n if (isContinuousScale && isContinuous(value)) {\n return value;\n }\n else if (!isContinuousScale) {\n if (!isDiscrete(value)) {\n return String(value);\n }\n return value;\n }\n return undefined;\n}\nvar isNumber$4 = function (v) { return typeof v === 'number' && Number.isFinite(v); };\n\nvar __read$H = (undefined && undefined.__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 * A color string can be in one of the following formats to be valid:\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 */\n Color.validColorString = function (str) {\n if (str.indexOf('#') >= 0) {\n return !!Color.parseHex(str);\n }\n if (str.indexOf('rgb') >= 0) {\n return !!Color.stringToRgba(str);\n }\n return !!Color.nameToHex[str.toLowerCase()];\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) {\n // there can be some leading whitespace\n return Color.fromHexString(str);\n }\n // color name\n var hex = Color.nameToHex[str.toLowerCase()];\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 Color.tryParseFromString = function (str) {\n try {\n return Color.fromString(str);\n }\n catch (e) {\n Logger.warnOnce(\"invalid color string: '\" + str + \"'.\");\n return Color.fromArray([0, 0, 0]);\n }\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\n .split('')\n .map(function (p) { return parseInt(p, 16); })\n .map(function (p) { return p + p * 16; });\n break;\n }\n if ((parts === null || parts === void 0 ? void 0 : 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$H(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$H([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) {\n // 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) {\n // alpha component\n value = Math.max(0, Math.min(1, value));\n }\n else {\n // 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 = [Math.round(this.r * 255), Math.round(this.g * 255), Math.round(this.b * 255)];\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 ) {\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 Color.interpolate = function (color, other) {\n var c0 = Color.tryParseFromString(color);\n var c1 = Color.tryParseFromString(other);\n return function (t) {\n var i = function (x, y) { return x * (1 - t) + y * t; };\n var c = new Color(i(c0.r, c1.r), i(c0.g, c1.g), i(c0.b, c1.b), i(c0.a, c1.a));\n return c.toString();\n };\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 transparent: '#00000000',\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}());\n\nvar __values$A = (undefined && undefined.__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 BREAK_TRANSFORM_CHAIN = Symbol('BREAK');\nvar CONFIG_KEY = '__decorator_config';\nfunction initialiseConfig(target, propertyKeyOrSymbol, propertyKey, valueStoreKey) {\n if (Object.getOwnPropertyDescriptor(target, CONFIG_KEY) == null) {\n Object.defineProperty(target, CONFIG_KEY, { value: {} });\n }\n var config = target[CONFIG_KEY];\n if (config[propertyKey] != null) {\n return config[propertyKey];\n }\n config[propertyKey] = { setters: [], getters: [] };\n var descriptor = Object.getOwnPropertyDescriptor(target, propertyKeyOrSymbol);\n var prevSet = descriptor === null || descriptor === void 0 ? void 0 : descriptor.set;\n var prevGet = descriptor === null || descriptor === void 0 ? void 0 : descriptor.get;\n var getter = function () {\n var e_1, _a;\n var _b, _c;\n var value = prevGet ? prevGet.call(this) : this[valueStoreKey];\n try {\n for (var _d = __values$A((_c = (_b = config[propertyKey]) === null || _b === void 0 ? void 0 : _b.getters) !== null && _c !== void 0 ? _c : []), _e = _d.next(); !_e.done; _e = _d.next()) {\n var transformFn = _e.value;\n value = transformFn(this, propertyKeyOrSymbol, value);\n if (value === BREAK_TRANSFORM_CHAIN) {\n return undefined;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_e && !_e.done && (_a = _d.return)) _a.call(_d);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return value;\n };\n var setter = function (value) {\n var e_2, _a;\n var _b, _c;\n var setters = (_c = (_b = config[propertyKey]) === null || _b === void 0 ? void 0 : _b.setters) !== null && _c !== void 0 ? _c : [];\n var oldValue;\n if (setters.some(function (f) { return f.length > 2; })) {\n // Lazily retrieve old value.\n oldValue = prevGet ? prevGet.call(this) : this[valueStoreKey];\n }\n try {\n for (var setters_1 = __values$A(setters), setters_1_1 = setters_1.next(); !setters_1_1.done; setters_1_1 = setters_1.next()) {\n var transformFn = setters_1_1.value;\n value = transformFn(this, propertyKeyOrSymbol, value, oldValue);\n if (value === BREAK_TRANSFORM_CHAIN) {\n return;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (setters_1_1 && !setters_1_1.done && (_a = setters_1.return)) _a.call(setters_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n if (prevSet) {\n prevSet.call(this, value);\n }\n else {\n this[valueStoreKey] = value;\n }\n };\n Object.defineProperty(target, propertyKeyOrSymbol, {\n set: setter,\n get: getter,\n enumerable: true,\n configurable: false,\n });\n return config[propertyKey];\n}\nfunction addTransformToInstanceProperty(setTransform, getTransform) {\n return function (target, propertyKeyOrSymbol) {\n var propertyKey = propertyKeyOrSymbol.toString();\n var valueStoreKey = \"__\" + propertyKey;\n var _a = initialiseConfig(target, propertyKeyOrSymbol, propertyKey, valueStoreKey), getters = _a.getters, setters = _a.setters;\n setters.push(setTransform);\n if (getTransform) {\n getters.splice(0, 0, getTransform);\n }\n };\n}\n\nfunction Validate(predicate) {\n return addTransformToInstanceProperty(function (target, prop, v) {\n var _a, _b, _c;\n if (predicate(v, { target: target })) {\n return v;\n }\n var cleanKey = prop.toString().replace(/^_*/, '');\n var targetClass = (_b = (_a = target.constructor) === null || _a === void 0 ? void 0 : _a.className) !== null && _b !== void 0 ? _b : (_c = target.constructor) === null || _c === void 0 ? void 0 : _c.name;\n if ((targetClass === null || targetClass === void 0 ? void 0 : targetClass.length) < 3) {\n targetClass = null;\n }\n var targetClassName = targetClass ? \"of [\" + targetClass + \"] \" : '';\n if (predicate.message) {\n Logger.warn(\"Property [\" + cleanKey + \"] \" + targetClassName + \"cannot be set to [\" + JSON.stringify(v) + \"]; \" + predicate.message + \", ignoring.\");\n }\n else {\n Logger.warn(\"Property [\" + cleanKey + \"] \" + targetClassName + \"cannot be set to [\" + JSON.stringify(v) + \"], ignoring.\");\n }\n return BREAK_TRANSFORM_CHAIN;\n });\n}\nfunction predicateWithMessage(predicate, message) {\n predicate.message = message;\n return predicate;\n}\nvar OPTIONAL = function (v, ctx, predicate) {\n return v === undefined || predicate(v, ctx);\n};\nvar ARRAY = function (length, predicate) {\n return predicateWithMessage(function (v, ctx) {\n return Array.isArray(v) &&\n (length ? v.length === length : true) &&\n (predicate ? v.every(function (e) { return predicate(e, ctx); }) : true);\n }, \"expecting an Array\");\n};\nvar OPT_ARRAY = function (length) {\n return predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, ARRAY(length)); }, 'expecting an optional Array');\n};\nvar AND = function () {\n var predicates = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n predicates[_i] = arguments[_i];\n }\n return predicateWithMessage(function (v, ctx) { return predicates.every(function (p) { return p(v, ctx); }); }, predicates\n .map(function (p) { return p.message; })\n .filter(function (m) { return m != null; })\n .join(' AND '));\n};\nvar OR = function () {\n var predicates = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n predicates[_i] = arguments[_i];\n }\n return predicateWithMessage(function (v, ctx) { return predicates.some(function (p) { return p(v, ctx); }); }, predicates\n .map(function (p) { return p.message; })\n .filter(function (m) { return m != null; })\n .join(' OR '));\n};\nvar isComparable = function (v) {\n return v != null && !isNaN(v);\n};\nvar LESS_THAN = function (otherField) {\n return predicateWithMessage(function (v, ctx) {\n return !isComparable(v) || !isComparable(ctx.target[otherField]) || v < ctx.target[otherField];\n }, \"expected to be less than \" + otherField);\n};\nvar GREATER_THAN = function (otherField) {\n return predicateWithMessage(function (v, ctx) {\n return !isComparable(v) || !isComparable(ctx.target[otherField]) || v > ctx.target[otherField];\n }, \"expected to be greater than \" + otherField);\n};\nvar FUNCTION = predicateWithMessage(function (v) { return typeof v === 'function'; }, 'expecting a Function');\nvar OPT_FUNCTION = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, FUNCTION); }, \"expecting an optional Function\");\nvar BOOLEAN = predicateWithMessage(function (v) { return v === true || v === false; }, 'expecting a Boolean');\nvar OPT_BOOLEAN = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, BOOLEAN); }, 'expecting an optional Boolean');\nvar STRING = predicateWithMessage(function (v) { return typeof v === 'string'; }, 'expecting a String');\nvar OPT_STRING = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, STRING); }, 'expecting an optional String');\nvar DATE = predicateWithMessage(function (v) { return v instanceof Date && !isNaN(+v); }, 'expecting a Date object');\nvar OPT_DATE = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, DATE); }, 'expecting an optional Date');\npredicateWithMessage(ARRAY(undefined, DATE), 'expecting an Array of Date objects');\nvar DATETIME_MS = NUMBER(0);\nvar OPT_DATETIME_MS = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, DATETIME_MS); }, 'expecting an optional number');\nvar OPT_DATE_OR_DATETIME_MS = OR(OPT_DATE, OPT_DATETIME_MS);\nvar colorMessage = \"A color string can be in one of the following formats to be valid: #rgb, #rrggbb, rgb(r, g, b), rgba(r, g, b, a) or a CSS color name such as 'white', 'orange', 'cyan', etc\";\nvar COLOR_STRING = predicateWithMessage(function (v) {\n if (typeof v !== 'string') {\n return false;\n }\n return Color.validColorString(v);\n}, \"expecting a color String. \" + colorMessage);\nvar OPT_COLOR_STRING = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, COLOR_STRING); }, \"expecting an optional color String. \" + colorMessage);\nvar COLOR_STRING_ARRAY = predicateWithMessage(ARRAY(undefined, COLOR_STRING), \"expecting an Array of color strings. \" + colorMessage);\nvar OPT_COLOR_STRING_ARRAY = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, COLOR_STRING_ARRAY); }, \"expecting an optional Array of color strings. \" + colorMessage);\nfunction NUMBER(min, max) {\n var message = \"expecting a finite Number\" + ((min !== undefined ? ', more than or equal to ' + min : '') +\n (max !== undefined ? ', less than or equal to ' + max : ''));\n return predicateWithMessage(function (v) {\n return typeof v === 'number' &&\n Number.isFinite(v) &&\n (min !== undefined ? v >= min : true) &&\n (max !== undefined ? v <= max : true);\n }, message);\n}\nfunction OPT_NUMBER(min, max) {\n var message = \"expecting an optional finite Number\" + ((min !== undefined ? ', more than or equal to ' + min : '') +\n (max !== undefined ? ', less than or equal to ' + max : ''));\n return predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, NUMBER(min, max)); }, message);\n}\nfunction NUMBER_OR_NAN(min, max) {\n // Can be NaN or finite number\n var message = \"expecting a finite Number\" + ((min !== undefined ? ', more than or equal to ' + min : '') +\n (max !== undefined ? ', less than or equal to ' + max : ''));\n return predicateWithMessage(function (v) {\n return typeof v === 'number' &&\n (isNaN(v) ||\n (Number.isFinite(v) && (min !== undefined ? v >= min : true) && (max !== undefined ? v <= max : true)));\n }, message);\n}\nvar NUMBER_ARRAY = predicateWithMessage(ARRAY(undefined, NUMBER()), 'expecting an Array of numbers');\nvar OPT_NUMBER_ARRAY = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, NUMBER_ARRAY); }, 'expecting an optional Array of numbers');\nvar STRING_ARRAY = predicateWithMessage(ARRAY(undefined, STRING), 'expecting an Array of strings');\npredicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, STRING_ARRAY); }, 'expecting an optional Array of strings');\nfunction STRING_UNION() {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n var message = \"expecting one of: \" + values.join(', ');\n return predicateWithMessage(function (v) { return typeof v === 'string' && values.indexOf(v) >= 0; }, message);\n}\nvar BOOLEAN_ARRAY = predicateWithMessage(ARRAY(undefined, BOOLEAN), 'expecting an Array of boolean values');\npredicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, BOOLEAN_ARRAY); }, 'expecting an optional Array of boolean values');\nvar FONT_WEIGHTS = [\n 'normal',\n 'bold',\n 'bolder',\n 'lighter',\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n];\nvar FONT_STYLE = predicateWithMessage(function (v) { return v === 'normal' || v === 'italic' || v === 'oblique'; }, \"expecting a font style keyword such as 'normal', 'italic' or 'oblique'\");\nvar OPT_FONT_STYLE = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, FONT_STYLE); }, \"expecting an optional font style keyword such as 'normal', 'italic' or 'oblique'\");\nvar FONT_WEIGHT = predicateWithMessage(function (v) { return FONT_WEIGHTS.includes(v); }, \"expecting a font weight keyword such as 'normal', 'bold' or 'bolder' or a numeric value such as 100, 300 or 600\");\nvar OPT_FONT_WEIGHT = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, FONT_WEIGHT); }, \"expecting an optional font weight keyword such as 'normal', 'bold' or 'bolder' or a numeric value such as 100, 300 or 600\");\nvar LINE_DASH = predicateWithMessage(ARRAY(undefined, NUMBER(0)), 'expecting an Array of numbers specifying the length in pixels of alternating dashes and gaps, for example, [6, 3] means dashes with a length of 6 pixels with gaps between of 3 pixels.');\nvar OPT_LINE_DASH = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, LINE_DASH); }, 'expecting an optional Array of numbers specifying the length in pixels of alternating dashes and gaps, for example, [6, 3] means dashes with a length of 6 pixels with gaps between of 3 pixels.');\nvar LINE_CAPS = ['butt', 'round', 'square'];\nvar LINE_CAP = predicateWithMessage(function (v) { return LINE_CAPS.includes(v); }, \"expecting a line cap keyword such as 'butt', 'round' or 'square'\");\npredicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, LINE_CAP); }, \"expecting an optional line cap keyword such as 'butt', 'round' or 'square'\");\nvar LINE_JOINS = ['round', 'bevel', 'miter'];\nvar LINE_JOIN = predicateWithMessage(function (v) { return LINE_JOINS.includes(v); }, \"expecting a line join keyword such as 'round', 'bevel' or 'miter'\");\npredicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, LINE_JOIN); }, \"expecting an optional line join keyword such as 'round', 'bevel' or 'miter'\");\nvar POSITIONS = ['top', 'right', 'bottom', 'left'];\nvar POSITION = predicateWithMessage(function (v) { return POSITIONS.includes(v); }, \"expecting a position keyword such as 'top', 'right', 'bottom' or 'left\");\nvar INTERACTION_RANGES = ['exact', 'nearest'];\nvar INTERACTION_RANGE = predicateWithMessage(function (v) { return (typeof v === 'number' && Number.isFinite(v)) || INTERACTION_RANGES.includes(v); }, \"expecting an interaction range of 'exact', 'nearest' or a number\");\nvar TEXT_WRAPS = ['never', 'always', 'hyphenate', 'on-space'];\nvar TEXT_WRAP = predicateWithMessage(function (v) { return TEXT_WRAPS.includes(v); }, \"expecting a text wrap strategy keyword such as 'never', 'always', 'hyphenate', 'on-space'\");\n\n/**\n * Constants to declare the expected nominal zIndex for all types of layer in chart rendering.\n */\nvar Layers;\n(function (Layers) {\n Layers[Layers[\"SERIES_BACKGROUND_ZINDEX\"] = -10] = \"SERIES_BACKGROUND_ZINDEX\";\n Layers[Layers[\"AXIS_GRID_ZINDEX\"] = 0] = \"AXIS_GRID_ZINDEX\";\n Layers[Layers[\"AXIS_ZINDEX\"] = 20] = \"AXIS_ZINDEX\";\n Layers[Layers[\"SERIES_CROSSLINE_RANGE_ZINDEX\"] = 30] = \"SERIES_CROSSLINE_RANGE_ZINDEX\";\n Layers[Layers[\"SERIES_LAYER_ZINDEX\"] = 500] = \"SERIES_LAYER_ZINDEX\";\n Layers[Layers[\"SERIES_CROSSHAIR_ZINDEX\"] = 1000] = \"SERIES_CROSSHAIR_ZINDEX\";\n Layers[Layers[\"SERIES_LABEL_ZINDEX\"] = 1500] = \"SERIES_LABEL_ZINDEX\";\n Layers[Layers[\"SERIES_CROSSLINE_LINE_ZINDEX\"] = 2500] = \"SERIES_CROSSLINE_LINE_ZINDEX\";\n Layers[Layers[\"LEGEND_ZINDEX\"] = 3000] = \"LEGEND_ZINDEX\";\n})(Layers || (Layers = {}));\n\nvar ChartAxisDirection;\n(function (ChartAxisDirection) {\n ChartAxisDirection[\"X\"] = \"x\";\n ChartAxisDirection[\"Y\"] = \"y\";\n})(ChartAxisDirection || (ChartAxisDirection = {}));\n\nvar DataDomain = /** @class */ (function () {\n function DataDomain(type) {\n this.type = type;\n this.continuousDomain = [Infinity, -Infinity];\n this.discreteDomain = new Set();\n }\n DataDomain.prototype.extend = function (val) {\n if (this.type === 'discrete') {\n this.discreteDomain.add(val);\n }\n else if (this.type === 'continuous') {\n if (this.continuousDomain[0] > val) {\n this.continuousDomain[0] = val;\n }\n if (this.continuousDomain[1] < val) {\n this.continuousDomain[1] = val;\n }\n }\n };\n DataDomain.prototype.getDomain = function () {\n if (this.type === 'discrete') {\n return this.discreteDomain;\n }\n else if (this.type === 'continuous') {\n return this.continuousDomain;\n }\n throw new Error('AG Charts - Unsupported data domain type: ' + this.type);\n };\n return DataDomain;\n}());\n\nvar __values$z = (undefined && undefined.__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};\nfunction extendDomain(values, domain) {\n var e_1, _a;\n if (domain === void 0) { domain = [Infinity, -Infinity]; }\n try {\n for (var values_1 = __values$z(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 (typeof value !== 'number') {\n continue;\n }\n if (value < domain[0]) {\n domain[0] = value;\n }\n if (value > domain[1]) {\n domain[1] = 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 domain;\n}\n\nvar __assign$s = (undefined && undefined.__assign) || function () {\n __assign$s = 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$s.apply(this, arguments);\n};\nvar __read$G = (undefined && undefined.__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 __values$y = (undefined && undefined.__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 __spreadArray$p = (undefined && undefined.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nfunction toKeyString(keys) {\n return keys\n .map(function (v) {\n if (v == null) {\n return v;\n }\n else if (typeof v === 'number' || typeof v === 'string' || typeof v === 'boolean') {\n return v;\n }\n else if (typeof v === 'object') {\n return JSON.stringify(v);\n }\n return v;\n })\n .join('-');\n}\nfunction round(val) {\n var accuracy = 10000;\n if (Number.isInteger(val)) {\n return val;\n }\n else if (Math.abs(val) > accuracy) {\n return Math.trunc(val);\n }\n return Math.round(val * accuracy) / accuracy;\n}\nfunction fixNumericExtent(extent) {\n if (extent === undefined) {\n // Don't return a range, there is no range.\n return [];\n }\n var _a = __read$G(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 === Infinity && max === -Infinity) {\n // There's no data in the domain.\n return [];\n }\n if (min === Infinity) {\n min = 0;\n }\n if (max === -Infinity) {\n max = 0;\n }\n if (!(isNumber$4(min) && isNumber$4(max))) {\n return [];\n }\n return [min, max];\n}\nvar INVALID_VALUE = Symbol('invalid');\nvar DataModel = /** @class */ (function () {\n function DataModel(opts) {\n var e_1, _a, e_2, _b, e_3, _c;\n var _this = this;\n var props = opts.props;\n // Validate that keys appear before values in the definitions, as output ordering depends\n // on configuration ordering, but we process keys before values.\n var keys = true;\n try {\n for (var props_1 = __values$y(props), props_1_1 = props_1.next(); !props_1_1.done; props_1_1 = props_1.next()) {\n var next = props_1_1.value;\n if (next.type === 'key' && !keys) {\n throw new Error('AG Charts - internal config error: keys must come before values.');\n }\n if (next.type === 'value' && keys) {\n keys = false;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_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_1) throw e_1.error; }\n }\n this.opts = __assign$s({ dataVisible: true }, opts);\n this.keys = props\n .filter(function (def) { return def.type === 'key'; })\n .map(function (def, index) { return (__assign$s(__assign$s({}, def), { index: index, missing: 0 })); });\n this.values = props\n .filter(function (def) { return def.type === 'value'; })\n .map(function (def, index) { return (__assign$s(__assign$s({}, def), { index: index, missing: 0 })); });\n this.aggregates = props\n .filter(function (def) { return def.type === 'aggregate'; })\n .map(function (def, index) { return (__assign$s(__assign$s({}, def), { index: index })); });\n this.groupProcessors = props\n .filter(function (def) { return def.type === 'group-value-processor'; })\n .map(function (def, index) { return (__assign$s(__assign$s({}, def), { index: index })); });\n this.propertyProcessors = props\n .filter(function (def) { return def.type === 'property-value-processor'; })\n .map(function (def, index) { return (__assign$s(__assign$s({}, def), { index: index })); });\n this.reducers = props\n .filter(function (def) { return def.type === 'reducer'; })\n .map(function (def, index) { return (__assign$s(__assign$s({}, def), { index: index })); });\n this.processors = props\n .filter(function (def) { return def.type === 'processor'; })\n .map(function (def, index) { return (__assign$s(__assign$s({}, def), { index: index })); });\n try {\n for (var _d = __values$y(this.values), _e = _d.next(); !_e.done; _e = _d.next()) {\n var def = _e.value;\n if (def.property == null) {\n throw new Error(\"AG Charts - internal config error: no properties specified for value definitions: \" + JSON.stringify(def));\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_e && !_e.done && (_b = _d.return)) _b.call(_d);\n }\n finally { if (e_2) throw e_2.error; }\n }\n var verifyMatchGroupId = function (_a) {\n var e_4, _b;\n var matchGroupIds = _a.matchGroupIds;\n var _loop_1 = function (matchGroupId) {\n if (!_this.values.some(function (def) { return def.groupId === matchGroupId; })) {\n throw new Error(\"AG Charts - internal config error: matchGroupIds properties must match defined groups (\" + matchGroupId + \").\");\n }\n };\n try {\n for (var _c = __values$y(matchGroupIds !== null && matchGroupIds !== void 0 ? matchGroupIds : []), _d = _c.next(); !_d.done; _d = _c.next()) {\n var matchGroupId = _d.value;\n _loop_1(matchGroupId);\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_b = _c.return)) _b.call(_c);\n }\n finally { if (e_4) throw e_4.error; }\n }\n };\n var verifyMatchScopes = function (_a) {\n var e_5, _b;\n var matchScopes = _a.matchScopes;\n var _loop_2 = function (matchScope) {\n if (!_this.values.some(function (def) { var _a; return (_a = def.scopes) === null || _a === void 0 ? void 0 : _a.includes(matchScope); })) {\n throw new Error(\"AG Charts - internal config error: matchGroupIds properties must match defined groups (\" + matchScope + \").\");\n }\n };\n try {\n for (var _c = __values$y(matchScopes !== null && matchScopes !== void 0 ? matchScopes : []), _d = _c.next(); !_d.done; _d = _c.next()) {\n var matchScope = _d.value;\n _loop_2(matchScope);\n }\n }\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_b = _c.return)) _b.call(_c);\n }\n finally { if (e_5) throw e_5.error; }\n }\n };\n var verifyMatchIds = function (_a) {\n var e_6, _b;\n var matchIds = _a.matchIds;\n var _loop_3 = function (matchId) {\n if (!_this.values.some(function (def) { return def.id === matchId; })) {\n throw new Error(\"AG Charts - internal config error: matchGroupIds properties must match defined groups (\" + matchId + \").\");\n }\n };\n try {\n for (var _c = __values$y(matchIds !== null && matchIds !== void 0 ? matchIds : []), _d = _c.next(); !_d.done; _d = _c.next()) {\n var matchId = _d.value;\n _loop_3(matchId);\n }\n }\n catch (e_6_1) { e_6 = { error: e_6_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_b = _c.return)) _b.call(_c);\n }\n finally { if (e_6) throw e_6.error; }\n }\n };\n try {\n for (var _f = __values$y(__spreadArray$p(__spreadArray$p([], __read$G(this.groupProcessors)), __read$G(this.aggregates))), _g = _f.next(); !_g.done; _g = _f.next()) {\n var def = _g.value;\n verifyMatchIds(def);\n verifyMatchGroupId(def);\n verifyMatchScopes(def);\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (_g && !_g.done && (_c = _f.return)) _c.call(_f);\n }\n finally { if (e_3) throw e_3.error; }\n }\n }\n DataModel.prototype.resolveProcessedDataIndexById = function (scope, searchId, type) {\n var _a;\n if (type === void 0) { type = 'value'; }\n var _b = (_a = this.resolveProcessedDataDefById(scope, searchId, type)) !== null && _a !== void 0 ? _a : {}, index = _b.index, def = _b.def;\n return { type: type, index: index, def: def };\n };\n DataModel.prototype.resolveProcessedDataIndicesById = function (scope, searchId, type) {\n if (type === void 0) { type = 'value'; }\n return this.resolveProcessedDataDefsById(scope, searchId, type).map(function (_a) {\n var index = _a.index, def = _a.def;\n return ({ type: type, index: index, def: def });\n });\n };\n DataModel.prototype.resolveProcessedDataDefById = function (scope, searchId, type) {\n if (type === void 0) { type = 'value'; }\n return this.resolveProcessedDataDefsById(scope, searchId, type)[0];\n };\n DataModel.prototype.resolveProcessedDataDefsById = function (scope, searchId, type) {\n var e_7, _a;\n if (type === void 0) { type = 'value'; }\n var _b = this, keys = _b.keys, values = _b.values, aggregates = _b.aggregates, groupProcessors = _b.groupProcessors, reducers = _b.reducers;\n var match = function (_a) {\n var id = _a.id, scopes = _a.scopes;\n if (id == null)\n return false;\n if (scope != null && !(scopes === null || scopes === void 0 ? void 0 : scopes.includes(scope.id)))\n return false;\n if (typeof searchId === 'string') {\n return id === searchId;\n }\n return searchId.test(id);\n };\n var allDefs = [\n keys,\n values,\n aggregates,\n groupProcessors,\n reducers,\n ];\n var result = [];\n try {\n for (var allDefs_1 = __values$y(allDefs), allDefs_1_1 = allDefs_1.next(); !allDefs_1_1.done; allDefs_1_1 = allDefs_1.next()) {\n var defs = allDefs_1_1.value;\n result.push.apply(result, __spreadArray$p([], __read$G(defs.filter(match).map(function (def) { return ({ index: def.index, def: def }); }))));\n }\n }\n catch (e_7_1) { e_7 = { error: e_7_1 }; }\n finally {\n try {\n if (allDefs_1_1 && !allDefs_1_1.done && (_a = allDefs_1.return)) _a.call(allDefs_1);\n }\n finally { if (e_7) throw e_7.error; }\n }\n if (result.length > 0) {\n return result;\n }\n throw new Error(\"AG Charts - didn't find property definition for [\" + searchId + \", \" + scope.id + \", \" + type + \"]\");\n };\n DataModel.prototype.getDomain = function (scope, searchId, type, processedData) {\n var e_8, _a;\n var _b, _c, _d, _e;\n if (type === void 0) { type = 'value'; }\n var matches;\n try {\n matches = this.resolveProcessedDataIndicesById(scope, searchId, type);\n }\n catch (e) {\n if (typeof searchId !== 'string' && /didn't find property definition/.test(e.message))\n return [];\n throw e;\n }\n var domainProp;\n switch (type) {\n case 'key':\n domainProp = 'keys';\n break;\n case 'value':\n domainProp = 'values';\n break;\n case 'aggregate':\n domainProp = 'aggValues';\n break;\n case 'group-value-processor':\n domainProp = 'groups';\n break;\n default:\n return [];\n }\n var firstMatch = (_c = (_b = processedData.domain[domainProp]) === null || _b === void 0 ? void 0 : _b[matches[0].index]) !== null && _c !== void 0 ? _c : [];\n if (matches.length === 1) {\n return firstMatch;\n }\n var result = __spreadArray$p([], __read$G(firstMatch));\n try {\n for (var _f = __values$y(matches.slice(1)), _g = _f.next(); !_g.done; _g = _f.next()) {\n var idx = _g.value;\n extendDomain((_e = (_d = processedData.domain[domainProp]) === null || _d === void 0 ? void 0 : _d[idx.index]) !== null && _e !== void 0 ? _e : [], result);\n }\n }\n catch (e_8_1) { e_8 = { error: e_8_1 }; }\n finally {\n try {\n if (_g && !_g.done && (_a = _f.return)) _a.call(_f);\n }\n finally { if (e_8) throw e_8.error; }\n }\n return result;\n };\n DataModel.prototype.processData = function (data) {\n var e_9, _a, e_10, _b;\n var _c = this, _d = _c.opts, groupByKeys = _d.groupByKeys, groupByFn = _d.groupByFn, aggregates = _c.aggregates, groupProcessors = _c.groupProcessors, reducers = _c.reducers, processors = _c.processors, propertyProcessors = _c.propertyProcessors;\n var start = performance.now();\n try {\n for (var _e = __values$y(__spreadArray$p(__spreadArray$p([], __read$G(this.keys)), __read$G(this.values))), _f = _e.next(); !_f.done; _f = _e.next()) {\n var def = _f.value;\n def.missing = 0;\n }\n }\n catch (e_9_1) { e_9 = { error: e_9_1 }; }\n finally {\n try {\n if (_f && !_f.done && (_a = _e.return)) _a.call(_e);\n }\n finally { if (e_9) throw e_9.error; }\n }\n if (groupByKeys && this.keys.length === 0) {\n return undefined;\n }\n var processedData = this.extractData(data);\n if (groupByKeys) {\n processedData = this.groupData(processedData);\n }\n else if (groupByFn) {\n processedData = this.groupData(processedData, groupByFn(processedData));\n }\n if (groupProcessors.length > 0) {\n this.postProcessGroups(processedData);\n }\n if (aggregates.length > 0) {\n this.aggregateData(processedData);\n }\n if (propertyProcessors.length > 0) {\n this.postProcessProperties(processedData);\n }\n if (reducers.length > 0) {\n this.reduceData(processedData);\n }\n if (processors.length > 0) {\n this.postProcessData(processedData);\n }\n try {\n for (var _g = __values$y(__spreadArray$p(__spreadArray$p([], __read$G(this.keys)), __read$G(this.values))), _h = _g.next(); !_h.done; _h = _g.next()) {\n var def = _h.value;\n if (data.length > 0 && def.missing >= data.length) {\n Logger.warnOnce(\"the key '\" + def.property + \"' was not found in any data element.\");\n }\n }\n }\n catch (e_10_1) { e_10 = { error: e_10_1 }; }\n finally {\n try {\n if (_h && !_h.done && (_b = _g.return)) _b.call(_g);\n }\n finally { if (e_10) throw e_10.error; }\n }\n var end = performance.now();\n processedData.time = end - start;\n if (DataModel.DEBUG()) {\n logProcessedData(processedData);\n }\n return processedData;\n };\n DataModel.prototype.valueGroupIdxLookup = function (_a) {\n var matchGroupIds = _a.matchGroupIds, matchIds = _a.matchIds, matchScopes = _a.matchScopes;\n return this.values\n .map(function (def, index) { return ({ def: def, index: index }); })\n .filter(function (_a) {\n var def = _a.def;\n if (matchGroupIds && (def.groupId == null || !matchGroupIds.includes(def.groupId))) {\n return false;\n }\n if (matchIds && (def.id == null || !matchIds.includes(def.id))) {\n return false;\n }\n if (matchScopes && (def.scopes == null || !matchScopes.some(function (s) { var _a; return (_a = def.scopes) === null || _a === void 0 ? void 0 : _a.includes(s); }))) {\n return false;\n }\n return true;\n })\n .map(function (_a) {\n var index = _a.index;\n return index;\n });\n };\n DataModel.prototype.valueIdxLookup = function (scopes, prop) {\n var result;\n var noScopesToMatch = scopes == null || scopes.length === 0;\n var scopeMatch = function (compareTo) {\n var anyScope = compareTo == null;\n if (anyScope)\n return true;\n var noScopes = compareTo == null || compareTo.length === 0;\n if (noScopesToMatch === noScopes)\n return true;\n return compareTo === null || compareTo === void 0 ? void 0 : compareTo.some(function (s) { return scopes.includes(s); });\n };\n if (typeof prop === 'string') {\n result = this.values.findIndex(function (def) { return scopeMatch(def.scopes) && def.property === prop; });\n }\n else {\n result = this.values.findIndex(function (def) { return scopeMatch(def.scopes) && def.id === prop.id; });\n }\n if (result >= 0) {\n return result;\n }\n throw new Error(\"AG Charts - configuration error, unknown property \" + JSON.stringify(prop) + \" in scope(s) \" + JSON.stringify(scopes));\n };\n DataModel.prototype.extractData = function (data) {\n var e_11, _a, e_12, _b, e_13, _c, e_14, _d;\n var _e;\n var _f = this, keyDefs = _f.keys, valueDefs = _f.values, dataVisible = _f.opts.dataVisible;\n var _g = this.initDataDomainProcessor(), dataDomain = _g.dataDomain, processValue = _g.processValue, scopes = _g.scopes, allScopesHaveSameDefs = _g.allScopesHaveSameDefs;\n var resultData = new Array(dataVisible ? data.length : 0);\n var resultDataIdx = 0;\n var partialValidDataCount = 0;\n try {\n for (var data_1 = __values$y(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 var validScopes = scopes.size > 0 ? new Set(scopes) : undefined;\n var keys = dataVisible ? new Array(keyDefs.length) : undefined;\n var keyIdx = 0;\n var key = void 0;\n try {\n for (var keyDefs_1 = (e_12 = void 0, __values$y(keyDefs)), keyDefs_1_1 = keyDefs_1.next(); !keyDefs_1_1.done; keyDefs_1_1 = keyDefs_1.next()) {\n var def = keyDefs_1_1.value;\n key = processValue(def, datum, key);\n if (key === INVALID_VALUE)\n break;\n if (keys) {\n keys[keyIdx++] = key;\n }\n }\n }\n catch (e_12_1) { e_12 = { error: e_12_1 }; }\n finally {\n try {\n if (keyDefs_1_1 && !keyDefs_1_1.done && (_b = keyDefs_1.return)) _b.call(keyDefs_1);\n }\n finally { if (e_12) throw e_12.error; }\n }\n if (key === INVALID_VALUE)\n continue;\n var values = dataVisible && valueDefs.length > 0 ? new Array(valueDefs.length) : undefined;\n var valueIdx = 0;\n var value = void 0;\n try {\n for (var valueDefs_1 = (e_13 = void 0, __values$y(valueDefs)), valueDefs_1_1 = valueDefs_1.next(); !valueDefs_1_1.done; valueDefs_1_1 = valueDefs_1.next()) {\n var def = valueDefs_1_1.value;\n value = processValue(def, datum, value);\n if (value === INVALID_VALUE) {\n if (allScopesHaveSameDefs)\n break;\n try {\n for (var _h = (e_14 = void 0, __values$y((_e = def.scopes) !== null && _e !== void 0 ? _e : scopes)), _j = _h.next(); !_j.done; _j = _h.next()) {\n var scope = _j.value;\n validScopes === null || validScopes === void 0 ? void 0 : validScopes.delete(scope);\n }\n }\n catch (e_14_1) { e_14 = { error: e_14_1 }; }\n finally {\n try {\n if (_j && !_j.done && (_d = _h.return)) _d.call(_h);\n }\n finally { if (e_14) throw e_14.error; }\n }\n valueIdx++;\n if ((validScopes === null || validScopes === void 0 ? void 0 : validScopes.size) === 0)\n break;\n }\n else if (values) {\n values[valueIdx++] = value;\n }\n }\n }\n catch (e_13_1) { e_13 = { error: e_13_1 }; }\n finally {\n try {\n if (valueDefs_1_1 && !valueDefs_1_1.done && (_c = valueDefs_1.return)) _c.call(valueDefs_1);\n }\n finally { if (e_13) throw e_13.error; }\n }\n if (value === INVALID_VALUE && allScopesHaveSameDefs)\n continue;\n if ((validScopes === null || validScopes === void 0 ? void 0 : validScopes.size) === 0)\n continue;\n if (dataVisible) {\n var result = {\n datum: datum,\n keys: keys,\n values: values,\n };\n if (!allScopesHaveSameDefs && validScopes && validScopes.size < scopes.size) {\n partialValidDataCount++;\n result.validScopes = __spreadArray$p([], __read$G(validScopes));\n }\n resultData[resultDataIdx++] = result;\n }\n }\n }\n catch (e_11_1) { e_11 = { error: e_11_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_11) throw e_11.error; }\n }\n resultData.length = resultDataIdx;\n var propertyDomain = function (def) {\n var result = dataDomain.get(def).getDomain();\n if (Array.isArray(result) && result[0] > result[1]) {\n // Ignore starting values.\n return [];\n }\n return __spreadArray$p([], __read$G(result));\n };\n return {\n type: 'ungrouped',\n data: resultData,\n domain: {\n keys: keyDefs.map(function (def) { return propertyDomain(def); }),\n values: valueDefs.map(function (def) { return propertyDomain(def); }),\n },\n defs: {\n allScopesHaveSameDefs: allScopesHaveSameDefs,\n keys: keyDefs,\n values: valueDefs,\n },\n partialValidDataCount: partialValidDataCount,\n time: 0,\n };\n };\n DataModel.prototype.groupData = function (data, groupingFn) {\n var e_15, _a, e_16, _b;\n var _c, _d, _e, _f;\n var processedData = new Map();\n try {\n for (var _g = __values$y(data.data), _h = _g.next(); !_h.done; _h = _g.next()) {\n var dataEntry = _h.value;\n var keys = dataEntry.keys, values = dataEntry.values, datum = dataEntry.datum, validScopes = dataEntry.validScopes;\n var group = groupingFn ? groupingFn(dataEntry) : keys;\n var groupStr = toKeyString(group);\n if (processedData.has(groupStr)) {\n var existingData = processedData.get(groupStr);\n existingData.values.push(values);\n existingData.datum.push(datum);\n if (validScopes != null) {\n var _loop_4 = function (index) {\n var scope = (_e = existingData.validScopes) === null || _e === void 0 ? void 0 : _e[index];\n if (validScopes.some(function (s) { return s === scope; }))\n return \"continue\";\n (_f = existingData.validScopes) === null || _f === void 0 ? void 0 : _f.splice(index, 1);\n };\n // Intersection of existing validScopes with new validScopes.\n for (var index = 0; index < ((_d = (_c = existingData.validScopes) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0); index++) {\n _loop_4(index);\n }\n }\n }\n else {\n processedData.set(groupStr, { keys: group, values: [values], datum: [datum], validScopes: validScopes });\n }\n }\n }\n catch (e_15_1) { e_15 = { error: e_15_1 }; }\n finally {\n try {\n if (_h && !_h.done && (_a = _g.return)) _a.call(_g);\n }\n finally { if (e_15) throw e_15.error; }\n }\n var resultData = new Array(processedData.size);\n var resultGroups = new Array(processedData.size);\n var dataIndex = 0;\n try {\n for (var _j = __values$y(processedData.entries()), _k = _j.next(); !_k.done; _k = _j.next()) {\n var _l = __read$G(_k.value, 2), _m = _l[1], keys = _m.keys, values = _m.values, datum = _m.datum, validScopes = _m.validScopes;\n if ((validScopes === null || validScopes === void 0 ? void 0 : validScopes.length) === 0)\n continue;\n resultGroups[dataIndex] = keys;\n resultData[dataIndex++] = {\n keys: keys,\n values: values,\n datum: datum,\n validScopes: validScopes,\n };\n }\n }\n catch (e_16_1) { e_16 = { error: e_16_1 }; }\n finally {\n try {\n if (_k && !_k.done && (_b = _j.return)) _b.call(_j);\n }\n finally { if (e_16) throw e_16.error; }\n }\n return __assign$s(__assign$s({}, data), { type: 'grouped', data: resultData, domain: __assign$s(__assign$s({}, data.domain), { groups: resultGroups }) });\n };\n DataModel.prototype.aggregateData = function (processedData) {\n var e_17, _a;\n var _this = this;\n var _b, _c, _d, _e, _f, _g, _h, _j;\n var aggDefs = this.aggregates;\n if (!aggDefs)\n return;\n var resultAggValues = aggDefs.map(function () { return [Infinity, -Infinity]; });\n var resultAggValueIndices = aggDefs.map(function (def) { return _this.valueGroupIdxLookup(def); });\n var resultAggFns = aggDefs.map(function (def) { return def.aggregateFunction; });\n var resultGroupAggFns = aggDefs.map(function (def) { return def.groupAggregateFunction; });\n var resultFinalFns = aggDefs.map(function (def) { return def.finalFunction; });\n var _loop_5 = function (group) {\n var e_18, _m, e_19, _o;\n var values = group.values;\n var validScopes = group.validScopes;\n (_b = group.aggValues) !== null && _b !== void 0 ? _b : (group.aggValues = new Array(resultAggValueIndices.length));\n if (processedData.type === 'ungrouped') {\n values = [values];\n }\n var resultIdx = 0;\n try {\n for (var resultAggValueIndices_1 = (e_18 = void 0, __values$y(resultAggValueIndices)), resultAggValueIndices_1_1 = resultAggValueIndices_1.next(); !resultAggValueIndices_1_1.done; resultAggValueIndices_1_1 = resultAggValueIndices_1.next()) {\n var indices = resultAggValueIndices_1_1.value;\n var scopeValid = (_c = validScopes === null || validScopes === void 0 ? void 0 : validScopes.some(function (s) { var _a; return (_a = aggDefs[resultIdx].matchScopes) === null || _a === void 0 ? void 0 : _a.some(function (as) { return s === as; }); })) !== null && _c !== void 0 ? _c : true;\n if (!scopeValid) {\n resultIdx++;\n continue;\n }\n var groupAggValues = (_e = (_d = resultGroupAggFns[resultIdx]) === null || _d === void 0 ? void 0 : _d.call(resultGroupAggFns)) !== null && _e !== void 0 ? _e : extendDomain([]);\n var _loop_6 = function (distinctValues) {\n var valuesToAgg = indices.map(function (valueIdx) { return distinctValues[valueIdx]; });\n var valuesAgg = resultAggFns[resultIdx](valuesToAgg, group.keys);\n if (valuesAgg) {\n groupAggValues =\n (_g = (_f = resultGroupAggFns[resultIdx]) === null || _f === void 0 ? void 0 : _f.call(resultGroupAggFns, valuesAgg, groupAggValues)) !== null && _g !== void 0 ? _g : extendDomain(valuesAgg, groupAggValues);\n }\n };\n try {\n for (var values_1 = (e_19 = void 0, __values$y(values)), values_1_1 = values_1.next(); !values_1_1.done; values_1_1 = values_1.next()) {\n var distinctValues = values_1_1.value;\n _loop_6(distinctValues);\n }\n }\n catch (e_19_1) { e_19 = { error: e_19_1 }; }\n finally {\n try {\n if (values_1_1 && !values_1_1.done && (_o = values_1.return)) _o.call(values_1);\n }\n finally { if (e_19) throw e_19.error; }\n }\n var finalValues = ((_j = (_h = resultFinalFns[resultIdx]) === null || _h === void 0 ? void 0 : _h.call(resultFinalFns, groupAggValues)) !== null && _j !== void 0 ? _j : groupAggValues).map(function (v) {\n return round(v);\n });\n extendDomain(finalValues, resultAggValues[resultIdx]);\n group.aggValues[resultIdx++] = finalValues;\n }\n }\n catch (e_18_1) { e_18 = { error: e_18_1 }; }\n finally {\n try {\n if (resultAggValueIndices_1_1 && !resultAggValueIndices_1_1.done && (_m = resultAggValueIndices_1.return)) _m.call(resultAggValueIndices_1);\n }\n finally { if (e_18) throw e_18.error; }\n }\n };\n try {\n for (var _k = __values$y(processedData.data), _l = _k.next(); !_l.done; _l = _k.next()) {\n var group = _l.value;\n _loop_5(group);\n }\n }\n catch (e_17_1) { e_17 = { error: e_17_1 }; }\n finally {\n try {\n if (_l && !_l.done && (_a = _k.return)) _a.call(_k);\n }\n finally { if (e_17) throw e_17.error; }\n }\n processedData.domain.aggValues = resultAggValues;\n };\n DataModel.prototype.postProcessGroups = function (processedData) {\n var e_20, _a, e_21, _b, e_22, _c, e_23, _d, e_24, _e, e_25, _f;\n var _g, _h, _j, _k, _l;\n var groupProcessors = this.groupProcessors;\n if (!groupProcessors)\n return;\n var affectedIndices = new Set();\n var updatedDomains = new Map();\n var groupProcessorIndices = new Map();\n var groupProcessorInitFns = new Map();\n try {\n for (var groupProcessors_1 = __values$y(groupProcessors), groupProcessors_1_1 = groupProcessors_1.next(); !groupProcessors_1_1.done; groupProcessors_1_1 = groupProcessors_1.next()) {\n var processor = groupProcessors_1_1.value;\n var indices = this.valueGroupIdxLookup(processor);\n groupProcessorIndices.set(processor, indices);\n groupProcessorInitFns.set(processor, processor.adjust());\n try {\n for (var indices_1 = (e_21 = void 0, __values$y(indices)), indices_1_1 = indices_1.next(); !indices_1_1.done; indices_1_1 = indices_1.next()) {\n var idx = indices_1_1.value;\n var valueDef = this.values[idx];\n affectedIndices.add(idx);\n updatedDomains.set(idx, new DataDomain(valueDef.valueType === 'category' ? 'discrete' : 'continuous'));\n }\n }\n catch (e_21_1) { e_21 = { error: e_21_1 }; }\n finally {\n try {\n if (indices_1_1 && !indices_1_1.done && (_b = indices_1.return)) _b.call(indices_1);\n }\n finally { if (e_21) throw e_21.error; }\n }\n }\n }\n catch (e_20_1) { e_20 = { error: e_20_1 }; }\n finally {\n try {\n if (groupProcessors_1_1 && !groupProcessors_1_1.done && (_a = groupProcessors_1.return)) _a.call(groupProcessors_1);\n }\n finally { if (e_20) throw e_20.error; }\n }\n var updateDomains = function (values) {\n var e_26, _a;\n var _b;\n try {\n for (var affectedIndices_1 = __values$y(affectedIndices), affectedIndices_1_1 = affectedIndices_1.next(); !affectedIndices_1_1.done; affectedIndices_1_1 = affectedIndices_1.next()) {\n var valueIndex = affectedIndices_1_1.value;\n (_b = updatedDomains.get(valueIndex)) === null || _b === void 0 ? void 0 : _b.extend(values[valueIndex]);\n }\n }\n catch (e_26_1) { e_26 = { error: e_26_1 }; }\n finally {\n try {\n if (affectedIndices_1_1 && !affectedIndices_1_1.done && (_a = affectedIndices_1.return)) _a.call(affectedIndices_1);\n }\n finally { if (e_26) throw e_26.error; }\n }\n };\n try {\n for (var _m = __values$y(processedData.data), _o = _m.next(); !_o.done; _o = _m.next()) {\n var group = _o.value;\n var _loop_7 = function (processor) {\n var e_27, _s;\n var scopeValid = (_h = (_g = group.validScopes) === null || _g === void 0 ? void 0 : _g.some(function (s) { var _a; return (_a = processor.matchScopes) === null || _a === void 0 ? void 0 : _a.some(function (as) { return s === as; }); })) !== null && _h !== void 0 ? _h : true;\n if (!scopeValid) {\n return \"continue\";\n }\n var valueIndexes = (_j = groupProcessorIndices.get(processor)) !== null && _j !== void 0 ? _j : [];\n var adjustFn = (_l = (_k = groupProcessorInitFns.get(processor)) === null || _k === void 0 ? void 0 : _k()) !== null && _l !== void 0 ? _l : (function () { return undefined; });\n if (processedData.type === 'grouped') {\n try {\n for (var _t = (e_27 = void 0, __values$y(group.values)), _u = _t.next(); !_u.done; _u = _t.next()) {\n var values = _u.value;\n if (values) {\n adjustFn(values, valueIndexes);\n }\n }\n }\n catch (e_27_1) { e_27 = { error: e_27_1 }; }\n finally {\n try {\n if (_u && !_u.done && (_s = _t.return)) _s.call(_t);\n }\n finally { if (e_27) throw e_27.error; }\n }\n return \"continue\";\n }\n if (group.values) {\n adjustFn(group.values, valueIndexes);\n }\n };\n try {\n for (var groupProcessors_2 = (e_23 = void 0, __values$y(groupProcessors)), groupProcessors_2_1 = groupProcessors_2.next(); !groupProcessors_2_1.done; groupProcessors_2_1 = groupProcessors_2.next()) {\n var processor = groupProcessors_2_1.value;\n _loop_7(processor);\n }\n }\n catch (e_23_1) { e_23 = { error: e_23_1 }; }\n finally {\n try {\n if (groupProcessors_2_1 && !groupProcessors_2_1.done && (_d = groupProcessors_2.return)) _d.call(groupProcessors_2);\n }\n finally { if (e_23) throw e_23.error; }\n }\n if (processedData.type === 'grouped') {\n try {\n for (var _p = (e_24 = void 0, __values$y(group.values)), _q = _p.next(); !_q.done; _q = _p.next()) {\n var values = _q.value;\n updateDomains(values);\n }\n }\n catch (e_24_1) { e_24 = { error: e_24_1 }; }\n finally {\n try {\n if (_q && !_q.done && (_e = _p.return)) _e.call(_p);\n }\n finally { if (e_24) throw e_24.error; }\n }\n }\n else {\n updateDomains(group.values);\n }\n }\n }\n catch (e_22_1) { e_22 = { error: e_22_1 }; }\n finally {\n try {\n if (_o && !_o.done && (_c = _m.return)) _c.call(_m);\n }\n finally { if (e_22) throw e_22.error; }\n }\n try {\n for (var updatedDomains_1 = __values$y(updatedDomains), updatedDomains_1_1 = updatedDomains_1.next(); !updatedDomains_1_1.done; updatedDomains_1_1 = updatedDomains_1.next()) {\n var _r = __read$G(updatedDomains_1_1.value, 2), idx = _r[0], dataDomain = _r[1];\n processedData.domain.values[idx] = __spreadArray$p([], __read$G(dataDomain.getDomain()));\n }\n }\n catch (e_25_1) { e_25 = { error: e_25_1 }; }\n finally {\n try {\n if (updatedDomains_1_1 && !updatedDomains_1_1.done && (_f = updatedDomains_1.return)) _f.call(updatedDomains_1);\n }\n finally { if (e_25) throw e_25.error; }\n }\n };\n DataModel.prototype.postProcessProperties = function (processedData) {\n var e_28, _a;\n var propertyProcessors = this.propertyProcessors;\n if (!propertyProcessors)\n return;\n try {\n for (var propertyProcessors_1 = __values$y(propertyProcessors), propertyProcessors_1_1 = propertyProcessors_1.next(); !propertyProcessors_1_1.done; propertyProcessors_1_1 = propertyProcessors_1.next()) {\n var _b = propertyProcessors_1_1.value, adjust = _b.adjust, property = _b.property, scopes = _b.scopes;\n adjust()(processedData, this.valueIdxLookup(scopes !== null && scopes !== void 0 ? scopes : [], property));\n }\n }\n catch (e_28_1) { e_28 = { error: e_28_1 }; }\n finally {\n try {\n if (propertyProcessors_1_1 && !propertyProcessors_1_1.done && (_a = propertyProcessors_1.return)) _a.call(propertyProcessors_1);\n }\n finally { if (e_28) throw e_28.error; }\n }\n };\n DataModel.prototype.reduceData = function (processedData) {\n var e_29, _a;\n var _b, _c, _d;\n var reducerDefs = this.reducers;\n var scopes = reducerDefs.map(function (def) { return def.scopes; });\n var reducers = reducerDefs.map(function (def) { return def.reducer(); });\n var accValues = reducerDefs.map(function (def) { return def.initialValue; });\n var _loop_8 = function (group) {\n var e_30, _g;\n var reducerIndex = 0;\n try {\n for (var reducers_1 = (e_30 = void 0, __values$y(reducers)), reducers_1_1 = reducers_1.next(); !reducers_1_1.done; reducers_1_1 = reducers_1.next()) {\n var reducer = reducers_1_1.value;\n var scopeValid = (_c = (_b = group.validScopes) === null || _b === void 0 ? void 0 : _b.some(function (s) { var _a; return (_a = scopes[reducerIndex]) === null || _a === void 0 ? void 0 : _a.some(function (as) { return s === as; }); })) !== null && _c !== void 0 ? _c : true;\n if (!scopeValid) {\n reducerIndex++;\n continue;\n }\n accValues[reducerIndex] = reducer(accValues[reducerIndex], group);\n reducerIndex++;\n }\n }\n catch (e_30_1) { e_30 = { error: e_30_1 }; }\n finally {\n try {\n if (reducers_1_1 && !reducers_1_1.done && (_g = reducers_1.return)) _g.call(reducers_1);\n }\n finally { if (e_30) throw e_30.error; }\n }\n };\n try {\n for (var _e = __values$y(processedData.data), _f = _e.next(); !_f.done; _f = _e.next()) {\n var group = _f.value;\n _loop_8(group);\n }\n }\n catch (e_29_1) { e_29 = { error: e_29_1 }; }\n finally {\n try {\n if (_f && !_f.done && (_a = _e.return)) _a.call(_e);\n }\n finally { if (e_29) throw e_29.error; }\n }\n for (var accIdx = 0; accIdx < accValues.length; accIdx++) {\n (_d = processedData.reduced) !== null && _d !== void 0 ? _d : (processedData.reduced = {});\n processedData.reduced[reducerDefs[accIdx].property] = accValues[accIdx];\n }\n };\n DataModel.prototype.postProcessData = function (processedData) {\n var e_31, _a;\n var _b;\n var processorDefs = this.processors;\n try {\n for (var processorDefs_1 = __values$y(processorDefs), processorDefs_1_1 = processorDefs_1.next(); !processorDefs_1_1.done; processorDefs_1_1 = processorDefs_1.next()) {\n var def = processorDefs_1_1.value;\n (_b = processedData.reduced) !== null && _b !== void 0 ? _b : (processedData.reduced = {});\n processedData.reduced[def.property] = def.calculate(processedData);\n }\n }\n catch (e_31_1) { e_31 = { error: e_31_1 }; }\n finally {\n try {\n if (processorDefs_1_1 && !processorDefs_1_1.done && (_a = processorDefs_1.return)) _a.call(processorDefs_1);\n }\n finally { if (e_31) throw e_31.error; }\n }\n };\n DataModel.prototype.initDataDomainProcessor = function () {\n var e_32, _a, e_33, _b;\n var _c;\n var _d = this, keyDefs = _d.keys, valueDefs = _d.values;\n var scopes = new Set();\n try {\n for (var valueDefs_2 = __values$y(valueDefs), valueDefs_2_1 = valueDefs_2.next(); !valueDefs_2_1.done; valueDefs_2_1 = valueDefs_2.next()) {\n var valueDef = valueDefs_2_1.value;\n try {\n for (var _e = (e_33 = void 0, __values$y((_c = valueDef.scopes) !== null && _c !== void 0 ? _c : [])), _f = _e.next(); !_f.done; _f = _e.next()) {\n var scope = _f.value;\n scopes.add(scope);\n }\n }\n catch (e_33_1) { e_33 = { error: e_33_1 }; }\n finally {\n try {\n if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\n }\n finally { if (e_33) throw e_33.error; }\n }\n }\n }\n catch (e_32_1) { e_32 = { error: e_32_1 }; }\n finally {\n try {\n if (valueDefs_2_1 && !valueDefs_2_1.done && (_a = valueDefs_2.return)) _a.call(valueDefs_2);\n }\n finally { if (e_32) throw e_32.error; }\n }\n var scopesCount = scopes.size;\n var dataDomain = new Map();\n var processorFns = new Map();\n var allScopesHaveSameDefs = true;\n var initDataDomainKey = function (key, type, updateDataDomain) {\n var _a;\n if (updateDataDomain === void 0) { updateDataDomain = dataDomain; }\n if (type === 'category') {\n updateDataDomain.set(key, new DataDomain('discrete'));\n }\n else {\n updateDataDomain.set(key, new DataDomain('continuous'));\n allScopesHaveSameDefs && (allScopesHaveSameDefs = ((_a = key.scopes) !== null && _a !== void 0 ? _a : []).length === scopesCount);\n }\n };\n var initDataDomain = function () {\n keyDefs.forEach(function (def) { return initDataDomainKey(def, def.valueType); });\n valueDefs.forEach(function (def) { return initDataDomainKey(def, def.valueType); });\n };\n initDataDomain();\n var accessors = this.buildAccessors.apply(this, __spreadArray$p(__spreadArray$p([], __read$G(keyDefs)), __read$G(valueDefs)));\n var processValue = function (def, datum, previousDatum) {\n var _a, _b, _c, _d;\n var hasAccessor = def.property in accessors;\n var valueInDatum = false;\n var value;\n if (hasAccessor) {\n try {\n value = accessors[def.property](datum);\n }\n catch (error) {\n // Swallow errors - these get reported as missing values to the user later.\n }\n valueInDatum = value !== undefined;\n }\n else {\n valueInDatum = def.property in datum;\n value = valueInDatum ? datum[def.property] : def.missingValue;\n }\n var missingValueDef = 'missingValue' in def;\n if (!valueInDatum && !missingValueDef) {\n def.missing++;\n }\n if (!dataDomain.has(def)) {\n initDataDomain();\n }\n if (valueInDatum) {\n var valid = (_b = (_a = def.validation) === null || _a === void 0 ? void 0 : _a.call(def, value, datum)) !== null && _b !== void 0 ? _b : true;\n if (!valid) {\n if ('invalidValue' in def) {\n value = def.invalidValue;\n }\n else {\n return INVALID_VALUE;\n }\n }\n }\n if (def.processor) {\n if (!processorFns.has(def)) {\n processorFns.set(def, def.processor());\n }\n value = (_c = processorFns.get(def)) === null || _c === void 0 ? void 0 : _c(value, previousDatum !== INVALID_VALUE ? previousDatum : undefined);\n }\n (_d = dataDomain.get(def)) === null || _d === void 0 ? void 0 : _d.extend(value);\n return value;\n };\n return { dataDomain: dataDomain, processValue: processValue, initDataDomain: initDataDomain, scopes: scopes, allScopesHaveSameDefs: allScopesHaveSameDefs };\n };\n DataModel.prototype.buildAccessors = function () {\n var e_34, _a;\n var defs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n defs[_i] = arguments[_i];\n }\n var result = {};\n try {\n for (var defs_1 = __values$y(defs), defs_1_1 = defs_1.next(); !defs_1_1.done; defs_1_1 = defs_1.next()) {\n var def = defs_1_1.value;\n var isPath = def.property.indexOf('.') >= 0 || def.property.indexOf('[') >= 0;\n if (!isPath)\n continue;\n var fnBody = void 0;\n if (def.property.startsWith('[')) {\n fnBody = \"return datum\" + def.property + \";\";\n }\n else {\n fnBody = \"return datum.\" + def.property + \";\";\n }\n result[def.property] = new Function('datum', fnBody);\n }\n }\n catch (e_34_1) { e_34 = { error: e_34_1 }; }\n finally {\n try {\n if (defs_1_1 && !defs_1_1.done && (_a = defs_1.return)) _a.call(defs_1);\n }\n finally { if (e_34) throw e_34.error; }\n }\n return result;\n };\n DataModel.DEBUG = function () { var _a; return (_a = [true, 'data-model'].includes(windowValue('agChartsDebug'))) !== null && _a !== void 0 ? _a : false; };\n return DataModel;\n}());\nfunction logProcessedData(processedData) {\n var _a, _b;\n var log = function (name, data) {\n if (data.length > 0) {\n // eslint-disable-next-line no-console\n console.log(\"DataModel.processData() - \" + name);\n // eslint-disable-next-line no-console\n console.table(data);\n }\n };\n // eslint-disable-next-line no-console\n console.log('DataModel.processData() - processedData', processedData);\n log('Key Domains', processedData.domain.keys);\n log('Group Domains', (_a = processedData.domain.groups) !== null && _a !== void 0 ? _a : []);\n log('Value Domains', processedData.domain.values);\n log('Aggregate Domains', (_b = processedData.domain.aggValues) !== null && _b !== void 0 ? _b : []);\n if (processedData.type === 'grouped') {\n var flattenedValues = processedData.data.reduce(function (acc, next) {\n var _a, _b;\n var keys = (_a = next.keys) !== null && _a !== void 0 ? _a : [];\n var aggValues = (_b = next.aggValues) !== null && _b !== void 0 ? _b : [];\n var skipKeys = next.keys.map(function () { return undefined; });\n var skipAggValues = aggValues === null || aggValues === void 0 ? void 0 : aggValues.map(function () { return undefined; });\n acc.push.apply(acc, __spreadArray$p([], __read$G(next.values.map(function (v, i) { return __spreadArray$p(__spreadArray$p(__spreadArray$p([], __read$G((i === 0 ? keys : skipKeys))), __read$G((v !== null && v !== void 0 ? v : []))), __read$G((i == 0 ? aggValues : skipAggValues))); }))));\n return acc;\n }, []);\n log('Values', flattenedValues);\n }\n else {\n var flattenedValues = processedData.data.reduce(function (acc, next) {\n var _a;\n var aggValues = (_a = next.aggValues) !== null && _a !== void 0 ? _a : [];\n acc.push(__spreadArray$p(__spreadArray$p(__spreadArray$p([], __read$G(next.keys)), __read$G(next.values)), __read$G(aggValues)));\n return acc;\n }, []);\n log('Values', flattenedValues);\n }\n}\n\nfunction createDeprecationWarning() {\n return function (key, message) {\n var msg = [\"Property [\" + key + \"] is deprecated.\", message].filter(function (v) { return v != null; }).join(' ');\n Logger.warnOnce(msg);\n };\n}\nfunction Deprecated(message, opts) {\n var def = opts === null || opts === void 0 ? void 0 : opts.default;\n var warn = createDeprecationWarning();\n return addTransformToInstanceProperty(function (_, key, value) {\n if (value !== def) {\n warn(key.toString(), message);\n }\n return value;\n });\n}\nfunction DeprecatedAndRenamedTo(newPropName, mapValue) {\n var warnDeprecated = createDeprecationWarning();\n return addTransformToInstanceProperty(function (target, key, value) {\n if (value !== target[newPropName]) {\n warnDeprecated(key.toString(), \"Use [\" + newPropName + \"] instead.\");\n target[newPropName] = mapValue ? mapValue(value) : value;\n }\n return BREAK_TRANSFORM_CHAIN;\n }, function (target, key) {\n warnDeprecated(key.toString(), \"Use [\" + newPropName + \"] instead.\");\n return target[newPropName];\n });\n}\n\nvar __decorate$1X = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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$x = (undefined && undefined.__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 DEFAULT_TOOLTIP_CLASS = 'ag-chart-tooltip';\nvar defaultTooltipCss$1 = \"\\n.\" + DEFAULT_TOOLTIP_CLASS + \" {\\n transition: transform 0.1s ease;\\n display: table;\\n position: fixed;\\n left: 0px;\\n top: 0px;\\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.\" + DEFAULT_TOOLTIP_CLASS + \"-no-interaction {\\n pointer-events: none;\\n user-select: none;\\n}\\n\\n.\" + DEFAULT_TOOLTIP_CLASS + \"-no-animation {\\n transition: none !important;\\n}\\n\\n.\" + DEFAULT_TOOLTIP_CLASS + \"-hidden {\\n visibility: hidden;\\n}\\n\\n.\" + DEFAULT_TOOLTIP_CLASS + \"-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.\" + DEFAULT_TOOLTIP_CLASS + \"-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.\" + DEFAULT_TOOLTIP_CLASS + \"-content:empty {\\n padding: 0;\\n height: 7px;\\n}\\n\\n.\" + DEFAULT_TOOLTIP_CLASS + \"-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.\" + DEFAULT_TOOLTIP_CLASS + \"-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\";\nfunction toTooltipHtml$1(input, defaults) {\n var _a, _b, _c, _d;\n if (typeof input === 'string') {\n return input;\n }\n defaults = defaults !== null && defaults !== void 0 ? defaults : {};\n var _e = input.content, content = _e === void 0 ? (_a = defaults.content) !== null && _a !== void 0 ? _a : '' : _e, _f = input.title, title = _f === void 0 ? (_b = defaults.title) !== null && _b !== void 0 ? _b : undefined : _f, _g = input.color, color = _g === void 0 ? (_c = defaults.color) !== null && _c !== void 0 ? _c : 'white' : _g, _h = input.backgroundColor, backgroundColor = _h === void 0 ? (_d = defaults.backgroundColor) !== null && _d !== void 0 ? _d : '#888' : _h;\n var titleHtml = title\n ? \"
\" + title + \"
\"\n : '';\n return titleHtml + \"
\" + content + \"
\";\n}\nvar POSITION_TYPES = ['pointer', 'node'];\nvar POSITION_TYPE = predicateWithMessage(function (v) { return POSITION_TYPES.includes(v); }, \"expecting a position type keyword such as 'pointer' or 'node'\");\nvar TooltipPosition = /** @class */ (function () {\n function TooltipPosition() {\n /** The type of positioning for the tooltip. By default, the tooltip follows the pointer. */\n this.type = 'pointer';\n /** The horizontal offset in pixels for the position of the tooltip. */\n this.xOffset = 0;\n /** The vertical offset in pixels for the position of the tooltip. */\n this.yOffset = 0;\n }\n __decorate$1X([\n Validate(POSITION_TYPE)\n ], TooltipPosition.prototype, \"type\", void 0);\n __decorate$1X([\n Validate(NUMBER())\n ], TooltipPosition.prototype, \"xOffset\", void 0);\n __decorate$1X([\n Validate(NUMBER())\n ], TooltipPosition.prototype, \"yOffset\", void 0);\n return TooltipPosition;\n}());\nvar Tooltip = /** @class */ (function () {\n function Tooltip(canvasElement, document, container) {\n var _this = this;\n this.enableInteraction = false;\n this.enabled = true;\n this.showArrow = undefined;\n this.class = undefined;\n this.lastClass = undefined;\n this.delay = 0;\n this.range = 'nearest';\n this.position = new TooltipPosition();\n this.showTimeout = 0;\n this._showArrow = true;\n this.tooltipRoot = container;\n var element = document.createElement('div');\n this.element = this.tooltipRoot.appendChild(element);\n this.element.classList.add(DEFAULT_TOOLTIP_CLASS);\n this.canvasElement = canvasElement;\n // Detect when the chart becomes invisible and hide the tooltip as well.\n if (window.IntersectionObserver) {\n var observer = new IntersectionObserver(function (entries) {\n var e_1, _a;\n try {\n for (var entries_1 = __values$x(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 === _this.canvasElement && 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: this.tooltipRoot });\n observer.observe(this.canvasElement);\n this.observer = observer;\n }\n if (Tooltip.tooltipDocuments.indexOf(document) < 0) {\n var styleElement = document.createElement('style');\n styleElement.innerHTML = defaultTooltipCss$1;\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 Tooltip.tooltipDocuments.push(document);\n }\n }\n Tooltip.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.canvasElement);\n }\n };\n Tooltip.prototype.isVisible = function () {\n var element = this.element;\n return !element.classList.contains(DEFAULT_TOOLTIP_CLASS + '-hidden');\n };\n Tooltip.prototype.updateClass = function (visible, showArrow) {\n var _a = this, element = _a.element, newClass = _a.class, lastClass = _a.lastClass, enableInteraction = _a.enableInteraction;\n var wasVisible = this.isVisible();\n var toggleClass = function (name, include) {\n var className = DEFAULT_TOOLTIP_CLASS + \"-\" + name;\n if (include) {\n element.classList.add(className);\n }\n else {\n element.classList.remove(className);\n }\n };\n toggleClass('no-animation', !wasVisible && !!visible); // No animation on first show.\n toggleClass('no-interaction', !enableInteraction); // Prevent interaction.\n toggleClass('hidden', !visible); // Hide if not visible.\n toggleClass('arrow', !!showArrow); // Add arrow if tooltip is constrained.\n if (newClass !== lastClass) {\n if (lastClass) {\n element.classList.remove(lastClass);\n }\n if (newClass) {\n element.classList.add(newClass);\n }\n this.lastClass = newClass;\n }\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 Tooltip.prototype.show = function (meta, html, instantly) {\n var _this = this;\n var _a, _b, _c, _d, _e, _f, _g;\n if (instantly === void 0) { instantly = false; }\n var _h = this, element = _h.element, canvasElement = _h.canvasElement;\n if (html !== undefined) {\n element.innerHTML = html;\n }\n else if (!element.innerHTML) {\n this.toggle(false);\n return;\n }\n var limit = function (low, actual, high) {\n return Math.max(Math.min(actual, high), low);\n };\n var xOffset = (_b = (_a = meta.position) === null || _a === void 0 ? void 0 : _a.xOffset) !== null && _b !== void 0 ? _b : 0;\n var yOffset = (_d = (_c = meta.position) === null || _c === void 0 ? void 0 : _c.yOffset) !== null && _d !== void 0 ? _d : 0;\n var canvasRect = canvasElement.getBoundingClientRect();\n var naiveLeft = canvasRect.left + meta.offsetX - element.clientWidth / 2 + xOffset;\n var naiveTop = canvasRect.top + meta.offsetY - element.clientHeight - 8 + yOffset;\n var windowBounds = this.getWindowBoundingBox();\n var maxLeft = windowBounds.x + windowBounds.width - element.clientWidth - 1;\n var maxTop = windowBounds.y + windowBounds.height - element.clientHeight;\n var left = limit(windowBounds.x, naiveLeft, maxLeft);\n var top = limit(windowBounds.y, naiveTop, maxTop);\n var constrained = left !== naiveLeft || top !== naiveTop;\n var defaultShowArrow = !constrained && !xOffset && !yOffset;\n var showArrow = (_f = (_e = meta.showArrow) !== null && _e !== void 0 ? _e : this.showArrow) !== null && _f !== void 0 ? _f : defaultShowArrow;\n this.updateShowArrow(showArrow);\n element.style.transform = \"translate(\" + Math.round(left) + \"px, \" + Math.round(top) + \"px)\";\n this.enableInteraction = (_g = meta.enableInteraction) !== null && _g !== void 0 ? _g : false;\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 Tooltip.prototype.getWindowBoundingBox = function () {\n return new BBox(0, 0, window.innerWidth, window.innerHeight);\n };\n Tooltip.prototype.toggle = function (visible) {\n if (!visible) {\n window.clearTimeout(this.showTimeout);\n }\n this.updateClass(visible, this._showArrow);\n };\n Tooltip.prototype.pointerLeftOntoTooltip = function (event) {\n var _a;\n if (!this.enableInteraction)\n return false;\n var classList = (_a = event.sourceEvent.relatedTarget) === null || _a === void 0 ? void 0 : _a.classList;\n var classes = ['', '-title', '-content'];\n var classListContains = Boolean(classes.filter(function (c) { return classList === null || classList === void 0 ? void 0 : classList.contains(\"\" + DEFAULT_TOOLTIP_CLASS + c); }));\n return classList !== undefined && classListContains;\n };\n Tooltip.prototype.updateShowArrow = function (show) {\n this._showArrow = show;\n };\n Tooltip.tooltipDocuments = [];\n __decorate$1X([\n Validate(BOOLEAN)\n ], Tooltip.prototype, \"enabled\", void 0);\n __decorate$1X([\n Validate(OPT_BOOLEAN)\n ], Tooltip.prototype, \"showArrow\", void 0);\n __decorate$1X([\n Validate(OPT_STRING)\n ], Tooltip.prototype, \"class\", void 0);\n __decorate$1X([\n Validate(NUMBER(0))\n ], Tooltip.prototype, \"delay\", void 0);\n __decorate$1X([\n DeprecatedAndRenamedTo('range', function (value) { return (value ? 'nearest' : 'exact'); })\n ], Tooltip.prototype, \"tracking\", void 0);\n __decorate$1X([\n Validate(INTERACTION_RANGE)\n ], Tooltip.prototype, \"range\", void 0);\n return Tooltip;\n}());\n\nvar __values$w = (undefined && undefined.__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};\nfunction sumValues(values, accumulator) {\n var e_1, _a;\n if (accumulator === void 0) { accumulator = [0, 0]; }\n try {\n for (var values_1 = __values$w(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 (typeof value !== 'number') {\n continue;\n }\n if (value < 0) {\n accumulator[0] += value;\n }\n if (value > 0) {\n accumulator[1] += 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 accumulator;\n}\nfunction groupSum(scope, id, matchGroupId) {\n return {\n id: id,\n scopes: [scope.id],\n type: 'aggregate',\n matchGroupIds: matchGroupId ? [matchGroupId] : undefined,\n aggregateFunction: function (values) { return sumValues(values); },\n groupAggregateFunction: function (next, acc) {\n var _a, _b;\n if (acc === void 0) { acc = [0, 0]; }\n acc[0] += (_a = next === null || next === void 0 ? void 0 : next[0]) !== null && _a !== void 0 ? _a : 0;\n acc[1] += (_b = next === null || next === void 0 ? void 0 : next[1]) !== null && _b !== void 0 ? _b : 0;\n return acc;\n },\n };\n}\nfunction groupCount(scope, id) {\n return {\n id: id,\n scopes: [scope.id],\n type: 'aggregate',\n aggregateFunction: function () { return [0, 1]; },\n groupAggregateFunction: function (next, acc) {\n var _a, _b;\n if (acc === void 0) { acc = [0, 0]; }\n acc[0] += (_a = next === null || next === void 0 ? void 0 : next[0]) !== null && _a !== void 0 ? _a : 0;\n acc[1] += (_b = next === null || next === void 0 ? void 0 : next[1]) !== null && _b !== void 0 ? _b : 0;\n return acc;\n },\n };\n}\nfunction groupAverage(scope, id, matchGroupId) {\n var result = {\n id: id,\n scopes: [scope.id],\n matchGroupIds: matchGroupId ? [matchGroupId] : undefined,\n type: 'aggregate',\n aggregateFunction: function (values) { return sumValues(values); },\n groupAggregateFunction: function (next, acc) {\n var _a, _b;\n if (acc === void 0) { acc = [0, 0, -1]; }\n acc[0] += (_a = next === null || next === void 0 ? void 0 : next[0]) !== null && _a !== void 0 ? _a : 0;\n acc[1] += (_b = next === null || next === void 0 ? void 0 : next[1]) !== null && _b !== void 0 ? _b : 0;\n acc[2]++;\n return acc;\n },\n finalFunction: function (acc) {\n if (acc === void 0) { acc = [0, 0, 0]; }\n var result = acc[0] + acc[1];\n if (result >= 0) {\n return [0, result / acc[2]];\n }\n return [result / acc[2], 0];\n },\n };\n return result;\n}\nfunction area(scope, id, aggFn, matchGroupId) {\n var result = {\n id: id,\n scopes: [scope.id],\n matchGroupIds: matchGroupId ? [matchGroupId] : undefined,\n type: 'aggregate',\n aggregateFunction: function (values, keyRange) {\n if (keyRange === void 0) { keyRange = []; }\n var keyWidth = keyRange[1] - keyRange[0];\n return aggFn.aggregateFunction(values).map(function (v) { return v / keyWidth; });\n },\n };\n if (aggFn.groupAggregateFunction) {\n result.groupAggregateFunction = aggFn.groupAggregateFunction;\n }\n return result;\n}\nfunction accumulatedValue() {\n return function () {\n var value = 0;\n return function (datum) {\n if (typeof datum !== 'number')\n return datum;\n if (isNaN(datum))\n return datum;\n value += datum;\n return value;\n };\n };\n}\n\nvar memorizedFns = new Map();\nfunction memo(params, fnGenerator) {\n var _a, _b, _c;\n var serialisedParams = JSON.stringify(params, null, 0);\n if (!memorizedFns.has(fnGenerator)) {\n memorizedFns.set(fnGenerator, new Map());\n }\n if (!((_a = memorizedFns.get(fnGenerator)) === null || _a === void 0 ? void 0 : _a.has(serialisedParams))) {\n (_b = memorizedFns.get(fnGenerator)) === null || _b === void 0 ? void 0 : _b.set(serialisedParams, fnGenerator(params));\n }\n return (_c = memorizedFns.get(fnGenerator)) === null || _c === void 0 ? void 0 : _c.get(serialisedParams);\n}\n\nvar __read$F = (undefined && undefined.__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 __spreadArray$o = (undefined && undefined.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar __values$v = (undefined && undefined.__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 SMALLEST_KEY_INTERVAL = {\n type: 'reducer',\n property: 'smallestKeyInterval',\n initialValue: Infinity,\n reducer: function () {\n var prevX = NaN;\n return function (smallestSoFar, next) {\n var nextX = next.keys[0];\n var interval = Math.abs(nextX - prevX);\n prevX = nextX;\n if (!isNaN(interval) && interval > 0 && interval < smallestSoFar) {\n return interval;\n }\n return smallestSoFar;\n };\n },\n};\nvar SORT_DOMAIN_GROUPS = {\n type: 'processor',\n property: 'sortedGroupDomain',\n calculate: function (_a) {\n var groups = _a.domain.groups;\n if (groups == null)\n return undefined;\n return __spreadArray$o([], __read$F(groups)).sort(function (a, b) {\n for (var i = 0; i < a.length; i++) {\n var result = a[i] - b[i];\n if (result !== 0) {\n return result;\n }\n }\n return 0;\n });\n },\n};\nfunction normaliseFnBuilder(_a) {\n var normaliseTo = _a.normaliseTo, mode = _a.mode;\n var normalise = function (val, extent) {\n var result = (val * normaliseTo) / extent;\n if (result >= 0) {\n return Math.min(normaliseTo, result);\n }\n return Math.max(-normaliseTo, result);\n };\n return function () { return function () { return function (values, valueIndexes) {\n var e_2, _a, e_3, _b;\n var valuesExtent = [0, 0];\n try {\n for (var valueIndexes_1 = __values$v(valueIndexes), valueIndexes_1_1 = valueIndexes_1.next(); !valueIndexes_1_1.done; valueIndexes_1_1 = valueIndexes_1.next()) {\n var valueIdx = valueIndexes_1_1.value;\n var value = values[valueIdx];\n var valIdx = value < 0 ? 0 : 1;\n if (mode === 'sum') {\n valuesExtent[valIdx] += value;\n }\n else if (valIdx === 0) {\n valuesExtent[valIdx] = Math.min(valuesExtent[valIdx], value);\n }\n else {\n valuesExtent[valIdx] = Math.max(valuesExtent[valIdx], value);\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (valueIndexes_1_1 && !valueIndexes_1_1.done && (_a = valueIndexes_1.return)) _a.call(valueIndexes_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n var extent = Math.max(Math.abs(valuesExtent[0]), valuesExtent[1]);\n try {\n for (var valueIndexes_2 = __values$v(valueIndexes), valueIndexes_2_1 = valueIndexes_2.next(); !valueIndexes_2_1.done; valueIndexes_2_1 = valueIndexes_2.next()) {\n var valueIdx = valueIndexes_2_1.value;\n values[valueIdx] = normalise(values[valueIdx], extent);\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (valueIndexes_2_1 && !valueIndexes_2_1.done && (_b = valueIndexes_2.return)) _b.call(valueIndexes_2);\n }\n finally { if (e_3) throw e_3.error; }\n }\n }; }; };\n}\nfunction normaliseGroupTo(scope, matchGroupIds, normaliseTo, mode) {\n if (mode === void 0) { mode = 'sum'; }\n return {\n scopes: [scope.id],\n type: 'group-value-processor',\n matchGroupIds: matchGroupIds,\n adjust: memo({ normaliseTo: normaliseTo, mode: mode }, normaliseFnBuilder),\n };\n}\nfunction normalisePropertyFnBuilder(_a) {\n var normaliseTo = _a.normaliseTo, rangeMin = _a.rangeMin, rangeMax = _a.rangeMax;\n var normaliseSpan = normaliseTo[1] - normaliseTo[0];\n var normalise = function (val, start, span) {\n var result = normaliseTo[0] + ((val - start) / span) * normaliseSpan;\n if (span === 0)\n return normaliseTo[1];\n if (result >= normaliseTo[1])\n return normaliseTo[1];\n if (result < normaliseTo[0])\n return normaliseTo[0];\n return result;\n };\n return function () { return function (pData, pIdx) {\n var e_4, _a, e_5, _b;\n var _c = __read$F(pData.domain.values[pIdx], 2), start = _c[0], end = _c[1];\n if (rangeMin != null)\n start = rangeMin;\n if (rangeMax != null)\n end = rangeMax;\n var span = end - start;\n pData.domain.values[pIdx] = [normaliseTo[0], normaliseTo[1]];\n try {\n for (var _d = __values$v(pData.data), _e = _d.next(); !_e.done; _e = _d.next()) {\n var group = _e.value;\n var groupValues = group.values;\n if (pData.type === 'ungrouped') {\n groupValues = [groupValues];\n }\n try {\n for (var groupValues_1 = (e_5 = void 0, __values$v(groupValues)), groupValues_1_1 = groupValues_1.next(); !groupValues_1_1.done; groupValues_1_1 = groupValues_1.next()) {\n var values = groupValues_1_1.value;\n values[pIdx] = normalise(values[pIdx], start, span);\n }\n }\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\n finally {\n try {\n if (groupValues_1_1 && !groupValues_1_1.done && (_b = groupValues_1.return)) _b.call(groupValues_1);\n }\n finally { if (e_5) throw e_5.error; }\n }\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (_e && !_e.done && (_a = _d.return)) _a.call(_d);\n }\n finally { if (e_4) throw e_4.error; }\n }\n }; };\n}\nfunction normalisePropertyTo(scope, property, normaliseTo, rangeMin, rangeMax) {\n return {\n scopes: [scope.id],\n type: 'property-value-processor',\n property: property,\n adjust: memo({ normaliseTo: normaliseTo, rangeMin: rangeMin, rangeMax: rangeMax }, normalisePropertyFnBuilder),\n };\n}\nfunction buildGroupAccFn(mode) {\n return function () { return function () { return function (values, valueIndexes) {\n var e_6, _a;\n // Datum scope.\n var acc = 0;\n try {\n for (var valueIndexes_3 = __values$v(valueIndexes), valueIndexes_3_1 = valueIndexes_3.next(); !valueIndexes_3_1.done; valueIndexes_3_1 = valueIndexes_3.next()) {\n var valueIdx = valueIndexes_3_1.value;\n var currentVal = values[valueIdx];\n if (typeof currentVal !== 'number' || isNaN(currentVal))\n continue;\n if (mode === 'normal')\n acc += currentVal;\n values[valueIdx] = acc;\n if (mode === 'trailing')\n acc += currentVal;\n }\n }\n catch (e_6_1) { e_6 = { error: e_6_1 }; }\n finally {\n try {\n if (valueIndexes_3_1 && !valueIndexes_3_1.done && (_a = valueIndexes_3.return)) _a.call(valueIndexes_3);\n }\n finally { if (e_6) throw e_6.error; }\n }\n }; }; };\n}\nfunction buildGroupWindowAccFn(_a) {\n var mode = _a.mode, sum = _a.sum;\n return function () {\n // Entire data-set scope.\n var lastValues = [];\n var firstRow = true;\n return function () {\n // Group scope.\n return function (values, valueIndexes) {\n var e_7, _a;\n // Datum scope.\n var acc = 0;\n try {\n for (var valueIndexes_4 = __values$v(valueIndexes), valueIndexes_4_1 = valueIndexes_4.next(); !valueIndexes_4_1.done; valueIndexes_4_1 = valueIndexes_4.next()) {\n var valueIdx = valueIndexes_4_1.value;\n var currentVal = values[valueIdx];\n var lastValue = firstRow && sum === 'current' ? 0 : lastValues[valueIdx];\n lastValues[valueIdx] = currentVal;\n var sumValue = sum === 'current' ? currentVal : lastValue;\n if (typeof currentVal !== 'number' || isNaN(currentVal)) {\n values[valueIdx] = sumValue;\n continue;\n }\n if (typeof lastValue !== 'number' || isNaN(lastValue)) {\n values[valueIdx] = sumValue;\n continue;\n }\n if (mode === 'normal')\n acc += sumValue;\n values[valueIdx] = acc;\n if (mode === 'trailing')\n acc += sumValue;\n }\n }\n catch (e_7_1) { e_7 = { error: e_7_1 }; }\n finally {\n try {\n if (valueIndexes_4_1 && !valueIndexes_4_1.done && (_a = valueIndexes_4.return)) _a.call(valueIndexes_4);\n }\n finally { if (e_7) throw e_7.error; }\n }\n firstRow = false;\n };\n };\n };\n}\nfunction accumulateGroup(scope, matchGroupId, mode, sum) {\n var adjust;\n if (mode.startsWith('window')) {\n var modeParam = mode.endsWith('-trailing') ? 'trailing' : 'normal';\n adjust = memo({ mode: modeParam, sum: sum }, buildGroupWindowAccFn);\n }\n else {\n adjust = memo(mode, buildGroupAccFn);\n }\n return {\n scopes: [scope.id],\n type: 'group-value-processor',\n matchGroupIds: [matchGroupId],\n adjust: adjust,\n };\n}\nfunction diff(previousData, updateMovedDatums) {\n if (updateMovedDatums === void 0) { updateMovedDatums = true; }\n return {\n type: 'processor',\n property: 'diff',\n calculate: function (processedData) {\n var diff = {\n changed: false,\n added: [],\n updated: [],\n removed: [],\n };\n var added = new Map();\n var updated = new Map();\n var removed = new Map();\n var sep = '___';\n for (var i = 0; i < Math.max(previousData.data.length, processedData.data.length); i++) {\n var prev = previousData.data[i];\n var datum = processedData.data[i];\n var prevId = prev === null || prev === void 0 ? void 0 : prev.keys.join(sep);\n var datumId = datum === null || datum === void 0 ? void 0 : datum.keys.join(sep);\n if (prevId === datumId) {\n if (!arraysEqual(prev.values, datum.values)) {\n updated.set(datumId, datum);\n }\n continue;\n }\n if (removed.has(datumId)) {\n if (updateMovedDatums || !arraysEqual(removed.get(datumId).values, datum.values)) {\n updated.set(datumId, datum);\n }\n removed.delete(datumId);\n }\n else if (datum) {\n added.set(datumId, datum);\n }\n if (added.has(prevId)) {\n if (updateMovedDatums || !arraysEqual(added.get(prevId).values, prev.values)) {\n updated.set(prevId, prev);\n }\n added.delete(prevId);\n }\n else if (prev) {\n removed.set(prevId, prev);\n }\n }\n diff.added = Array.from(added.values()).map(function (datum) { return datum.keys; });\n diff.updated = Array.from(updated.values()).map(function (datum) { return datum.keys; });\n diff.removed = Array.from(removed.values()).map(function (datum) { return datum.keys; });\n diff.changed = diff.added.length > 0 || diff.updated.length > 0 || diff.removed.length > 0;\n return diff;\n },\n };\n}\nfunction arraysEqual(a, b) {\n if (a == null || b == null)\n return false;\n if (a.length !== b.length)\n return false;\n for (var i = 0; i < a.length; i++) {\n if (Array.isArray(a[i]) && Array.isArray(b[i]))\n return arraysEqual(a[i], b[i]);\n if (a[i] !== b[i])\n return false;\n }\n return true;\n}\n\nfunction ProxyPropertyOnWrite(childName, childProperty) {\n return addTransformToInstanceProperty(function (target, key, value) {\n target[childName][childProperty !== null && childProperty !== void 0 ? childProperty : key] = value;\n return value;\n });\n}\n/**\n * Allows side-effects to be triggered on property write.\n *\n * @param opts.newValue called when a new value is set - never called for undefined values.\n * @param opts.oldValue called with the old value before a new value is set - never called for\n * undefined values.\n * @param opts.changeValue called on any change to the value - always called.\n */\nfunction ActionOnSet(opts) {\n var newValueFn = opts.newValue, oldValueFn = opts.oldValue, changeValueFn = opts.changeValue;\n return addTransformToInstanceProperty(function (target, _, newValue, oldValue) {\n if (newValue !== oldValue) {\n if (oldValue !== undefined) {\n oldValueFn === null || oldValueFn === void 0 ? void 0 : oldValueFn.call(target, oldValue);\n }\n if (newValue !== undefined) {\n newValueFn === null || newValueFn === void 0 ? void 0 : newValueFn.call(target, newValue);\n }\n changeValueFn === null || changeValueFn === void 0 ? void 0 : changeValueFn.call(target, newValue, oldValue);\n }\n return newValue;\n });\n}\n\nvar __extends$$ = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$r = (undefined && undefined.__assign) || function () {\n __assign$r = 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$r.apply(this, arguments);\n};\nvar __decorate$1W = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 __rest$5 = (undefined && undefined.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __values$u = (undefined && undefined.__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$E = (undefined && undefined.__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 __spreadArray$n = (undefined && undefined.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\n/** Modes of matching user interactions to rendered nodes (e.g. hover or click) */\nvar SeriesNodePickMode;\n(function (SeriesNodePickMode) {\n /** Pick matches based upon pick coordinates being inside a matching shape/marker. */\n SeriesNodePickMode[SeriesNodePickMode[\"EXACT_SHAPE_MATCH\"] = 0] = \"EXACT_SHAPE_MATCH\";\n /** Pick matches by nearest category/X-axis value, then distance within that category/X-value. */\n SeriesNodePickMode[SeriesNodePickMode[\"NEAREST_BY_MAIN_AXIS_FIRST\"] = 1] = \"NEAREST_BY_MAIN_AXIS_FIRST\";\n /** Pick matches by nearest category value, then distance within that category. */\n SeriesNodePickMode[SeriesNodePickMode[\"NEAREST_BY_MAIN_CATEGORY_AXIS_FIRST\"] = 2] = \"NEAREST_BY_MAIN_CATEGORY_AXIS_FIRST\";\n /** Pick matches based upon distance to ideal position */\n SeriesNodePickMode[SeriesNodePickMode[\"NEAREST_NODE\"] = 3] = \"NEAREST_NODE\";\n})(SeriesNodePickMode || (SeriesNodePickMode = {}));\nfunction basicContinuousCheckDatumValidation(v) {\n return checkDatum(v, true) != null;\n}\nfunction basicDiscreteCheckDatumValidation(v) {\n return checkDatum(v, false) != null;\n}\nfunction keyProperty(scope, propName, continuous, opts) {\n if (opts === void 0) { opts = {}; }\n var result = __assign$r({ scopes: [scope.id], property: propName, type: 'key', valueType: continuous ? 'range' : 'category', validation: continuous ? basicContinuousCheckDatumValidation : basicDiscreteCheckDatumValidation }, opts);\n return result;\n}\nfunction valueProperty(scope, propName, continuous, opts) {\n if (opts === void 0) { opts = {}; }\n var result = __assign$r({ scopes: [scope.id], property: propName, type: 'value', valueType: continuous ? 'range' : 'category', validation: continuous ? basicContinuousCheckDatumValidation : basicDiscreteCheckDatumValidation }, opts);\n return result;\n}\nfunction rangedValueProperty(scope, propName, opts) {\n if (opts === void 0) { opts = {}; }\n var _a = opts.min, min = _a === void 0 ? -Infinity : _a, _b = opts.max, max = _b === void 0 ? Infinity : _b, defOpts = __rest$5(opts, [\"min\", \"max\"]);\n return __assign$r({ scopes: [scope.id], type: 'value', property: propName, valueType: 'range', validation: basicContinuousCheckDatumValidation, processor: function () { return function (datum) {\n if (typeof datum !== 'number')\n return datum;\n if (isNaN(datum))\n return datum;\n return Math.min(Math.max(datum, min), max);\n }; } }, defOpts);\n}\nfunction accumulativeValueProperty(scope, propName, continuous, opts) {\n if (opts === void 0) { opts = {}; }\n var result = __assign$r(__assign$r({}, valueProperty(scope, propName, continuous, opts)), { processor: accumulatedValue() });\n return result;\n}\nfunction groupAccumulativeValueProperty(scope, propName, continuous, mode, sum, opts) {\n if (sum === void 0) { sum = 'current'; }\n return [valueProperty(scope, propName, continuous, opts), accumulateGroup(scope, opts.groupId, mode, sum)];\n}\nvar SeriesNodeBaseClickEvent = /** @class */ (function () {\n function SeriesNodeBaseClickEvent(nativeEvent, datum, series) {\n this.type = 'nodeClick';\n this.event = nativeEvent;\n this.datum = datum.datum;\n this.seriesId = series.id;\n }\n return SeriesNodeBaseClickEvent;\n}());\nvar SeriesNodeClickEvent = /** @class */ (function (_super) {\n __extends$$(SeriesNodeClickEvent, _super);\n function SeriesNodeClickEvent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return SeriesNodeClickEvent;\n}(SeriesNodeBaseClickEvent));\nvar SeriesNodeDoubleClickEvent = /** @class */ (function (_super) {\n __extends$$(SeriesNodeDoubleClickEvent, _super);\n function SeriesNodeDoubleClickEvent() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'nodeDoubleClick';\n return _this;\n }\n return SeriesNodeDoubleClickEvent;\n}(SeriesNodeBaseClickEvent));\nvar SeriesItemHighlightStyle = /** @class */ (function () {\n function SeriesItemHighlightStyle() {\n this.fill = 'yellow';\n this.fillOpacity = undefined;\n this.stroke = undefined;\n this.strokeWidth = undefined;\n }\n __decorate$1W([\n Validate(OPT_COLOR_STRING)\n ], SeriesItemHighlightStyle.prototype, \"fill\", void 0);\n __decorate$1W([\n Validate(OPT_NUMBER(0, 1))\n ], SeriesItemHighlightStyle.prototype, \"fillOpacity\", void 0);\n __decorate$1W([\n Validate(OPT_COLOR_STRING)\n ], SeriesItemHighlightStyle.prototype, \"stroke\", void 0);\n __decorate$1W([\n Validate(OPT_NUMBER(0))\n ], SeriesItemHighlightStyle.prototype, \"strokeWidth\", void 0);\n return SeriesItemHighlightStyle;\n}());\nvar SeriesHighlightStyle = /** @class */ (function () {\n function SeriesHighlightStyle() {\n this.strokeWidth = undefined;\n this.dimOpacity = undefined;\n this.enabled = undefined;\n }\n __decorate$1W([\n Validate(OPT_NUMBER(0))\n ], SeriesHighlightStyle.prototype, \"strokeWidth\", void 0);\n __decorate$1W([\n Validate(OPT_NUMBER(0, 1))\n ], SeriesHighlightStyle.prototype, \"dimOpacity\", void 0);\n __decorate$1W([\n Validate(OPT_BOOLEAN)\n ], SeriesHighlightStyle.prototype, \"enabled\", void 0);\n return SeriesHighlightStyle;\n}());\nvar TextHighlightStyle = /** @class */ (function () {\n function TextHighlightStyle() {\n this.color = 'black';\n }\n __decorate$1W([\n Validate(OPT_COLOR_STRING)\n ], TextHighlightStyle.prototype, \"color\", void 0);\n return TextHighlightStyle;\n}());\nvar HighlightStyle = /** @class */ (function () {\n function HighlightStyle() {\n this.item = new SeriesItemHighlightStyle();\n this.series = new SeriesHighlightStyle();\n this.text = new TextHighlightStyle();\n }\n return HighlightStyle;\n}());\nvar SeriesTooltip = /** @class */ (function () {\n function SeriesTooltip() {\n this.enabled = true;\n this.showArrow = undefined;\n this.interaction = new SeriesTooltipInteraction();\n this.position = new TooltipPosition();\n }\n __decorate$1W([\n Validate(BOOLEAN)\n ], SeriesTooltip.prototype, \"enabled\", void 0);\n __decorate$1W([\n Validate(OPT_BOOLEAN)\n ], SeriesTooltip.prototype, \"showArrow\", void 0);\n return SeriesTooltip;\n}());\nvar SeriesTooltipInteraction = /** @class */ (function () {\n function SeriesTooltipInteraction() {\n this.enabled = false;\n }\n __decorate$1W([\n Validate(BOOLEAN)\n ], SeriesTooltipInteraction.prototype, \"enabled\", void 0);\n return SeriesTooltipInteraction;\n}());\nvar Series = /** @class */ (function (_super) {\n __extends$$(Series, _super);\n function Series(seriesOpts) {\n var _a;\n var _this = _super.call(this) || this;\n _this.id = createId$1(_this);\n // The group node that contains all the nodes used to render this series.\n _this.rootGroup = new Group({ name: 'seriesRoot', isVirtual: true });\n _this.axes = (_a = {},\n _a[ChartAxisDirection.X] = undefined,\n _a[ChartAxisDirection.Y] = undefined,\n _a);\n _this.directions = [ChartAxisDirection.X, ChartAxisDirection.Y];\n // Flag to determine if we should recalculate node data.\n _this.nodeDataRefresh = true;\n _this._data = undefined;\n _this._visible = true;\n _this.showInLegend = true;\n _this.cursor = 'default';\n _this.nodeClickRange = 'exact';\n _this.seriesGrouping = undefined;\n _this._declarationOrder = -1;\n _this.highlightStyle = new HighlightStyle();\n _this.ctx = seriesOpts.moduleCtx;\n var _b = seriesOpts.useLabelLayer, useLabelLayer = _b === void 0 ? false : _b, _c = seriesOpts.pickModes, pickModes = _c === void 0 ? [SeriesNodePickMode.NEAREST_BY_MAIN_AXIS_FIRST] : _c, _d = seriesOpts.directionKeys, directionKeys = _d === void 0 ? {} : _d, _e = seriesOpts.directionNames, directionNames = _e === void 0 ? {} : _e, _f = seriesOpts.contentGroupVirtual, contentGroupVirtual = _f === void 0 ? true : _f;\n var rootGroup = _this.rootGroup;\n _this.directionKeys = directionKeys;\n _this.directionNames = directionNames;\n _this.contentGroup = rootGroup.appendChild(new Group({\n name: _this.id + \"-content\",\n layer: !contentGroupVirtual,\n isVirtual: contentGroupVirtual,\n zIndex: Layers.SERIES_LAYER_ZINDEX,\n zIndexSubOrder: _this.getGroupZIndexSubOrder('data'),\n }));\n _this.highlightGroup = rootGroup.appendChild(new Group({\n name: _this.id + \"-highlight\",\n layer: true,\n zIndex: Layers.SERIES_LAYER_ZINDEX,\n zIndexSubOrder: _this.getGroupZIndexSubOrder('highlight'),\n }));\n _this.highlightNode = _this.highlightGroup.appendChild(new Group({ name: 'highlightNode' }));\n _this.highlightLabel = _this.highlightGroup.appendChild(new Group({ name: 'highlightLabel' }));\n _this.highlightNode.zIndex = 0;\n _this.highlightLabel.zIndex = 10;\n _this.pickModes = pickModes;\n if (useLabelLayer) {\n _this.labelGroup = rootGroup.appendChild(new Group({\n name: _this.id + \"-series-labels\",\n layer: true,\n zIndex: Layers.SERIES_LABEL_ZINDEX,\n }));\n }\n return _this;\n }\n Object.defineProperty(Series.prototype, \"type\", {\n get: function () {\n var _a;\n return (_a = this.constructor.type) !== null && _a !== void 0 ? _a : '';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Series.prototype, \"data\", {\n get: function () {\n return this._data;\n },\n set: function (input) {\n this._data = input;\n this.nodeDataRefresh = true;\n },\n enumerable: false,\n configurable: true\n });\n Series.prototype.hasData = function () {\n var data = this.data;\n return data && (!Array.isArray(data) || data.length > 0);\n };\n Object.defineProperty(Series.prototype, \"visible\", {\n get: function () {\n return this._visible;\n },\n set: function (value) {\n this._visible = value;\n this.visibleChanged();\n },\n enumerable: false,\n configurable: true\n });\n Series.prototype.onSeriesGroupingChange = function (prev, next) {\n var _this = this;\n var _a = this, id = _a.id, type = _a.type, visible = _a.visible, rootGroup = _a.rootGroup;\n if (prev) {\n this.ctx.seriesStateManager.deregisterSeries({ id: id, type: type });\n }\n if (next) {\n this.ctx.seriesStateManager.registerSeries({ id: id, type: type, visible: visible, seriesGrouping: next });\n }\n this.ctx.seriesLayerManager.changeGroup({\n id: id,\n type: type,\n rootGroup: rootGroup,\n getGroupZIndexSubOrder: function (type) { return _this.getGroupZIndexSubOrder(type); },\n seriesGrouping: next,\n oldGrouping: prev,\n });\n };\n Series.prototype.getBandScalePadding = function () {\n return { inner: 1, outer: 0 };\n };\n Series.prototype.getGroupZIndexSubOrder = function (type, subIndex) {\n var _this = this;\n if (subIndex === void 0) { subIndex = 0; }\n var mainAdjust = 0;\n switch (type) {\n case 'data':\n case 'paths':\n break;\n case 'labels':\n mainAdjust += 20000;\n break;\n case 'marker':\n mainAdjust += 10000;\n break;\n // Following cases are in their own layer, so need to be careful to respect declarationOrder.\n case 'highlight':\n subIndex += 15000;\n break;\n }\n var main = function () { return _this._declarationOrder + mainAdjust; };\n return [main, subIndex];\n };\n Series.prototype.addChartEventListeners = function () {\n return;\n };\n Series.prototype.destroy = function () {\n this.ctx.seriesStateManager.deregisterSeries(this);\n this.ctx.seriesLayerManager.releaseGroup(this);\n };\n Series.prototype.getDirectionValues = function (direction, properties) {\n var _this = this;\n var resolvedDirection = this.resolveKeyDirection(direction);\n var keys = properties === null || properties === void 0 ? void 0 : properties[resolvedDirection];\n var values = [];\n var flatten = function () {\n var e_1, _a;\n var array = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n array[_i] = arguments[_i];\n }\n try {\n for (var array_1 = __values$u(array), array_1_1 = array_1.next(); !array_1_1.done; array_1_1 = array_1.next()) {\n var value = array_1_1.value;\n addValue(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (array_1_1 && !array_1_1.done && (_a = array_1.return)) _a.call(array_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n var addValue = function (value) {\n if (Array.isArray(value)) {\n flatten.apply(void 0, __spreadArray$n([], __read$E(value)));\n }\n else if (typeof value === 'object') {\n flatten(Object.values(value));\n }\n else {\n values.push(value);\n }\n };\n if (!keys)\n return values;\n keys.forEach(function (key) {\n var value = _this[key];\n addValue(value);\n });\n return values;\n };\n Series.prototype.getKeys = function (direction) {\n return this.getDirectionValues(direction, this.directionKeys);\n };\n Series.prototype.getNames = function (direction) {\n return this.getDirectionValues(direction, this.directionNames);\n };\n Series.prototype.resolveKeyDirection = function (direction) {\n return direction;\n };\n // Indicate that something external changed and we should recalculate nodeData.\n Series.prototype.markNodeDataDirty = function () {\n this.nodeDataRefresh = true;\n };\n Series.prototype.visibleChanged = function () {\n this.ctx.seriesStateManager.registerSeries(this);\n };\n Series.prototype.getOpacity = function (datum) {\n var _a = this.highlightStyle.series, _b = _a.dimOpacity, dimOpacity = _b === void 0 ? 1 : _b, _c = _a.enabled, enabled = _c === void 0 ? true : _c;\n var defaultOpacity = 1;\n if (enabled === false || dimOpacity === defaultOpacity) {\n return defaultOpacity;\n }\n switch (this.isItemIdHighlighted(datum)) {\n case 'no-highlight':\n case 'highlighted':\n return defaultOpacity;\n case 'peer-highlighted':\n case 'other-highlighted':\n return dimOpacity;\n }\n };\n Series.prototype.getStrokeWidth = function (defaultStrokeWidth, datum) {\n var _a = this.highlightStyle.series, strokeWidth = _a.strokeWidth, _b = _a.enabled, enabled = _b === void 0 ? true : _b;\n if (enabled === false || strokeWidth === undefined) {\n // No change in styling for highlight cases.\n return defaultStrokeWidth;\n }\n switch (this.isItemIdHighlighted(datum)) {\n case 'highlighted':\n return strokeWidth;\n case 'no-highlight':\n case 'other-highlighted':\n case 'peer-highlighted':\n return defaultStrokeWidth;\n }\n };\n Series.prototype.isItemIdHighlighted = function (datum) {\n var _a;\n var highlightedDatum = (_a = this.ctx.highlightManager) === null || _a === void 0 ? void 0 : _a.getActiveHighlight();\n var _b = highlightedDatum !== null && highlightedDatum !== void 0 ? highlightedDatum : {}, series = _b.series, itemId = _b.itemId;\n var highlighting = series != null;\n if (!highlighting) {\n // Highlighting not active.\n return 'no-highlight';\n }\n if (series !== this) {\n // Highlighting active, this series not highlighted.\n return 'other-highlighted';\n }\n if (itemId === undefined) {\n // Series doesn't use itemIds - so no further refinement needed, series is highlighted.\n return 'highlighted';\n }\n if (datum && highlightedDatum !== datum && itemId !== datum.itemId) {\n // A peer (in same Series instance) sub-series has highlight active, but this sub-series\n // does not.\n return 'peer-highlighted';\n }\n return 'highlighted';\n };\n Series.prototype.pickNode = function (point, limitPickModes) {\n var e_2, _a;\n var _b = this, pickModes = _b.pickModes, visible = _b.visible, rootGroup = _b.rootGroup;\n if (!visible || !rootGroup.visible) {\n return;\n }\n try {\n for (var pickModes_1 = __values$u(pickModes), pickModes_1_1 = pickModes_1.next(); !pickModes_1_1.done; pickModes_1_1 = pickModes_1.next()) {\n var pickMode = pickModes_1_1.value;\n if (limitPickModes && !limitPickModes.includes(pickMode)) {\n continue;\n }\n var match = undefined;\n switch (pickMode) {\n case SeriesNodePickMode.EXACT_SHAPE_MATCH:\n match = this.pickNodeExactShape(point);\n break;\n case SeriesNodePickMode.NEAREST_BY_MAIN_AXIS_FIRST:\n case SeriesNodePickMode.NEAREST_BY_MAIN_CATEGORY_AXIS_FIRST:\n match = this.pickNodeMainAxisFirst(point, pickMode === SeriesNodePickMode.NEAREST_BY_MAIN_CATEGORY_AXIS_FIRST);\n break;\n case SeriesNodePickMode.NEAREST_NODE:\n match = this.pickNodeClosestDatum(point);\n break;\n }\n if (match) {\n return { pickMode: pickMode, match: match.datum, distance: match.distance };\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (pickModes_1_1 && !pickModes_1_1.done && (_a = pickModes_1.return)) _a.call(pickModes_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n };\n Series.prototype.pickNodeExactShape = function (point) {\n var match = this.contentGroup.pickNode(point.x, point.y);\n if (match) {\n return {\n datum: match.datum,\n distance: 0,\n };\n }\n };\n Series.prototype.pickNodeClosestDatum = function (_point) {\n // Override point for sub-classes - but if this is invoked, the sub-class specified it wants\n // to use this feature.\n throw new Error('AG Charts - Series.pickNodeClosestDatum() not implemented');\n };\n Series.prototype.pickNodeMainAxisFirst = function (_point, _requireCategoryAxis) {\n // Override point for sub-classes - but if this is invoked, the sub-class specified it wants\n // to use this feature.\n throw new Error('AG Charts - Series.pickNodeMainAxisFirst() not implemented');\n };\n Series.prototype.fireNodeClickEvent = function (event, _datum) {\n var eventObject = this.getNodeClickEvent(event, _datum);\n this.fireEvent(eventObject);\n };\n Series.prototype.fireNodeDoubleClickEvent = function (event, _datum) {\n var eventObject = this.getNodeDoubleClickEvent(event, _datum);\n this.fireEvent(eventObject);\n };\n Series.prototype.getNodeClickEvent = function (event, datum) {\n return new SeriesNodeClickEvent(event, datum, this);\n };\n Series.prototype.getNodeDoubleClickEvent = function (event, datum) {\n return new SeriesNodeDoubleClickEvent(event, datum, this);\n };\n Series.prototype.toggleSeriesItem = function (_itemId, enabled) {\n this.visible = enabled;\n this.nodeDataRefresh = true;\n };\n Series.prototype.isEnabled = function () {\n return this.visible;\n };\n Series.prototype.fixNumericExtent = function (extent, axis) {\n var _a;\n var fixedExtent = fixNumericExtent(extent);\n if (fixedExtent.length === 0) {\n return fixedExtent;\n }\n var _b = __read$E(fixedExtent, 2), min = _b[0], max = _b[1];\n if (min === max) {\n // domain has zero length, there is only a single valid value in data\n var _c = __read$E((_a = axis === null || axis === void 0 ? void 0 : axis.calculatePadding(min, max)) !== null && _a !== void 0 ? _a : [1, 1], 2), paddingMin = _c[0], paddingMax = _c[1];\n min -= paddingMin;\n max += paddingMax;\n }\n return [min, max];\n };\n Series.highlightedZIndex = 1000000000000;\n __decorate$1W([\n Validate(STRING)\n ], Series.prototype, \"id\", void 0);\n __decorate$1W([\n Validate(BOOLEAN)\n ], Series.prototype, \"_visible\", void 0);\n __decorate$1W([\n Validate(BOOLEAN)\n ], Series.prototype, \"showInLegend\", void 0);\n __decorate$1W([\n Validate(STRING)\n ], Series.prototype, \"cursor\", void 0);\n __decorate$1W([\n Validate(INTERACTION_RANGE)\n ], Series.prototype, \"nodeClickRange\", void 0);\n __decorate$1W([\n ActionOnSet({\n changeValue: function (newVal, oldVal) {\n this.onSeriesGroupingChange(oldVal, newVal);\n },\n })\n ], Series.prototype, \"seriesGrouping\", void 0);\n return Series;\n}(Observable));\n\nvar __decorate$1V = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 Padding$1 = /** @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 __decorate$1V([\n Validate(NUMBER(0))\n ], Padding.prototype, \"top\", void 0);\n __decorate$1V([\n Validate(NUMBER(0))\n ], Padding.prototype, \"right\", void 0);\n __decorate$1V([\n Validate(NUMBER(0))\n ], Padding.prototype, \"bottom\", void 0);\n __decorate$1V([\n Validate(NUMBER(0))\n ], Padding.prototype, \"left\", void 0);\n return Padding;\n}());\n\nvar __values$t = (undefined && undefined.__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$t(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 {\n // polyfill (more reliable even in browsers that support ResizeObserver)\n var step = function () {\n _this.elements.forEach(function (entry, element) {\n _this.checkClientSize(element, entry);\n });\n };\n this.pollerHandler = window.setInterval(step, 100);\n }\n this.ready = true;\n };\n SizeMonitor.destroy = function () {\n var _a;\n if (this.pollerHandler != null) {\n clearInterval(this.pollerHandler);\n this.pollerHandler = undefined;\n }\n (_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();\n this.resizeObserver = undefined;\n this.ready = false;\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, false);\n if (this.resizeObserver) {\n this.resizeObserver.observe(element);\n }\n this.elements.set(element, { cb: cb });\n // Ensure first size callback happens synchronously.\n this.checkClientSize(element, { cb: cb });\n };\n SizeMonitor.unobserve = function (element, cleanup) {\n if (cleanup === void 0) { cleanup = true; }\n if (this.resizeObserver) {\n this.resizeObserver.unobserve(element);\n }\n this.elements.delete(element);\n if (cleanup && this.elements.size === 0) {\n this.destroy();\n }\n };\n SizeMonitor.checkClientSize = function (element, entry) {\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 SizeMonitor.elements = new Map();\n SizeMonitor.ready = false;\n return SizeMonitor;\n}());\n\nfunction circleRectOverlap(c, x, y, w, h) {\n // Find closest horizontal and vertical edges.\n var edgeX = c.x;\n if (c.x < x) {\n edgeX = x;\n }\n else if (c.x > x + w) {\n edgeX = x + w;\n }\n var edgeY = c.y;\n if (c.y < y) {\n edgeY = y;\n }\n else if (c.y > y + h) {\n edgeY = y + h;\n }\n // Find distance to closest edges.\n var dx = c.x - edgeX;\n var dy = c.y - edgeY;\n var d = Math.sqrt(dx * dx + dy * dy);\n return d <= c.size * 0.5;\n}\nfunction rectRectOverlap(r1, x2, y2, w2, h2) {\n var xOverlap = r1.x + r1.width > x2 && r1.x < x2 + w2;\n var yOverlap = r1.y + r1.height > y2 && r1.y < y2 + h2;\n return xOverlap && yOverlap;\n}\nfunction rectContainsRect(r1, r2x, r2y, r2w, r2h) {\n return r2x + r2w < r1.x + r1.width && r2x > r1.x && r2y > r1.y && r2y + r2h < r1.y + r1.height;\n}\nfunction isPointLabelDatum(x) {\n return x != null && typeof x.point === 'object' && typeof x.label === 'object';\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 */\nfunction 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.point.size - a.point.size; }); });\n for (var j = 0; j < data.length; j++) {\n var labels = (result[j] = []);\n var datum = data[j];\n if (!((datum === null || datum === void 0 ? void 0 : 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.point.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, y, width, height);\n if (!withinBounds) {\n return \"continue\";\n }\n var overlapPoints = data.some(function (datum) {\n return datum.some(function (d) { return circleRectOverlap(d.point, x, y, width, height); });\n });\n if (overlapPoints) {\n return \"continue\";\n }\n var overlapLabels = result.some(function (labels) { return labels.some(function (l) { return rectRectOverlap(l, 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 datum: d,\n });\n };\n for (var i = 0, ln = datum.length; i < ln; i++) {\n _loop_1(i, ln);\n }\n }\n return result;\n}\nfunction axisLabelsOverlap(data, padding) {\n var result = [];\n var _loop_2 = function (i) {\n var datum = data[i];\n var _a = datum.point, x = _a.x, y = _a.y, text = datum.label.text;\n var _b = datum.label, width = _b.width, height = _b.height;\n width += padding !== null && padding !== void 0 ? padding : 0;\n height += padding !== null && padding !== void 0 ? padding : 0;\n var overlapLabels = result.some(function (l) {\n var overlap = rectRectOverlap(l, x, y, width, height);\n return overlap;\n });\n if (overlapLabels) {\n return { value: true };\n }\n result.push({\n index: i,\n text: text,\n x: x,\n y: y,\n width: width,\n height: height,\n datum: datum,\n });\n };\n for (var i = 0; i < data.length; i++) {\n var state_1 = _loop_2(i);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n return false;\n}\n\nvar __awaiter$f = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$f = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n/**\n * Wrap a function in debouncing trigger function. A requestAnimationFrame() is scheduled\n * after the first schedule() call, and subsequent schedule() calls will be ignored until the\n * animation callback executes.\n */\nfunction debouncedAnimationFrame(cb) {\n return buildScheduler(function (cb, _delayMs) { return requestAnimationFrame(cb); }, cb);\n}\nfunction debouncedCallback(cb) {\n return buildScheduler(function (cb, delayMs) {\n if (delayMs === void 0) { delayMs = 0; }\n return setTimeout(cb, delayMs);\n }, cb);\n}\nfunction buildScheduler(scheduleFn, cb) {\n var scheduleCount = 0;\n var promiseRunning = false;\n var awaitingPromise;\n var awaitingDone;\n var busy = function () {\n return promiseRunning;\n };\n var done = function () {\n promiseRunning = false;\n awaitingDone === null || awaitingDone === void 0 ? void 0 : awaitingDone();\n awaitingDone = undefined;\n awaitingPromise = undefined;\n if (scheduleCount > 0) {\n scheduleFn(scheduleCb);\n }\n };\n var scheduleCb = function () {\n var count = scheduleCount;\n scheduleCount = 0;\n promiseRunning = true;\n var maybePromise = cb({ count: count });\n if (!maybePromise) {\n done();\n return;\n }\n maybePromise.then(done).catch(done);\n };\n return {\n schedule: function (delayMs) {\n if (scheduleCount === 0 && !busy()) {\n scheduleFn(scheduleCb, delayMs);\n }\n scheduleCount++;\n },\n await: function () {\n return __awaiter$f(this, void 0, void 0, function () {\n return __generator$f(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!busy()) {\n return [2 /*return*/];\n }\n if (awaitingPromise == null) {\n awaitingPromise = new Promise(function (resolve) {\n awaitingDone = resolve;\n });\n }\n _a.label = 1;\n case 1:\n if (!busy()) return [3 /*break*/, 3];\n return [4 /*yield*/, awaitingPromise];\n case 2:\n _a.sent();\n return [3 /*break*/, 1];\n case 3: return [2 /*return*/];\n }\n });\n });\n },\n };\n}\n\nfunction sleep(sleepTimeoutMs) {\n return new Promise(function (resolve) {\n setTimeout(function () { return resolve(undefined); }, sleepTimeoutMs);\n });\n}\n\nvar __decorate$1U = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 Overlay = /** @class */ (function () {\n function Overlay(className, parent) {\n this.renderer = undefined;\n this.text = undefined;\n this.className = className;\n this.parentElement = parent;\n }\n Overlay.prototype.show = function (rect) {\n var _a, _b;\n var element = this.element;\n if (!element) {\n element = document.createElement('div');\n element.className = this.className;\n this.element = element;\n }\n element.style.position = 'absolute';\n element.style.left = rect.x + \"px\";\n element.style.top = rect.y + \"px\";\n element.style.width = rect.width + \"px\";\n element.style.height = rect.height + \"px\";\n if (this.renderer) {\n element.innerHTML = this.renderer();\n }\n else {\n var content = document.createElement('div');\n content.style.alignItems = 'center';\n content.style.boxSizing = 'border-box';\n content.style.display = 'flex';\n content.style.justifyContent = 'center';\n content.style.margin = '8px';\n content.style.height = '100%';\n content.style.font = '12px Verdana, sans-serif';\n content.innerText = (_a = this.text) !== null && _a !== void 0 ? _a : 'No data to display';\n element.append(content);\n }\n (_b = this.parentElement) === null || _b === void 0 ? void 0 : _b.append(element);\n };\n Overlay.prototype.hide = function () {\n var _a;\n (_a = this.element) === null || _a === void 0 ? void 0 : _a.remove();\n this.element = undefined;\n };\n __decorate$1U([\n Validate(OPT_FUNCTION)\n ], Overlay.prototype, \"renderer\", void 0);\n __decorate$1U([\n Validate(OPT_STRING)\n ], Overlay.prototype, \"text\", void 0);\n return Overlay;\n}());\n\nvar ChartOverlays = /** @class */ (function () {\n function ChartOverlays(parent) {\n this.noData = new Overlay('ag-chart-no-data-overlay', parent);\n }\n return ChartOverlays;\n}());\n\nvar __assign$q = (undefined && undefined.__assign) || function () {\n __assign$q = 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$q.apply(this, arguments);\n};\nvar __read$D = (undefined && undefined.__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 __spreadArray$m = (undefined && undefined.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar __values$s = (undefined && undefined.__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 *\n * @returns `null` if no differences, or an object with the subset of properties that have changed.\n */\nfunction jsonDiff(source, target) {\n var e_1, _a;\n var sourceType = classify(source);\n var targetType = classify(target);\n if (targetType === 'array') {\n var targetArray = target;\n if (sourceType !== 'array' || source.length !== targetArray.length) {\n return __spreadArray$m([], __read$D(targetArray));\n }\n if (targetArray.some(function (targetElement, i) { var _a; return jsonDiff((_a = source) === null || _a === void 0 ? void 0 : _a[i], targetElement) != null; })) {\n return __spreadArray$m([], __read$D(targetArray));\n }\n return null;\n }\n if (targetType === 'primitive') {\n if (sourceType !== 'primitive') {\n return __assign$q({}, target);\n }\n if (source !== target) {\n return target;\n }\n return null;\n }\n var lhs = source || {};\n var rhs = target || {};\n var allProps = new Set(__spreadArray$m(__spreadArray$m([], __read$D(Object.keys(lhs))), __read$D(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 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]);\n if (diff !== null) {\n take(diff);\n }\n };\n try {\n for (var allProps_1 = __values$s(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 */\nvar 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 * @param opts merge options\n * @param opts.avoidDeepClone contains a list of properties where deep clones should be avoided\n *\n * @returns the combination of all of the json inputs\n */\nfunction jsonMerge(json, opts) {\n var e_2, _a;\n var _b;\n var avoidDeepClone = (_b = opts === null || opts === void 0 ? void 0 : opts.avoidDeepClone) !== null && _b !== void 0 ? _b : [];\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 if (type === 'array')\n return jsonMerge([[], v], opts);\n if (type === 'object')\n return jsonMerge([{}, v], opts);\n return 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) : []); }).reduce(function (r, n) { return r.concat(n); }, []));\n var _loop_2 = function (nextProp) {\n var values = json\n .map(function (j) {\n if (j != null && typeof j === 'object' && nextProp in j) {\n return j[nextProp];\n }\n return NOT_SPECIFIED;\n })\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; })) {\n // Short-circuit if mismatching types.\n result[nextProp] = lastValue;\n return \"continue\";\n }\n if ((type === 'array' || type === 'object') && !avoidDeepClone.includes(nextProp)) {\n result[nextProp] = jsonMerge(values, opts);\n }\n else if (type === 'array') {\n // Arrays need to be shallow copied to avoid external mutation and allow jsonDiff to\n // detect changes.\n result[nextProp] = __spreadArray$m([], __read$D(lastValue));\n }\n else {\n // Just directly assign/overwrite.\n result[nextProp] = lastValue;\n }\n };\n try {\n for (var props_1 = __values$s(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.constructedArrays map stores arrays which items should be initialised\n * using a class constructor\n * @param params.allowedTypes overrides by path for allowed property types\n */\nfunction jsonApply(target, source, params) {\n var _a, _b, _c;\n if (params === void 0) { params = {}; }\n var _d = params.path, path = _d === void 0 ? undefined : _d, _e = params.matcherPath, matcherPath = _e === void 0 ? path ? path.replace(/(\\[[0-9+]+\\])/i, '[]') : undefined : _e, _f = params.skip, skip = _f === void 0 ? [] : _f, _g = params.constructors, constructors = _g === void 0 ? {} : _g, _h = params.constructedArrays, constructedArrays = _h === void 0 ? new WeakMap() : _h, _j = params.allowedTypes, allowedTypes = _j === void 0 ? {} : _j, idx = params.idx;\n if (target == null) {\n throw new Error(\"AG Charts - target is uninitialised: \" + (path !== null && path !== void 0 ? path : ''));\n }\n if (source == null) {\n return target;\n }\n var targetAny = target;\n if (idx != null && '_declarationOrder' in targetAny) {\n targetAny['_declarationOrder'] = idx;\n }\n var targetType = classify(target);\n var _loop_3 = function (property) {\n var propertyMatcherPath = \"\" + (matcherPath ? matcherPath + '.' : '') + property;\n if (skip.indexOf(propertyMatcherPath) >= 0) {\n return \"continue\";\n }\n var newValue = source[property];\n var propertyPath = \"\" + (path ? path + '.' : '') + property;\n var targetClass = targetAny.constructor;\n var currentValue = targetAny[property];\n var ctr = (_a = constructors[propertyMatcherPath]) !== null && _a !== void 0 ? _a : constructors[property];\n try {\n var currentValueType = classify(currentValue);\n var newValueType = classify(newValue);\n if (targetType === 'class-instance' &&\n !(property in target || Object.prototype.hasOwnProperty.call(targetAny, property))) {\n Logger.warn(\"unable to set [\" + propertyPath + \"] in \" + (targetClass === null || targetClass === void 0 ? void 0 : targetClass.name) + \" - property is unknown\");\n return \"continue\";\n }\n var allowableTypes = (_b = allowedTypes[propertyMatcherPath]) !== null && _b !== void 0 ? _b : [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 Logger.warn(\"unable to set [\" + propertyPath + \"] in \" + (targetClass === null || targetClass === void 0 ? void 0 : targetClass.name) + \" - can't apply type of [\" + newValueType + \"], allowed types are: [\" + allowableTypes + \"]\");\n return \"continue\";\n }\n if (newValueType === 'array') {\n ctr = (_c = ctr !== null && ctr !== void 0 ? ctr : constructedArrays.get(currentValue)) !== null && _c !== void 0 ? _c : constructors[propertyMatcherPath + \"[]\"];\n if (ctr != null) {\n var newValueArray = newValue;\n targetAny[property] = newValueArray.map(function (v, idx) {\n return jsonApply(new ctr(), v, __assign$q(__assign$q({}, params), { path: propertyPath, matcherPath: propertyMatcherPath + '[]', idx: idx }));\n });\n }\n else {\n targetAny[property] = newValue;\n }\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$q(__assign$q({}, params), { path: propertyPath, matcherPath: propertyMatcherPath, idx: undefined }));\n }\n else if (ctr != null) {\n targetAny[property] = jsonApply(new ctr(), newValue, __assign$q(__assign$q({}, params), { path: propertyPath, matcherPath: propertyMatcherPath, idx: undefined }));\n }\n else {\n targetAny[property] = newValue;\n }\n }\n else {\n targetAny[property] = newValue;\n }\n }\n catch (error) {\n Logger.warn(\"unable to set [\" + propertyPath + \"] in [\" + (targetClass === null || targetClass === void 0 ? void 0 : targetClass.name) + \"]; nested error is: \" + error.message);\n return \"continue\";\n }\n };\n for (var property in source) {\n _loop_3(property);\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 */\nfunction jsonWalk(json, visit, opts) {\n var _a;\n var jsons = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n jsons[_i - 3] = arguments[_i];\n }\n var jsonType = classify(json);\n var skip = (_a = opts.skip) !== null && _a !== void 0 ? _a : [];\n if (jsonType === 'array') {\n json.forEach(function (element, index) {\n jsonWalk.apply(void 0, __spreadArray$m([element, visit, opts], __read$D((jsons !== null && jsons !== void 0 ? jsons : []).map(function (o) { return o === null || o === void 0 ? void 0 : o[index]; }))));\n });\n return;\n }\n else if (jsonType !== 'object') {\n return;\n }\n visit.apply(void 0, __spreadArray$m([jsonType, json], __read$D(jsons)));\n var _loop_4 = function (property) {\n if (skip.indexOf(property) >= 0) {\n return \"continue\";\n }\n var value = json[property];\n var otherValues = jsons === null || jsons === void 0 ? void 0 : jsons.map(function (o) { return o === null || o === void 0 ? void 0 : o[property]; });\n var valueType = classify(value);\n if (valueType === 'object' || valueType === 'array') {\n jsonWalk.apply(void 0, __spreadArray$m([value, visit, opts], __read$D(otherValues)));\n }\n };\n for (var property in json) {\n _loop_4(property);\n }\n}\nvar isBrowser = typeof window !== 'undefined';\n/**\n * Classify the type of a value to assist with handling for merge purposes.\n */\nfunction classify(value) {\n if (value == null) {\n return null;\n }\n else if (isBrowser && 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\nvar __values$r = (undefined && undefined.__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$C = (undefined && undefined.__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 __spreadArray$l = (undefined && undefined.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar Listeners = /** @class */ (function () {\n function Listeners() {\n this.registeredListeners = {};\n }\n Listeners.prototype.addListener = function (type, cb) {\n var _a;\n var symbol = Symbol(type);\n if (!this.registeredListeners[type]) {\n this.registeredListeners[type] = [];\n }\n (_a = this.registeredListeners[type]) === null || _a === void 0 ? void 0 : _a.push({ symbol: symbol, handler: cb });\n return symbol;\n };\n Listeners.prototype.dispatch = function (type) {\n var e_1, _a;\n var _b;\n var params = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n params[_i - 1] = arguments[_i];\n }\n var listeners = (_b = this.registeredListeners[type]) !== null && _b !== void 0 ? _b : [];\n var results = [];\n try {\n for (var listeners_1 = __values$r(listeners), listeners_1_1 = listeners_1.next(); !listeners_1_1.done; listeners_1_1 = listeners_1.next()) {\n var listener = listeners_1_1.value;\n try {\n results.push(listener.handler.apply(listener, __spreadArray$l([], __read$C(params))));\n }\n catch (e) {\n Logger.errorOnce(e);\n results.push(undefined);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (listeners_1_1 && !listeners_1_1.done && (_a = listeners_1.return)) _a.call(listeners_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return results;\n };\n Listeners.prototype.cancellableDispatch = function (type, cancelled) {\n var e_2, _a;\n var _b;\n var params = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n params[_i - 2] = arguments[_i];\n }\n var listeners = (_b = this.registeredListeners[type]) !== null && _b !== void 0 ? _b : [];\n var results = [];\n try {\n for (var listeners_2 = __values$r(listeners), listeners_2_1 = listeners_2.next(); !listeners_2_1.done; listeners_2_1 = listeners_2.next()) {\n var listener = listeners_2_1.value;\n if (cancelled())\n break;\n results.push(listener.handler.apply(listener, __spreadArray$l([], __read$C(params))));\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (listeners_2_1 && !listeners_2_1.done && (_a = listeners_2.return)) _a.call(listeners_2);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return results;\n };\n Listeners.prototype.reduceDispatch = function (type, reduceFn) {\n var e_3, _a;\n var _b;\n var params = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n params[_i - 2] = arguments[_i];\n }\n var listeners = (_b = this.registeredListeners[type]) !== null && _b !== void 0 ? _b : [];\n var listenerResult = undefined;\n try {\n for (var listeners_3 = __values$r(listeners), listeners_3_1 = listeners_3.next(); !listeners_3_1.done; listeners_3_1 = listeners_3.next()) {\n var listener = listeners_3_1.value;\n listenerResult = listener.handler.apply(listener, __spreadArray$l([], __read$C(params)));\n params = reduceFn.apply(void 0, __spreadArray$l([listenerResult], __read$C(params)));\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (listeners_3_1 && !listeners_3_1.done && (_a = listeners_3.return)) _a.call(listeners_3);\n }\n finally { if (e_3) throw e_3.error; }\n }\n return listenerResult;\n };\n Listeners.prototype.removeListener = function (listenerSymbol) {\n for (var type in this.registeredListeners) {\n var listeners = this.registeredListeners[type];\n var match = listeners === null || listeners === void 0 ? void 0 : listeners.findIndex(function (entry) { return entry.symbol === listenerSymbol; });\n if (match != null && match >= 0) {\n listeners === null || listeners === void 0 ? void 0 : listeners.splice(match, 1);\n }\n if (match != null && (listeners === null || listeners === void 0 ? void 0 : listeners.length) === 0) {\n delete this.registeredListeners[type];\n }\n }\n };\n return Listeners;\n}());\n\nvar BaseManager = /** @class */ (function () {\n function BaseManager() {\n this.listeners = new Listeners();\n }\n BaseManager.prototype.addListener = function (type, cb) {\n return this.listeners.addListener(type, cb);\n };\n BaseManager.prototype.removeListener = function (listenerSymbol) {\n this.listeners.removeListener(listenerSymbol);\n };\n return BaseManager;\n}());\n\nfunction number (a, b) {\n a = +a;\n b = +b;\n return function (t) { return a * (1 - t) + b * t; };\n}\n\nfunction interpolateColor (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\nfunction interpolate$1 (a, b) {\n var t = typeof b;\n var c;\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 interpolateColor(a, b);\n }\n catch (e) {\n // Error-case handled below.\n }\n }\n throw new Error('Unable to interpolate values');\n}\n\nfunction createEase(fn) {\n return function (_a) {\n var from = _a.from, to = _a.to;\n var interp = interpolate$1(from, to);\n return function (time) { return interp(fn(time)); };\n };\n}\nfunction linear(_a) {\n var from = _a.from, to = _a.to;\n return interpolate$1(from, to);\n}\nvar easeOut = createEase(function (x) { return Math.sin((x * Math.PI) / 2); });\n\nvar __assign$p = (undefined && undefined.__assign) || function () {\n __assign$p = 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$p.apply(this, arguments);\n};\nvar RepeatType;\n(function (RepeatType) {\n RepeatType[\"Loop\"] = \"loop\";\n RepeatType[\"Reverse\"] = \"reverse\";\n})(RepeatType || (RepeatType = {}));\nfunction animate(_a) {\n var driver = _a.driver, duration = _a.duration, from = _a.from, to = _a.to, _b = _a.autoplay, autoplay = _b === void 0 ? true : _b, _c = _a.delay, delay = _c === void 0 ? 0 : _c, _d = _a.ease, ease = _d === void 0 ? linear : _d, _e = _a.repeat, repeatMax = _e === void 0 ? 0 : _e, _f = _a.repeatType, repeatType = _f === void 0 ? RepeatType.Loop : _f, onComplete = _a.onComplete, onPlay = _a.onPlay, onRepeat = _a.onRepeat, onStop = _a.onStop, onUpdate = _a.onUpdate;\n var state;\n var delayElapsed = 0;\n var elapsed = 0;\n var iteration = 0;\n var isForward = true;\n var isComplete = false;\n var easing = ease({ from: from, to: to });\n var controls = { isPlaying: false, play: play, pause: pause, stop: stop, reset: reset };\n var driverControls = driver(update);\n function play() {\n controls.isPlaying = true;\n driverControls.start();\n onPlay === null || onPlay === void 0 ? void 0 : onPlay();\n return controls;\n }\n function pause() {\n controls.isPlaying = false;\n return controls;\n }\n function stop() {\n controls.isPlaying = false;\n driverControls.stop();\n onStop === null || onStop === void 0 ? void 0 : onStop();\n return controls;\n }\n function reset() {\n isComplete = false;\n elapsed = 0;\n iteration = 0;\n driverControls.reset();\n return controls;\n }\n function repeat() {\n iteration++;\n if (repeatType === RepeatType.Reverse) {\n isForward = iteration % 2 === 0;\n elapsed = isForward ? elapsed % duration : duration - (elapsed % duration);\n }\n else {\n elapsed = elapsed % duration;\n }\n isComplete = false;\n onRepeat === null || onRepeat === void 0 ? void 0 : onRepeat();\n }\n function complete() {\n stop();\n onComplete === null || onComplete === void 0 ? void 0 : onComplete();\n }\n function update(delta) {\n if (!isForward)\n delta = -delta;\n if (delayElapsed >= delay) {\n elapsed += delta;\n }\n else {\n delayElapsed += delta;\n return;\n }\n if (!isComplete) {\n state = easing(Math.min(1, Math.max(0, elapsed / duration)));\n isComplete = isForward ? elapsed >= duration : elapsed <= 0;\n }\n onUpdate === null || onUpdate === void 0 ? void 0 : onUpdate(state);\n if (isComplete) {\n if (iteration < repeatMax) {\n repeat();\n }\n else {\n complete();\n }\n }\n }\n if (autoplay)\n play();\n return controls;\n}\nfunction tween(opts) {\n var handleUpdate;\n var animateOpts = __assign$p(__assign$p({}, opts), { autoplay: false, onUpdate: function (value) {\n handleUpdate === null || handleUpdate === void 0 ? void 0 : handleUpdate(value);\n } });\n var animationControls = animate(animateOpts);\n var controls = {\n start: function (onUpdate) {\n animationControls.stop();\n animationControls.reset();\n animationControls.play();\n handleUpdate = onUpdate;\n return controls;\n },\n stop: function () {\n animationControls.stop();\n return controls;\n },\n };\n return controls;\n}\n\nvar __extends$_ = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$o = (undefined && undefined.__assign) || function () {\n __assign$o = 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$o.apply(this, arguments);\n};\nvar __rest$4 = (undefined && undefined.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __values$q = (undefined && undefined.__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$B = (undefined && undefined.__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 AnimationManager = /** @class */ (function (_super) {\n __extends$_(AnimationManager, _super);\n function AnimationManager(interactionManager) {\n var _this = _super.call(this) || this;\n _this.controllers = {};\n _this.throttles = {};\n _this.throttleGroups = new Set();\n _this.updaters = [];\n _this.isPlaying = false;\n _this.readyToPlay = false;\n _this.defaultOptions = {};\n _this.skipAnimations = false;\n _this.debug = false;\n _this.interactionManager = interactionManager;\n window.addEventListener('DOMContentLoaded', function () {\n _this.readyToPlay = true;\n });\n // Fallback if `DOMContentLoaded` event is not fired, e.g. in an iframe\n setTimeout(function () {\n _this.readyToPlay = true;\n }, 10);\n return _this;\n }\n AnimationManager.prototype.play = function () {\n if (this.isPlaying)\n return;\n this.isPlaying = true;\n if (this.debug) {\n Logger.debug('AnimationManager.play()');\n }\n for (var id in this.controllers) {\n this.controllers[id].play();\n }\n this.startAnimationCycle();\n };\n AnimationManager.prototype.pause = function () {\n if (!this.isPlaying)\n return;\n this.isPlaying = false;\n this.cancelAnimationFrame();\n if (this.debug) {\n Logger.debug('AnimationManager.pause()');\n }\n for (var id in this.controllers) {\n this.controllers[id].pause();\n }\n };\n AnimationManager.prototype.stop = function () {\n this.isPlaying = false;\n this.cancelAnimationFrame();\n if (this.debug) {\n Logger.debug('AnimationManager.stop()');\n }\n for (var id in this.controllers) {\n this.controllers[id].stop();\n }\n };\n AnimationManager.prototype.reset = function () {\n if (this.isPlaying) {\n this.stop();\n this.play();\n }\n else {\n this.stop();\n }\n };\n AnimationManager.prototype.animate = function (id, _a) {\n var _b, _c;\n var _d = _a.disableInteractions, disableInteractions = _d === void 0 ? true : _d, opts = __rest$4(_a, [\"disableInteractions\"]);\n if (this.skipAnimations) {\n // Initialise the animation with the final values immediately and then stop the animation\n (_b = opts.onUpdate) === null || _b === void 0 ? void 0 : _b.call(opts, opts.to);\n return;\n }\n var optsExtra = __assign$o(__assign$o({}, opts), { autoplay: this.isPlaying ? opts.autoplay : false, driver: this.createDriver(id, disableInteractions) });\n if (this.controllers[id]) {\n this.controllers[id].stop();\n }\n var controller = animate(optsExtra);\n this.controllers[id] = controller;\n // Initialise the animation immediately without requesting a frame to prevent flashes\n (_c = opts.onUpdate) === null || _c === void 0 ? void 0 : _c.call(opts, opts.from);\n return controller;\n };\n AnimationManager.prototype.animateMany = function (id, props, opts) {\n var e_1, _a;\n var _b;\n if (this.skipAnimations) {\n var state_1 = props.map(function (prop) { return prop.to; });\n opts.onUpdate(state_1);\n (_b = opts.onComplete) === null || _b === void 0 ? void 0 : _b.call(opts);\n return;\n }\n var state = props.map(function (prop) { return prop.from; });\n var playBatch = 0;\n var stopBatch = 0;\n var updateBatch = 0;\n var completeBatch = 0;\n var onUpdate = function (index) { return function (v) {\n var _a;\n state[index] = v;\n if (++updateBatch >= props.length) {\n (_a = opts.onUpdate) === null || _a === void 0 ? void 0 : _a.call(opts, state);\n updateBatch = 0;\n }\n }; };\n var onPlay = function () {\n var _a;\n if (++playBatch >= props.length) {\n (_a = opts.onPlay) === null || _a === void 0 ? void 0 : _a.call(opts);\n }\n };\n var onStop = function () {\n var _a;\n if (++stopBatch >= props.length) {\n (_a = opts.onStop) === null || _a === void 0 ? void 0 : _a.call(opts);\n }\n };\n var onComplete = function () {\n var _a;\n if (++completeBatch >= props.length) {\n (_a = opts.onComplete) === null || _a === void 0 ? void 0 : _a.call(opts);\n }\n };\n var index = 0;\n try {\n for (var props_1 = __values$q(props), props_1_1 = props_1.next(); !props_1_1.done; props_1_1 = props_1.next()) {\n var prop = props_1_1.value;\n var inner_id = id + \"-\" + index;\n this.animate(inner_id, __assign$o(__assign$o(__assign$o({}, opts), prop), { onUpdate: onUpdate(index), onPlay: onPlay, onStop: onStop, onComplete: onComplete }));\n index++;\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_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_1) throw e_1.error; }\n }\n };\n AnimationManager.prototype.animateWithThrottle = function (id, opts) {\n var _a;\n var throttleId = (_a = opts.throttleId) !== null && _a !== void 0 ? _a : id;\n if (this.throttles[throttleId] && opts.duration && Date.now() - this.throttles[throttleId] < opts.duration) {\n opts.delay = 0;\n opts.duration = 1;\n }\n this.throttles[id] = Date.now();\n this.animate(id, __assign$o({}, opts));\n };\n AnimationManager.prototype.animateManyWithThrottle = function (id, props, opts) {\n var _this = this;\n var _a;\n var throttleGroup = opts.throttleGroup;\n var throttleId = (_a = opts.throttleId) !== null && _a !== void 0 ? _a : id;\n var now = Date.now();\n var isThrottled = this.throttles[throttleId] && opts.duration && now - this.throttles[throttleId] < opts.duration;\n var inGroup = throttleGroup && this.throttleGroups.has(throttleGroup);\n if (isThrottled && !inGroup) {\n opts.delay = 0;\n opts.duration = 1;\n }\n if (!isThrottled && throttleGroup) {\n this.throttleGroups.add(throttleGroup);\n }\n var onStop = function () {\n var _a;\n if (throttleGroup) {\n _this.throttleGroups.delete(throttleGroup);\n }\n (_a = opts.onStop) === null || _a === void 0 ? void 0 : _a.call(opts);\n };\n this.throttles[throttleId] = now;\n return this.animateMany(id, props, __assign$o(__assign$o({}, opts), { onStop: onStop }));\n };\n AnimationManager.prototype.tween = function (opts) {\n var id = \"tween-\" + btoa(JSON.stringify(opts));\n var optsExtra = __assign$o(__assign$o({}, opts), { driver: this.createDriver(id) });\n return tween(optsExtra);\n };\n AnimationManager.prototype.createDriver = function (id, disableInteractions) {\n var _this = this;\n return function (update) {\n return {\n start: function () {\n _this.updaters.push([id, update]);\n if (_this.requestId == null) {\n _this.startAnimationCycle();\n }\n if (disableInteractions) {\n _this.interactionManager.pause(\"animation_\" + id);\n }\n },\n stop: function () {\n delete _this.controllers[id];\n _this.updaters = _this.updaters.filter(function (_a) {\n var _b = __read$B(_a, 1), uid = _b[0];\n return uid !== id;\n });\n if (_this.updaters.length <= 0) {\n _this.cancelAnimationFrame();\n }\n if (disableInteractions) {\n _this.interactionManager.resume(\"animation_\" + id);\n }\n },\n reset: function () { },\n };\n };\n };\n AnimationManager.prototype.startAnimationCycle = function () {\n var _this = this;\n if (this.updaters.length === 0)\n return;\n var frame = function (time) {\n _this.requestId = requestAnimationFrame(frame);\n if (!_this.readyToPlay)\n return;\n if (_this.lastTime === undefined)\n _this.lastTime = time;\n var deltaMs = time - _this.lastTime;\n _this.lastTime = time;\n if (_this.debug) {\n Logger.debug('AnimationManager - frame()', { updaterCount: _this.updaters.length });\n }\n _this.updaters.forEach(function (_a) {\n var _b = __read$B(_a, 2); _b[0]; var update = _b[1];\n return update(deltaMs);\n });\n _this.listeners.dispatch('animation-frame', { type: 'animation-frame', deltaMs: deltaMs });\n };\n this.requestId = requestAnimationFrame(frame);\n };\n AnimationManager.prototype.cancelAnimationFrame = function () {\n if (!this.requestId)\n return;\n cancelAnimationFrame(this.requestId);\n this.requestId = undefined;\n this.lastTime = undefined;\n };\n return AnimationManager;\n}(BaseManager));\n\nvar __read$A = (undefined && undefined.__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 * Manages the cursor styling for an element. Tracks the requested styling from distinct\n * dependents and handles conflicting styling requests.\n */\nvar CursorManager = /** @class */ (function () {\n function CursorManager(element) {\n this.states = {};\n this.element = element;\n }\n CursorManager.prototype.updateCursor = function (callerId, style) {\n delete this.states[callerId];\n if (style != null) {\n this.states[callerId] = { style: style };\n }\n this.applyStates();\n };\n CursorManager.prototype.applyStates = function () {\n var styleToApply = 'default';\n // Last added entry wins.\n Object.entries(this.states)\n .reverse()\n .slice(0, 1)\n .forEach(function (_a) {\n var _b = __read$A(_a, 2); _b[0]; var style = _b[1].style;\n return (styleToApply = style);\n });\n this.element.style.cursor = styleToApply;\n };\n return CursorManager;\n}());\n\nvar __extends$Z = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar ChartEventManager = /** @class */ (function (_super) {\n __extends$Z(ChartEventManager, _super);\n function ChartEventManager() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ChartEventManager.prototype.legendItemClick = function (series, itemId, enabled, legendItemName) {\n var event = {\n type: 'legend-item-click',\n series: series,\n itemId: itemId,\n enabled: enabled,\n legendItemName: legendItemName,\n };\n this.listeners.dispatch('legend-item-click', event);\n };\n ChartEventManager.prototype.legendItemDoubleClick = function (series, itemId, enabled, numVisibleItems, legendItemName) {\n var event = {\n type: 'legend-item-double-click',\n series: series,\n itemId: itemId,\n enabled: enabled,\n legendItemName: legendItemName,\n numVisibleItems: numVisibleItems,\n };\n this.listeners.dispatch('legend-item-double-click', event);\n };\n ChartEventManager.prototype.axisHover = function (axisId, direction) {\n var event = {\n type: 'axis-hover',\n axisId: axisId,\n direction: direction,\n };\n this.listeners.dispatch('axis-hover', event);\n };\n return ChartEventManager;\n}(BaseManager));\n\nvar __extends$Y = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read$z = (undefined && undefined.__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};\nfunction isEqual$1(a, b) {\n if (a === b)\n return true;\n if ((a === null || a === void 0 ? void 0 : a.series) !== (b === null || b === void 0 ? void 0 : b.series))\n return false;\n if ((a === null || a === void 0 ? void 0 : a.itemId) !== (b === null || b === void 0 ? void 0 : b.itemId))\n return false;\n if ((a === null || a === void 0 ? void 0 : a.datum) !== (b === null || b === void 0 ? void 0 : b.datum))\n return false;\n return true;\n}\n/**\n * Manages the actively highlighted series/datum for a chart. Tracks the requested highlights from\n * distinct dependents and handles conflicting highlight requests.\n */\nvar HighlightManager = /** @class */ (function (_super) {\n __extends$Y(HighlightManager, _super);\n function HighlightManager() {\n var _this = _super.call(this) || this;\n _this.states = {};\n _this.activeHighlight = undefined;\n return _this;\n }\n HighlightManager.prototype.updateHighlight = function (callerId, highlightedDatum) {\n delete this.states[callerId];\n if (highlightedDatum != null) {\n this.states[callerId] = { highlightedDatum: highlightedDatum };\n }\n this.applyStates();\n };\n HighlightManager.prototype.getActiveHighlight = function () {\n return this.activeHighlight;\n };\n HighlightManager.prototype.applyStates = function () {\n var previousHighlight = this.activeHighlight;\n var highlightToApply = undefined;\n // Last added entry wins.\n Object.entries(this.states)\n .reverse()\n .slice(0, 1)\n .forEach(function (_a) {\n var _b = __read$z(_a, 2); _b[0]; var highlightedDatum = _b[1].highlightedDatum;\n return (highlightToApply = highlightedDatum);\n });\n this.activeHighlight = highlightToApply;\n var changed = !isEqual$1(previousHighlight, this.activeHighlight);\n if (changed) {\n var event_1 = {\n type: 'highlight-change',\n previousHighlight: previousHighlight,\n currentHighlight: this.activeHighlight,\n };\n this.listeners.dispatch('highlight-change', event_1);\n }\n };\n return HighlightManager;\n}(BaseManager));\n\nvar __extends$X = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$n = (undefined && undefined.__assign) || function () {\n __assign$n = 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$n.apply(this, arguments);\n};\nvar __awaiter$e = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$e = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __values$p = (undefined && undefined.__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 WINDOW_EVENT_HANDLERS = ['pagehide', 'mousemove', 'mouseup', 'wheel'];\nvar EVENT_HANDLERS = [\n 'click',\n 'dblclick',\n 'contextmenu',\n 'mousedown',\n 'mouseout',\n 'mouseenter',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n];\nvar CSS = \"\\n.ag-chart-wrapper {\\n touch-action: none;\\n}\\n\";\n/**\n * Manages user interactions with a specific HTMLElement (or interactions that bubble from it's\n * children)\n */\nvar InteractionManager = /** @class */ (function (_super) {\n __extends$X(InteractionManager, _super);\n function InteractionManager(element, doc) {\n var e_1, _a, e_2, _b;\n if (doc === void 0) { doc = document; }\n var _this = _super.call(this) || this;\n _this.eventHandler = function (event) { return _this.processEvent(event); };\n _this.mouseDown = false;\n _this.touchDown = false;\n _this.enabled = true;\n _this.pausers = [];\n _this.rootElement = doc.body;\n _this.element = element;\n try {\n for (var EVENT_HANDLERS_1 = __values$p(EVENT_HANDLERS), EVENT_HANDLERS_1_1 = EVENT_HANDLERS_1.next(); !EVENT_HANDLERS_1_1.done; EVENT_HANDLERS_1_1 = EVENT_HANDLERS_1.next()) {\n var type = EVENT_HANDLERS_1_1.value;\n if (type.startsWith('touch')) {\n element.addEventListener(type, _this.eventHandler, { passive: true });\n }\n else {\n element.addEventListener(type, _this.eventHandler);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (EVENT_HANDLERS_1_1 && !EVENT_HANDLERS_1_1.done && (_a = EVENT_HANDLERS_1.return)) _a.call(EVENT_HANDLERS_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n try {\n for (var WINDOW_EVENT_HANDLERS_1 = __values$p(WINDOW_EVENT_HANDLERS), WINDOW_EVENT_HANDLERS_1_1 = WINDOW_EVENT_HANDLERS_1.next(); !WINDOW_EVENT_HANDLERS_1_1.done; WINDOW_EVENT_HANDLERS_1_1 = WINDOW_EVENT_HANDLERS_1.next()) {\n var type = WINDOW_EVENT_HANDLERS_1_1.value;\n if (type === 'wheel') {\n window.addEventListener(type, _this.eventHandler, { passive: false });\n }\n else {\n window.addEventListener(type, _this.eventHandler);\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (WINDOW_EVENT_HANDLERS_1_1 && !WINDOW_EVENT_HANDLERS_1_1.done && (_b = WINDOW_EVENT_HANDLERS_1.return)) _b.call(WINDOW_EVENT_HANDLERS_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n if (InteractionManager.interactionDocuments.indexOf(doc) < 0) {\n var styleElement = document.createElement('style');\n styleElement.innerHTML = CSS;\n document.head.insertBefore(styleElement, document.head.querySelector('style'));\n InteractionManager.interactionDocuments.push(doc);\n }\n return _this;\n }\n InteractionManager.prototype.destroy = function () {\n var e_3, _a, e_4, _b;\n try {\n for (var WINDOW_EVENT_HANDLERS_2 = __values$p(WINDOW_EVENT_HANDLERS), WINDOW_EVENT_HANDLERS_2_1 = WINDOW_EVENT_HANDLERS_2.next(); !WINDOW_EVENT_HANDLERS_2_1.done; WINDOW_EVENT_HANDLERS_2_1 = WINDOW_EVENT_HANDLERS_2.next()) {\n var type = WINDOW_EVENT_HANDLERS_2_1.value;\n window.removeEventListener(type, this.eventHandler);\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (WINDOW_EVENT_HANDLERS_2_1 && !WINDOW_EVENT_HANDLERS_2_1.done && (_a = WINDOW_EVENT_HANDLERS_2.return)) _a.call(WINDOW_EVENT_HANDLERS_2);\n }\n finally { if (e_3) throw e_3.error; }\n }\n try {\n for (var EVENT_HANDLERS_2 = __values$p(EVENT_HANDLERS), EVENT_HANDLERS_2_1 = EVENT_HANDLERS_2.next(); !EVENT_HANDLERS_2_1.done; EVENT_HANDLERS_2_1 = EVENT_HANDLERS_2.next()) {\n var type = EVENT_HANDLERS_2_1.value;\n this.element.removeEventListener(type, this.eventHandler);\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (EVENT_HANDLERS_2_1 && !EVENT_HANDLERS_2_1.done && (_b = EVENT_HANDLERS_2.return)) _b.call(EVENT_HANDLERS_2);\n }\n finally { if (e_4) throw e_4.error; }\n }\n };\n InteractionManager.prototype.resume = function (callerId) {\n this.pausers = this.pausers.filter(function (id) { return id !== callerId; });\n this.enabled = this.pausers.length <= 0;\n return this.enabled;\n };\n InteractionManager.prototype.pause = function (callerId) {\n this.enabled = false;\n this.pausers.push(callerId);\n };\n InteractionManager.prototype.processEvent = function (event) {\n var types = this.decideInteractionEventTypes(event);\n if (types.length > 0 && this.enabled) {\n // Async dispatch to avoid blocking the event-processing thread.\n this.dispatchEvent(event, types).catch(function (e) { return Logger.errorOnce(e); });\n }\n };\n InteractionManager.prototype.dispatchEvent = function (event, types) {\n return __awaiter$e(this, void 0, void 0, function () {\n var coords, _loop_1, this_1, types_1, types_1_1, type;\n var e_5, _a;\n return __generator$e(this, function (_b) {\n coords = this.calculateCoordinates(event);\n if (coords == null) {\n return [2 /*return*/];\n }\n _loop_1 = function (type) {\n var interactionEvent = this_1.buildEvent(__assign$n(__assign$n({ event: event }, coords), { type: type }));\n this_1.listeners.cancellableDispatch(type, function () { return interactionEvent.consumed; }, interactionEvent);\n };\n this_1 = this;\n try {\n for (types_1 = __values$p(types), types_1_1 = types_1.next(); !types_1_1.done; types_1_1 = types_1.next()) {\n type = types_1_1.value;\n _loop_1(type);\n }\n }\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\n finally {\n try {\n if (types_1_1 && !types_1_1.done && (_a = types_1.return)) _a.call(types_1);\n }\n finally { if (e_5) throw e_5.error; }\n }\n return [2 /*return*/];\n });\n });\n };\n InteractionManager.prototype.decideInteractionEventTypes = function (event) {\n switch (event.type) {\n case 'click':\n return ['click'];\n case 'dblclick':\n return ['dblclick'];\n case 'contextmenu':\n return ['contextmenu'];\n case 'mousedown':\n this.mouseDown = true;\n this.dragStartElement = event.target;\n return ['drag-start'];\n case 'touchstart':\n this.touchDown = true;\n this.dragStartElement = event.target;\n return ['drag-start'];\n case 'touchmove':\n case 'mousemove':\n if (!this.mouseDown && !this.touchDown && !this.isEventOverElement(event)) {\n // We only care about these events if the target is the canvas, unless\n // we're in the middle of a drag/slide.\n return [];\n }\n return this.mouseDown || this.touchDown ? ['drag'] : ['hover'];\n case 'mouseup':\n if (!this.mouseDown && !this.isEventOverElement(event)) {\n // We only care about these events if the target is the canvas, unless\n // we're in the middle of a drag.\n return [];\n }\n this.mouseDown = false;\n this.dragStartElement = undefined;\n return ['drag-end'];\n case 'touchend':\n if (!this.touchDown && !this.isEventOverElement(event)) {\n // We only care about these events if the target is the canvas, unless\n // we're in the middle of a slide.\n return [];\n }\n this.touchDown = false;\n this.dragStartElement = undefined;\n return ['drag-end'];\n case 'mouseout':\n case 'touchcancel':\n return ['leave'];\n case 'mouseenter':\n var mouseButtonDown = event instanceof MouseEvent && (event.buttons & 1) === 1;\n if (this.mouseDown !== mouseButtonDown) {\n this.mouseDown = mouseButtonDown;\n return [mouseButtonDown ? 'drag-start' : 'drag-end'];\n }\n return [];\n case 'pagehide':\n return ['page-left'];\n case 'wheel':\n return ['wheel'];\n }\n return [];\n };\n InteractionManager.prototype.isEventOverElement = function (event) {\n var _a;\n return event.target === this.element || ((_a = event.target) === null || _a === void 0 ? void 0 : _a.parentElement) === this.element;\n };\n InteractionManager.prototype.calculateCoordinates = function (event) {\n var _a;\n if (event instanceof MouseEvent) {\n var clientX = event.clientX, clientY = event.clientY, pageX = event.pageX, pageY = event.pageY, offsetX = event.offsetX, offsetY = event.offsetY;\n return this.fixOffsets(event, { clientX: clientX, clientY: clientY, pageX: pageX, pageY: pageY, offsetX: offsetX, offsetY: offsetY });\n }\n else if (typeof TouchEvent !== 'undefined' && event instanceof TouchEvent) {\n var lastTouch = (_a = event.touches[0]) !== null && _a !== void 0 ? _a : event.changedTouches[0];\n var clientX = lastTouch.clientX, clientY = lastTouch.clientY, pageX = lastTouch.pageX, pageY = lastTouch.pageY;\n return __assign$n(__assign$n({}, InteractionManager.NULL_COORDS), { clientX: clientX, clientY: clientY, pageX: pageX, pageY: pageY });\n }\n else if (event instanceof PageTransitionEvent) {\n if (event.persisted) {\n // Don't fire the page-left event since the page maybe revisited.\n return;\n }\n return InteractionManager.NULL_COORDS;\n }\n // Unsupported event - abort.\n };\n InteractionManager.prototype.fixOffsets = function (event, coords) {\n var offsets = function (el) {\n var x = 0;\n var y = 0;\n while (el) {\n x += el.offsetLeft;\n y += el.offsetTop;\n el = el.offsetParent;\n }\n return { x: x, y: y };\n };\n if (this.dragStartElement != null && event.target !== this.dragStartElement) {\n // Offsets need to be relative to the drag-start element to avoid jumps when\n // the pointer moves between element boundaries.\n var offsetDragStart = offsets(this.dragStartElement);\n var offsetEvent = offsets(event.target);\n coords.offsetX -= offsetDragStart.x - offsetEvent.x;\n coords.offsetY -= offsetDragStart.y - offsetEvent.y;\n }\n return coords;\n };\n InteractionManager.prototype.buildEvent = function (opts) {\n var type = opts.type, event = opts.event, clientX = opts.clientX, clientY = opts.clientY;\n var offsetX = opts.offsetX, offsetY = opts.offsetY, pageX = opts.pageX, pageY = opts.pageY;\n if (!isNumber$4(offsetX) || !isNumber$4(offsetY)) {\n var rect = this.element.getBoundingClientRect();\n offsetX = clientX - rect.left;\n offsetY = clientY - rect.top;\n }\n if (!isNumber$4(pageX) || !isNumber$4(pageY)) {\n var pageRect = this.rootElement.getBoundingClientRect();\n pageX = clientX - pageRect.left;\n pageY = clientY - pageRect.top;\n }\n var builtEvent = {\n type: type,\n offsetX: offsetX,\n offsetY: offsetY,\n pageX: pageX,\n pageY: pageY,\n sourceEvent: event,\n consumed: false,\n consume: function () { return (builtEvent.consumed = true); },\n };\n return builtEvent;\n };\n InteractionManager.interactionDocuments = [];\n InteractionManager.NULL_COORDS = {\n clientX: -Infinity,\n clientY: -Infinity,\n pageX: -Infinity,\n pageY: -Infinity,\n offsetX: -Infinity,\n offsetY: -Infinity,\n };\n return InteractionManager;\n}(BaseManager));\n\nvar __values$o = (undefined && undefined.__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$y = (undefined && undefined.__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 * Manages the tooltip HTML an element. Tracks the requested HTML from distinct dependents and\n * handles conflicting tooltip requests.\n */\nvar TooltipManager = /** @class */ (function () {\n function TooltipManager(tooltip, interactionManager) {\n var _this = this;\n this.states = {};\n this.exclusiveAreas = {};\n this.destroyFns = [];\n this.tooltip = tooltip;\n var hoverRef = interactionManager.addListener('hover', function (e) { return _this.checkExclusiveRects(e); });\n this.destroyFns.push(function () { return interactionManager.removeListener(hoverRef); });\n }\n TooltipManager.prototype.updateTooltip = function (callerId, meta, content) {\n var _a;\n if (content == null) {\n content = (_a = this.states[callerId]) === null || _a === void 0 ? void 0 : _a.content;\n }\n this.states[callerId] = { content: content, meta: meta };\n this.applyStates();\n };\n TooltipManager.prototype.updateExclusiveRect = function (callerId, area) {\n if (area) {\n this.exclusiveAreas[callerId] = area;\n }\n else {\n delete this.exclusiveAreas[callerId];\n }\n };\n TooltipManager.prototype.removeTooltip = function (callerId) {\n delete this.states[callerId];\n this.applyStates();\n };\n TooltipManager.prototype.getTooltipMeta = function (callerId) {\n var _a;\n return (_a = this.states[callerId]) === null || _a === void 0 ? void 0 : _a.meta;\n };\n TooltipManager.prototype.destroy = function () {\n var e_1, _a;\n try {\n for (var _b = __values$o(this.destroyFns), _c = _b.next(); !_c.done; _c = _b.next()) {\n var destroyFn = _c.value;\n destroyFn();\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 };\n TooltipManager.prototype.checkExclusiveRects = function (e) {\n var e_2, _a;\n var newAppliedExclusiveArea;\n try {\n for (var _b = __values$o(Object.entries(this.exclusiveAreas)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var _d = __read$y(_c.value, 2), entryId = _d[0], area = _d[1];\n if (!area.containsPoint(e.offsetX, e.offsetY)) {\n continue;\n }\n newAppliedExclusiveArea = entryId;\n break;\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 if (newAppliedExclusiveArea === this.appliedExclusiveArea) {\n return;\n }\n this.appliedExclusiveArea = newAppliedExclusiveArea;\n this.applyStates();\n };\n TooltipManager.prototype.applyStates = function () {\n var _this = this;\n var _a;\n var ids = this.appliedExclusiveArea ? [this.appliedExclusiveArea] : Object.keys(this.states);\n var contentToApply = undefined;\n var metaToApply = undefined;\n // Last added entry wins.\n ids.reverse();\n ids.slice(0, 1).forEach(function (id) {\n var _a;\n var _b = (_a = _this.states[id]) !== null && _a !== void 0 ? _a : {}, content = _b.content, meta = _b.meta;\n contentToApply = content;\n metaToApply = meta;\n });\n if (metaToApply === undefined || contentToApply === undefined) {\n this.appliedState = undefined;\n this.tooltip.toggle(false);\n return;\n }\n if (((_a = this.appliedState) === null || _a === void 0 ? void 0 : _a.content) === contentToApply) {\n var renderInstantly = this.tooltip.isVisible();\n this.tooltip.show(metaToApply, undefined, renderInstantly);\n }\n else {\n this.tooltip.show(metaToApply, contentToApply);\n }\n this.appliedState = { content: contentToApply, meta: metaToApply };\n };\n return TooltipManager;\n}());\n\nvar __extends$W = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$m = (undefined && undefined.__assign) || function () {\n __assign$m = 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$m.apply(this, arguments);\n};\nvar __values$n = (undefined && undefined.__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$x = (undefined && undefined.__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 * Manages the current zoom state for a chart. Tracks the requested zoom from distinct dependents\n * and handles conflicting zoom requests.\n */\nvar ZoomManager = /** @class */ (function (_super) {\n __extends$W(ZoomManager, _super);\n function ZoomManager() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.axes = {};\n return _this;\n }\n ZoomManager.prototype.updateAxes = function (axes) {\n var _this = this;\n var removedAxes = new Set(Object.keys(this.axes));\n axes.forEach(function (axis) {\n var _a;\n var _b, _c;\n removedAxes.delete(axis.id);\n (_a = (_b = _this.axes)[_c = axis.id]) !== null && _a !== void 0 ? _a : (_b[_c] = new AxisZoomManager(axis));\n });\n removedAxes.forEach(function (axisId) {\n delete _this.axes[axisId];\n });\n if (this.initialZoom) {\n this.updateZoom(this.initialZoom.callerId, this.initialZoom.newZoom);\n this.initialZoom = undefined;\n }\n };\n ZoomManager.prototype.updateZoom = function (callerId, newZoom) {\n if (Object.keys(this.axes).length === 0) {\n this.initialZoom = { callerId: callerId, newZoom: newZoom };\n return;\n }\n Object.values(this.axes).forEach(function (axis) {\n axis.updateZoom(callerId, newZoom === null || newZoom === void 0 ? void 0 : newZoom[axis.getDirection()]);\n });\n this.applyStates();\n };\n ZoomManager.prototype.updateAxisZoom = function (callerId, axisId, newZoom) {\n var _a;\n (_a = this.axes[axisId]) === null || _a === void 0 ? void 0 : _a.updateZoom(callerId, newZoom);\n this.applyStates();\n };\n ZoomManager.prototype.getZoom = function () {\n var x;\n var y;\n // TODO: this only works when there is a single axis on each direction as it gets the last of each\n Object.values(this.axes).forEach(function (axis) {\n if (axis.getDirection() === ChartAxisDirection.X) {\n x = axis.getZoom();\n }\n else if (axis.getDirection() === ChartAxisDirection.Y) {\n y = axis.getZoom();\n }\n });\n if (x || y) {\n return { x: x, y: y };\n }\n };\n ZoomManager.prototype.getAxisZoom = function (axisId) {\n var _a;\n return (_a = this.axes[axisId]) === null || _a === void 0 ? void 0 : _a.getZoom();\n };\n ZoomManager.prototype.getAxisZooms = function () {\n var e_1, _a;\n var axes = {};\n try {\n for (var _b = __values$n(Object.entries(this.axes)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var _d = __read$x(_c.value, 2), axisId = _d[0], axis = _d[1];\n axes[axisId] = {\n direction: axis.getDirection(),\n zoom: axis.getZoom(),\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 axes;\n };\n ZoomManager.prototype.applyStates = function () {\n var e_2, _a;\n var changed = Object.values(this.axes)\n .map(function (axis) { return axis.applyStates(); })\n .some(Boolean);\n if (!changed) {\n return;\n }\n var currentZoom = this.getZoom();\n var axes = {};\n try {\n for (var _b = __values$n(Object.entries(this.axes)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var _d = __read$x(_c.value, 2), axisId = _d[0], axis = _d[1];\n axes[axisId] = axis.getZoom();\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 var event = __assign$m(__assign$m({ type: 'zoom-change' }, (currentZoom !== null && currentZoom !== void 0 ? currentZoom : {})), { axes: axes });\n this.listeners.dispatch('zoom-change', event);\n };\n return ZoomManager;\n}(BaseManager));\nvar AxisZoomManager = /** @class */ (function () {\n function AxisZoomManager(axis) {\n this.states = {};\n this.currentZoom = undefined;\n this.axis = axis;\n }\n AxisZoomManager.prototype.getDirection = function () {\n return this.axis.direction;\n };\n AxisZoomManager.prototype.updateZoom = function (callerId, newZoom) {\n delete this.states[callerId];\n if (newZoom != null) {\n this.states[callerId] = __assign$m({}, newZoom);\n }\n };\n AxisZoomManager.prototype.getZoom = function () {\n return this.currentZoom;\n };\n AxisZoomManager.prototype.applyStates = function () {\n var _a, _b;\n var prevZoom = this.currentZoom;\n var last = Object.keys(this.states)[Object.keys(this.states).length - 1];\n this.currentZoom = __assign$m({}, this.states[last]);\n var changed = (prevZoom === null || prevZoom === void 0 ? void 0 : prevZoom.min) !== ((_a = this.currentZoom) === null || _a === void 0 ? void 0 : _a.min) || (prevZoom === null || prevZoom === void 0 ? void 0 : prevZoom.max) !== ((_b = this.currentZoom) === null || _b === void 0 ? void 0 : _b.max);\n return changed;\n };\n return AxisZoomManager;\n}());\n\nvar __assign$l = (undefined && undefined.__assign) || function () {\n __assign$l = 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$l.apply(this, arguments);\n};\nfunction isLayoutStage(t) {\n return t !== 'layout-complete';\n}\nfunction isLayoutComplete(t) {\n return t === 'layout-complete';\n}\nvar LayoutService = /** @class */ (function () {\n function LayoutService() {\n this.layoutProcessors = new Listeners();\n this.listeners = new Listeners();\n }\n LayoutService.prototype.addListener = function (type, cb) {\n if (isLayoutStage(type)) {\n return this.layoutProcessors.addListener(type, cb);\n }\n else if (isLayoutComplete(type)) {\n return this.listeners.addListener(type, cb);\n }\n throw new Error('AG Charts - unsupported listener type: ' + type);\n };\n LayoutService.prototype.removeListener = function (listenerSymbol) {\n this.listeners.removeListener(listenerSymbol);\n this.layoutProcessors.removeListener(listenerSymbol);\n };\n LayoutService.prototype.dispatchPerformLayout = function (stage, ctx) {\n var result = this.layoutProcessors.reduceDispatch(stage, function (_a, ctx) {\n var shrinkRect = _a.shrinkRect;\n return [__assign$l(__assign$l({}, ctx), { shrinkRect: shrinkRect })];\n }, ctx);\n return result !== null && result !== void 0 ? result : ctx;\n };\n LayoutService.prototype.dispatchLayoutComplete = function (event) {\n this.listeners.dispatch('layout-complete', event);\n };\n return LayoutService;\n}());\n\nvar DataService = /** @class */ (function () {\n function DataService(getSeries) {\n this.getSeries = getSeries;\n }\n return DataService;\n}());\n\n/** Types of chart-update, in pipeline execution order. */\nvar ChartUpdateType;\n(function (ChartUpdateType) {\n ChartUpdateType[ChartUpdateType[\"FULL\"] = 0] = \"FULL\";\n ChartUpdateType[ChartUpdateType[\"PROCESS_DATA\"] = 1] = \"PROCESS_DATA\";\n ChartUpdateType[ChartUpdateType[\"PERFORM_LAYOUT\"] = 2] = \"PERFORM_LAYOUT\";\n ChartUpdateType[ChartUpdateType[\"SERIES_UPDATE\"] = 3] = \"SERIES_UPDATE\";\n ChartUpdateType[ChartUpdateType[\"TOOLTIP_RECALCULATION\"] = 4] = \"TOOLTIP_RECALCULATION\";\n ChartUpdateType[ChartUpdateType[\"SCENE_RENDER\"] = 5] = \"SCENE_RENDER\";\n ChartUpdateType[ChartUpdateType[\"NONE\"] = 6] = \"NONE\";\n})(ChartUpdateType || (ChartUpdateType = {}));\n\nvar UpdateService = /** @class */ (function () {\n function UpdateService(updateCallback) {\n this.updateCallback = updateCallback;\n }\n UpdateService.prototype.update = function (type, _a) {\n if (type === void 0) { type = ChartUpdateType.FULL; }\n var _b = _a === void 0 ? {} : _a, _c = _b.forceNodeDataRefresh, forceNodeDataRefresh = _c === void 0 ? false : _c;\n this.updateCallback(type, { forceNodeDataRefresh: forceNodeDataRefresh });\n };\n return UpdateService;\n}());\n\nvar __decorate$1T = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 ChartHighlight = /** @class */ (function () {\n function ChartHighlight() {\n this.range = 'tooltip';\n }\n __decorate$1T([\n Validate(STRING_UNION('tooltip', 'node'))\n ], ChartHighlight.prototype, \"range\", void 0);\n return ChartHighlight;\n}());\n\nvar __values$m = (undefined && undefined.__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$w = (undefined && undefined.__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 Selection = /** @class */ (function () {\n function Selection(parent, classOrFactory, garbageCollection) {\n if (garbageCollection === void 0) { garbageCollection = true; }\n this._nodes = [];\n this._data = [];\n this._datumNodeIndices = new Map();\n // If garbage collection is set to false, you must call `selection.cleanup()` to remove deleted nodes\n this._garbage = [];\n this._garbageCollection = true;\n this._parent = parent;\n this._factory = Object.prototype.isPrototypeOf.call(Node, classOrFactory)\n ? function () { return new classOrFactory(); }\n : classOrFactory;\n this._garbageCollection = garbageCollection;\n }\n Selection.select = function (parent, classOrFactory, garbageCollection) {\n if (garbageCollection === void 0) { garbageCollection = true; }\n return new Selection(parent, classOrFactory, garbageCollection);\n };\n Selection.prototype.each = function (iterate) {\n this._nodes.forEach(function (node, i) { return iterate(node, node.datum, i); });\n return this;\n };\n /**\n * Update the data in a selection. If an `getDatumId()` function is provided, maintain a list of ids related to\n * the nodes. Otherwise, take the more efficient route of simply creating and destroying nodes at the end\n * of the array.\n */\n Selection.prototype.update = function (data, init, getDatumId) {\n var e_1, _a;\n var _this = this;\n var old = this._data;\n var parent = this._parent;\n var factory = this._factory;\n var datumIds = new Map();\n if (getDatumId) {\n // Check if new datum and append node and save map of datum id to node index\n data.forEach(function (datum, index) {\n var datumId = getDatumId(datum);\n datumIds.set(datumId, index);\n if (!_this._datumNodeIndices.has(datumId)) {\n var node = factory(datum);\n node.datum = datum;\n init === null || init === void 0 ? void 0 : init(node);\n parent.appendChild(node);\n _this._nodes.push(node);\n _this._datumNodeIndices.set(datumId, _this._nodes.length - 1);\n }\n });\n }\n else if (data.length > old.length) {\n // Create and append nodes for new data\n data.slice(old.length).forEach(function (datum) {\n var node = factory(datum);\n node.datum = datum;\n init === null || init === void 0 ? void 0 : init(node);\n parent.appendChild(node);\n _this._nodes.push(node);\n });\n }\n else if (data.length < old.length) {\n // Destroy any nodes that are in excess of the new data\n this._nodes.splice(data.length).forEach(function (node) {\n parent.removeChild(node);\n });\n }\n // Copy the data into a new array to prevent mutation and duplicates\n this._data = data.slice(0);\n if (getDatumId) {\n try {\n // Find and update the datum for each node or throw into garbage if datum no longer exists\n for (var _b = __values$m(this._datumNodeIndices), _c = _b.next(); !_c.done; _c = _b.next()) {\n var _d = __read$w(_c.value, 2), datumId = _d[0], nodeIndex = _d[1];\n var datumIndex = datumIds.get(datumId);\n if (datumIndex !== undefined) {\n this._nodes[nodeIndex].datum = data[datumIndex];\n }\n else {\n this._garbage.push(datumId);\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 if (this._garbageCollection) {\n this.cleanup();\n }\n }\n else {\n // Reset the node data by index\n for (var i = 0; i < data.length; i++) {\n this._nodes[i].datum = this._data[i];\n }\n }\n return this;\n };\n Selection.prototype.clear = function () {\n this.update([]);\n return this;\n };\n Selection.prototype.cleanup = function () {\n var e_2, _a;\n var _this = this;\n if (this._garbage.length === 0)\n return;\n this._garbage.forEach(function (datumId) {\n var nodeIndex = _this._datumNodeIndices.get(datumId);\n if (nodeIndex === undefined)\n return;\n var node = _this._nodes[nodeIndex];\n delete _this._nodes[nodeIndex];\n _this._datumNodeIndices.delete(datumId);\n if (node) {\n _this._parent.removeChild(node);\n }\n });\n // Reset map of datum ids to node indices while filtering out any removed, undefined, nodes\n var newIndex = 0;\n var datumNodeIndices = this._datumNodeIndices.entries();\n var nodeIndexDatums = new Map();\n try {\n for (var datumNodeIndices_1 = __values$m(datumNodeIndices), datumNodeIndices_1_1 = datumNodeIndices_1.next(); !datumNodeIndices_1_1.done; datumNodeIndices_1_1 = datumNodeIndices_1.next()) {\n var _b = __read$w(datumNodeIndices_1_1.value, 2), datumId = _b[0], nodeIndex = _b[1];\n nodeIndexDatums.set(nodeIndex, datumId);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (datumNodeIndices_1_1 && !datumNodeIndices_1_1.done && (_a = datumNodeIndices_1.return)) _a.call(datumNodeIndices_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n this._nodes = this._nodes.filter(function (node, index) {\n if (node === undefined)\n return false;\n var datumId = nodeIndexDatums.get(index);\n _this._datumNodeIndices.set(datumId, newIndex);\n newIndex++;\n return true;\n });\n this._garbage = [];\n };\n Selection.selectAll = function (parent, predicate) {\n var results = [];\n var traverse = function (node) {\n if (predicate(node)) {\n results.push(node);\n }\n node.children.forEach(traverse);\n };\n traverse(parent);\n return results;\n };\n Selection.selectByClass = function (node, Class) {\n return Selection.selectAll(node, function (node) { return node instanceof Class; });\n };\n Selection.selectByTag = function (node, tag) {\n return Selection.selectAll(node, function (node) { return node.tag === tag; });\n };\n Selection.prototype.select = function (predicate) {\n return Selection.selectAll(this._parent, predicate);\n };\n Selection.prototype.selectByClass = function (Class) {\n return this.select(function (node) { return node instanceof Class; });\n };\n Selection.prototype.selectByTag = function (tag) {\n return this.select(function (node) { return node.tag === tag; });\n };\n Selection.prototype.nodes = function () {\n return this._nodes;\n };\n return Selection;\n}());\n\n/**\n * Finds the roots of a parametric linear equation in `t`,\n * where `t` lies in the interval of `[0,1]`.\n */\nfunction 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 */\nfunction 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) {\n // 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) {\n // 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 */\nfunction 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) {\n // Complex or duplicate roots.\n var rD = Math.sqrt(D);\n var S = Math.sign(R + rD) * Math.pow(Math.abs(R + rD), third);\n var T = Math.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 {\n // 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\nvar __values$l = (undefined && undefined.__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 * 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 */\nfunction segmentIntersection(ax1, ay1, ax2, ay2, bx1, by1, bx2, by2) {\n var d = (ax2 - ax1) * (by2 - by1) - (ay2 - ay1) * (bx2 - bx1);\n if (d === 0) {\n // 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 */\nfunction cubicSegmentIntersections(px1, py1, px2, py2, px3, py3, px4, py4, x1, y1, x2, y2) {\n var e_1, _a;\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 try {\n // Verify that the roots are within bounds of the linear segment.\n for (var roots_1 = __values$l(roots), roots_1_1 = roots_1.next(); !roots_1_1.done; roots_1_1 = roots_1.next()) {\n var t = roots_1_1.value;\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 {\n // 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 }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (roots_1_1 && !roots_1_1.done && (_a = roots_1.return)) _a.call(roots_1);\n }\n finally { if (e_1) throw e_1.error; }\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 */\nfunction bezierCoefficients(P1, P2, P3, P4) {\n return [\n // Bézier expressed as matrix operations:\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/**\n * Returns intersection points of the arc and the line segment.\n * Takes in arc parameters and line segment start/end points.\n */\nfunction arcIntersections(cx, cy, r, startAngle, endAngle, counterClockwise, x1, y1, x2, y2) {\n // Solving the quadratic equation:\n // 1. y = k * x + y0\n // 2. (x - cx)^2 + (y - cy)^2 = r^2\n var k = (y2 - y1) / (x2 - x1);\n var y0 = y1 - k * x1;\n var a = Math.pow(k, 2) + 1;\n var b = 2 * (k * (y0 - cy) - cx);\n var c = Math.pow(cx, 2) + Math.pow(y0 - cy, 2) - Math.pow(r, 2);\n var d = Math.pow(b, 2) - 4 * a * c;\n if (d < 0) {\n return [];\n }\n var i1x = (-b + Math.sqrt(d)) / 2 / a;\n var i2x = (-b - Math.sqrt(d)) / 2 / a;\n var intersections = [];\n [i1x, i2x].forEach(function (x) {\n var isXInsideLine = x >= Math.min(x1, x2) && x <= Math.max(x1, x2);\n if (!isXInsideLine) {\n return;\n }\n var y = k * x;\n var a1 = normalizeAngle360(counterClockwise ? endAngle : startAngle);\n var a2 = normalizeAngle360(counterClockwise ? startAngle : endAngle);\n var intersectionAngle = normalizeAngle360(Math.atan2(y, x));\n // Order angles clockwise after the start angle\n // (end angle if counter-clockwise)\n if (a2 <= a1) {\n a2 += 2 * Math.PI;\n }\n if (intersectionAngle < a1) {\n intersectionAngle += 2 * Math.PI;\n }\n if (intersectionAngle >= a1 && intersectionAngle <= a2) {\n intersections.push({ x: x, y: y });\n }\n });\n return intersections;\n}\n\nvar __values$k = (undefined && undefined.__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 Command;\n(function (Command) {\n Command[Command[\"Move\"] = 0] = \"Move\";\n Command[Command[\"Line\"] = 1] = \"Line\";\n Command[Command[\"Arc\"] = 2] = \"Arc\";\n Command[Command[\"Curve\"] = 3] = \"Curve\";\n Command[Command[\"ClosePath\"] = 4] = \"ClosePath\";\n})(Command || (Command = {}));\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.previousCommands = [];\n this.previousParams = [];\n this.previousClosedPath = false;\n this.commands = [];\n this.params = [];\n this._closedPath = false;\n }\n Path2D.prototype.isDirty = function () {\n if (this._closedPath !== this.previousClosedPath) {\n return true;\n }\n if (this.previousCommands.length !== this.commands.length) {\n return true;\n }\n if (this.previousParams.length !== this.params.length) {\n return true;\n }\n for (var i = 0; i < this.commands.length; i++) {\n if (this.commands[i] !== this.previousCommands[i]) {\n return true;\n }\n }\n for (var i = 0; i < this.params.length; i++) {\n if (this.params[i] !== this.previousParams[i]) {\n return true;\n }\n }\n return false;\n };\n Path2D.prototype.draw = function (ctx) {\n var e_1, _a;\n var commands = this.commands;\n var params = this.params;\n var j = 0;\n ctx.beginPath();\n try {\n for (var commands_1 = __values$k(commands), commands_1_1 = commands_1.next(); !commands_1_1.done; commands_1_1 = commands_1.next()) {\n var command = commands_1_1.value;\n switch (command) {\n case Command.Move:\n ctx.moveTo(params[j++], params[j++]);\n break;\n case Command.Line:\n ctx.lineTo(params[j++], params[j++]);\n break;\n case Command.Curve:\n ctx.bezierCurveTo(params[j++], params[j++], params[j++], params[j++], params[j++], params[j++]);\n break;\n case Command.Arc:\n ctx.arc(params[j++], params[j++], params[j++], params[j++], params[j++], params[j++] === 1);\n break;\n case Command.ClosePath:\n ctx.closePath();\n break;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (commands_1_1 && !commands_1_1.done && (_a = commands_1.return)) _a.call(commands_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n if (commands.length === 0) {\n ctx.closePath();\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(Command.Move);\n this.params.push(x, y);\n };\n Path2D.prototype.lineTo = function (x, y) {\n if (this.xy) {\n this.commands.push(Command.Line);\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 Path2D.prototype.arc = function (x, y, r, sAngle, eAngle, antiClockwise) {\n if (antiClockwise === void 0) { antiClockwise = false; }\n var endX = x + r * Math.cos(eAngle);\n var endY = y + r * Math.sin(eAngle);\n if (this.xy) {\n this.xy[0] = endX;\n this.xy[1] = endY;\n }\n else {\n this.xy = [endX, endY];\n }\n this.commands.push(Command.Arc);\n this.params.push(x, y, r, sAngle, eAngle, antiClockwise ? 1 : 0);\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(Command.Curve);\n this.params.push(cx1, cy1, cx2, cy2, x, y);\n if (this.xy) {\n this.xy[0] = x;\n this.xy[1] = y;\n }\n };\n Object.defineProperty(Path2D.prototype, \"closedPath\", {\n get: function () {\n return this._closedPath;\n },\n enumerable: false,\n configurable: true\n });\n Path2D.prototype.closePath = function () {\n if (this.xy) {\n this.xy = undefined;\n this.commands.push(Command.ClosePath);\n this._closedPath = true;\n }\n };\n Path2D.prototype.clear = function (_a) {\n var _b = _a === void 0 ? { trackChanges: false } : _a, trackChanges = _b.trackChanges;\n if (trackChanges) {\n this.previousCommands = this.commands;\n this.previousParams = this.params;\n this.previousClosedPath = this._closedPath;\n this.commands = [];\n this.params = [];\n }\n else {\n this.commands.length = 0;\n this.params.length = 0;\n }\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 Command.Move:\n if (!isNaN(sx)) {\n if (segmentIntersection(sx, sy, px, py, ox, oy, x, y)) {\n intersectionCount++;\n }\n }\n px = params[pi++];\n sx = px;\n py = params[pi++];\n sy = py;\n break;\n case Command.Line:\n if (segmentIntersection(px, py, params[pi++], params[pi++], ox, oy, x, y)) {\n intersectionCount++;\n }\n px = params[pi - 2];\n py = params[pi - 1];\n break;\n case Command.Curve:\n intersectionCount += cubicSegmentIntersections(px, py, params[pi++], params[pi++], params[pi++], params[pi++], params[pi++], params[pi++], ox, oy, x, y).length;\n px = params[pi - 2];\n py = params[pi - 1];\n break;\n case Command.Arc:\n intersectionCount += arcIntersections(params[pi++], params[pi++], params[pi++], params[pi++], params[pi++], Boolean(params[pi++]), ox, oy, x, y).length;\n px = params[pi - 2];\n py = params[pi - 1];\n break;\n case Command.ClosePath:\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 return Path2D;\n}());\n\nvar __extends$V = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1S = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nfunction ScenePathChangeDetection(opts) {\n var _a = opts !== null && opts !== void 0 ? opts : {}, _b = _a.redraw, redraw = _b === void 0 ? RedrawType.MAJOR : _b, changeCb = _a.changeCb, convertor = _a.convertor;\n return SceneChangeDetection({ redraw: redraw, type: 'path', convertor: convertor, changeCb: changeCb });\n}\nvar Path = /** @class */ (function (_super) {\n __extends$V(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 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.markDirty(this, RedrawType.MAJOR);\n }\n }\n },\n enumerable: false,\n configurable: true\n });\n Path.prototype.checkPathDirty = function () {\n var _a, _b;\n if (this._dirtyPath) {\n return;\n }\n this.dirtyPath = this.path.isDirty() || ((_b = (_a = this.fillShadow) === null || _a === void 0 ? void 0 : _a.isDirty()) !== null && _b !== void 0 ? _b : false);\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.isDirtyPath = function () {\n // Override point for more expensive dirty checks.\n return false;\n };\n Path.prototype.updatePath = function () {\n // Override point for subclasses.\n };\n Path.prototype.render = function (renderCtx) {\n var _a, _b;\n var ctx = renderCtx.ctx, forceRender = renderCtx.forceRender, stats = renderCtx.stats;\n if (this.dirty === RedrawType.NONE && !forceRender) {\n if (stats)\n stats.nodesSkipped += this.nodeCount.count;\n return;\n }\n this.computeTransformMatrix();\n this.matrix.toContext(ctx);\n if (this.dirtyPath || this.isDirtyPath()) {\n this.updatePath();\n this.dirtyPath = false;\n }\n if (this.clipPath) {\n ctx.save();\n if (this.clipMode === 'normal') {\n // Bound the shape rendered to the clipping path.\n this.clipPath.draw(ctx);\n ctx.clip();\n }\n this.path.draw(ctx);\n this.fillStroke(ctx);\n if (this.clipMode === 'punch-out') {\n // Bound the shape rendered to outside the clipping path.\n this.clipPath.draw(ctx);\n ctx.clip();\n // Fallback values, but practically these should never be used.\n var _c = (_a = this.computeBBox()) !== null && _a !== void 0 ? _a : {}, _d = _c.x, x = _d === void 0 ? -10000 : _d, _e = _c.y, y = _e === void 0 ? -10000 : _e, _f = _c.width, width = _f === void 0 ? 20000 : _f, _g = _c.height, height = _g === void 0 ? 20000 : _g;\n ctx.clearRect(x, y, width, height);\n }\n ctx.restore();\n }\n else {\n this.path.draw(ctx);\n this.fillStroke(ctx);\n }\n (_b = this.fillShadow) === null || _b === void 0 ? void 0 : _b.markClean();\n _super.prototype.render.call(this, renderCtx);\n };\n Path.className = 'Path';\n __decorate$1S([\n ScenePathChangeDetection()\n ], Path.prototype, \"clipPath\", void 0);\n __decorate$1S([\n ScenePathChangeDetection()\n ], Path.prototype, \"clipMode\", void 0);\n return Path;\n}(Shape));\n\nvar __extends$U = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1R = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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$j = (undefined && undefined.__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 Marker = /** @class */ (function (_super) {\n __extends$U(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 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 Marker.prototype.applyPath = function (s, moves) {\n var e_1, _a;\n var path = this.path;\n var _b = this, x = _b.x, y = _b.y;\n path.clear();\n try {\n for (var moves_1 = __values$j(moves), moves_1_1 = moves_1.next(); !moves_1_1.done; moves_1_1 = moves_1.next()) {\n var _c = moves_1_1.value, mx = _c.x, my = _c.y, t = _c.t;\n x += mx * s;\n y += my * s;\n if (t === 'move') {\n path.moveTo(x, y);\n }\n else {\n path.lineTo(x, y);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (moves_1_1 && !moves_1_1.done && (_a = moves_1.return)) _a.call(moves_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n path.closePath();\n };\n __decorate$1R([\n ScenePathChangeDetection()\n ], Marker.prototype, \"x\", void 0);\n __decorate$1R([\n ScenePathChangeDetection()\n ], Marker.prototype, \"y\", void 0);\n __decorate$1R([\n ScenePathChangeDetection({ convertor: Math.abs })\n ], Marker.prototype, \"size\", void 0);\n return Marker;\n}(Path));\n\nvar __extends$T = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar Square = /** @class */ (function (_super) {\n __extends$T(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 path.clear();\n path.moveTo(this.align(x - hs), this.align(y - hs));\n path.lineTo(this.align(x + hs), this.align(y - hs));\n path.lineTo(this.align(x + hs), this.align(y + hs));\n path.lineTo(this.align(x - hs), this.align(y + hs));\n path.closePath();\n };\n Square.className = 'Square';\n return Square;\n}(Marker));\n\nvar __extends$S = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1Q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 MarkerLabel = /** @class */ (function (_super) {\n __extends$S(MarkerLabel, _super);\n function MarkerLabel() {\n var _this = _super.call(this, { name: 'markerLabelGroup' }) || 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, \"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: false,\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: false,\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: false,\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.prototype.render = function (renderCtx) {\n // Cannot override field Group.opacity with get/set pair, so\n // propagate opacity changes here.\n this.marker.opacity = this.opacity;\n this.label.opacity = this.opacity;\n _super.prototype.render.call(this, renderCtx);\n };\n MarkerLabel.className = 'MarkerLabel';\n __decorate$1Q([\n ProxyPropertyOnWrite('label')\n ], MarkerLabel.prototype, \"text\", void 0);\n __decorate$1Q([\n ProxyPropertyOnWrite('label')\n ], MarkerLabel.prototype, \"fontStyle\", void 0);\n __decorate$1Q([\n ProxyPropertyOnWrite('label')\n ], MarkerLabel.prototype, \"fontWeight\", void 0);\n __decorate$1Q([\n ProxyPropertyOnWrite('label')\n ], MarkerLabel.prototype, \"fontSize\", void 0);\n __decorate$1Q([\n ProxyPropertyOnWrite('label')\n ], MarkerLabel.prototype, \"fontFamily\", void 0);\n __decorate$1Q([\n ProxyPropertyOnWrite('label', 'fill')\n ], MarkerLabel.prototype, \"color\", void 0);\n __decorate$1Q([\n ProxyPropertyOnWrite('marker', 'fill')\n ], MarkerLabel.prototype, \"markerFill\", void 0);\n __decorate$1Q([\n ProxyPropertyOnWrite('marker', 'stroke')\n ], MarkerLabel.prototype, \"markerStroke\", void 0);\n __decorate$1Q([\n ProxyPropertyOnWrite('marker', 'strokeWidth')\n ], MarkerLabel.prototype, \"markerStrokeWidth\", void 0);\n __decorate$1Q([\n ProxyPropertyOnWrite('marker', 'fillOpacity')\n ], MarkerLabel.prototype, \"markerFillOpacity\", void 0);\n __decorate$1Q([\n ProxyPropertyOnWrite('marker', 'strokeOpacity')\n ], MarkerLabel.prototype, \"markerStrokeOpacity\", void 0);\n return MarkerLabel;\n}(Group));\n\nvar __extends$R = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar Circle = /** @class */ (function (_super) {\n __extends$R(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.arc(x, y, r, 0, Math.PI * 2);\n path.closePath();\n };\n Circle.className = 'Circle';\n return Circle;\n}(Marker));\n\nvar __extends$Q = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar Cross = /** @class */ (function (_super) {\n __extends$Q(Cross, _super);\n function Cross() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Cross.prototype.updatePath = function () {\n var s = this.size / 4.2;\n _super.prototype.applyPath.call(this, s, Cross.moves);\n };\n Cross.className = 'Cross';\n Cross.moves = [\n { x: -1, y: 0, t: 'move' },\n { x: -1, y: -1 },\n { x: +1, y: -1 },\n { x: +1, y: +1 },\n { x: +1, y: -1 },\n { x: +1, y: +1 },\n { x: -1, y: +1 },\n { x: +1, y: +1 },\n { x: -1, y: +1 },\n { x: -1, y: -1 },\n { x: -1, y: +1 },\n { x: -1, y: -1 },\n ];\n return Cross;\n}(Marker));\n\nvar __extends$P = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar Diamond = /** @class */ (function (_super) {\n __extends$P(Diamond, _super);\n function Diamond() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Diamond.prototype.updatePath = function () {\n var s = this.size / 2;\n _super.prototype.applyPath.call(this, s, Diamond.moves);\n };\n Diamond.className = 'Diamond';\n Diamond.moves = [\n { x: 0, y: -1, t: 'move' },\n { x: +1, y: +1 },\n { x: -1, y: +1 },\n { x: -1, y: -1 },\n { x: +1, y: -1 },\n ];\n return Diamond;\n}(Marker));\n\nvar __extends$O = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar Heart = /** @class */ (function (_super) {\n __extends$O(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.arc(x - r, y - r, r, rad(130), rad(330));\n path.arc(x + r, y - r, r, rad(220), rad(50));\n path.lineTo(x, y + r);\n path.closePath();\n };\n Heart.className = 'Heart';\n return Heart;\n}(Marker));\n\nvar __extends$N = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar Plus = /** @class */ (function (_super) {\n __extends$N(Plus, _super);\n function Plus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Plus.prototype.updatePath = function () {\n var s = this.size / 3;\n _super.prototype.applyPath.call(this, s, Plus.moves);\n };\n Plus.className = 'Plus';\n Plus.moves = [\n { x: -0.5, y: -0.5, t: 'move' },\n { x: 0, y: -1 },\n { x: +1, y: 0 },\n { x: 0, y: +1 },\n { x: +1, y: 0 },\n { x: 0, y: +1 },\n { x: -1, y: 0 },\n { x: 0, y: +1 },\n { x: -1, y: 0 },\n { x: 0, y: -1 },\n { x: -1, y: 0 },\n { x: 0, y: -1 },\n ];\n return Plus;\n}(Marker));\n\nvar __extends$M = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar Triangle = /** @class */ (function (_super) {\n __extends$M(Triangle, _super);\n function Triangle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Triangle.prototype.updatePath = function () {\n var s = this.size * 1.1;\n _super.prototype.applyPath.call(this, s, Triangle.moves);\n };\n Triangle.className = 'Triangle';\n Triangle.moves = [\n { x: 0, y: -0.48, t: 'move' },\n { x: 0.5, y: 0.87 },\n { x: -1, y: 0 },\n ];\n return Triangle;\n}(Marker));\n\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.\nfunction getMarker$1(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\nvar __values$i = (undefined && undefined.__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};\nfunction gridLayout(_a) {\n var orientation = _a.orientation, bboxes = _a.bboxes, maxHeight = _a.maxHeight, maxWidth = _a.maxWidth, _b = _a.itemPaddingY, itemPaddingY = _b === void 0 ? 0 : _b, _c = _a.itemPaddingX, itemPaddingX = _c === void 0 ? 0 : _c, _d = _a.forceResult, forceResult = _d === void 0 ? false : _d;\n var horizontal = orientation === 'horizontal';\n var primary = {\n max: horizontal ? maxWidth : maxHeight,\n fn: horizontal ? function (b) { return b.width; } : function (b) { return b.height; },\n padding: horizontal ? itemPaddingX : itemPaddingY,\n };\n var secondary = {\n max: !horizontal ? maxWidth : maxHeight,\n fn: !horizontal ? function (b) { return b.width; } : function (b) { return b.height; },\n padding: !horizontal ? itemPaddingX : itemPaddingY,\n };\n var processedBBoxCount = 0;\n var rawPages = [];\n while (processedBBoxCount < bboxes.length) {\n var unprocessedBBoxes = bboxes.slice(processedBBoxCount);\n var result = processBBoxes(unprocessedBBoxes, processedBBoxCount, primary, secondary, forceResult);\n if (!result) {\n return;\n }\n processedBBoxCount += result.processedBBoxCount;\n rawPages.push(result.pageIndices);\n }\n return buildPages(rawPages, orientation, bboxes, itemPaddingY, itemPaddingX);\n}\nfunction processBBoxes(bboxes, indexOffset, primary, secondary, forceResult) {\n // If calculatePage() fails on the first guess, we could use the number of items that fit\n // as a good guess for the next iteration.\n var minGuess = 1;\n var startingGuess = estimateStartingGuess(bboxes, primary);\n if (startingGuess < minGuess) {\n if (!forceResult) {\n return undefined;\n }\n // Legend constraints too small! Display at least one row/column if forceResult is true\n startingGuess = minGuess;\n }\n for (var guess = startingGuess; guess >= minGuess; guess--) {\n var pageIndices = calculatePage(bboxes, indexOffset, guess, primary, secondary, forceResult);\n if (pageIndices == null && guess <= minGuess) {\n // Can't layout!\n return undefined;\n }\n if (pageIndices == null) {\n // Guess again!\n continue;\n }\n if (typeof pageIndices === 'number') {\n // calculatePage() suggested a better guess, use that if it's more than minGuess.\n if (pageIndices <= minGuess) {\n // Can't layout!\n return undefined;\n }\n guess = pageIndices < guess && pageIndices > minGuess ? pageIndices : guess;\n continue;\n }\n var processedBBoxCount = pageIndices.length * pageIndices[0].length; // this is an estimate, not all rows/columns will have the same length\n return { processedBBoxCount: processedBBoxCount, pageIndices: pageIndices };\n }\n}\nfunction calculatePage(bboxes, indexOffset, primaryCount, primary, secondary, forceResult) {\n var _a;\n var result = [];\n var sumSecondary = 0;\n var currentMaxSecondary = 0;\n var currentPrimaryIndices = [];\n var maxPrimaryValues = [];\n for (var bboxIndex = 0; bboxIndex < bboxes.length; bboxIndex++) {\n var primaryValueIdx = (bboxIndex + primaryCount) % primaryCount;\n if (primaryValueIdx === 0) {\n sumSecondary += currentMaxSecondary;\n currentMaxSecondary = 0;\n if (currentPrimaryIndices.length > 0) {\n result.push(currentPrimaryIndices);\n }\n currentPrimaryIndices = [];\n }\n var primaryValue = primary.fn(bboxes[bboxIndex]) + primary.padding;\n maxPrimaryValues[primaryValueIdx] = Math.max((_a = maxPrimaryValues[primaryValueIdx]) !== null && _a !== void 0 ? _a : 0, primaryValue);\n currentMaxSecondary = Math.max(currentMaxSecondary, secondary.fn(bboxes[bboxIndex]) + secondary.padding);\n var currentSecondaryDimension = sumSecondary + currentMaxSecondary;\n var returnResult = !forceResult || result.length > 0;\n if (currentSecondaryDimension > secondary.max && returnResult) {\n // Breached max secondary dimension size, return indices accumlated so far (but not in-progress row/column).\n currentPrimaryIndices = [];\n break;\n }\n var sumPrimary = maxPrimaryValues.reduce(function (sum, next) { return sum + next; }, 0);\n if (sumPrimary > primary.max && !forceResult) {\n // Breached max main dimension size.\n if (maxPrimaryValues.length < primaryCount) {\n // Feedback as guess for next iteration if we're on the first round still.\n return maxPrimaryValues.length;\n }\n return undefined;\n }\n currentPrimaryIndices.push(bboxIndex + indexOffset);\n }\n if (currentPrimaryIndices.length > 0) {\n result.push(currentPrimaryIndices);\n }\n return result.length > 0 ? result : undefined;\n}\nfunction buildPages(rawPages, orientation, bboxes, itemPaddingY, itemPaddingX) {\n var maxPageWidth = 0;\n var maxPageHeight = 0;\n var pages = rawPages.map(function (indices) {\n if (orientation === 'horizontal') {\n indices = transpose(indices);\n }\n var endIndex = 0;\n var columns = indices.map(function (colIndices) {\n var colBBoxes = colIndices.map(function (bboxIndex) {\n endIndex = Math.max(bboxIndex, endIndex);\n return bboxes[bboxIndex];\n });\n var columnHeight = 0;\n var columnWidth = 0;\n colBBoxes.forEach(function (bbox) {\n columnHeight += bbox.height + itemPaddingY;\n columnWidth = Math.max(columnWidth, bbox.width + itemPaddingX);\n });\n return {\n indices: colIndices,\n bboxes: colBBoxes,\n columnHeight: columnHeight,\n columnWidth: columnWidth,\n };\n });\n var pageWidth = 0;\n var pageHeight = 0;\n columns.forEach(function (column) {\n pageWidth += column.columnWidth;\n pageHeight = Math.max(pageHeight, column.columnHeight);\n });\n maxPageWidth = Math.max(pageWidth, maxPageWidth);\n maxPageHeight = Math.max(pageHeight, maxPageHeight);\n return {\n columns: columns,\n startIndex: indices[0][0],\n endIndex: endIndex,\n pageWidth: pageWidth,\n pageHeight: pageHeight,\n };\n });\n return { pages: pages, maxPageWidth: maxPageWidth, maxPageHeight: maxPageHeight };\n}\nfunction transpose(data) {\n var e_1, _a;\n var result = [];\n try {\n for (var _b = __values$i(data[0]), _c = _b.next(); !_c.done; _c = _b.next()) {\n var _ = _c.value;\n result.push([]);\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 data.forEach(function (innerData, dataIdx) {\n innerData.forEach(function (item, itemIdx) {\n result[itemIdx][dataIdx] = item;\n });\n });\n return result;\n}\nfunction estimateStartingGuess(bboxes, primary) {\n var n = bboxes.length;\n var primarySum = 0;\n for (var bboxIndex = 0; bboxIndex < n; bboxIndex++) {\n primarySum += primary.fn(bboxes[bboxIndex]) + primary.padding;\n if (primarySum > primary.max) {\n var ratio = n / bboxIndex;\n if (ratio < 2) {\n return Math.ceil(n / 2);\n }\n return bboxIndex;\n }\n }\n return n;\n}\n\nvar __decorate$1P = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 PaginationLabel = /** @class */ (function () {\n function PaginationLabel() {\n this.color = 'black';\n this.fontStyle = undefined;\n this.fontWeight = undefined;\n this.fontSize = 12;\n this.fontFamily = 'Verdana, sans-serif';\n }\n __decorate$1P([\n Validate(COLOR_STRING)\n ], PaginationLabel.prototype, \"color\", void 0);\n __decorate$1P([\n Validate(OPT_FONT_STYLE)\n ], PaginationLabel.prototype, \"fontStyle\", void 0);\n __decorate$1P([\n Validate(OPT_FONT_WEIGHT)\n ], PaginationLabel.prototype, \"fontWeight\", void 0);\n __decorate$1P([\n Validate(NUMBER(0))\n ], PaginationLabel.prototype, \"fontSize\", void 0);\n __decorate$1P([\n Validate(STRING)\n ], PaginationLabel.prototype, \"fontFamily\", void 0);\n return PaginationLabel;\n}());\nvar PaginationMarkerStyle = /** @class */ (function () {\n function PaginationMarkerStyle() {\n this.size = 15;\n this.fill = undefined;\n this.fillOpacity = undefined;\n this.stroke = undefined;\n this.strokeWidth = 1;\n this.strokeOpacity = 1;\n }\n __decorate$1P([\n Validate(NUMBER(0))\n ], PaginationMarkerStyle.prototype, \"size\", void 0);\n __decorate$1P([\n Validate(OPT_COLOR_STRING)\n ], PaginationMarkerStyle.prototype, \"fill\", void 0);\n __decorate$1P([\n Validate(OPT_NUMBER(0, 1))\n ], PaginationMarkerStyle.prototype, \"fillOpacity\", void 0);\n __decorate$1P([\n Validate(OPT_COLOR_STRING)\n ], PaginationMarkerStyle.prototype, \"stroke\", void 0);\n __decorate$1P([\n Validate(NUMBER(0))\n ], PaginationMarkerStyle.prototype, \"strokeWidth\", void 0);\n __decorate$1P([\n Validate(NUMBER(0, 1))\n ], PaginationMarkerStyle.prototype, \"strokeOpacity\", void 0);\n return PaginationMarkerStyle;\n}());\nvar PaginationMarker = /** @class */ (function () {\n function PaginationMarker() {\n this.size = 15;\n this._shape = Triangle;\n /**\n * Inner padding between a pagination button and the label.\n */\n this.padding = 8;\n }\n Object.defineProperty(PaginationMarker.prototype, \"shape\", {\n get: function () {\n return this._shape;\n },\n set: function (value) {\n var _a;\n this._shape = value;\n (_a = this.parent) === null || _a === void 0 ? void 0 : _a.onMarkerShapeChange();\n },\n enumerable: false,\n configurable: true\n });\n __decorate$1P([\n Validate(NUMBER(0))\n ], PaginationMarker.prototype, \"size\", void 0);\n __decorate$1P([\n Validate(NUMBER(0))\n ], PaginationMarker.prototype, \"padding\", void 0);\n return PaginationMarker;\n}());\nvar Pagination = /** @class */ (function () {\n function Pagination(chartUpdateCallback, pageUpdateCallback, interactionManager, cursorManager) {\n var _this = this;\n this.chartUpdateCallback = chartUpdateCallback;\n this.pageUpdateCallback = pageUpdateCallback;\n this.interactionManager = interactionManager;\n this.cursorManager = cursorManager;\n this.id = createId$1(this);\n this.group = new Group({ name: 'pagination' });\n this.labelNode = new Text();\n this.marker = new PaginationMarker();\n this.activeStyle = new PaginationMarkerStyle();\n this.inactiveStyle = new PaginationMarkerStyle();\n this.highlightStyle = new PaginationMarkerStyle();\n this.label = new PaginationLabel();\n this.totalPages = 0;\n this.currentPage = 0;\n this.translationX = 0;\n this.translationY = 0;\n this.nextButtonDisabled = false;\n this.previousButtonDisabled = false;\n this._visible = true;\n this._enabled = true;\n this._orientation = 'vertical';\n this._nextButton = new Triangle();\n this._previousButton = new Triangle();\n var labelNode = this.labelNode;\n labelNode.textBaseline = 'middle';\n labelNode.fontSize = 12;\n labelNode.fontFamily = 'Verdana, sans-serif';\n labelNode.fill = 'black';\n labelNode.y = HdpiCanvas.has.textMetrics ? 1 : 0;\n this.group.append([this.nextButton, this.previousButton, labelNode]);\n this.interactionManager.addListener('click', function (event) { return _this.onPaginationClick(event); });\n this.interactionManager.addListener('hover', function (event) { return _this.onPaginationMouseMove(event); });\n this.marker.parent = this;\n this.update();\n this.updateMarkers();\n }\n Object.defineProperty(Pagination.prototype, \"visible\", {\n get: function () {\n return this._visible;\n },\n set: function (value) {\n this._visible = value;\n this.updateGroupVisibility();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Pagination.prototype, \"enabled\", {\n get: function () {\n return this._enabled;\n },\n set: function (value) {\n this._enabled = value;\n this.updateGroupVisibility();\n },\n enumerable: false,\n configurable: true\n });\n Pagination.prototype.updateGroupVisibility = function () {\n this.group.visible = this.enabled && this.visible;\n };\n Object.defineProperty(Pagination.prototype, \"orientation\", {\n get: function () {\n return this._orientation;\n },\n set: function (value) {\n this._orientation = value;\n switch (value) {\n case 'horizontal': {\n this.previousButton.rotation = -Math.PI / 2;\n this.nextButton.rotation = Math.PI / 2;\n break;\n }\n case 'vertical':\n default: {\n this.previousButton.rotation = 0;\n this.nextButton.rotation = Math.PI;\n }\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Pagination.prototype, \"nextButton\", {\n get: function () {\n return this._nextButton;\n },\n set: function (value) {\n if (this._nextButton !== value) {\n this.group.removeChild(this._nextButton);\n this._nextButton = value;\n this.group.appendChild(value);\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Pagination.prototype, \"previousButton\", {\n get: function () {\n return this._previousButton;\n },\n set: function (value) {\n if (this._previousButton !== value) {\n this.group.removeChild(this._previousButton);\n this._previousButton = value;\n this.group.appendChild(value);\n }\n },\n enumerable: false,\n configurable: true\n });\n Pagination.prototype.update = function () {\n this.updateLabel();\n this.updatePositions();\n this.enableOrDisableButtons();\n };\n Pagination.prototype.updatePositions = function () {\n this.group.translationX = this.translationX;\n this.group.translationY = this.translationY;\n this.updateLabelPosition();\n this.updateNextButtonPosition();\n };\n Pagination.prototype.updateLabelPosition = function () {\n var _a = this.marker, markerSize = _a.size, markerPadding = _a.padding;\n this.nextButton.size = markerSize;\n this.previousButton.size = markerSize;\n this.labelNode.x = markerSize / 2 + markerPadding;\n };\n Pagination.prototype.updateNextButtonPosition = function () {\n var labelBBox = this.labelNode.computeBBox();\n this.nextButton.translationX = labelBBox.x + labelBBox.width + this.marker.size / 2 + this.marker.padding;\n };\n Pagination.prototype.updateLabel = function () {\n var _a = this, currentPage = _a.currentPage, pages = _a.totalPages, labelNode = _a.labelNode, _b = _a.label, color = _b.color, fontStyle = _b.fontStyle, fontWeight = _b.fontWeight, fontSize = _b.fontSize, fontFamily = _b.fontFamily;\n labelNode.text = currentPage + 1 + \" / \" + pages;\n labelNode.fill = color;\n labelNode.fontStyle = fontStyle;\n labelNode.fontWeight = fontWeight;\n labelNode.fontSize = fontSize;\n labelNode.fontFamily = fontFamily;\n };\n Pagination.prototype.updateMarkers = function () {\n var _a = this, nextButton = _a.nextButton, previousButton = _a.previousButton, nextButtonDisabled = _a.nextButtonDisabled, previousButtonDisabled = _a.previousButtonDisabled, activeStyle = _a.activeStyle, inactiveStyle = _a.inactiveStyle, highlightStyle = _a.highlightStyle, highlightActive = _a.highlightActive;\n var buttonStyle = function (button, disabled) {\n if (disabled) {\n return inactiveStyle;\n }\n else if (button === highlightActive) {\n return highlightStyle;\n }\n return activeStyle;\n };\n this.updateMarker(nextButton, buttonStyle('next', nextButtonDisabled));\n this.updateMarker(previousButton, buttonStyle('previous', previousButtonDisabled));\n };\n Pagination.prototype.updateMarker = function (marker, style) {\n var _a;\n var size = this.marker.size;\n marker.size = size;\n marker.fill = style.fill;\n marker.fillOpacity = (_a = style.fillOpacity) !== null && _a !== void 0 ? _a : 1;\n marker.stroke = style.stroke;\n marker.strokeWidth = style.strokeWidth;\n marker.strokeOpacity = style.strokeOpacity;\n };\n Pagination.prototype.enableOrDisableButtons = function () {\n var _a = this, currentPage = _a.currentPage, totalPages = _a.totalPages;\n var zeroPagesToDisplay = totalPages === 0;\n var onLastPage = currentPage === totalPages - 1;\n var onFirstPage = currentPage === 0;\n this.nextButtonDisabled = onLastPage || zeroPagesToDisplay;\n this.previousButtonDisabled = onFirstPage || zeroPagesToDisplay;\n };\n Pagination.prototype.nextButtonContainsPoint = function (offsetX, offsetY) {\n return !this.nextButtonDisabled && this.nextButton.containsPoint(offsetX, offsetY);\n };\n Pagination.prototype.previousButtonContainsPoint = function (offsetX, offsetY) {\n return !this.previousButtonDisabled && this.previousButton.containsPoint(offsetX, offsetY);\n };\n Pagination.prototype.onPaginationClick = function (event) {\n var offsetX = event.offsetX, offsetY = event.offsetY;\n if (this.nextButtonContainsPoint(offsetX, offsetY)) {\n this.incrementPage();\n this.onPaginationChanged();\n event.consume();\n }\n else if (this.previousButtonContainsPoint(offsetX, offsetY)) {\n this.decrementPage();\n this.onPaginationChanged();\n event.consume();\n }\n };\n Pagination.prototype.onPaginationMouseMove = function (event) {\n var offsetX = event.offsetX, offsetY = event.offsetY;\n if (this.nextButtonContainsPoint(offsetX, offsetY)) {\n this.cursorManager.updateCursor(this.id, 'pointer');\n this.highlightActive = 'next';\n }\n else if (this.previousButtonContainsPoint(offsetX, offsetY)) {\n this.cursorManager.updateCursor(this.id, 'pointer');\n this.highlightActive = 'previous';\n }\n else {\n this.cursorManager.updateCursor(this.id);\n this.highlightActive = undefined;\n }\n this.updateMarkers();\n this.chartUpdateCallback(ChartUpdateType.SCENE_RENDER);\n };\n Pagination.prototype.onPaginationChanged = function () {\n this.pageUpdateCallback(this.currentPage);\n };\n Pagination.prototype.incrementPage = function () {\n this.currentPage = Math.min(this.currentPage + 1, this.totalPages - 1);\n };\n Pagination.prototype.decrementPage = function () {\n this.currentPage = Math.max(this.currentPage - 1, 0);\n };\n Pagination.prototype.onMarkerShapeChange = function () {\n var Marker = getMarker$1(this.marker.shape || Triangle);\n this.previousButton = new Marker();\n this.nextButton = new Marker();\n this.updatePositions();\n this.updateMarkers();\n this.chartUpdateCallback(ChartUpdateType.SCENE_RENDER);\n };\n Pagination.prototype.attachPagination = function (node) {\n node.append(this.group);\n };\n Pagination.prototype.computeBBox = function () {\n return this.group.computeBBox();\n };\n Pagination.className = 'Pagination';\n return Pagination;\n}());\n\nvar __decorate$1O = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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$v = (undefined && undefined.__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 __spreadArray$k = (undefined && undefined.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar __values$h = (undefined && undefined.__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 ORIENTATIONS = ['horizontal', 'vertical'];\nvar OPT_ORIENTATION = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, function (v) { return ORIENTATIONS.includes(v); }); }, \"expecting an orientation keyword such as 'horizontal' or 'vertical'\");\nvar LegendLabel = /** @class */ (function () {\n function LegendLabel() {\n this.maxLength = undefined;\n this.color = 'black';\n this.fontStyle = undefined;\n this.fontWeight = undefined;\n this.fontSize = 12;\n this.fontFamily = 'Verdana, sans-serif';\n this.formatter = undefined;\n }\n __decorate$1O([\n Validate(OPT_NUMBER(0))\n ], LegendLabel.prototype, \"maxLength\", void 0);\n __decorate$1O([\n Validate(COLOR_STRING)\n ], LegendLabel.prototype, \"color\", void 0);\n __decorate$1O([\n Validate(OPT_FONT_STYLE)\n ], LegendLabel.prototype, \"fontStyle\", void 0);\n __decorate$1O([\n Validate(OPT_FONT_WEIGHT)\n ], LegendLabel.prototype, \"fontWeight\", void 0);\n __decorate$1O([\n Validate(NUMBER(0))\n ], LegendLabel.prototype, \"fontSize\", void 0);\n __decorate$1O([\n Validate(STRING)\n ], LegendLabel.prototype, \"fontFamily\", void 0);\n __decorate$1O([\n Validate(OPT_FUNCTION)\n ], LegendLabel.prototype, \"formatter\", void 0);\n return LegendLabel;\n}());\nvar LegendMarker = /** @class */ (function () {\n function LegendMarker() {\n this.size = 15;\n /**\n * If the marker type is set, the legend will always use that marker type for all its items,\n * regardless of the type that comes from the `data`.\n */\n this._shape = undefined;\n /**\n * Padding between the marker and the label within each legend item.\n */\n this.padding = 8;\n this.strokeWidth = 1;\n }\n Object.defineProperty(LegendMarker.prototype, \"shape\", {\n get: function () {\n return this._shape;\n },\n set: function (value) {\n var _a;\n this._shape = value;\n (_a = this.parent) === null || _a === void 0 ? void 0 : _a.onMarkerShapeChange();\n },\n enumerable: false,\n configurable: true\n });\n __decorate$1O([\n Validate(NUMBER(0))\n ], LegendMarker.prototype, \"size\", void 0);\n __decorate$1O([\n Validate(NUMBER(0))\n ], LegendMarker.prototype, \"padding\", void 0);\n __decorate$1O([\n Validate(NUMBER(0))\n ], LegendMarker.prototype, \"strokeWidth\", void 0);\n return LegendMarker;\n}());\nvar LegendItem = /** @class */ (function () {\n function LegendItem() {\n this.marker = new LegendMarker();\n this.label = new LegendLabel();\n /** Used to constrain the width of legend items. */\n this.maxWidth = undefined;\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 this.toggleSeriesVisible = true;\n }\n __decorate$1O([\n Validate(OPT_NUMBER(0))\n ], LegendItem.prototype, \"maxWidth\", void 0);\n __decorate$1O([\n Validate(NUMBER(0))\n ], LegendItem.prototype, \"paddingX\", void 0);\n __decorate$1O([\n Validate(NUMBER(0))\n ], LegendItem.prototype, \"paddingY\", void 0);\n __decorate$1O([\n Validate(BOOLEAN)\n ], LegendItem.prototype, \"toggleSeriesVisible\", void 0);\n return LegendItem;\n}());\nvar LegendListeners = /** @class */ (function () {\n function LegendListeners() {\n this.legendItemClick = undefined;\n this.legendItemDoubleClick = undefined;\n }\n __decorate$1O([\n Validate(OPT_FUNCTION)\n ], LegendListeners.prototype, \"legendItemClick\", void 0);\n return LegendListeners;\n}());\nvar Legend = /** @class */ (function () {\n function Legend(ctx) {\n var _a;\n var _this = this;\n this.ctx = ctx;\n this.id = createId$1(this);\n this.group = new Group({ name: 'legend', layer: true, zIndex: Layers.LEGEND_ZINDEX });\n this.itemSelection = Selection.select(this.group, MarkerLabel);\n this.oldSize = [0, 0];\n this.pages = [];\n this.maxPageSize = [0, 0];\n /** Item index to track on re-pagination, so current page updates appropriately. */\n this.paginationTrackingIndex = 0;\n this.item = new LegendItem();\n this.listeners = new LegendListeners();\n this.truncatedItems = new Set();\n this._data = [];\n this._enabled = true;\n this.position = 'bottom';\n /** Used to constrain the width of the legend. */\n this.maxWidth = undefined;\n /** Used to constrain the height of the legend. */\n this.maxHeight = undefined;\n /** Reverse the display order of legend items if `true`. */\n this.reverseOrder = undefined;\n this.destroyFns = [];\n /**\n * Spacing between the legend and the edge of the chart's element.\n */\n this.spacing = 20;\n this.characterWidths = new Map();\n this.size = [0, 0];\n this._visible = true;\n this.item.marker.parent = this;\n this.pagination = new Pagination(function (type) { return ctx.updateService.update(type); }, function (page) { return _this.updatePageNumber(page); }, ctx.interactionManager, ctx.cursorManager);\n this.pagination.attachPagination(this.group);\n this.item.marker.parent = this;\n var interactionListeners = [\n ctx.interactionManager.addListener('click', function (e) { return _this.checkLegendClick(e); }),\n ctx.interactionManager.addListener('dblclick', function (e) { return _this.checkLegendDoubleClick(e); }),\n ctx.interactionManager.addListener('hover', function (e) { return _this.handleLegendMouseMove(e); }),\n ];\n var layoutListeners = [\n ctx.layoutService.addListener('start-layout', function (e) { return _this.positionLegend(e.shrinkRect); }),\n ];\n (_a = this.destroyFns).push.apply(_a, __spreadArray$k(__spreadArray$k(__spreadArray$k([], __read$v(interactionListeners.map(function (s) { return function () { return ctx.interactionManager.removeListener(s); }; }))), __read$v(layoutListeners.map(function (s) { return function () { return ctx.layoutService.removeListener(s); }; }))), [function () { return _this.detachLegend(); }]));\n }\n Object.defineProperty(Legend.prototype, \"data\", {\n get: function () {\n return this._data;\n },\n set: function (value) {\n this._data = value;\n this.updateGroupVisibility();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Legend.prototype, \"enabled\", {\n get: function () {\n return this._enabled;\n },\n set: function (value) {\n this._enabled = value;\n this.updateGroupVisibility();\n },\n enumerable: false,\n configurable: true\n });\n Legend.prototype.getOrientation = function () {\n if (this.orientation !== undefined) {\n return this.orientation;\n }\n switch (this.position) {\n case 'right':\n case 'left':\n return 'vertical';\n case 'bottom':\n case 'top':\n return 'horizontal';\n }\n };\n Legend.prototype.destroy = function () {\n this.destroyFns.forEach(function (f) { return f(); });\n };\n Legend.prototype.onMarkerShapeChange = function () {\n this.itemSelection.clear();\n this.group.markDirty(this.group, RedrawType.MINOR);\n };\n Legend.prototype.getCharacterWidths = function (font) {\n var characterWidths = this.characterWidths;\n if (characterWidths.has(font)) {\n return characterWidths.get(font);\n }\n var cw = {\n '...': HdpiCanvas.getTextSize('...', font).width,\n };\n characterWidths.set(font, cw);\n return cw;\n };\n Object.defineProperty(Legend.prototype, \"visible\", {\n get: function () {\n return this._visible;\n },\n set: function (value) {\n this._visible = value;\n this.updateGroupVisibility();\n },\n enumerable: false,\n configurable: true\n });\n Legend.prototype.updateGroupVisibility = function () {\n this.group.visible = this.enabled && this.visible && this.data.length > 0;\n };\n Legend.prototype.attachLegend = function (node) {\n node.append(this.group);\n };\n Legend.prototype.detachLegend = function () {\n var _a;\n (_a = this.group.parent) === null || _a === void 0 ? void 0 : _a.removeChild(this.group);\n };\n Legend.prototype.getItemLabel = function (datum) {\n var callbackCache = this.ctx.callbackCache;\n var formatter = this.item.label.formatter;\n if (formatter) {\n return callbackCache.call(formatter, {\n itemId: datum.itemId,\n value: datum.label.text,\n seriesId: datum.seriesId,\n });\n }\n return datum.label.text;\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 _this = this;\n var _a = this.item, paddingX = _a.paddingX, paddingY = _a.paddingY, label = _a.label, maxWidth = _a.maxWidth, _b = _a.marker, markerSize = _b.size, markerPadding = _b.padding, markerShape = _b.shape, _c = _a.label, _d = _c.maxLength, maxLength = _d === void 0 ? Infinity : _d, fontStyle = _c.fontStyle, fontWeight = _c.fontWeight, fontSize = _c.fontSize, fontFamily = _c.fontFamily;\n var data = __spreadArray$k([], __read$v(this.data));\n if (this.reverseOrder) {\n data.reverse();\n }\n this.itemSelection.update(data);\n // Update properties that affect the size of the legend items and measure them.\n var bboxes = [];\n var font = getFont(label);\n var itemMaxWidthPercentage = 0.8;\n var maxItemWidth = maxWidth !== null && maxWidth !== void 0 ? maxWidth : width * itemMaxWidthPercentage;\n var paddedMarkerWidth = markerSize + markerPadding + paddingX;\n this.itemSelection.each(function (markerLabel, datum) {\n var _a;\n var Marker = getMarker$1(markerShape !== null && markerShape !== void 0 ? markerShape : datum.marker.shape);\n if (!(markerLabel.marker && markerLabel.marker instanceof Marker)) {\n markerLabel.marker = new Marker();\n }\n markerLabel.markerSize = markerSize;\n markerLabel.spacing = markerPadding;\n markerLabel.fontStyle = fontStyle;\n markerLabel.fontWeight = fontWeight;\n markerLabel.fontSize = fontSize;\n markerLabel.fontFamily = fontFamily;\n var id = (_a = datum.itemId) !== null && _a !== void 0 ? _a : datum.id;\n var labelText = _this.getItemLabel(datum);\n var text = (labelText !== null && labelText !== void 0 ? labelText : '').replace(/\\r?\\n/g, ' ');\n markerLabel.text = _this.truncate(text, maxLength, maxItemWidth, paddedMarkerWidth, font, id);\n bboxes.push(markerLabel.computeBBox());\n });\n width = Math.max(1, width);\n height = Math.max(1, height);\n if (!isFinite(width)) {\n return false;\n }\n var size = this.size;\n var oldSize = this.oldSize;\n size[0] = width;\n size[1] = height;\n if (size[0] !== oldSize[0] || size[1] !== oldSize[1]) {\n oldSize[0] = size[0];\n oldSize[1] = size[1];\n }\n var _e = this.updatePagination(bboxes, width, height), pages = _e.pages, maxPageHeight = _e.maxPageHeight, maxPageWidth = _e.maxPageWidth;\n this.pages = pages;\n this.maxPageSize = [maxPageWidth - paddingX, maxPageHeight - paddingY];\n var pageNumber = this.pagination.currentPage;\n var page = this.pages[pageNumber];\n if (this.pages.length < 1 || !page) {\n this.visible = false;\n return;\n }\n this.visible = true;\n // Position legend items\n this.updatePositions(pageNumber);\n // Update legend item properties that don't affect the layout.\n this.update();\n };\n Legend.prototype.truncate = function (text, maxCharLength, maxItemWidth, paddedMarkerWidth, font, id) {\n var e_1, _a;\n var ellipsis = \"...\";\n var textChars = text.split('');\n var addEllipsis = false;\n if (text.length > maxCharLength) {\n text = \"\" + text.substring(0, maxCharLength);\n addEllipsis = true;\n }\n var labelWidth = Math.floor(paddedMarkerWidth + HdpiCanvas.getTextSize(text, font).width);\n if (labelWidth > maxItemWidth) {\n var truncatedText = '';\n var characterWidths = this.getCharacterWidths(font);\n var cumulativeWidth = paddedMarkerWidth + characterWidths[ellipsis];\n try {\n for (var textChars_1 = __values$h(textChars), textChars_1_1 = textChars_1.next(); !textChars_1_1.done; textChars_1_1 = textChars_1.next()) {\n var char = textChars_1_1.value;\n if (!characterWidths[char]) {\n characterWidths[char] = HdpiCanvas.getTextSize(char, font).width;\n }\n cumulativeWidth += characterWidths[char];\n if (cumulativeWidth > maxItemWidth) {\n break;\n }\n truncatedText += char;\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (textChars_1_1 && !textChars_1_1.done && (_a = textChars_1.return)) _a.call(textChars_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n text = truncatedText;\n addEllipsis = true;\n }\n if (addEllipsis) {\n text += ellipsis;\n this.truncatedItems.add(id);\n }\n else {\n this.truncatedItems.delete(id);\n }\n return text;\n };\n Legend.prototype.updatePagination = function (bboxes, width, height) {\n var orientation = this.getOrientation();\n var trackingIndex = Math.min(this.paginationTrackingIndex, bboxes.length);\n this.pagination.orientation = orientation;\n this.pagination.translationX = 0;\n this.pagination.translationY = 0;\n var _a = this.calculatePagination(bboxes, width, height), pages = _a.pages, maxPageHeight = _a.maxPageHeight, maxPageWidth = _a.maxPageWidth, paginationBBox = _a.paginationBBox, paginationVertical = _a.paginationVertical;\n var newCurrentPage = pages.findIndex(function (p) { return p.endIndex >= trackingIndex; });\n this.pagination.currentPage = Math.min(Math.max(newCurrentPage, 0), pages.length - 1);\n var _b = this.item, itemPaddingX = _b.paddingX, itemPaddingY = _b.paddingY;\n var paginationComponentPadding = 8;\n var legendItemsWidth = maxPageWidth - itemPaddingX;\n var legendItemsHeight = maxPageHeight - itemPaddingY;\n var paginationX = 0;\n var paginationY = -paginationBBox.y - this.item.marker.size / 2;\n if (paginationVertical) {\n paginationY += legendItemsHeight + paginationComponentPadding;\n }\n else {\n paginationX += -paginationBBox.x + legendItemsWidth + paginationComponentPadding;\n paginationY += (legendItemsHeight - paginationBBox.height) / 2;\n }\n this.pagination.translationX = paginationX;\n this.pagination.translationY = paginationY;\n this.pagination.update();\n this.pagination.updateMarkers();\n return {\n maxPageHeight: maxPageHeight,\n maxPageWidth: maxPageWidth,\n pages: pages,\n };\n };\n Legend.prototype.calculatePagination = function (bboxes, width, height) {\n var _a, _b, _c;\n var _d = this.item, itemPaddingX = _d.paddingX, itemPaddingY = _d.paddingY;\n var orientation = this.getOrientation();\n var paginationVertical = ['left', 'right'].includes(this.position);\n var paginationBBox = this.pagination.computeBBox();\n var lastPassPaginationBBox = new BBox(0, 0, 0, 0);\n var pages = [];\n var maxPageWidth = 0;\n var maxPageHeight = 0;\n var count = 0;\n var stableOutput = function (lastPassPaginationBBox) {\n var width = lastPassPaginationBBox.width, height = lastPassPaginationBBox.height;\n return width === paginationBBox.width && height === paginationBBox.height;\n };\n var forceResult = this.maxWidth !== undefined || this.maxHeight !== undefined;\n do {\n if (count++ > 10) {\n Logger.warn('unable to find stable legend layout.');\n break;\n }\n paginationBBox = lastPassPaginationBBox;\n var maxWidth = width - (paginationVertical ? 0 : paginationBBox.width);\n var maxHeight = height - (paginationVertical ? paginationBBox.height : 0);\n var layout = gridLayout({\n orientation: orientation,\n bboxes: bboxes,\n maxHeight: maxHeight,\n maxWidth: maxWidth,\n itemPaddingY: itemPaddingY,\n itemPaddingX: itemPaddingX,\n forceResult: forceResult,\n });\n pages = (_a = layout === null || layout === void 0 ? void 0 : layout.pages) !== null && _a !== void 0 ? _a : [];\n maxPageWidth = (_b = layout === null || layout === void 0 ? void 0 : layout.maxPageWidth) !== null && _b !== void 0 ? _b : 0;\n maxPageHeight = (_c = layout === null || layout === void 0 ? void 0 : layout.maxPageHeight) !== null && _c !== void 0 ? _c : 0;\n var totalPages = pages.length;\n this.pagination.visible = totalPages > 1;\n this.pagination.totalPages = totalPages;\n this.pagination.update();\n lastPassPaginationBBox = this.pagination.computeBBox();\n if (!this.pagination.visible) {\n break;\n }\n } while (!stableOutput(lastPassPaginationBBox));\n return { maxPageWidth: maxPageWidth, maxPageHeight: maxPageHeight, pages: pages, paginationBBox: paginationBBox, paginationVertical: paginationVertical };\n };\n Legend.prototype.updatePositions = function (pageNumber) {\n if (pageNumber === void 0) { pageNumber = 0; }\n var _a = this, paddingY = _a.item.paddingY, itemSelection = _a.itemSelection, pages = _a.pages;\n if (pages.length < 1 || !pages[pageNumber]) {\n return;\n }\n var _b = pages[pageNumber], columns = _b.columns, visibleStart = _b.startIndex, visibleEnd = _b.endIndex;\n // Position legend items using the layout computed above.\n var x = 0;\n var y = 0;\n var columnCount = columns.length;\n var rowCount = columns[0].indices.length;\n var horizontal = this.getOrientation() === 'horizontal';\n var itemHeight = columns[0].bboxes[0].height + paddingY;\n var rowSumColumnWidths = [];\n itemSelection.each(function (markerLabel, _, i) {\n var _a, _b;\n if (i < visibleStart || i > visibleEnd) {\n markerLabel.visible = false;\n return;\n }\n var pageIndex = i - visibleStart;\n var columnIndex = 0;\n var rowIndex = 0;\n if (horizontal) {\n columnIndex = pageIndex % columnCount;\n rowIndex = Math.floor(pageIndex / columnCount);\n }\n else {\n columnIndex = Math.floor(pageIndex / rowCount);\n rowIndex = pageIndex % rowCount;\n }\n markerLabel.visible = true;\n var column = columns[columnIndex];\n if (!column) {\n return;\n }\n y = itemHeight * rowIndex;\n x = (_a = rowSumColumnWidths[rowIndex]) !== null && _a !== void 0 ? _a : 0;\n rowSumColumnWidths[rowIndex] = ((_b = rowSumColumnWidths[rowIndex]) !== null && _b !== void 0 ? _b : 0) + column.columnWidth;\n // Round off for pixel grid alignment to work properly.\n markerLabel.translationX = Math.floor(x);\n markerLabel.translationY = Math.floor(y);\n });\n };\n Legend.prototype.updatePageNumber = function (pageNumber) {\n var pages = this.pages;\n // Track an item on the page in re-pagination cases (e.g. resize).\n var _a = pages[pageNumber], startIndex = _a.startIndex, endIndex = _a.endIndex;\n if (startIndex === 0) {\n // Stay on first page on pagination update.\n this.paginationTrackingIndex = 0;\n }\n else if (pageNumber === pages.length - 1) {\n // Stay on last page on pagination update.\n this.paginationTrackingIndex = endIndex;\n }\n else {\n // Track the middle item on the page).\n this.paginationTrackingIndex = Math.floor((startIndex + endIndex) / 2);\n }\n this.pagination.update();\n this.pagination.updateMarkers();\n this.updatePositions(pageNumber);\n this.ctx.updateService.update(ChartUpdateType.SCENE_RENDER);\n };\n Legend.prototype.update = function () {\n var _a = this.item, strokeWidth = _a.marker.strokeWidth, color = _a.label.color;\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 = strokeWidth;\n markerLabel.markerFillOpacity = marker.fillOpacity;\n markerLabel.markerStrokeOpacity = marker.strokeOpacity;\n markerLabel.opacity = datum.enabled ? 1 : 0.5;\n markerLabel.color = color;\n });\n };\n Legend.prototype.getDatumForPoint = function (x, y) {\n var e_2, _a;\n var visibleChildBBoxes = [];\n var closestLeftTop = { dist: Infinity, datum: undefined };\n try {\n for (var _b = __values$h(this.group.children), _c = _b.next(); !_c.done; _c = _b.next()) {\n var child = _c.value;\n if (!child.visible)\n continue;\n if (!(child instanceof MarkerLabel))\n continue;\n var childBBox = child.computeBBox();\n childBBox.grow(this.item.paddingX / 2, 'horizontal');\n childBBox.grow(this.item.paddingY / 2, 'vertical');\n if (childBBox.containsPoint(x, y)) {\n return child.datum;\n }\n var distX = x - childBBox.x - this.item.paddingX / 2;\n var distY = y - childBBox.y - this.item.paddingY / 2;\n var dist = Math.pow(distX, 2) + Math.pow(distY, 2);\n var toTheLeftTop = distX >= 0 && distY >= 0;\n if (toTheLeftTop && dist < closestLeftTop.dist) {\n closestLeftTop.dist = dist;\n closestLeftTop.datum = child.datum;\n }\n visibleChildBBoxes.push(childBBox);\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 var pageBBox = BBox.merge(visibleChildBBoxes);\n if (!pageBBox.containsPoint(x, y)) {\n // We're not in-between legend items.\n return undefined;\n }\n // Fallback to returning closest match to the left/up.\n return closestLeftTop.datum;\n };\n Legend.prototype.computeBBox = function () {\n return this.group.computeBBox();\n };\n Legend.prototype.computePagedBBox = function () {\n var actualBBox = this.group.computeBBox();\n if (this.pages.length <= 1) {\n return actualBBox;\n }\n var _a = __read$v(this.maxPageSize, 2), maxPageWidth = _a[0], maxPageHeight = _a[1];\n actualBBox.height = Math.max(maxPageHeight, actualBBox.height);\n actualBBox.width = Math.max(maxPageWidth, actualBBox.width);\n return actualBBox;\n };\n Legend.prototype.checkLegendClick = function (event) {\n var _a = this, legendItemClick = _a.listeners.legendItemClick, _b = _a.ctx, dataService = _b.dataService, highlightManager = _b.highlightManager, toggleSeriesVisible = _a.item.toggleSeriesVisible;\n var offsetX = event.offsetX, offsetY = event.offsetY;\n var legendBBox = this.computeBBox();\n var pointerInsideLegend = this.group.visible && legendBBox.containsPoint(offsetX, offsetY);\n var datum = this.getDatumForPoint(offsetX, offsetY);\n if (!pointerInsideLegend || !datum) {\n return;\n }\n var id = datum.id, itemId = datum.itemId, enabled = datum.enabled;\n var chartSeries = dataService.getSeries();\n var series = chartSeries.find(function (s) { return s.id === id; });\n if (!series) {\n return;\n }\n event.consume();\n var newEnabled = enabled;\n if (toggleSeriesVisible) {\n newEnabled = !enabled;\n this.ctx.chartEventManager.legendItemClick(series, itemId, newEnabled, datum.legendItemName);\n }\n if (!newEnabled) {\n highlightManager.updateHighlight(this.id);\n }\n else {\n highlightManager.updateHighlight(this.id, {\n series: series,\n itemId: itemId,\n datum: undefined,\n });\n }\n this.ctx.updateService.update(ChartUpdateType.PROCESS_DATA, { forceNodeDataRefresh: true });\n legendItemClick === null || legendItemClick === void 0 ? void 0 : legendItemClick({ type: 'click', enabled: newEnabled, itemId: itemId, seriesId: series.id });\n };\n Legend.prototype.checkLegendDoubleClick = function (event) {\n var _a;\n var _b = this, legendItemDoubleClick = _b.listeners.legendItemDoubleClick, dataService = _b.ctx.dataService, toggleSeriesVisible = _b.item.toggleSeriesVisible;\n var offsetX = event.offsetX, offsetY = event.offsetY;\n // Integrated charts do not handle double click behaviour correctly due to multiple instances of the\n // chart being created. See https://ag-grid.atlassian.net/browse/RTI-1381\n if (this.ctx.mode === 'integrated') {\n return;\n }\n var legendBBox = this.computeBBox();\n var pointerInsideLegend = this.group.visible && legendBBox.containsPoint(offsetX, offsetY);\n var datum = this.getDatumForPoint(offsetX, offsetY);\n if (!pointerInsideLegend || !datum) {\n return;\n }\n var id = datum.id, itemId = datum.itemId, seriesId = datum.seriesId;\n var chartSeries = dataService.getSeries();\n var series = chartSeries.find(function (s) { return s.id === id; });\n if (!series) {\n return;\n }\n event.consume();\n if (toggleSeriesVisible) {\n var legendData = chartSeries.reduce(function (ls, s) { return __spreadArray$k(__spreadArray$k([], __read$v(ls)), __read$v(s.getLegendData().filter(function (d) { return d.legendType === 'category'; }))); }, []);\n var numVisibleItems_1 = {};\n legendData.forEach(function (d) {\n var _a;\n var _b;\n (_a = numVisibleItems_1[_b = d.seriesId]) !== null && _a !== void 0 ? _a : (numVisibleItems_1[_b] = 0);\n if (d.enabled)\n numVisibleItems_1[d.seriesId]++;\n });\n var clickedItem = legendData.find(function (d) { return d.itemId === itemId && d.seriesId === seriesId; });\n this.ctx.chartEventManager.legendItemDoubleClick(series, itemId, (_a = clickedItem === null || clickedItem === void 0 ? void 0 : clickedItem.enabled) !== null && _a !== void 0 ? _a : false, numVisibleItems_1, clickedItem === null || clickedItem === void 0 ? void 0 : clickedItem.legendItemName);\n }\n this.ctx.updateService.update(ChartUpdateType.PROCESS_DATA, { forceNodeDataRefresh: true });\n legendItemDoubleClick === null || legendItemDoubleClick === void 0 ? void 0 : legendItemDoubleClick({ type: 'dblclick', enabled: true, itemId: itemId, seriesId: series.id });\n };\n Legend.prototype.handleLegendMouseMove = function (event) {\n var _a;\n var _b = this, enabled = _b.enabled, toggleSeriesVisible = _b.item.toggleSeriesVisible, listeners = _b.listeners;\n if (!enabled) {\n return;\n }\n var legendBBox = this.computeBBox();\n var pageX = event.pageX, pageY = event.pageY, offsetX = event.offsetX, offsetY = event.offsetY;\n var pointerInsideLegend = this.group.visible && legendBBox.containsPoint(offsetX, offsetY);\n if (!pointerInsideLegend) {\n this.ctx.cursorManager.updateCursor(this.id);\n this.ctx.highlightManager.updateHighlight(this.id);\n this.ctx.tooltipManager.removeTooltip(this.id);\n return;\n }\n // Prevent other handlers from consuming this event if it's generated inside the legend\n // boundaries.\n event.consume();\n var datum = this.getDatumForPoint(offsetX, offsetY);\n var pointerOverLegendDatum = pointerInsideLegend && datum !== undefined;\n if (!pointerOverLegendDatum) {\n this.ctx.cursorManager.updateCursor(this.id);\n this.ctx.highlightManager.updateHighlight(this.id);\n return;\n }\n var series = datum ? this.ctx.dataService.getSeries().find(function (series) { return series.id === (datum === null || datum === void 0 ? void 0 : datum.id); }) : undefined;\n if (datum && this.truncatedItems.has((_a = datum.itemId) !== null && _a !== void 0 ? _a : datum.id)) {\n var labelText = this.getItemLabel(datum);\n this.ctx.tooltipManager.updateTooltip(this.id, { pageX: pageX, pageY: pageY, offsetX: offsetX, offsetY: offsetY, event: event, showArrow: false }, toTooltipHtml$1({ content: labelText }));\n }\n else {\n this.ctx.tooltipManager.removeTooltip(this.id);\n }\n if (toggleSeriesVisible || listeners.legendItemClick != null || listeners.legendItemDoubleClick != null) {\n this.ctx.cursorManager.updateCursor(this.id, 'pointer');\n }\n if ((datum === null || datum === void 0 ? void 0 : datum.enabled) && series) {\n this.ctx.highlightManager.updateHighlight(this.id, {\n series: series,\n itemId: datum === null || datum === void 0 ? void 0 : datum.itemId,\n datum: undefined,\n });\n }\n else {\n this.ctx.highlightManager.updateHighlight(this.id);\n }\n };\n Legend.prototype.positionLegend = function (shrinkRect) {\n var _this = this;\n var newShrinkRect = shrinkRect.clone();\n if (!this.enabled || !this.data.length) {\n return { shrinkRect: newShrinkRect };\n }\n var _a = __read$v(this.calculateLegendDimensions(shrinkRect), 2), legendWidth = _a[0], legendHeight = _a[1];\n this.group.translationX = 0;\n this.group.translationY = 0;\n this.performLayout(legendWidth, legendHeight);\n var legendBBox = this.computePagedBBox();\n var calculateTranslationPerpendicularDimension = function () {\n switch (_this.position) {\n case 'top':\n return 0;\n case 'bottom':\n return shrinkRect.height - legendBBox.height;\n case 'left':\n return 0;\n case 'right':\n default:\n return shrinkRect.width - legendBBox.width;\n }\n };\n if (this.visible) {\n var translationX = void 0;\n var translationY = void 0;\n switch (this.position) {\n case 'top':\n case 'bottom':\n translationX = (shrinkRect.width - legendBBox.width) / 2;\n translationY = calculateTranslationPerpendicularDimension();\n newShrinkRect.shrink(legendBBox.height, this.position);\n break;\n case 'left':\n case 'right':\n default:\n translationX = calculateTranslationPerpendicularDimension();\n translationY = (shrinkRect.height - legendBBox.height) / 2;\n newShrinkRect.shrink(legendBBox.width, this.position);\n }\n // Round off for pixel grid alignment to work properly.\n this.group.translationX = Math.floor(-legendBBox.x + shrinkRect.x + translationX);\n this.group.translationY = Math.floor(-legendBBox.y + shrinkRect.y + translationY);\n }\n if (this.visible && this.enabled && this.data.length) {\n var legendPadding = this.spacing;\n newShrinkRect.shrink(legendPadding, this.position);\n var legendPositionedBBox = legendBBox.clone();\n legendPositionedBBox.x += this.group.translationX;\n legendPositionedBBox.y += this.group.translationY;\n this.ctx.tooltipManager.updateExclusiveRect(this.id, legendPositionedBBox);\n }\n else {\n this.ctx.tooltipManager.updateExclusiveRect(this.id);\n }\n return { shrinkRect: newShrinkRect };\n };\n Legend.prototype.calculateLegendDimensions = function (shrinkRect) {\n var width = shrinkRect.width, height = shrinkRect.height;\n var aspectRatio = width / height;\n var maxCoefficient = 0.5;\n var minHeightCoefficient = 0.2;\n var minWidthCoefficient = 0.25;\n var legendWidth = 0;\n var legendHeight = 0;\n switch (this.position) {\n case 'top':\n case 'bottom':\n // A horizontal legend should take maximum between 20 to 50 percent of the chart height if height is larger than width\n // and maximum 20 percent of the chart height if height is smaller than width.\n var heightCoefficient = aspectRatio < 1\n ? Math.min(maxCoefficient, minHeightCoefficient * (1 / aspectRatio))\n : minHeightCoefficient;\n legendWidth = this.maxWidth ? Math.min(this.maxWidth, width) : width;\n legendHeight = this.maxHeight\n ? Math.min(this.maxHeight, height)\n : Math.round(height * heightCoefficient);\n break;\n case 'left':\n case 'right':\n default:\n // A vertical legend should take maximum between 25 to 50 percent of the chart width if width is larger than height\n // and maximum 25 percent of the chart width if width is smaller than height.\n var widthCoefficient = aspectRatio > 1 ? Math.min(maxCoefficient, minWidthCoefficient * aspectRatio) : minWidthCoefficient;\n legendWidth = this.maxWidth ? Math.min(this.maxWidth, width) : Math.round(width * widthCoefficient);\n legendHeight = this.maxHeight ? Math.min(this.maxHeight, height) : height;\n }\n return [legendWidth, legendHeight];\n };\n Legend.className = 'Legend';\n __decorate$1O([\n Validate(BOOLEAN)\n ], Legend.prototype, \"_enabled\", void 0);\n __decorate$1O([\n Validate(POSITION)\n ], Legend.prototype, \"position\", void 0);\n __decorate$1O([\n Validate(OPT_NUMBER(0))\n ], Legend.prototype, \"maxWidth\", void 0);\n __decorate$1O([\n Validate(OPT_NUMBER(0))\n ], Legend.prototype, \"maxHeight\", void 0);\n __decorate$1O([\n Validate(OPT_BOOLEAN)\n ], Legend.prototype, \"reverseOrder\", void 0);\n __decorate$1O([\n Validate(OPT_ORIENTATION)\n ], Legend.prototype, \"orientation\", void 0);\n __decorate$1O([\n Validate(NUMBER(0))\n ], Legend.prototype, \"spacing\", void 0);\n return Legend;\n}());\n\nvar LEGEND_FACTORIES = {\n category: Legend,\n};\nfunction registerLegend(type, ctr) {\n if (LEGEND_FACTORIES[type]) {\n throw new Error(\"AG Charts - already registered legend type: \" + type);\n }\n LEGEND_FACTORIES[type] = ctr;\n}\nfunction getLegend(type, ctx) {\n if (LEGEND_FACTORIES[type]) {\n return new LEGEND_FACTORIES[type](ctx);\n }\n throw new Error(\"AG Charts - unknown legend type: \" + type);\n}\n\nvar __read$u = (undefined && undefined.__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 __spreadArray$j = (undefined && undefined.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar CallbackCache = /** @class */ (function () {\n function CallbackCache() {\n this.cache = new Map();\n }\n CallbackCache.prototype.call = function (f) {\n var params = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n params[_i - 1] = arguments[_i];\n }\n var serialisedParams;\n var paramCache = this.cache.get(f);\n var invoke = function () {\n try {\n var result = f.apply(void 0, __spreadArray$j([], __read$u(params)));\n if (paramCache && serialisedParams != null) {\n paramCache.set(serialisedParams, result);\n }\n return result;\n }\n catch (e) {\n Logger.warnOnce(\"User callback errored, ignoring\", e);\n return undefined;\n }\n };\n try {\n serialisedParams = JSON.stringify(params);\n }\n catch (e) {\n // Unable to serialise params!\n // No caching possible.\n return invoke();\n }\n if (paramCache == null) {\n paramCache = new Map();\n this.cache.set(f, paramCache);\n }\n if (!paramCache.has(serialisedParams)) {\n return invoke();\n }\n return paramCache.get(serialisedParams);\n };\n CallbackCache.prototype.invalidateCache = function () {\n this.cache = new Map();\n };\n return CallbackCache;\n}());\n\nvar __assign$k = (undefined && undefined.__assign) || function () {\n __assign$k = 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$k.apply(this, arguments);\n};\nvar __awaiter$d = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$d = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __values$g = (undefined && undefined.__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$t = (undefined && undefined.__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 __spreadArray$i = (undefined && undefined.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\n/** Implements cross-series data model coordination. */\nvar DataController = /** @class */ (function () {\n function DataController() {\n this.requested = [];\n this.status = 'setup';\n }\n DataController.prototype.request = function (id, data, opts) {\n return __awaiter$d(this, void 0, void 0, function () {\n var _this = this;\n return __generator$d(this, function (_a) {\n if (this.status !== 'setup')\n throw new Error(\"AG Charts - data request after data setup phase.\");\n return [2 /*return*/, new Promise(function (resolve, reject) {\n _this.requested.push({\n id: id,\n opts: opts,\n data: data,\n resultCb: resolve,\n reject: reject,\n });\n })];\n });\n });\n };\n DataController.prototype.execute = function () {\n return __awaiter$d(this, void 0, void 0, function () {\n var merged, _loop_1, this_1, merged_1, merged_1_1, _a, opts, data, resultCbs, rejects, ids;\n var e_1, _b;\n return __generator$d(this, function (_c) {\n if (this.status !== 'setup')\n throw new Error(\"AG Charts - data request after data setup phase.\");\n this.status = 'executed';\n if (DataController.DEBUG())\n Logger.debug('DataController.execute() - requested', this.requested);\n merged = this.mergeRequested();\n if (DataController.DEBUG())\n Logger.debug('DataController.execute() - merged', merged);\n _loop_1 = function (opts, data, resultCbs, rejects, ids) {\n try {\n var dataModel_1 = new DataModel(opts);\n var processedData_1 = dataModel_1.processData(data);\n if (processedData_1 && processedData_1.partialValidDataCount === 0) {\n resultCbs.forEach(function (cb) { return cb({ dataModel: dataModel_1, processedData: processedData_1 }); });\n }\n else if (processedData_1) {\n this_1.splitResult(dataModel_1, processedData_1, ids, resultCbs);\n }\n else {\n rejects.forEach(function (cb) { return cb(new Error(\"AG Charts - no processed data generated\")); });\n }\n }\n catch (error) {\n rejects.forEach(function (cb) { return cb(error); });\n }\n };\n this_1 = this;\n try {\n for (merged_1 = __values$g(merged), merged_1_1 = merged_1.next(); !merged_1_1.done; merged_1_1 = merged_1.next()) {\n _a = merged_1_1.value, opts = _a.opts, data = _a.data, resultCbs = _a.resultCbs, rejects = _a.rejects, ids = _a.ids;\n _loop_1(opts, data, resultCbs, rejects, ids);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (merged_1_1 && !merged_1_1.done && (_b = merged_1.return)) _b.call(merged_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return [2 /*return*/];\n });\n });\n };\n DataController.prototype.mergeRequested = function () {\n var e_2, _a;\n var grouped = [];\n var keys = function (props) {\n return props\n .filter(function (p) { return p.type === 'key'; })\n .map(function (p) { return p.property; })\n .join(';');\n };\n var groupMatch = function (_a) {\n var opts = _a.opts, data = _a.data;\n return function (gr) {\n return (gr[0].data === data &&\n gr[0].opts.groupByKeys === opts.groupByKeys &&\n gr[0].opts.dataVisible === opts.dataVisible &&\n gr[0].opts.groupByFn === opts.groupByFn &&\n keys(gr[0].opts.props) === keys(opts.props));\n };\n };\n var propMatch = function (prop) { return function (existing) {\n var _a;\n if (existing.type !== prop.type)\n return false;\n if (existing.id !== prop.id)\n return false;\n var diff = (_a = jsonDiff(existing, prop)) !== null && _a !== void 0 ? _a : {};\n delete diff['scopes'];\n return Object.keys(diff).length === 0;\n }; };\n var mergeOpts = function (opts) {\n return __assign$k(__assign$k({}, opts[0]), { props: opts.reduce(function (result, next) {\n var e_3, _a, _b;\n var _c, _d, _e;\n try {\n for (var _f = __values$g(next.props), _g = _f.next(); !_g.done; _g = _f.next()) {\n var prop = _g.value;\n var match = result.find(propMatch(prop));\n if (match) {\n (_c = match.scopes) !== null && _c !== void 0 ? _c : (match.scopes = []);\n (_b = match.scopes).push.apply(_b, __spreadArray$i(__spreadArray$i([], __read$t(((_d = prop.scopes) !== null && _d !== void 0 ? _d : []))), __read$t(((_e = next.scopes) !== null && _e !== void 0 ? _e : []))));\n continue;\n }\n result.push(prop);\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (_g && !_g.done && (_a = _f.return)) _a.call(_f);\n }\n finally { if (e_3) throw e_3.error; }\n }\n return result;\n }, []) });\n };\n var merge = function (props) {\n return {\n ids: props.map(function (_a) {\n var id = _a.id;\n return id;\n }),\n resultCbs: props.map(function (_a) {\n var resultCb = _a.resultCb;\n return resultCb;\n }),\n rejects: props.map(function (_a) {\n var reject = _a.reject;\n return reject;\n }),\n data: props[0].data,\n opts: mergeOpts(props.map(function (_a) {\n var opts = _a.opts;\n return opts;\n })),\n };\n };\n try {\n for (var _b = __values$g(this.requested), _c = _b.next(); !_c.done; _c = _b.next()) {\n var request = _c.value;\n var match = grouped.find(groupMatch(request));\n if (match) {\n match.push(request);\n }\n else {\n grouped.push([request]);\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 grouped.map(merge);\n };\n DataController.prototype.splitResult = function (dataModel, processedData, scopes, resultCbs) {\n var _loop_2 = function (index) {\n var scope = scopes[index];\n var resultCb = resultCbs[index];\n resultCb({\n dataModel: dataModel,\n processedData: __assign$k(__assign$k({}, processedData), { data: processedData.data.filter(function (_a) {\n var validScopes = _a.validScopes;\n return validScopes == null || validScopes.some(function (s) { return s === scope; });\n }) }),\n });\n };\n for (var index = 0; index < scopes.length; index++) {\n _loop_2(index);\n }\n };\n DataController.DEBUG = function () { var _a; return (_a = [true, 'data-model'].includes(windowValue('agChartsDebug'))) !== null && _a !== void 0 ? _a : false; };\n return DataController;\n}());\n\nvar __read$s = (undefined && undefined.__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 __spreadArray$h = (undefined && undefined.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar SeriesStateManager = /** @class */ (function () {\n function SeriesStateManager() {\n this.groups = {};\n }\n SeriesStateManager.prototype.registerSeries = function (_a) {\n var _b;\n var _c;\n var id = _a.id, seriesGrouping = _a.seriesGrouping, visible = _a.visible, type = _a.type;\n if (!seriesGrouping)\n return;\n (_b = (_c = this.groups)[type]) !== null && _b !== void 0 ? _b : (_c[type] = {});\n this.groups[type][id] = { grouping: seriesGrouping, visible: visible };\n };\n SeriesStateManager.prototype.deregisterSeries = function (_a) {\n var id = _a.id, type = _a.type;\n if (this.groups[type]) {\n delete this.groups[type][id];\n }\n if (this.groups[type] && Object.keys(this.groups[type]).length === 0) {\n delete this.groups[type];\n }\n };\n SeriesStateManager.prototype.getVisiblePeerGroupIndex = function (_a) {\n var _b;\n var type = _a.type, seriesGrouping = _a.seriesGrouping;\n if (!seriesGrouping)\n return { visibleGroupCount: 1, index: 0 };\n var visibleGroups = __spreadArray$h([], __read$s(Object.entries((_b = this.groups[type]) !== null && _b !== void 0 ? _b : {})\n .filter(function (_a) {\n var _b = __read$s(_a, 2); _b[0]; var entry = _b[1];\n return entry.visible;\n })\n .reduce(function (result, _a) {\n var _b = __read$s(_a, 2); _b[0]; var next = _b[1];\n if (next.visible) {\n result.add(next.grouping.groupIndex);\n }\n return result;\n }, new Set())\n .values()));\n visibleGroups.sort(function (a, b) { return a - b; });\n return { visibleGroupCount: visibleGroups.length, index: visibleGroups.indexOf(seriesGrouping.groupIndex) };\n };\n return SeriesStateManager;\n}());\n\nvar __values$f = (undefined && undefined.__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 SeriesLayerManager = /** @class */ (function () {\n function SeriesLayerManager(rootGroup) {\n this.groups = {};\n this.series = {};\n this.rootGroup = rootGroup;\n }\n SeriesLayerManager.prototype.requestGroup = function (seriesConfig) {\n var _a, _b;\n var _c, _d;\n var id = seriesConfig.id, type = seriesConfig.type, seriesRootGroup = seriesConfig.rootGroup, seriesGrouping = seriesConfig.seriesGrouping;\n var _e = (seriesGrouping !== null && seriesGrouping !== void 0 ? seriesGrouping : {}).groupIndex, groupIndex = _e === void 0 ? id : _e;\n if (this.series[id] != null) {\n throw new Error(\"AG Charts - series already has an allocated layer: \" + this.series[id]);\n }\n (_a = (_c = this.groups)[type]) !== null && _a !== void 0 ? _a : (_c[type] = {});\n var groupInfo = this.groups[type][groupIndex];\n if (!groupInfo) {\n groupInfo = (_b = (_d = this.groups[type])[groupIndex]) !== null && _b !== void 0 ? _b : (_d[groupIndex] = {\n seriesIds: [],\n group: this.rootGroup.appendChild(new Group({\n name: type + \"-content\",\n layer: true,\n zIndex: Layers.SERIES_LAYER_ZINDEX,\n zIndexSubOrder: seriesConfig.getGroupZIndexSubOrder('data'),\n })),\n });\n }\n this.series[id] = { layerState: groupInfo, seriesConfig: seriesConfig };\n groupInfo.seriesIds.push(id);\n groupInfo.group.appendChild(seriesRootGroup);\n return groupInfo.group;\n };\n SeriesLayerManager.prototype.changeGroup = function (seriesConfig) {\n var _a, _b;\n var id = seriesConfig.id, seriesGrouping = seriesConfig.seriesGrouping, type = seriesConfig.type, rootGroup = seriesConfig.rootGroup, oldGrouping = seriesConfig.oldGrouping;\n var _c = (seriesGrouping !== null && seriesGrouping !== void 0 ? seriesGrouping : {}).groupIndex, groupIndex = _c === void 0 ? id : _c;\n if ((_b = (_a = this.groups[type]) === null || _a === void 0 ? void 0 : _a[groupIndex]) === null || _b === void 0 ? void 0 : _b.seriesIds.includes(id)) {\n // Already in the right group, nothing to do.\n return;\n }\n if (this.series[id] != null) {\n this.releaseGroup({ id: id, seriesGrouping: oldGrouping, type: type, rootGroup: rootGroup });\n }\n this.requestGroup(seriesConfig);\n };\n SeriesLayerManager.prototype.releaseGroup = function (seriesConfig) {\n var _a, _b, _c, _d, _e;\n var id = seriesConfig.id, seriesGrouping = seriesConfig.seriesGrouping, rootGroup = seriesConfig.rootGroup, type = seriesConfig.type;\n var _f = (seriesGrouping !== null && seriesGrouping !== void 0 ? seriesGrouping : {}).groupIndex, groupIndex = _f === void 0 ? id : _f;\n if (this.series[id] == null) {\n throw new Error(\"AG Charts - series doesn't have an allocated layer: \" + id);\n }\n var groupInfo = (_b = (_a = this.groups[type]) === null || _a === void 0 ? void 0 : _a[groupIndex]) !== null && _b !== void 0 ? _b : (_c = this.series[id]) === null || _c === void 0 ? void 0 : _c.layerState;\n if (groupInfo) {\n groupInfo.seriesIds = groupInfo.seriesIds.filter(function (v) { return v !== id; });\n groupInfo.group.removeChild(rootGroup);\n }\n if ((groupInfo === null || groupInfo === void 0 ? void 0 : groupInfo.seriesIds.length) === 0) {\n // Last member of the layer, cleanup.\n this.rootGroup.removeChild(groupInfo.group);\n delete this.groups[type][groupIndex];\n delete this.groups[type][id];\n }\n else if ((groupInfo === null || groupInfo === void 0 ? void 0 : groupInfo.seriesIds.length) > 0) {\n // Update zIndexSubOrder to avoid it becoming stale as series are removed and re-added\n // with the same groupIndex, but are otherwise unrelated.\n var leadSeriesConfig = (_e = this.series[(_d = groupInfo === null || groupInfo === void 0 ? void 0 : groupInfo.seriesIds) === null || _d === void 0 ? void 0 : _d[0]]) === null || _e === void 0 ? void 0 : _e.seriesConfig;\n groupInfo.group.zIndexSubOrder = leadSeriesConfig === null || leadSeriesConfig === void 0 ? void 0 : leadSeriesConfig.getGroupZIndexSubOrder('data');\n }\n delete this.series[id];\n };\n SeriesLayerManager.prototype.destroy = function () {\n var e_1, _a, e_2, _b;\n try {\n for (var _c = __values$f(Object.values(this.groups)), _d = _c.next(); !_d.done; _d = _c.next()) {\n var groups = _d.value;\n try {\n for (var _e = (e_2 = void 0, __values$f(Object.values(groups))), _f = _e.next(); !_f.done; _f = _e.next()) {\n var groupInfo = _f.value;\n this.rootGroup.removeChild(groupInfo.group);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\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 (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n this.groups = {};\n this.series = {};\n };\n return SeriesLayerManager;\n}());\n\nvar __extends$L = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$j = (undefined && undefined.__assign) || function () {\n __assign$j = 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$j.apply(this, arguments);\n};\nvar __decorate$1N = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 __awaiter$c = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$c = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read$r = (undefined && undefined.__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 __values$e = (undefined && undefined.__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 __spreadArray$g = (undefined && undefined.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar Chart = /** @class */ (function (_super) {\n __extends$L(Chart, _super);\n function Chart(document, overrideDevicePixelRatio, resources) {\n if (document === void 0) { document = window.document; }\n var _a;\n var _this = _super.call(this) || this;\n _this.id = createId$1(_this);\n _this.processedOptions = {};\n _this.userOptions = {};\n _this.queuedUserOptions = [];\n _this.seriesRoot = new Group({ name: _this.id + \"-Series-root\" });\n _this.extraDebugStats = {};\n _this.container = undefined;\n _this.data = [];\n _this.padding = new Padding$1(20);\n _this.seriesAreaPadding = new Padding$1(0);\n _this.title = undefined;\n _this.subtitle = undefined;\n _this.footnote = undefined;\n _this.mode = 'standalone';\n _this._destroyed = false;\n _this.modules = {};\n _this.legendModules = {};\n _this._pendingFactoryUpdates = [];\n _this._performUpdateNoRenderCount = 0;\n _this._performUpdateType = ChartUpdateType.NONE;\n _this.seriesToUpdate = new Set();\n _this.performUpdateTrigger = debouncedCallback(function (_a) {\n var count = _a.count;\n return __awaiter$c(_this, void 0, void 0, function () {\n var error_1;\n return __generator$c(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (this._destroyed)\n return [2 /*return*/];\n _b.label = 1;\n case 1:\n _b.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.performUpdate(count)];\n case 2:\n _b.sent();\n return [3 /*break*/, 4];\n case 3:\n error_1 = _b.sent();\n this._lastPerformUpdateError = error_1;\n Logger.error('update error', error_1);\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n });\n });\n _this._axes = [];\n _this._series = [];\n _this.applyLegendOptions = undefined;\n _this.lastInteractionEvent = undefined;\n _this.pointerScheduler = debouncedAnimationFrame(function () {\n if (_this.lastInteractionEvent) {\n _this.handlePointer(_this.lastInteractionEvent);\n }\n _this.lastInteractionEvent = undefined;\n });\n _this.onSeriesNodeClick = function (event) {\n var seriesNodeClickEvent = __assign$j(__assign$j({}, event), { type: 'seriesNodeClick' });\n Object.defineProperty(seriesNodeClickEvent, 'series', {\n enumerable: false,\n // Should display the deprecation warning\n get: function () { return event.series; },\n });\n _this.fireEvent(seriesNodeClickEvent);\n };\n _this.onSeriesNodeDoubleClick = function (event) {\n var seriesNodeDoubleClick = __assign$j(__assign$j({}, event), { type: 'seriesNodeDoubleClick' });\n _this.fireEvent(seriesNodeDoubleClick);\n };\n var scene = resources === null || resources === void 0 ? void 0 : resources.scene;\n var element = (_a = resources === null || resources === void 0 ? void 0 : resources.element) !== null && _a !== void 0 ? _a : document.createElement('div');\n var container = resources === null || resources === void 0 ? void 0 : resources.container;\n var root = new Group({ name: 'root' });\n // Prevent the scene from rendering chart components in an invalid state\n // (before first layout is performed).\n root.visible = false;\n root.append(_this.seriesRoot);\n _this.axisGroup = new Group({ name: 'Axes', layer: true, zIndex: Layers.AXIS_ZINDEX });\n root.appendChild(_this.axisGroup);\n _this.element = element;\n element.classList.add('ag-chart-wrapper');\n element.style.position = 'relative';\n _this.scene = scene !== null && scene !== void 0 ? scene : new Scene({ document: document, overrideDevicePixelRatio: overrideDevicePixelRatio });\n _this.scene.debug.consoleLog = false;\n _this.scene.root = root;\n _this.scene.container = element;\n _this.autoSize = true;\n _this.chartEventManager = new ChartEventManager();\n _this.cursorManager = new CursorManager(element);\n _this.highlightManager = new HighlightManager();\n _this.interactionManager = new InteractionManager(element);\n _this.zoomManager = new ZoomManager();\n _this.dataService = new DataService(function () { return _this.series; });\n _this.layoutService = new LayoutService();\n _this.updateService = new UpdateService(function (type, _a) {\n if (type === void 0) { type = ChartUpdateType.FULL; }\n var forceNodeDataRefresh = _a.forceNodeDataRefresh;\n return _this.update(type, { forceNodeDataRefresh: forceNodeDataRefresh });\n });\n _this.seriesStateManager = new SeriesStateManager();\n _this.seriesLayerManager = new SeriesLayerManager(_this.seriesRoot);\n _this.callbackCache = new CallbackCache();\n _this.animationManager = new AnimationManager(_this.interactionManager);\n _this.animationManager.skipAnimations = true;\n _this.animationManager.play();\n _this.tooltip = new Tooltip(_this.scene.canvas.element, document, document.body);\n _this.tooltipManager = new TooltipManager(_this.tooltip, _this.interactionManager);\n _this.overlays = new ChartOverlays(_this.element);\n _this.highlight = new ChartHighlight();\n _this.container = container;\n _this.debug = false;\n SizeMonitor.observe(_this.element, function (size) {\n var _a;\n var width = size.width, height = size.height;\n if (!_this.autoSize) {\n return;\n }\n if (width === 0 && height === 0) {\n return;\n }\n var _b = __read$r((_a = _this._lastAutoSize) !== null && _a !== void 0 ? _a : [], 2), _c = _b[0], autoWidth = _c === void 0 ? 0 : _c, _d = _b[1], authHeight = _d === void 0 ? 0 : _d;\n if (autoWidth === width && authHeight === height) {\n return;\n }\n _this._lastAutoSize = [width, height];\n _this.resize();\n });\n _this.layoutService.addListener('start-layout', function (e) { return _this.positionPadding(e.shrinkRect); });\n _this.layoutService.addListener('start-layout', function (e) { return _this.positionCaptions(e.shrinkRect); });\n // Add interaction listeners last so child components are registered first.\n _this.interactionManager.addListener('click', function (event) { return _this.onClick(event); });\n _this.interactionManager.addListener('dblclick', function (event) { return _this.onDoubleClick(event); });\n _this.interactionManager.addListener('hover', function (event) { return _this.onMouseMove(event); });\n _this.interactionManager.addListener('leave', function (event) { return _this.onLeave(event); });\n _this.interactionManager.addListener('page-left', function () { return _this.destroy(); });\n _this.interactionManager.addListener('wheel', function () { return _this.disablePointer(); });\n _this.animationManager.addListener('animation-frame', function (_) {\n _this.update(ChartUpdateType.SCENE_RENDER);\n });\n _this.highlightManager.addListener('highlight-change', function (event) { return _this.changeHighlightDatum(event); });\n _this.zoomManager.addListener('zoom-change', function (_) {\n return _this.update(ChartUpdateType.PROCESS_DATA, { forceNodeDataRefresh: true });\n });\n _this.attachLegend('category');\n return _this;\n }\n Chart.prototype.getOptions = function () {\n var _a;\n var queuedUserOptions = this.queuedUserOptions;\n var lastUpdateOptions = (_a = queuedUserOptions[queuedUserOptions.length - 1]) !== null && _a !== void 0 ? _a : this.userOptions;\n return jsonMerge([lastUpdateOptions]);\n };\n Chart.prototype.autoSizeChanged = function (value) {\n var style = this.element.style;\n if (value) {\n style.display = 'block';\n style.width = '100%';\n style.height = '100%';\n if (!this._lastAutoSize) {\n return;\n }\n this.resize();\n }\n else {\n style.display = 'inline-block';\n style.width = 'auto';\n style.height = 'auto';\n }\n };\n Chart.prototype.download = function (fileName, fileFormat) {\n this.scene.download(fileName, fileFormat);\n };\n Object.defineProperty(Chart.prototype, \"destroyed\", {\n get: function () {\n return this._destroyed;\n },\n enumerable: false,\n configurable: true\n });\n Chart.prototype.addModule = function (module) {\n if (this.modules[module.optionsKey] != null) {\n throw new Error('AG Charts - module already initialised: ' + module.optionsKey);\n }\n var moduleInstance = new module.instanceConstructor(this.getModuleContext());\n this.modules[module.optionsKey] = { instance: moduleInstance };\n this[module.optionsKey] = moduleInstance;\n };\n Chart.prototype.removeModule = function (module) {\n var _a, _b;\n (_b = (_a = this.modules[module.optionsKey]) === null || _a === void 0 ? void 0 : _a.instance) === null || _b === void 0 ? void 0 : _b.destroy();\n delete this.modules[module.optionsKey];\n delete this[module.optionsKey];\n };\n Chart.prototype.isModuleEnabled = function (module) {\n return this.modules[module.optionsKey] != null;\n };\n Chart.prototype.getModuleContext = function () {\n var _a = this, scene = _a.scene, animationManager = _a.animationManager, chartEventManager = _a.chartEventManager, cursorManager = _a.cursorManager, highlightManager = _a.highlightManager, interactionManager = _a.interactionManager, tooltipManager = _a.tooltipManager, zoomManager = _a.zoomManager, dataService = _a.dataService, layoutService = _a.layoutService, updateService = _a.updateService, seriesStateManager = _a.seriesStateManager, seriesLayerManager = _a.seriesLayerManager, mode = _a.mode, callbackCache = _a.callbackCache;\n return {\n scene: scene,\n animationManager: animationManager,\n chartEventManager: chartEventManager,\n cursorManager: cursorManager,\n highlightManager: highlightManager,\n interactionManager: interactionManager,\n tooltipManager: tooltipManager,\n zoomManager: zoomManager,\n dataService: dataService,\n layoutService: layoutService,\n updateService: updateService,\n mode: mode,\n seriesStateManager: seriesStateManager,\n seriesLayerManager: seriesLayerManager,\n callbackCache: callbackCache,\n };\n };\n Chart.prototype.destroy = function (opts) {\n var e_1, _a;\n var _b;\n if (this._destroyed) {\n return;\n }\n var keepTransferableResources = opts === null || opts === void 0 ? void 0 : opts.keepTransferableResources;\n var result = undefined;\n this._performUpdateType = ChartUpdateType.NONE;\n this._pendingFactoryUpdates.splice(0);\n this.tooltipManager.destroy();\n this.tooltip.destroy();\n (_b = this.legend) === null || _b === void 0 ? void 0 : _b.destroy();\n this.overlays.noData.hide();\n SizeMonitor.unobserve(this.element);\n try {\n for (var _c = __values$e(Object.entries(this.modules)), _d = _c.next(); !_d.done; _d = _c.next()) {\n var _e = __read$r(_d.value, 2), key = _e[0], module = _e[1];\n module.instance.destroy();\n delete this.modules[key];\n delete this[key];\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n this.interactionManager.destroy();\n this.animationManager.stop();\n if (keepTransferableResources) {\n this.scene.strip();\n result = { container: this.container, scene: this.scene, element: this.element };\n }\n else {\n this.scene.destroy();\n this.container = undefined;\n }\n this.removeAllSeries();\n this.seriesLayerManager.destroy();\n this.axes.forEach(function (a) { return a.destroy(); });\n this.axes = [];\n this.callbackCache.invalidateCache();\n this._destroyed = true;\n return result;\n };\n Chart.prototype.log = function () {\n var opts = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n opts[_i] = arguments[_i];\n }\n if (this.debug) {\n Logger.debug.apply(Logger, __spreadArray$g([], __read$r(opts)));\n }\n };\n Chart.prototype.disablePointer = function (highlightOnly) {\n if (highlightOnly === void 0) { highlightOnly = false; }\n if (!highlightOnly) {\n this.tooltipManager.removeTooltip(this.id);\n }\n this.highlightManager.updateHighlight(this.id);\n if (this.lastInteractionEvent) {\n this.lastInteractionEvent = undefined;\n }\n };\n Chart.prototype.requestFactoryUpdate = function (cb) {\n var callbacks = this._pendingFactoryUpdates;\n var count = callbacks.length;\n if (count === 0) {\n callbacks.push(cb);\n this._processCallbacks().catch(function (e) { return Logger.errorOnce(e); });\n }\n else {\n // Factory callback process already running, the callback will be invoked asynchronously.\n // Clear the queue after the first callback to prevent unnecessary re-renderings.\n callbacks.splice(1, count - 1, cb);\n }\n };\n Chart.prototype._processCallbacks = function () {\n return __awaiter$c(this, void 0, void 0, function () {\n var callbacks, e_2;\n return __generator$c(this, function (_a) {\n switch (_a.label) {\n case 0:\n callbacks = this._pendingFactoryUpdates;\n _a.label = 1;\n case 1:\n if (!(callbacks.length > 0)) return [3 /*break*/, 7];\n if (!this.updatePending) return [3 /*break*/, 3];\n return [4 /*yield*/, sleep(1)];\n case 2:\n _a.sent();\n return [3 /*break*/, 1]; // Make sure to check queue has an item before continuing.\n case 3:\n _a.trys.push([3, 5, , 6]);\n return [4 /*yield*/, callbacks[0]()];\n case 4:\n _a.sent();\n this.callbackCache.invalidateCache();\n return [3 /*break*/, 6];\n case 5:\n e_2 = _a.sent();\n Logger.error('update error', e_2);\n return [3 /*break*/, 6];\n case 6:\n callbacks.shift();\n return [3 /*break*/, 1];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n Object.defineProperty(Chart.prototype, \"performUpdateType\", {\n get: function () {\n return this._performUpdateType;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Chart.prototype, \"updatePending\", {\n get: function () {\n return this._performUpdateType !== ChartUpdateType.NONE || this.lastInteractionEvent != null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Chart.prototype, \"lastPerformUpdateError\", {\n get: function () {\n return this._lastPerformUpdateError;\n },\n enumerable: false,\n configurable: true\n });\n Chart.prototype.awaitUpdateCompletion = function () {\n return __awaiter$c(this, void 0, void 0, function () {\n return __generator$c(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.performUpdateTrigger.await()];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n Chart.prototype.update = function (type, opts) {\n var e_3, _a;\n if (type === void 0) { type = ChartUpdateType.FULL; }\n var _b = opts !== null && opts !== void 0 ? opts : {}, _c = _b.forceNodeDataRefresh, forceNodeDataRefresh = _c === void 0 ? false : _c, _d = _b.seriesToUpdate, seriesToUpdate = _d === void 0 ? this.series : _d;\n if (forceNodeDataRefresh) {\n this.series.forEach(function (series) { return series.markNodeDataDirty(); });\n }\n try {\n for (var seriesToUpdate_1 = __values$e(seriesToUpdate), seriesToUpdate_1_1 = seriesToUpdate_1.next(); !seriesToUpdate_1_1.done; seriesToUpdate_1_1 = seriesToUpdate_1.next()) {\n var series = seriesToUpdate_1_1.value;\n this.seriesToUpdate.add(series);\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (seriesToUpdate_1_1 && !seriesToUpdate_1_1.done && (_a = seriesToUpdate_1.return)) _a.call(seriesToUpdate_1);\n }\n finally { if (e_3) throw e_3.error; }\n }\n if (type < this._performUpdateType) {\n this._performUpdateType = type;\n this.performUpdateTrigger.schedule();\n }\n };\n Chart.prototype.performUpdate = function (count) {\n var _a;\n return __awaiter$c(this, void 0, void 0, function () {\n var _b, performUpdateType, extraDebugStats, splits, _c, seriesRect_1, seriesUpdates, tooltipMeta, end;\n return __generator$c(this, function (_d) {\n switch (_d.label) {\n case 0:\n _b = this, performUpdateType = _b._performUpdateType, extraDebugStats = _b.extraDebugStats;\n this.log('Chart.performUpdate() - start', ChartUpdateType[performUpdateType]);\n splits = [performance.now()];\n _c = performUpdateType;\n switch (_c) {\n case ChartUpdateType.FULL: return [3 /*break*/, 1];\n case ChartUpdateType.PROCESS_DATA: return [3 /*break*/, 1];\n case ChartUpdateType.PERFORM_LAYOUT: return [3 /*break*/, 3];\n case ChartUpdateType.SERIES_UPDATE: return [3 /*break*/, 5];\n case ChartUpdateType.TOOLTIP_RECALCULATION: return [3 /*break*/, 7];\n case ChartUpdateType.SCENE_RENDER: return [3 /*break*/, 8];\n case ChartUpdateType.NONE: return [3 /*break*/, 10];\n }\n return [3 /*break*/, 11];\n case 1: return [4 /*yield*/, this.processData()];\n case 2:\n _d.sent();\n this.disablePointer(true);\n splits.push(performance.now());\n _d.label = 3;\n case 3:\n if (!this.checkFirstAutoSize())\n return [3 /*break*/, 11];\n return [4 /*yield*/, this.performLayout()];\n case 4:\n _d.sent();\n this.handleOverlays();\n this.log('Chart.performUpdate() - seriesRect', this.seriesRect);\n splits.push(performance.now());\n _d.label = 5;\n case 5:\n seriesRect_1 = this.seriesRect;\n seriesUpdates = __spreadArray$g([], __read$r(this.seriesToUpdate)).map(function (series) { return series.update({ seriesRect: seriesRect_1 }); });\n this.seriesToUpdate.clear();\n return [4 /*yield*/, Promise.all(seriesUpdates)];\n case 6:\n _d.sent();\n splits.push(performance.now());\n _d.label = 7;\n case 7:\n tooltipMeta = this.tooltipManager.getTooltipMeta(this.id);\n if (performUpdateType < ChartUpdateType.SERIES_UPDATE && ((_a = tooltipMeta === null || tooltipMeta === void 0 ? void 0 : tooltipMeta.event) === null || _a === void 0 ? void 0 : _a.type) === 'hover') {\n this.handlePointer(tooltipMeta.event);\n }\n _d.label = 8;\n case 8: return [4 /*yield*/, this.scene.render({ debugSplitTimes: splits, extraDebugStats: extraDebugStats })];\n case 9:\n _d.sent();\n this.extraDebugStats = {};\n _d.label = 10;\n case 10:\n // Do nothing.\n this._performUpdateType = ChartUpdateType.NONE;\n _d.label = 11;\n case 11:\n end = performance.now();\n this.log('Chart.performUpdate() - end', {\n chart: this,\n durationMs: Math.round((end - splits[0]) * 100) / 100,\n count: count,\n performUpdateType: ChartUpdateType[performUpdateType],\n });\n return [2 /*return*/];\n }\n });\n });\n };\n Chart.prototype.checkFirstAutoSize = function () {\n if (this.autoSize && !this._lastAutoSize) {\n var count = this._performUpdateNoRenderCount++;\n var backOffMs = (count ^ 2) * 10;\n if (count < 5) {\n // Reschedule if canvas size hasn't been set yet to avoid a race.\n this._performUpdateType = ChartUpdateType.PERFORM_LAYOUT;\n this.performUpdateTrigger.schedule(backOffMs);\n this.log('Chart.checkFirstAutoSize() - backing off until first size update', backOffMs);\n return false;\n }\n // After several failed passes, continue and accept there maybe a redundant\n // render. Sometimes this case happens when we already have the correct\n // width/height, and we end up never rendering the chart in that scenario.\n this.log('Chart.checkFirstAutoSize() - timeout for first size update.');\n }\n this._performUpdateNoRenderCount = 0;\n return 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 var removedAxes = new Set();\n this._axes.forEach(function (axis) {\n axis.detachAxis(_this.axisGroup);\n removedAxes.add(axis);\n });\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) {\n axis.attachAxis(_this.axisGroup);\n removedAxes.delete(axis);\n });\n this.zoomManager.updateAxes(this._axes);\n removedAxes.forEach(function (axis) { return axis.destroy(); });\n },\n enumerable: false,\n configurable: true\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: false,\n configurable: true\n });\n Chart.prototype.addSeries = function (series) {\n var allSeries = this.series;\n var canAdd = allSeries.indexOf(series) < 0;\n if (canAdd) {\n allSeries.push(series);\n if (series.rootGroup.parent == null) {\n this.seriesLayerManager.requestGroup(series);\n }\n this.initSeries(series);\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 this.addSeriesListeners(series);\n series.addChartEventListeners();\n };\n Chart.prototype.removeAllSeries = function () {\n var _this = this;\n this.series.forEach(function (series) {\n series.removeEventListener('nodeClick', _this.onSeriesNodeClick);\n series.removeEventListener('nodeDoubleClick', _this.onSeriesNodeDoubleClick);\n series.destroy();\n series.chart = undefined;\n });\n this._series = []; // using `_series` instead of `series` to prevent infinite recursion\n };\n Chart.prototype.addSeriesListeners = function (series) {\n if (this.hasEventListener('seriesNodeClick')) {\n series.addEventListener('nodeClick', this.onSeriesNodeClick);\n }\n if (this.hasEventListener('seriesNodeDoubleClick')) {\n series.addEventListener('nodeDoubleClick', this.onSeriesNodeDoubleClick);\n }\n };\n Chart.prototype.updateAllSeriesListeners = function () {\n var _this = this;\n this.series.forEach(function (series) {\n series.removeEventListener('nodeClick', _this.onSeriesNodeClick);\n series.removeEventListener('nodeDoubleClick', _this.onSeriesNodeDoubleClick);\n _this.addSeriesListeners(series);\n });\n };\n Chart.prototype.assignSeriesToAxes = function () {\n var _this = this;\n this.axes.forEach(function (axis) {\n axis.boundSeries = _this.series.filter(function (s) {\n var seriesAxis = s.axes[axis.direction];\n return seriesAxis === axis;\n });\n });\n };\n Chart.prototype.assignAxesToSeries = function () {\n var _this = this;\n // This method has to run before `assignSeriesToAxes`.\n var directionToAxesMap = {};\n this.axes.forEach(function (axis) {\n var _a;\n var direction = axis.direction;\n var directionAxes = ((_a = directionToAxesMap[direction]) !== null && _a !== void 0 ? _a : (directionToAxesMap[direction] = []));\n directionAxes.push(axis);\n });\n this.series.forEach(function (series) {\n series.directions.forEach(function (direction) {\n var directionAxes = directionToAxesMap[direction];\n if (!directionAxes) {\n Logger.warn(\"no available axis for direction [\" + direction + \"]; check series and axes configuration.\");\n return;\n }\n var seriesKeys = series.getKeys(direction);\n var newAxis = _this.findMatchingAxis(directionAxes, series.getKeys(direction));\n if (!newAxis) {\n Logger.warn(\"no matching axis for direction [\" + direction + \"] and keys [\" + seriesKeys + \"]; check series and axes configuration.\");\n return;\n }\n series.axes[direction] = newAxis;\n });\n });\n };\n Chart.prototype.findMatchingAxis = function (directionAxes, directionKeys) {\n var e_4, _a, e_5, _b;\n try {\n for (var directionAxes_1 = __values$e(directionAxes), directionAxes_1_1 = directionAxes_1.next(); !directionAxes_1_1.done; directionAxes_1_1 = directionAxes_1.next()) {\n var axis = directionAxes_1_1.value;\n var axisKeys = axis.keys;\n if (!axisKeys.length) {\n return axis;\n }\n if (!directionKeys) {\n continue;\n }\n try {\n for (var directionKeys_1 = (e_5 = void 0, __values$e(directionKeys)), directionKeys_1_1 = directionKeys_1.next(); !directionKeys_1_1.done; directionKeys_1_1 = directionKeys_1.next()) {\n var directionKey = directionKeys_1_1.value;\n if (axisKeys.indexOf(directionKey) >= 0) {\n return axis;\n }\n }\n }\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\n finally {\n try {\n if (directionKeys_1_1 && !directionKeys_1_1.done && (_b = directionKeys_1.return)) _b.call(directionKeys_1);\n }\n finally { if (e_5) throw e_5.error; }\n }\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (directionAxes_1_1 && !directionAxes_1_1.done && (_a = directionAxes_1.return)) _a.call(directionAxes_1);\n }\n finally { if (e_4) throw e_4.error; }\n }\n };\n Chart.prototype.resize = function (width, height) {\n var _a, _b, _c, _d;\n width !== null && width !== void 0 ? width : (width = (_a = this.width) !== null && _a !== void 0 ? _a : (this.autoSize ? (_b = this._lastAutoSize) === null || _b === void 0 ? void 0 : _b[0] : this.scene.canvas.width));\n height !== null && height !== void 0 ? height : (height = (_c = this.height) !== null && _c !== void 0 ? _c : (this.autoSize ? (_d = this._lastAutoSize) === null || _d === void 0 ? void 0 : _d[1] : this.scene.canvas.height));\n this.log('Chart.resize()', { width: width, height: height });\n if (!width || !height || !Number.isFinite(width) || !Number.isFinite(height))\n return;\n if (this.scene.resize(width, height)) {\n this.disablePointer();\n this.update(ChartUpdateType.PERFORM_LAYOUT, { forceNodeDataRefresh: true });\n }\n };\n Chart.prototype.processData = function () {\n return __awaiter$c(this, void 0, void 0, function () {\n var dataController, seriesPromises;\n return __generator$c(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.axes.length > 0) {\n this.assignAxesToSeries();\n this.assignSeriesToAxes();\n }\n dataController = new DataController();\n seriesPromises = this.series.map(function (s) { return s.processData(dataController); });\n return [4 /*yield*/, dataController.execute()];\n case 1:\n _a.sent();\n return [4 /*yield*/, Promise.all(seriesPromises)];\n case 2:\n _a.sent();\n return [4 /*yield*/, this.updateLegend()];\n case 3:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n Chart.prototype.placeLabels = function () {\n var e_6, _a;\n var visibleSeries = [];\n var data = [];\n try {\n for (var _b = __values$e(this.series), _c = _b.next(); !_c.done; _c = _b.next()) {\n var series = _c.value;\n if (!series.visible) {\n continue;\n }\n var labelData = series.getLabelData();\n if (!(labelData && isPointLabelDatum(labelData[0]))) {\n continue;\n }\n data.push(labelData);\n visibleSeries.push(series);\n }\n }\n catch (e_6_1) { e_6 = { error: e_6_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_6) throw e_6.error; }\n }\n var seriesRect = this.seriesRect;\n var labels = seriesRect && data.length > 0\n ? placeLabels(data, { x: 0, y: 0, width: seriesRect.width, height: seriesRect.height })\n : [];\n return new Map(labels.map(function (l, i) { return [visibleSeries[i], l]; }));\n };\n Chart.prototype.attachLegend = function (legendType) {\n var _a;\n if (this.legendType === legendType && this.legend) {\n return this.legend;\n }\n (_a = this.legend) === null || _a === void 0 ? void 0 : _a.destroy();\n this.legend = undefined;\n var ctx = this.getModuleContext();\n var legend = getLegend(legendType, ctx);\n legend.attachLegend(this.scene.root);\n this.legend = legend;\n this.legendType = legendType;\n return legend;\n };\n Chart.prototype.setLegendInit = function (initLegend) {\n this.applyLegendOptions = initLegend;\n };\n Chart.prototype.updateLegend = function () {\n var _a;\n return __awaiter$c(this, void 0, void 0, function () {\n var legendData, legendType, legend;\n return __generator$c(this, function (_b) {\n legendData = [];\n this.series\n .filter(function (s) { return s.showInLegend; })\n .forEach(function (series) {\n var data = series.getLegendData();\n legendData.push.apply(legendData, __spreadArray$g([], __read$r(data)));\n });\n legendType = legendData.length > 0 ? legendData[0].legendType : 'category';\n legend = this.attachLegend(legendType);\n (_a = this.applyLegendOptions) === null || _a === void 0 ? void 0 : _a.call(this, legend);\n if (legendType === 'category') {\n this.validateLegendData(legendData);\n }\n legend.data = legendData;\n return [2 /*return*/];\n });\n });\n };\n Chart.prototype.validateLegendData = function (legendData) {\n var _this = this;\n // Validate each series that shares a legend item label uses the same fill colour\n var labelMarkerFills = {};\n legendData.forEach(function (d) {\n var _a;\n var _b, _c, _d;\n var _e, _f;\n var seriesType = (_b = _this.series.find(function (s) { return s.id === d.seriesId; })) === null || _b === void 0 ? void 0 : _b.type;\n if (!seriesType)\n return;\n var dc = d;\n (_c = labelMarkerFills[seriesType]) !== null && _c !== void 0 ? _c : (labelMarkerFills[seriesType] = (_a = {}, _a[dc.label.text] = new Set(), _a));\n (_d = (_e = labelMarkerFills[seriesType])[_f = dc.label.text]) !== null && _d !== void 0 ? _d : (_e[_f] = new Set());\n if (dc.marker.fill != null) {\n labelMarkerFills[seriesType][dc.label.text].add(dc.marker.fill);\n }\n });\n Object.keys(labelMarkerFills).forEach(function (seriesType) {\n Object.keys(labelMarkerFills[seriesType]).forEach(function (name) {\n var fills = labelMarkerFills[seriesType][name];\n if (fills.size > 1) {\n Logger.warnOnce(\"legend item '\" + name + \"' has multiple fill colors, this may cause unexpected behaviour.\");\n }\n });\n });\n };\n Chart.prototype.performLayout = function () {\n return __awaiter$c(this, void 0, void 0, function () {\n var _a, width, height, shrinkRect;\n return __generator$c(this, function (_b) {\n if (this.scene.root != null) {\n this.scene.root.visible = true;\n }\n _a = this.scene, width = _a.width, height = _a.height;\n shrinkRect = new BBox(0, 0, width, height);\n (shrinkRect = this.layoutService.dispatchPerformLayout('start-layout', { shrinkRect: shrinkRect }).shrinkRect);\n (shrinkRect = this.layoutService.dispatchPerformLayout('before-series', { shrinkRect: shrinkRect }).shrinkRect);\n return [2 /*return*/, shrinkRect];\n });\n });\n };\n Chart.prototype.positionPadding = function (shrinkRect) {\n var padding = this.padding;\n shrinkRect.shrink(padding.left, 'left');\n shrinkRect.shrink(padding.top, 'top');\n shrinkRect.shrink(padding.right, 'right');\n shrinkRect.shrink(padding.bottom, 'bottom');\n return { shrinkRect: shrinkRect };\n };\n Chart.prototype.positionCaptions = function (shrinkRect) {\n var _a;\n var _b = this, title = _b.title, subtitle = _b.subtitle, footnote = _b.footnote;\n var newShrinkRect = shrinkRect.clone();\n var updateCaption = function (caption) {\n var _a;\n var defaultCaptionHeight = shrinkRect.height / 10;\n var captionLineHeight = (_a = caption.lineHeight) !== null && _a !== void 0 ? _a : caption.fontSize * Text.defaultLineHeightRatio;\n var maxWidth = shrinkRect.width;\n var maxHeight = Math.max(captionLineHeight, defaultCaptionHeight);\n caption.computeTextWrap(maxWidth, maxHeight);\n };\n var positionTopAndShrinkBBox = function (caption) {\n var _a;\n var baseY = newShrinkRect.y;\n caption.node.x = newShrinkRect.x + newShrinkRect.width / 2;\n caption.node.y = baseY;\n caption.node.textBaseline = 'top';\n updateCaption(caption);\n var bbox = caption.node.computeBBox();\n // As the bbox (x,y) ends up at a different location than specified above, we need to\n // take it into consideration when calculating how much space needs to be reserved to\n // accommodate the caption.\n var bboxHeight = Math.ceil(bbox.y - baseY + bbox.height + ((_a = caption.spacing) !== null && _a !== void 0 ? _a : 0));\n newShrinkRect.shrink(bboxHeight, 'top');\n };\n var positionBottomAndShrinkBBox = function (caption) {\n var _a;\n var baseY = newShrinkRect.y + newShrinkRect.height;\n caption.node.x = newShrinkRect.x + newShrinkRect.width / 2;\n caption.node.y = baseY;\n caption.node.textBaseline = 'bottom';\n updateCaption(caption);\n var bbox = caption.node.computeBBox();\n var bboxHeight = Math.ceil(baseY - bbox.y + ((_a = caption.spacing) !== null && _a !== void 0 ? _a : 0));\n newShrinkRect.shrink(bboxHeight, 'bottom');\n };\n if (title) {\n title.node.visible = title.enabled;\n if (title.node.visible) {\n positionTopAndShrinkBBox(title);\n }\n }\n if (subtitle) {\n subtitle.node.visible = (_a = ((title === null || title === void 0 ? void 0 : title.enabled) && subtitle.enabled)) !== null && _a !== void 0 ? _a : false;\n if (subtitle.node.visible) {\n positionTopAndShrinkBBox(subtitle);\n }\n }\n if (footnote) {\n footnote.node.visible = footnote.enabled;\n if (footnote.node.visible) {\n positionBottomAndShrinkBBox(footnote);\n }\n }\n return { shrinkRect: newShrinkRect };\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 (point, exactMatchOnly, maxDistance) {\n var e_7, _a;\n var _b, _c;\n var start = performance.now();\n // Disable 'nearest match' options if looking for exact matches only\n var pickModes = exactMatchOnly ? [SeriesNodePickMode.EXACT_SHAPE_MATCH] : undefined;\n // Iterate through series in reverse, as later declared series appears on top of earlier\n // declared series.\n var reverseSeries = __spreadArray$g([], __read$r(this.series)).reverse();\n var result = undefined;\n try {\n for (var reverseSeries_1 = __values$e(reverseSeries), reverseSeries_1_1 = reverseSeries_1.next(); !reverseSeries_1_1.done; reverseSeries_1_1 = reverseSeries_1.next()) {\n var series = reverseSeries_1_1.value;\n if (!series.visible || !series.rootGroup.visible) {\n continue;\n }\n var _d = (_b = series.pickNode(point, pickModes)) !== null && _b !== void 0 ? _b : {}, match = _d.match, distance = _d.distance;\n if (!match || distance == null) {\n continue;\n }\n if ((!result || result.distance > distance) && distance <= (maxDistance !== null && maxDistance !== void 0 ? maxDistance : Infinity)) {\n result = { series: series, distance: distance, datum: match };\n }\n if (distance === 0) {\n break;\n }\n }\n }\n catch (e_7_1) { e_7 = { error: e_7_1 }; }\n finally {\n try {\n if (reverseSeries_1_1 && !reverseSeries_1_1.done && (_a = reverseSeries_1.return)) _a.call(reverseSeries_1);\n }\n finally { if (e_7) throw e_7.error; }\n }\n this.extraDebugStats['pickSeriesNode'] = Math.round(((_c = this.extraDebugStats['pickSeriesNode']) !== null && _c !== void 0 ? _c : 0) + (performance.now() - start));\n return result;\n };\n Chart.prototype.onMouseMove = function (event) {\n this.lastInteractionEvent = event;\n this.pointerScheduler.schedule();\n this.extraDebugStats['mouseX'] = event.offsetX;\n this.extraDebugStats['mouseY'] = event.offsetY;\n this.update(ChartUpdateType.SCENE_RENDER);\n };\n Chart.prototype.onLeave = function (event) {\n if (this.tooltip.pointerLeftOntoTooltip(event)) {\n return;\n }\n this.disablePointer();\n };\n Chart.prototype.handlePointer = function (event) {\n var _this = this;\n var _a = this, lastPick = _a.lastPick, hoverRect = _a.hoverRect;\n var offsetX = event.offsetX, offsetY = event.offsetY;\n var disablePointer = function (highlightOnly) {\n if (highlightOnly === void 0) { highlightOnly = false; }\n if (lastPick) {\n // Cursor moved from a non-marker node to empty space.\n _this.disablePointer(highlightOnly);\n }\n };\n if (!(hoverRect === null || hoverRect === void 0 ? void 0 : hoverRect.containsPoint(offsetX, offsetY))) {\n disablePointer();\n return;\n }\n // Handle node highlighting and tooltip toggling when pointer within `tooltip.range`\n this.handlePointerTooltip(event, disablePointer);\n // Handle node highlighting and mouse cursor when pointer withing `series[].nodeClickRange`\n this.handlePointerNode(event);\n };\n Chart.prototype.handlePointerTooltip = function (event, disablePointer) {\n var _a, _b;\n var _c = this, lastPick = _c.lastPick, tooltip = _c.tooltip;\n var range = tooltip.range;\n var pageX = event.pageX, pageY = event.pageY, offsetX = event.offsetX, offsetY = event.offsetY;\n var pixelRange;\n if (typeof range === 'number' && Number.isFinite(range)) {\n pixelRange = range;\n }\n var pick = this.pickSeriesNode({ x: offsetX, y: offsetY }, range === 'exact', pixelRange);\n if (!pick) {\n this.tooltipManager.updateTooltip(this.id);\n if (this.highlight.range === 'tooltip')\n disablePointer(true);\n return;\n }\n var isNewDatum = this.highlight.range === 'node' || !lastPick || lastPick.datum !== pick.datum;\n var html;\n if (isNewDatum) {\n html = pick.series.getTooltipHtml(pick.datum);\n if (this.highlight.range === 'tooltip') {\n this.highlightManager.updateHighlight(this.id, pick.datum);\n }\n }\n else if (lastPick) {\n lastPick.event = event.sourceEvent;\n }\n var isPixelRange = pixelRange != null;\n var tooltipEnabled = this.tooltip.enabled && pick.series.tooltip.enabled;\n var exactlyMatched = range === 'exact' && pick.distance === 0;\n var rangeMatched = range === 'nearest' || isPixelRange || exactlyMatched;\n var shouldUpdateTooltip = tooltipEnabled && rangeMatched && (!isNewDatum || html !== undefined);\n var position = {\n xOffset: pick.datum.series.tooltip.position.xOffset,\n yOffset: pick.datum.series.tooltip.position.yOffset,\n };\n var meta = this.mergePointerDatum({ pageX: pageX, pageY: pageY, offsetX: offsetX, offsetY: offsetY, event: event, showArrow: pick.series.tooltip.showArrow, position: position }, pick.datum);\n meta.enableInteraction = (_b = (_a = pick.series.tooltip.interaction) === null || _a === void 0 ? void 0 : _a.enabled) !== null && _b !== void 0 ? _b : false;\n if (shouldUpdateTooltip) {\n this.tooltipManager.updateTooltip(this.id, meta, html);\n }\n };\n Chart.prototype.handlePointerNode = function (event) {\n var _this = this;\n var found = this.checkSeriesNodeRange(event, function (series, datum) {\n if (series.hasEventListener('nodeClick') || series.hasEventListener('nodeDoubleClick')) {\n _this.cursorManager.updateCursor('chart', 'pointer');\n }\n if (_this.highlight.range === 'node') {\n _this.highlightManager.updateHighlight(_this.id, datum);\n }\n });\n if (!found) {\n this.cursorManager.updateCursor('chart');\n if (this.highlight.range === 'node') {\n this.highlightManager.updateHighlight(this.id);\n }\n }\n };\n Chart.prototype.onClick = function (event) {\n if (this.checkSeriesNodeClick(event)) {\n this.update(ChartUpdateType.SERIES_UPDATE);\n return;\n }\n this.fireEvent({\n type: 'click',\n event: event.sourceEvent,\n });\n };\n Chart.prototype.onDoubleClick = function (event) {\n if (this.checkSeriesNodeDoubleClick(event)) {\n this.update(ChartUpdateType.SERIES_UPDATE);\n return;\n }\n this.fireEvent({\n type: 'doubleClick',\n event: event.sourceEvent,\n });\n };\n Chart.prototype.checkSeriesNodeClick = function (event) {\n return this.checkSeriesNodeRange(event, function (series, datum) {\n return series.fireNodeClickEvent(event.sourceEvent, datum);\n });\n };\n Chart.prototype.checkSeriesNodeDoubleClick = function (event) {\n return this.checkSeriesNodeRange(event, function (series, datum) {\n return series.fireNodeDoubleClickEvent(event.sourceEvent, datum);\n });\n };\n Chart.prototype.checkSeriesNodeRange = function (event, callback) {\n var nearestNode = this.pickSeriesNode({ x: event.offsetX, y: event.offsetY }, false);\n var datum = nearestNode === null || nearestNode === void 0 ? void 0 : nearestNode.datum;\n var nodeClickRange = datum === null || datum === void 0 ? void 0 : datum.series.nodeClickRange;\n // First check if we should trigger the callback based on nearest node\n if (datum && nodeClickRange === 'nearest') {\n callback(datum.series, datum);\n return true;\n }\n // Then check for an exact match or within the given range\n var pixelRange;\n if (typeof nodeClickRange === 'number' && Number.isFinite(nodeClickRange)) {\n pixelRange = nodeClickRange;\n }\n var pick = this.pickSeriesNode({ x: event.offsetX, y: event.offsetY }, nodeClickRange === 'exact', pixelRange);\n if (!pick)\n return false;\n // Then if we've picked a node within the pixel range, or exactly, trigger the callback\n var isPixelRange = pixelRange != null;\n var exactlyMatched = nodeClickRange === 'exact' && pick.distance === 0;\n if (isPixelRange || exactlyMatched) {\n callback(pick.series, pick.datum);\n return true;\n }\n return false;\n };\n Chart.prototype.mergePointerDatum = function (meta, datum) {\n var type = datum.series.tooltip.position.type;\n if (type === 'node' && datum.nodeMidPoint) {\n var _a = datum.nodeMidPoint, x = _a.x, y = _a.y;\n var canvas = this.scene.canvas;\n var point = datum.series.contentGroup.inverseTransformPoint(x, y);\n var canvasRect = canvas.element.getBoundingClientRect();\n return __assign$j(__assign$j({}, meta), { pageX: Math.round(canvasRect.left + window.scrollX + point.x), pageY: Math.round(canvasRect.top + window.scrollY + point.y), offsetX: Math.round(point.x), offsetY: Math.round(point.y) });\n }\n return meta;\n };\n Chart.prototype.changeHighlightDatum = function (event) {\n var _a, _b;\n var seriesToUpdate = new Set();\n var _c = (_a = event.currentHighlight) !== null && _a !== void 0 ? _a : {}, _d = _c.series, newSeries = _d === void 0 ? undefined : _d, newDatum = _c.datum;\n var _e = (_b = event.previousHighlight) !== null && _b !== void 0 ? _b : {}, _f = _e.series, lastSeries = _f === void 0 ? undefined : _f, lastDatum = _e.datum;\n if (lastSeries) {\n seriesToUpdate.add(lastSeries);\n }\n if (newSeries) {\n seriesToUpdate.add(newSeries);\n }\n // Adjust cursor if a specific datum is highlighted, rather than just a series.\n if ((lastSeries === null || lastSeries === void 0 ? void 0 : lastSeries.cursor) && lastDatum) {\n this.cursorManager.updateCursor(lastSeries.id);\n }\n if ((newSeries === null || newSeries === void 0 ? void 0 : newSeries.cursor) && newDatum) {\n this.cursorManager.updateCursor(newSeries.id, newSeries.cursor);\n }\n this.lastPick = event.currentHighlight ? { datum: event.currentHighlight } : undefined;\n var updateAll = newSeries == null || lastSeries == null;\n if (updateAll) {\n this.update(ChartUpdateType.SERIES_UPDATE);\n }\n else {\n this.update(ChartUpdateType.SERIES_UPDATE, { seriesToUpdate: seriesToUpdate });\n }\n };\n Chart.prototype.waitForUpdate = function (timeoutMs) {\n if (timeoutMs === void 0) { timeoutMs = 5000; }\n return __awaiter$c(this, void 0, void 0, function () {\n var start;\n return __generator$c(this, function (_a) {\n switch (_a.label) {\n case 0:\n start = performance.now();\n _a.label = 1;\n case 1:\n if (!(this._pendingFactoryUpdates.length > 0 || this.updatePending)) return [3 /*break*/, 3];\n if (performance.now() - start > timeoutMs) {\n throw new Error('waitForUpdate() timeout reached.');\n }\n return [4 /*yield*/, sleep(5)];\n case 2:\n _a.sent();\n return [3 /*break*/, 1];\n case 3: return [4 /*yield*/, this.awaitUpdateCompletion()];\n case 4:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n Chart.prototype.handleOverlays = function () {\n this.handleNoDataOverlay();\n };\n Chart.prototype.handleNoDataOverlay = function () {\n var shouldDisplayNoDataOverlay = !this.series.some(function (s) { return s.hasData(); });\n var rect = this.getSeriesRect();\n if (shouldDisplayNoDataOverlay && rect) {\n this.overlays.noData.show(rect);\n }\n else {\n this.overlays.noData.hide();\n }\n };\n __decorate$1N([\n ActionOnSet({\n newValue: function (value) {\n this.scene.debug.consoleLog = value;\n if (this.animationManager) {\n this.animationManager.debug = value;\n }\n },\n })\n ], Chart.prototype, \"debug\", void 0);\n __decorate$1N([\n ActionOnSet({\n newValue: function (value) {\n if (this.destroyed)\n return;\n value.appendChild(this.element);\n },\n oldValue: function (value) {\n value.removeChild(this.element);\n },\n })\n ], Chart.prototype, \"container\", void 0);\n __decorate$1N([\n ActionOnSet({\n newValue: function (value) {\n var _a;\n (_a = this.series) === null || _a === void 0 ? void 0 : _a.forEach(function (series) { return (series.data = value); });\n },\n })\n ], Chart.prototype, \"data\", void 0);\n __decorate$1N([\n ActionOnSet({\n newValue: function (value) {\n this.resize(value);\n },\n })\n ], Chart.prototype, \"width\", void 0);\n __decorate$1N([\n ActionOnSet({\n newValue: function (value) {\n this.resize(undefined, value);\n },\n })\n ], Chart.prototype, \"height\", void 0);\n __decorate$1N([\n ActionOnSet({\n changeValue: function (value) {\n this.autoSizeChanged(value);\n },\n }),\n Validate(BOOLEAN)\n ], Chart.prototype, \"autoSize\", void 0);\n __decorate$1N([\n ActionOnSet({\n newValue: function (value) {\n var _a;\n (_a = this.scene.root) === null || _a === void 0 ? void 0 : _a.appendChild(value.node);\n },\n oldValue: function (oldValue) {\n var _a;\n (_a = this.scene.root) === null || _a === void 0 ? void 0 : _a.removeChild(oldValue.node);\n },\n })\n ], Chart.prototype, \"title\", void 0);\n __decorate$1N([\n ActionOnSet({\n newValue: function (value) {\n var _a;\n (_a = this.scene.root) === null || _a === void 0 ? void 0 : _a.appendChild(value.node);\n },\n oldValue: function (oldValue) {\n var _a;\n (_a = this.scene.root) === null || _a === void 0 ? void 0 : _a.removeChild(oldValue.node);\n },\n })\n ], Chart.prototype, \"subtitle\", void 0);\n __decorate$1N([\n ActionOnSet({\n newValue: function (value) {\n var _a;\n (_a = this.scene.root) === null || _a === void 0 ? void 0 : _a.appendChild(value.node);\n },\n oldValue: function (oldValue) {\n var _a;\n (_a = this.scene.root) === null || _a === void 0 ? void 0 : _a.removeChild(oldValue.node);\n },\n })\n ], Chart.prototype, \"footnote\", void 0);\n __decorate$1N([\n Validate(STRING_UNION('standalone', 'integrated'))\n ], Chart.prototype, \"mode\", void 0);\n return Chart;\n}(Observable));\n\nvar __read$q = (undefined && undefined.__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};\nfunction clamp(x, min, max) {\n return Math.max(min, Math.min(max, x));\n}\n/**\n * Maps a discrete domain to a continuous numeric range.\n */\nvar BandScale$5 = /** @class */ (function () {\n function BandScale() {\n this.type = 'band';\n this.cache = null;\n this.cacheProps = ['_domain', 'range', '_paddingInner', '_paddingOuter', 'round', 'interval'];\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 this._rawBandwidth = 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 BandScale.prototype.didChange = function () {\n var _this = this;\n var cache = this.cache;\n var didChange = !cache || this.cacheProps.some(function (p) { return _this[p] !== cache[p]; });\n if (didChange) {\n this.cache = {};\n this.cacheProps.forEach(function (p) { return (_this.cache[p] = _this[p]); });\n return true;\n }\n return false;\n };\n BandScale.prototype.refresh = function () {\n if (this.didChange()) {\n this.update();\n }\n };\n Object.defineProperty(BandScale.prototype, \"domain\", {\n get: function () {\n return this._domain;\n },\n set: function (values) {\n var domain = [];\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._domain = domain;\n },\n enumerable: false,\n configurable: true\n });\n BandScale.prototype.ticks = function () {\n this.refresh();\n var _a = this.interval, interval = _a === void 0 ? 1 : _a;\n var step = Math.abs(Math.round(interval));\n return this._domain.filter(function (_, i) { return i % step === 0; });\n };\n BandScale.prototype.convert = function (d) {\n this.refresh();\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 BandScale.prototype.invert = function (position) {\n this.refresh();\n var index = this.ordinalRange.findIndex(function (p) { return p === position; });\n return this.domain[index];\n };\n Object.defineProperty(BandScale.prototype, \"bandwidth\", {\n get: function () {\n this.refresh();\n return this._bandwidth;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BandScale.prototype, \"rawBandwidth\", {\n get: function () {\n this.refresh();\n return this._rawBandwidth;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BandScale.prototype, \"padding\", {\n get: function () {\n return this._paddingInner;\n },\n set: function (value) {\n value = clamp(value, 0, 1);\n this._paddingInner = value;\n this._paddingOuter = value;\n },\n enumerable: false,\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 = clamp(value, 0, 1);\n },\n enumerable: false,\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 = clamp(value, 0, 1);\n },\n enumerable: false,\n configurable: true\n });\n BandScale.prototype.update = function () {\n var count = this._domain.length;\n if (count === 0) {\n return;\n }\n var round = this.round;\n var paddingInner = this._paddingInner;\n var paddingOuter = this._paddingOuter;\n var _a = __read$q(this.range, 2), r0 = _a[0], r1 = _a[1];\n var width = r1 - r0;\n var rawStep = width / Math.max(1, count + 2 * paddingOuter - paddingInner);\n var step = round ? Math.floor(rawStep) : rawStep;\n var fullBandWidth = step * (count - paddingInner);\n var x0 = r0 + (width - fullBandWidth) / 2;\n var start = round ? Math.round(x0) : x0;\n var bw = step * (1 - paddingInner);\n var bandwidth = round ? Math.round(bw) : bw;\n var rawBandwidth = rawStep * (1 - paddingInner);\n var values = [];\n for (var i = 0; i < count; i++) {\n values.push(start + step * i);\n }\n this._bandwidth = bandwidth;\n this._rawBandwidth = rawBandwidth;\n this.ordinalRange = values;\n };\n return BandScale;\n}());\n\nvar __extends$K = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1M = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 Line = /** @class */ (function (_super) {\n __extends$K(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 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.render = function (renderCtx) {\n var _a;\n var ctx = renderCtx.ctx, forceRender = renderCtx.forceRender, stats = renderCtx.stats;\n if (this.dirty === RedrawType.NONE && !forceRender) {\n if (stats)\n stats.nodesSkipped += this.nodeCount.count;\n return;\n }\n this.computeTransformMatrix();\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 (_a = this.fillShadow) === null || _a === void 0 ? void 0 : _a.markClean();\n _super.prototype.render.call(this, renderCtx);\n };\n Line.className = 'Line';\n Line.defaultStyles = Object.assign({}, Shape.defaultStyles, {\n fill: undefined,\n strokeWidth: 1,\n });\n __decorate$1M([\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], Line.prototype, \"x1\", void 0);\n __decorate$1M([\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], Line.prototype, \"y1\", void 0);\n __decorate$1M([\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], Line.prototype, \"x2\", void 0);\n __decorate$1M([\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], Line.prototype, \"y2\", void 0);\n return Line;\n}(Shape));\n\nvar __decorate$1L = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 Caption = /** @class */ (function () {\n function Caption() {\n this.node = new Text();\n this.enabled = false;\n this.text = undefined;\n this.fontSize = 10;\n this.fontFamily = 'sans-serif';\n this.spacing = Caption.PADDING;\n this.lineHeight = undefined;\n this.maxWidth = undefined;\n this.maxHeight = undefined;\n this.wrapping = 'always';\n var node = this.node;\n node.textAlign = 'center';\n node.pointerEvents = PointerEvents.None;\n }\n Caption.prototype.computeTextWrap = function (containerWidth, containerHeight) {\n var _a, _b;\n var _c = this, text = _c.text, wrapping = _c.wrapping;\n var maxWidth = Math.min((_a = this.maxWidth) !== null && _a !== void 0 ? _a : Infinity, containerWidth);\n var maxHeight = (_b = this.maxHeight) !== null && _b !== void 0 ? _b : containerHeight;\n if (!isFinite(maxWidth) && !isFinite(maxHeight)) {\n this.node.text = text;\n return;\n }\n var wrapped = Text.wrap(text !== null && text !== void 0 ? text : '', maxWidth, maxHeight, this, wrapping);\n this.node.text = wrapped;\n };\n Caption.PADDING = 10;\n __decorate$1L([\n Validate(BOOLEAN)\n ], Caption.prototype, \"enabled\", void 0);\n __decorate$1L([\n Validate(OPT_STRING),\n ProxyPropertyOnWrite('node')\n ], Caption.prototype, \"text\", void 0);\n __decorate$1L([\n Validate(OPT_FONT_STYLE),\n ProxyPropertyOnWrite('node')\n ], Caption.prototype, \"fontStyle\", void 0);\n __decorate$1L([\n Validate(OPT_FONT_WEIGHT),\n ProxyPropertyOnWrite('node')\n ], Caption.prototype, \"fontWeight\", void 0);\n __decorate$1L([\n Validate(NUMBER(0)),\n ProxyPropertyOnWrite('node')\n ], Caption.prototype, \"fontSize\", void 0);\n __decorate$1L([\n Validate(STRING),\n ProxyPropertyOnWrite('node')\n ], Caption.prototype, \"fontFamily\", void 0);\n __decorate$1L([\n Validate(OPT_COLOR_STRING),\n ProxyPropertyOnWrite('node', 'fill')\n ], Caption.prototype, \"color\", void 0);\n __decorate$1L([\n Validate(OPT_NUMBER(0))\n ], Caption.prototype, \"spacing\", void 0);\n __decorate$1L([\n Validate(OPT_NUMBER(0))\n ], Caption.prototype, \"lineHeight\", void 0);\n __decorate$1L([\n Validate(OPT_NUMBER(0))\n ], Caption.prototype, \"maxWidth\", void 0);\n __decorate$1L([\n Validate(OPT_NUMBER(0))\n ], Caption.prototype, \"maxHeight\", void 0);\n __decorate$1L([\n Validate(TEXT_WRAP)\n ], Caption.prototype, \"wrapping\", void 0);\n return Caption;\n}());\n\nfunction areArrayNumbersEqual(arrA, arrB) {\n return arrA.length === arrB.length && arrA.every(function (item, i) { return Number(item) === Number(arrB[i]); });\n}\n\nvar __read$p = (undefined && undefined.__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 ContinuousScale = /** @class */ (function () {\n function ContinuousScale(domain, range) {\n this.domain = domain;\n this.range = range;\n this.nice = false;\n this.tickCount = ContinuousScale.defaultTickCount;\n this.minTickCount = 0;\n this.maxTickCount = Infinity;\n this.niceDomain = null;\n this.strictClampByDefault = false;\n this.cache = null;\n this.cacheProps = ['domain', 'range', 'nice', 'tickCount', 'minTickCount', 'maxTickCount'];\n }\n ContinuousScale.prototype.transform = function (x) {\n return x;\n };\n ContinuousScale.prototype.transformInvert = function (x) {\n return x;\n };\n ContinuousScale.prototype.fromDomain = function (d) {\n if (typeof d === 'number') {\n return d;\n }\n else if (d instanceof Date) {\n return d.getTime();\n }\n return NaN;\n };\n ContinuousScale.prototype.getDomain = function () {\n if (this.nice) {\n this.refresh();\n if (this.niceDomain) {\n return this.niceDomain;\n }\n }\n return this.domain;\n };\n ContinuousScale.prototype.convert = function (x, params) {\n var _this = this;\n var _a;\n if (!this.domain || this.domain.length < 2) {\n return NaN;\n }\n this.refresh();\n var strict = (_a = params === null || params === void 0 ? void 0 : params.strict) !== null && _a !== void 0 ? _a : this.strictClampByDefault;\n var domain = this.getDomain().map(function (d) { return _this.transform(d); });\n var _b = __read$p(domain, 2), d0 = _b[0], d1 = _b[1];\n var range = this.range;\n var _c = __read$p(range, 2), r0 = _c[0], r1 = _c[1];\n x = this.transform(x);\n if (x < d0) {\n return strict ? NaN : r0;\n }\n else if (x > d1) {\n return strict ? NaN : r1;\n }\n if (d0 === d1) {\n return (r0 + r1) / 2;\n }\n else if (x === d0) {\n return r0;\n }\n else if (x === d1) {\n return r1;\n }\n return (r0 + ((this.fromDomain(x) - this.fromDomain(d0)) / (this.fromDomain(d1) - this.fromDomain(d0))) * (r1 - r0));\n };\n ContinuousScale.prototype.invert = function (x) {\n var _this = this;\n this.refresh();\n var domain = this.getDomain().map(function (d) { return _this.transform(d); });\n var _a = __read$p(domain, 2), d0 = _a[0], d1 = _a[1];\n var range = this.range;\n var _b = __read$p(range, 2), r0 = _b[0], r1 = _b[1];\n var isReversed = r0 > r1;\n var rMin = isReversed ? r1 : r0;\n var rMax = isReversed ? r0 : r1;\n var d;\n if (x < rMin) {\n return isReversed ? d1 : d0;\n }\n else if (x > rMax) {\n return isReversed ? d0 : d1;\n }\n else if (r0 === r1) {\n d = this.toDomain((this.fromDomain(d0) + this.fromDomain(d1)) / 2);\n }\n else {\n d = this.toDomain(this.fromDomain(d0) + ((x - r0) / (r1 - r0)) * (this.fromDomain(d1) - this.fromDomain(d0)));\n }\n return this.transformInvert(d);\n };\n ContinuousScale.prototype.didChange = function () {\n var _this = this;\n var cache = this.cache;\n var didChange = !cache || this.cacheProps.some(function (p) { return _this[p] !== cache[p]; });\n if (didChange) {\n this.cache = {};\n this.cacheProps.forEach(function (p) { return (_this.cache[p] = _this[p]); });\n return true;\n }\n return false;\n };\n ContinuousScale.prototype.refresh = function () {\n if (this.didChange()) {\n this.update();\n }\n };\n ContinuousScale.prototype.isDenseInterval = function (_a) {\n var start = _a.start, stop = _a.stop, interval = _a.interval, count = _a.count;\n var range = this.range;\n var domain = stop - start;\n var min = Math.min(range[0], range[1]);\n var max = Math.max(range[0], range[1]);\n var availableRange = max - min;\n var step = typeof interval === 'number' ? interval : 1;\n count !== null && count !== void 0 ? count : (count = domain / step);\n if (count >= availableRange) {\n Logger.warn(\"the configured tick interval results in more than 1 tick per pixel, ignoring. Supply a larger tick interval or omit this configuration.\");\n return true;\n }\n return false;\n };\n ContinuousScale.defaultTickCount = 5;\n ContinuousScale.defaultMaxTickCount = 6;\n return ContinuousScale;\n}());\n\nvar __extends$J = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nfunction ticks (start, stop, count, minCount, maxCount) {\n if (count < 2) {\n return range(start, stop, stop - start);\n }\n var step = tickStep(start, stop, count, minCount, maxCount);\n if (isNaN(step)) {\n return new NumericTicks(0);\n }\n start = Math.ceil(start / step) * step;\n stop = Math.floor(stop / step) * step;\n return range(start, stop, step);\n}\nvar tickMultipliers = [1, 2, 5, 10];\nfunction tickStep(a, b, count, minCount, maxCount) {\n if (minCount === void 0) { minCount = 0; }\n if (maxCount === void 0) { maxCount = Infinity; }\n var rawStep = (b - a) / count;\n var power = Math.floor(Math.log10(rawStep));\n var step = Math.pow(10, power);\n var m = tickMultipliers\n .map(function (multiplier) {\n var s = multiplier * step;\n var c = Math.ceil((b - a) / s);\n var isWithinBounds = c >= minCount && c <= maxCount;\n var diffCount = Math.abs(c - count);\n return { multiplier: multiplier, isWithinBounds: isWithinBounds, diffCount: diffCount };\n })\n .sort(function (a, b) {\n if (a.isWithinBounds !== b.isWithinBounds) {\n return a.isWithinBounds ? -1 : 1;\n }\n return a.diffCount - b.diffCount;\n })[0].multiplier;\n if (!m || isNaN(m)) {\n return NaN;\n }\n return m * step;\n}\nfunction singleTickDomain(a, b) {\n var power = Math.floor(Math.log10(b - a));\n var step = Math.pow(10, power);\n return tickMultipliers\n .map(function (multiplier) {\n var s = multiplier * step;\n var start = Math.floor(a / s) * s;\n var end = Math.ceil(b / s) * s;\n var error = 1 - (b - a) / (end - start);\n var domain = [start, end];\n return { error: error, domain: domain };\n })\n .sort(function (a, b) { return a.error - b.error; })[0].domain;\n}\nvar NumericTicks = /** @class */ (function (_super) {\n __extends$J(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));\nfunction range(start, stop, step) {\n var countDigits = function (expNo) {\n var _a, _b;\n var parts = expNo.split('e');\n return Math.max(((_b = (_a = parts[0].split('.')[1]) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) - Number(parts[1]), 0);\n };\n var fractionalDigits = countDigits((step % 1).toExponential());\n var f = Math.pow(10, fractionalDigits);\n var n = Math.ceil((stop - start) / step);\n var values = new NumericTicks(fractionalDigits);\n for (var i = 0; i <= n; i++) {\n var value = start + step * i;\n values.push(Math.round(value * f) / f);\n }\n return values;\n}\n\nvar CONSTANTS = {\n periods: ['AM', 'PM'],\n days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n shortDays: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n months: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n shortMonths: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n};\nfunction dayOfYear(date, startOfYear) {\n if (startOfYear === void 0) { startOfYear = new Date(date.getFullYear(), 0, 1); }\n var startOffset = date.getTimezoneOffset() - startOfYear.getTimezoneOffset();\n var timeDiff = date.getTime() - startOfYear.getTime() + startOffset * 60000;\n var timeOneDay = 3600000 * 24;\n return Math.floor(timeDiff / timeOneDay);\n}\nfunction weekOfYear(date, startDay) {\n var startOfYear = new Date(date.getFullYear(), 0, 1);\n var startOfYearDay = startOfYear.getDay();\n var firstWeekStartOffset = (startDay - startOfYearDay + 7) % 7;\n var startOffset = new Date(date.getFullYear(), 0, firstWeekStartOffset + 1);\n if (startOffset <= date) {\n return Math.floor(dayOfYear(date, startOffset) / 7) + 1;\n }\n // Days before week 1 are in week 0.\n return 0;\n}\nvar SUNDAY = 0;\nvar MONDAY = 1;\nvar THURSDAY = 4;\nfunction isoWeekOfYear(date, year) {\n if (year === void 0) { year = date.getFullYear(); }\n var firstOfYear = new Date(year, 0, 1);\n var firstOfYearDay = firstOfYear.getDay();\n var firstThursdayOffset = (THURSDAY - firstOfYearDay + 7) % 7;\n var startOffset = new Date(year, 0, firstThursdayOffset - (THURSDAY - MONDAY) + 1);\n if (startOffset <= date) {\n return Math.floor(dayOfYear(date, startOffset) / 7) + 1;\n }\n // Days before week 1 are in week 52/53 of previous year.\n return isoWeekOfYear(date, year - 1);\n}\nfunction timezone(date) {\n var offset = date.getTimezoneOffset();\n var unsignedOffset = Math.abs(offset);\n var sign = offset > 0 ? '-' : '+';\n return \"\" + sign + pad(Math.floor(unsignedOffset / 60), 2, '0') + pad(Math.floor(unsignedOffset % 60), 2, '0');\n}\nvar FORMATTERS = {\n a: function (d) { return CONSTANTS.shortDays[d.getDay()]; },\n A: function (d) { return CONSTANTS.days[d.getDay()]; },\n b: function (d) { return CONSTANTS.shortMonths[d.getMonth()]; },\n B: function (d) { return CONSTANTS.months[d.getMonth()]; },\n c: '%x, %X',\n d: function (d, p) { return pad(d.getDate(), 2, p !== null && p !== void 0 ? p : '0'); },\n e: '%_d',\n f: function (d, p) { return pad(d.getMilliseconds() * 1000, 6, p !== null && p !== void 0 ? p : '0'); },\n H: function (d, p) { return pad(d.getHours(), 2, p !== null && p !== void 0 ? p : '0'); },\n I: function (d, p) {\n var hours = d.getHours() % 12;\n return hours === 0 ? '12' : pad(hours, 2, p !== null && p !== void 0 ? p : '0');\n },\n j: function (d, p) { return pad(dayOfYear(d) + 1, 3, p !== null && p !== void 0 ? p : '0'); },\n m: function (d, p) { return pad(d.getMonth() + 1, 2, p !== null && p !== void 0 ? p : '0'); },\n M: function (d, p) { return pad(d.getMinutes(), 2, p !== null && p !== void 0 ? p : '0'); },\n L: function (d, p) { return pad(d.getMilliseconds(), 3, p !== null && p !== void 0 ? p : '0'); },\n p: function (d) { return (d.getHours() < 12 ? 'AM' : 'PM'); },\n Q: function (d) { return String(d.getTime()); },\n s: function (d) { return String(Math.floor(d.getTime() / 1000)); },\n S: function (d, p) { return pad(d.getSeconds(), 2, p !== null && p !== void 0 ? p : '0'); },\n u: function (d) {\n var day = d.getDay();\n if (day < 1)\n day += 7;\n return String(day % 7);\n },\n U: function (d, p) { return pad(weekOfYear(d, SUNDAY), 2, p !== null && p !== void 0 ? p : '0'); },\n V: function (d, p) { return pad(isoWeekOfYear(d), 2, p !== null && p !== void 0 ? p : '0'); },\n w: function (d, p) { return pad(d.getDay(), 2, p !== null && p !== void 0 ? p : '0'); },\n W: function (d, p) { return pad(weekOfYear(d, MONDAY), 2, p !== null && p !== void 0 ? p : '0'); },\n x: '%-m/%-d/%Y',\n X: '%-I:%M:%S %p',\n y: function (d, p) { return pad(d.getFullYear() % 100, 2, p !== null && p !== void 0 ? p : '0'); },\n Y: function (d, p) { return pad(d.getFullYear(), 4, p !== null && p !== void 0 ? p : '0'); },\n Z: function (d) { return timezone(d); },\n '%': function () { return '%'; },\n};\nvar PADS = {\n _: ' ',\n '0': '0',\n '-': '',\n};\nfunction pad(value, size, padChar) {\n var output = String(Math.floor(value));\n if (output.length >= size) {\n return output;\n }\n return \"\" + padChar.repeat(size - output.length) + output;\n}\nfunction buildFormatter(formatString) {\n var formatParts = [];\n while (formatString.length > 0) {\n var nextEscapeIdx = formatString.indexOf('%');\n if (nextEscapeIdx !== 0) {\n var literalPart = nextEscapeIdx > 0 ? formatString.substring(0, nextEscapeIdx) : formatString;\n formatParts.push(literalPart);\n }\n if (nextEscapeIdx < 0)\n break;\n var maybePadSpecifier = formatString[nextEscapeIdx + 1];\n var maybePad = PADS[maybePadSpecifier];\n if (maybePad != null) {\n nextEscapeIdx++;\n }\n var maybeFormatterSpecifier = formatString[nextEscapeIdx + 1];\n var maybeFormatter = FORMATTERS[maybeFormatterSpecifier];\n if (typeof maybeFormatter === 'function') {\n formatParts.push([maybeFormatter, maybePad]);\n }\n else if (typeof maybeFormatter === 'string') {\n var formatter = buildFormatter(maybeFormatter);\n formatParts.push([formatter, maybePad]);\n }\n else {\n formatParts.push(\"\" + (maybePad !== null && maybePad !== void 0 ? maybePad : '') + maybeFormatterSpecifier);\n }\n formatString = formatString.substring(nextEscapeIdx + 2);\n }\n return function (dateTime) {\n var dateTimeAsDate = typeof dateTime === 'number' ? new Date(dateTime) : dateTime;\n return formatParts.map(function (c) { return (typeof c === 'string' ? c : c[0](dateTimeAsDate, c[1])); }).join('');\n };\n}\n\nvar __extends$I = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __values$d = (undefined && undefined.__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$o = (undefined && undefined.__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 __spreadArray$f = (undefined && undefined.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar _a$3;\nvar DefaultTimeFormats;\n(function (DefaultTimeFormats) {\n DefaultTimeFormats[DefaultTimeFormats[\"MILLISECOND\"] = 0] = \"MILLISECOND\";\n DefaultTimeFormats[DefaultTimeFormats[\"SECOND\"] = 1] = \"SECOND\";\n DefaultTimeFormats[DefaultTimeFormats[\"MINUTE\"] = 2] = \"MINUTE\";\n DefaultTimeFormats[DefaultTimeFormats[\"HOUR\"] = 3] = \"HOUR\";\n DefaultTimeFormats[DefaultTimeFormats[\"WEEK_DAY\"] = 4] = \"WEEK_DAY\";\n DefaultTimeFormats[DefaultTimeFormats[\"SHORT_MONTH\"] = 5] = \"SHORT_MONTH\";\n DefaultTimeFormats[DefaultTimeFormats[\"MONTH\"] = 6] = \"MONTH\";\n DefaultTimeFormats[DefaultTimeFormats[\"SHORT_YEAR\"] = 7] = \"SHORT_YEAR\";\n DefaultTimeFormats[DefaultTimeFormats[\"YEAR\"] = 8] = \"YEAR\";\n})(DefaultTimeFormats || (DefaultTimeFormats = {}));\nvar formatStrings = (_a$3 = {},\n _a$3[DefaultTimeFormats.MILLISECOND] = '.%L',\n _a$3[DefaultTimeFormats.SECOND] = ':%S',\n _a$3[DefaultTimeFormats.MINUTE] = '%I:%M',\n _a$3[DefaultTimeFormats.HOUR] = '%I %p',\n _a$3[DefaultTimeFormats.WEEK_DAY] = '%a',\n _a$3[DefaultTimeFormats.SHORT_MONTH] = '%b %d',\n _a$3[DefaultTimeFormats.MONTH] = '%B',\n _a$3[DefaultTimeFormats.SHORT_YEAR] = '%y',\n _a$3[DefaultTimeFormats.YEAR] = '%Y',\n _a$3);\nfunction toNumber(x) {\n return x instanceof Date ? x.getTime() : x;\n}\nvar TimeScale$1 = /** @class */ (function (_super) {\n __extends$I(TimeScale, _super);\n function TimeScale() {\n var _this = _super.call(this, [new Date(2022, 11, 7), new Date(2022, 11, 8)], [0, 1]) || this;\n _this.type = 'time';\n _this.cacheProps = [\n 'domain',\n 'range',\n 'nice',\n 'tickCount',\n 'interval',\n 'minTickCount',\n 'maxTickCount',\n ];\n _this.year = year;\n _this.month = month;\n _this.week = sunday;\n _this.day = day;\n _this.hour = hour;\n _this.minute = minute;\n _this.second = second;\n _this.millisecond = millisecond;\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.week, 2, 2 * durationWeek],\n [_this.week, 3, 3 * durationWeek],\n [_this.month, 1, durationMonth],\n [_this.month, 2, 2 * durationMonth],\n [_this.month, 3, 3 * durationMonth],\n [_this.month, 4, 4 * durationMonth],\n [_this.month, 6, 6 * durationMonth],\n [_this.year, 1, durationYear],\n ];\n return _this;\n }\n TimeScale.prototype.toDomain = function (d) {\n return new Date(d);\n };\n TimeScale.prototype.calculateDefaultTickFormat = function (ticks) {\n var e_1, _a;\n if (ticks === void 0) { ticks = []; }\n var defaultTimeFormat = DefaultTimeFormats.YEAR;\n var updateFormat = function (format) {\n if (format < defaultTimeFormat) {\n defaultTimeFormat = format;\n }\n };\n try {\n for (var ticks_1 = __values$d(ticks), ticks_1_1 = ticks_1.next(); !ticks_1_1.done; ticks_1_1 = ticks_1.next()) {\n var value = ticks_1_1.value;\n var format = this.getLowestGranularityFormat(value);\n updateFormat(format);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (ticks_1_1 && !ticks_1_1.done && (_a = ticks_1.return)) _a.call(ticks_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n var firstTick = toNumber(ticks[0]);\n var lastTick = toNumber(ticks[ticks.length - 1]);\n var startYear = new Date(firstTick).getFullYear();\n var stopYear = new Date(lastTick).getFullYear();\n var yearChange = stopYear - startYear > 0;\n return this.buildFormatString(defaultTimeFormat, yearChange);\n };\n TimeScale.prototype.buildFormatString = function (defaultTimeFormat, yearChange) {\n var formatStringArray = [formatStrings[defaultTimeFormat]];\n var timeEndIndex = 0;\n var domain = this.getDomain();\n var start = Math.min.apply(Math, __spreadArray$f([], __read$o(domain.map(toNumber))));\n var stop = Math.max.apply(Math, __spreadArray$f([], __read$o(domain.map(toNumber))));\n var extent = stop - start;\n switch (defaultTimeFormat) {\n case DefaultTimeFormats.SECOND:\n if (extent / durationMinute > 1) {\n formatStringArray.push(formatStrings[DefaultTimeFormats.MINUTE]);\n }\n // fall through deliberately\n case DefaultTimeFormats.MINUTE:\n if (extent / durationHour > 1) {\n formatStringArray.push(formatStrings[DefaultTimeFormats.HOUR]);\n }\n // fall through deliberately\n case DefaultTimeFormats.HOUR:\n timeEndIndex = formatStringArray.length;\n if (extent / durationDay > 1) {\n formatStringArray.push(formatStrings[DefaultTimeFormats.WEEK_DAY]);\n }\n // fall through deliberately\n case DefaultTimeFormats.WEEK_DAY:\n if (extent / durationWeek > 1 || yearChange) {\n // if it's more than a week or there is a year change, don't show week day\n var weekDayIndex = formatStringArray.indexOf(formatStrings[DefaultTimeFormats.WEEK_DAY]);\n if (weekDayIndex > -1) {\n formatStringArray.splice(weekDayIndex, 1, formatStrings[DefaultTimeFormats.SHORT_MONTH]);\n }\n }\n // fall through deliberately\n case DefaultTimeFormats.SHORT_MONTH:\n case DefaultTimeFormats.MONTH:\n if (extent / durationYear > 1 || yearChange) {\n formatStringArray.push(formatStrings[DefaultTimeFormats.YEAR]);\n }\n }\n if (timeEndIndex < formatStringArray.length) {\n // Insert a gap between all date components.\n formatStringArray = __spreadArray$f(__spreadArray$f([], __read$o(formatStringArray.slice(0, timeEndIndex))), [\n formatStringArray.slice(timeEndIndex).join(' '),\n ]);\n }\n if (timeEndIndex > 0) {\n // Reverse order of time components, since they should be displayed in descending\n // granularity.\n formatStringArray = __spreadArray$f(__spreadArray$f([], __read$o(formatStringArray.slice(0, timeEndIndex).reverse())), __read$o(formatStringArray.slice(timeEndIndex)));\n if (timeEndIndex < formatStringArray.length) {\n // Insert a gap between time and date components.\n formatStringArray.splice(timeEndIndex, 0, ' ');\n }\n }\n return formatStringArray.join('');\n };\n TimeScale.prototype.getLowestGranularityFormat = function (value) {\n if (this.second.floor(value) < value) {\n return DefaultTimeFormats.MILLISECOND;\n }\n else if (this.minute.floor(value) < value) {\n return DefaultTimeFormats.SECOND;\n }\n else if (this.hour.floor(value) < value) {\n return DefaultTimeFormats.MINUTE;\n }\n else if (this.day.floor(value) < value) {\n return DefaultTimeFormats.HOUR;\n }\n else if (this.month.floor(value) < value) {\n if (this.week.floor(value) < value) {\n return DefaultTimeFormats.WEEK_DAY;\n }\n return DefaultTimeFormats.SHORT_MONTH;\n }\n else if (this.year.floor(value) < value) {\n return DefaultTimeFormats.MONTH;\n }\n return DefaultTimeFormats.YEAR;\n };\n TimeScale.prototype.defaultTickFormat = function (ticks) {\n var formatString = this.calculateDefaultTickFormat(ticks);\n return function (date) { return buildFormatter(formatString)(date); };\n };\n /**\n * @param options Tick interval options.\n * @param options.start The start time (timestamp).\n * @param options.stop The end time (timestamp).\n * @param options.count Number of intervals between ticks.\n */\n TimeScale.prototype.getTickInterval = function (_a) {\n var _b;\n var start = _a.start, stop = _a.stop, count = _a.count, minCount = _a.minCount, maxCount = _a.maxCount;\n var tickIntervals = this.tickIntervals;\n var countableTimeInterval;\n var step;\n var tickCount = count !== null && count !== void 0 ? count : ContinuousScale.defaultTickCount;\n var target = Math.abs(stop - start) / Math.max(tickCount, 1);\n var i = 0;\n while (i < tickIntervals.length && target > tickIntervals[i][2]) {\n i++;\n }\n if (i === 0) {\n step = Math.max(tickStep(start, stop, tickCount, minCount, maxCount), 1);\n countableTimeInterval = this.millisecond;\n }\n else if (i === tickIntervals.length) {\n var y0 = start / durationYear;\n var y1 = stop / durationYear;\n step = tickStep(y0, y1, tickCount, minCount, maxCount);\n countableTimeInterval = this.year;\n }\n else {\n var diff0 = target - tickIntervals[i - 1][2];\n var diff1 = tickIntervals[i][2] - target;\n var index = diff0 < diff1 ? i - 1 : i;\n _b = __read$o(tickIntervals[index], 2), countableTimeInterval = _b[0], step = _b[1];\n }\n return countableTimeInterval.every(step);\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 */\n TimeScale.prototype.ticks = function () {\n if (!this.domain || this.domain.length < 2) {\n return [];\n }\n this.refresh();\n var _a = __read$o(this.getDomain().map(toNumber), 2), t0 = _a[0], t1 = _a[1];\n if (this.interval !== undefined) {\n return this.getTicksForInterval({ start: t0, stop: t1 });\n }\n if (this.nice) {\n var tickCount = this.tickCount;\n if (tickCount === 2) {\n return this.niceDomain;\n }\n if (tickCount === 1) {\n return this.niceDomain.slice(0, 1);\n }\n }\n return this.getDefaultTicks({ start: t0, stop: t1 });\n };\n TimeScale.prototype.getDefaultTicks = function (_a) {\n var start = _a.start, stop = _a.stop;\n var t = this.getTickInterval({\n start: start,\n stop: stop,\n count: this.tickCount,\n minCount: this.minTickCount,\n maxCount: this.maxTickCount,\n });\n return t ? t.range(new Date(start), new Date(stop)) : []; // inclusive stop\n };\n TimeScale.prototype.getTicksForInterval = function (_a) {\n var start = _a.start, stop = _a.stop;\n var _b = this, interval = _b.interval, tickIntervals = _b.tickIntervals;\n if (!interval) {\n return [];\n }\n if (interval instanceof TimeInterval) {\n var ticks_2 = interval.range(new Date(start), new Date(stop));\n if (this.isDenseInterval({ start: start, stop: stop, interval: interval, count: ticks_2.length })) {\n return this.getDefaultTicks({ start: start, stop: stop });\n }\n return ticks_2;\n }\n var absInterval = Math.abs(interval);\n if (this.isDenseInterval({ start: start, stop: stop, interval: absInterval })) {\n return this.getDefaultTicks({ start: start, stop: stop });\n }\n var reversedInterval = __spreadArray$f([], __read$o(tickIntervals));\n reversedInterval.reverse();\n var timeInterval = reversedInterval.find(function (tickInterval) { return absInterval % tickInterval[2] === 0; });\n if (timeInterval) {\n var i = timeInterval[0].every(absInterval / (timeInterval[2] / timeInterval[1]));\n return i.range(new Date(start), new Date(stop));\n }\n var date = new Date(start);\n var stopDate = new Date(stop);\n var ticks = [];\n while (date <= stopDate) {\n ticks.push(date);\n date = new Date(date);\n date.setMilliseconds(date.getMilliseconds() + absInterval);\n }\n return ticks;\n };\n /**\n * Returns a time format function suitable for displaying tick values.\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 (_a) {\n var ticks = _a.ticks, specifier = _a.specifier;\n return specifier == undefined ? this.defaultTickFormat(ticks) : buildFormatter(specifier);\n };\n TimeScale.prototype.update = function () {\n if (!this.domain || this.domain.length < 2) {\n return;\n }\n if (this.nice) {\n this.updateNiceDomain();\n }\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 */\n TimeScale.prototype.updateNiceDomain = function () {\n var maxAttempts = 4;\n var _a = __read$o(this.domain, 2), d0 = _a[0], d1 = _a[1];\n for (var i = 0; i < maxAttempts; i++) {\n this.updateNiceDomainIteration(d0, d1);\n var _b = __read$o(this.niceDomain, 2), n0 = _b[0], n1 = _b[1];\n if (toNumber(d0) === toNumber(n0) && toNumber(d1) === toNumber(n1)) {\n break;\n }\n d0 = n0;\n d1 = n1;\n }\n };\n TimeScale.prototype.updateNiceDomainIteration = function (d0, d1) {\n var start = toNumber(d0);\n var stop = toNumber(d1);\n var interval = this.interval;\n var i;\n if (interval instanceof TimeInterval) {\n i = interval;\n }\n else {\n var tickCount = typeof interval === 'number' ? (stop - start) / Math.max(interval, 1) : this.tickCount;\n i = this.getTickInterval({\n start: start,\n stop: stop,\n count: tickCount,\n minCount: this.minTickCount,\n maxCount: this.maxTickCount,\n });\n }\n if (i) {\n var intervalRange = i.range(d0, d1, true);\n var n0 = intervalRange[0];\n var n1 = intervalRange[intervalRange.length - 1];\n this.niceDomain = [n0, n1];\n }\n };\n return TimeScale;\n}(ContinuousScale));\n\nvar __read$n = (undefined && undefined.__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 __spreadArray$e = (undefined && undefined.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar _a$2;\nvar group = function (content) { return \"(\" + content + \")\"; };\nvar optionalGroup = function (content) { return group(content) + \"?\"; };\nvar nonCapturingGroup = function (content) { return optionalGroup(\"?:\" + content); };\nvar formatRegEx = (function () {\n var fill = '.';\n var align = '[<>=^]';\n var sign = '[+\\\\-( ]';\n var symbol = '[$€£¥₣₹#]';\n var zero = '0';\n var width = '\\\\d+';\n var comma = ',';\n var precision = '\\\\d+';\n var tilde = '~';\n var type = '[%a-z]';\n return new RegExp([\n '^',\n nonCapturingGroup(\"\" + optionalGroup(fill) + group(align)),\n optionalGroup(sign),\n optionalGroup(symbol),\n optionalGroup(zero),\n optionalGroup(width),\n optionalGroup(comma),\n nonCapturingGroup(\"\\\\.\" + group(precision)),\n optionalGroup(tilde),\n optionalGroup(type),\n '$',\n ].join(''), 'i');\n})();\nvar surroundedRegEx = (function () {\n var prefix = '.*?';\n var content = '.+?';\n var suffix = '.*?';\n return new RegExp(['^', group(prefix), \"#\\\\{\" + group(content) + \"\\\\}\", group(suffix), '$'].join(''));\n})();\nfunction parseFormatter(formatter) {\n var _a;\n var prefix;\n var suffix;\n var surrounded = surroundedRegEx.exec(formatter);\n if (surrounded) {\n _a = __read$n(surrounded, 4), prefix = _a[1], formatter = _a[2], suffix = _a[3];\n }\n var match = formatRegEx.exec(formatter);\n if (!match) {\n throw new Error(\"The number formatter is invalid: \" + formatter);\n }\n var _b = __read$n(match, 11), fill = _b[1], align = _b[2], sign = _b[3], symbol = _b[4], zero = _b[5], width = _b[6], comma = _b[7], precision = _b[8], trim = _b[9], type = _b[10];\n return {\n fill: fill,\n align: align,\n sign: sign,\n symbol: symbol,\n zero: zero,\n width: parseInt(width),\n comma: comma,\n precision: parseInt(precision),\n trim: Boolean(trim),\n type: type,\n prefix: prefix,\n suffix: suffix,\n };\n}\nfunction format(formatter) {\n var options = typeof formatter === 'string' ? parseFormatter(formatter) : formatter;\n var fill = options.fill, align = options.align, _a = options.sign, sign = _a === void 0 ? '-' : _a, symbol = options.symbol, zero = options.zero, width = options.width, comma = options.comma, type = options.type, _b = options.prefix, prefix = _b === void 0 ? '' : _b, _c = options.suffix, suffix = _c === void 0 ? '' : _c, precision = options.precision;\n var trim = options.trim;\n var precisionIsNaN = precision === undefined || isNaN(precision);\n var formatBody;\n if (!type) {\n formatBody = decimalTypes['g'];\n trim = true;\n }\n else if (type in decimalTypes && type in integerTypes) {\n formatBody = precisionIsNaN ? integerTypes[type] : decimalTypes[type];\n }\n else if (type in decimalTypes) {\n formatBody = decimalTypes[type];\n }\n else if (type in integerTypes) {\n formatBody = integerTypes[type];\n }\n else {\n throw new Error(\"The number formatter type is invalid: \" + type);\n }\n var formatterPrecision;\n if (precision == null || precisionIsNaN) {\n formatterPrecision = type ? 6 : 12;\n }\n else {\n formatterPrecision = precision;\n }\n return function (n) {\n var result = formatBody(n, formatterPrecision);\n if (trim) {\n result = removeTrailingZeros(result);\n }\n if (comma) {\n result = insertSeparator(result, comma);\n }\n result = addSign(n, result, sign);\n if (symbol && symbol !== '#') {\n result = \"\" + symbol + result;\n }\n if (symbol === '#' && type === 'x') {\n result = \"0x\" + result;\n }\n if (type === 's') {\n result = \"\" + result + getSIPrefix(n);\n }\n if (type === '%' || type === 'p') {\n result = result + \"%\";\n }\n if (width != null && !isNaN(width)) {\n result = addPadding(result, width, fill !== null && fill !== void 0 ? fill : zero, align);\n }\n result = \"\" + prefix + result + suffix;\n return result;\n };\n}\nvar absFloor = function (n) { return Math.floor(Math.abs(n)); };\nvar integerTypes = {\n b: function (n) { return absFloor(n).toString(2); },\n c: function (n) { return String.fromCharCode(n); },\n d: function (n) { return Math.round(Math.abs(n)).toFixed(0); },\n o: function (n) { return absFloor(n).toString(8); },\n x: function (n) { return absFloor(n).toString(16); },\n X: function (n) { return integerTypes.x(n).toUpperCase(); },\n n: function (n) { return integerTypes.d(n); },\n '%': function (n) { return \"\" + absFloor(n * 100).toFixed(0); },\n};\nvar decimalTypes = {\n e: function (n, f) { return Math.abs(n).toExponential(f); },\n E: function (n, f) { return decimalTypes.e(n, f).toUpperCase(); },\n f: function (n, f) { return Math.abs(n).toFixed(f); },\n F: function (n, f) { return decimalTypes.f(n, f).toUpperCase(); },\n g: function (n, f) {\n if (n === 0) {\n return '0';\n }\n var a = Math.abs(n);\n var p = Math.floor(Math.log10(a));\n if (p >= -4 && p < f) {\n return a.toFixed(f - 1 - p);\n }\n return a.toExponential(f - 1);\n },\n G: function (n, f) { return decimalTypes.g(n, f).toUpperCase(); },\n n: function (n, f) { return decimalTypes.g(n, f); },\n p: function (n, f) { return decimalTypes.r(n * 100, f); },\n r: function (n, f) {\n if (n === 0) {\n return '0';\n }\n var a = Math.abs(n);\n var p = Math.floor(Math.log10(a));\n var q = p - (f - 1);\n if (q <= 0) {\n return a.toFixed(-q);\n }\n var x = Math.pow(10, q);\n return (Math.round(a / x) * x).toFixed();\n },\n s: function (n, f) {\n var p = getSIPrefixPower(n);\n return decimalTypes.r(n / Math.pow(10, p), f);\n },\n '%': function (n, f) { return decimalTypes.f(n * 100, f); },\n};\nfunction removeTrailingZeros(numString) {\n return numString.replace(/\\.0+$/, '').replace(/(\\.[1-9])0+$/, '$1');\n}\nfunction insertSeparator(numString, separator) {\n var dotIndex = numString.indexOf('.');\n if (dotIndex < 0) {\n dotIndex = numString.length;\n }\n var integerChars = numString.substring(0, dotIndex).split('');\n var fractionalPart = numString.substring(dotIndex);\n for (var i = integerChars.length - 3; i > 0; i -= 3) {\n integerChars.splice(i, 0, separator);\n }\n return \"\" + integerChars.join('') + fractionalPart;\n}\nfunction getSIPrefix(n) {\n return siPrefixes[getSIPrefixPower(n)];\n}\nfunction getSIPrefixPower(n) {\n var power = Math.log10(Math.abs(n));\n var p = Math.floor(power / 3) * 3;\n return Math.max(minSIPrefix, Math.min(maxSIPrefix, p));\n}\nvar minSIPrefix = -24;\nvar maxSIPrefix = 24;\nvar siPrefixes = (_a$2 = {},\n _a$2[minSIPrefix] = 'y',\n _a$2[-21] = 'z',\n _a$2[-18] = 'a',\n _a$2[-15] = 'f',\n _a$2[-12] = 'p',\n _a$2[-9] = 'n',\n _a$2[-6] = 'µ',\n _a$2[-3] = 'm',\n _a$2[0] = '',\n _a$2[3] = 'k',\n _a$2[6] = 'M',\n _a$2[9] = 'G',\n _a$2[12] = 'T',\n _a$2[15] = 'P',\n _a$2[18] = 'E',\n _a$2[21] = 'Z',\n _a$2[maxSIPrefix] = 'Y',\n _a$2);\nvar minusSign = '\\u2212';\nfunction addSign(num, numString, signType) {\n if (signType === void 0) { signType = ''; }\n if (signType === '(') {\n return num >= 0 ? numString : \"(\" + numString + \")\";\n }\n var plusSign = signType === '+' ? '+' : '';\n return \"\" + (num >= 0 ? plusSign : minusSign) + numString;\n}\nfunction addPadding(numString, width, fill, align) {\n if (fill === void 0) { fill = ' '; }\n if (align === void 0) { align = '>'; }\n var result = numString;\n if (align === '>' || !align) {\n result = result.padStart(width, fill);\n }\n else if (align === '<') {\n result = result.padEnd(width, fill);\n }\n else if (align === '^') {\n var padWidth = Math.max(0, width - result.length);\n var padLeft = Math.ceil(padWidth / 2);\n var padRight = Math.floor(padWidth / 2);\n result = result.padStart(padLeft + result.length, fill);\n result = result.padEnd(padRight + result.length, fill);\n }\n return result;\n}\nfunction tickFormat(ticks, formatter) {\n var options = parseFormatter(formatter !== null && formatter !== void 0 ? formatter : ',f');\n var precision = options.precision;\n if (precision == null || isNaN(precision)) {\n if (options.type === 'f' || options.type === '%') {\n options.precision = Math.max.apply(Math, __spreadArray$e([], __read$n(ticks.map(function (x) {\n if (typeof x !== 'number' || x === 0) {\n return 0;\n }\n var l = Math.floor(Math.log10(Math.abs(x)));\n var digits = options.type ? 6 : 12;\n var exp = x.toExponential(digits - 1).replace(/\\.?0+e/, 'e');\n var dotIndex = exp.indexOf('.');\n if (dotIndex < 0) {\n return l >= 0 ? 0 : -l;\n }\n var s = exp.indexOf('e') - dotIndex;\n return Math.max(0, s - l - 1);\n }))));\n }\n else if (!options.type || options.type in decimalTypes) {\n options.precision = Math.max.apply(Math, __spreadArray$e([], __read$n(ticks.map(function (x) {\n if (typeof x !== 'number') {\n return 0;\n }\n var exp = x.toExponential((options.type ? 6 : 12) - 1).replace(/\\.?0+e/, 'e');\n return exp.substring(0, exp.indexOf('e')).replace('.', '').length;\n }))));\n }\n }\n var f = format(options);\n return function (n) { return f(Number(n)); };\n}\n\nvar __extends$H = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1K = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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$m = (undefined && undefined.__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 __spreadArray$d = (undefined && undefined.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar identity = function (x) { return x; };\nvar LogScale = /** @class */ (function (_super) {\n __extends$H(LogScale, _super);\n function LogScale() {\n var _this = _super.call(this, [1, 10], [0, 1]) || this;\n _this.type = 'log';\n _this.base = 10;\n _this.cacheProps = ['domain', 'range', 'nice', 'tickCount', 'base'];\n _this.baseLog = identity;\n _this.basePow = identity;\n _this.log = function (x) {\n return _this.domain[0] >= 0 ? _this.baseLog(x) : -_this.baseLog(-x);\n };\n _this.pow = function (x) {\n return _this.domain[0] >= 0 ? _this.basePow(x) : -_this.basePow(-x);\n };\n return _this;\n }\n LogScale.prototype.toDomain = function (d) {\n return d;\n };\n LogScale.prototype.transform = function (x) {\n return this.domain[0] >= 0 ? Math.log(x) : -Math.log(-x);\n };\n LogScale.prototype.transformInvert = function (x) {\n return this.domain[0] >= 0 ? Math.exp(x) : -Math.exp(-x);\n };\n LogScale.prototype.update = function () {\n if (!this.domain || this.domain.length < 2) {\n return;\n }\n this.updateLogFn();\n this.updatePowFn();\n if (this.nice) {\n this.updateNiceDomain();\n }\n };\n LogScale.prototype.updateLogFn = function () {\n var base = this.base;\n var log;\n if (base === 10) {\n log = Math.log10;\n }\n else if (base === Math.E) {\n log = Math.log;\n }\n else if (base === 2) {\n log = Math.log2;\n }\n else {\n var logBase_1 = Math.log(base);\n log = function (x) { return Math.log(x) / logBase_1; };\n }\n this.baseLog = log;\n };\n LogScale.prototype.updatePowFn = function () {\n var base = this.base;\n var pow;\n if (base === 10) {\n pow = LogScale.pow10;\n }\n else if (base === Math.E) {\n pow = Math.exp;\n }\n else {\n pow = function (x) { return Math.pow(base, x); };\n }\n this.basePow = pow;\n };\n LogScale.prototype.updateNiceDomain = function () {\n var _a = __read$m(this.domain, 2), d0 = _a[0], d1 = _a[1];\n var n0 = this.pow(Math.floor(this.log(d0)));\n var n1 = this.pow(Math.ceil(this.log(d1)));\n this.niceDomain = [n0, n1];\n };\n LogScale.pow10 = function (x) {\n return x >= 0 ? Math.pow(10, x) : 1 / Math.pow(10, -x);\n };\n LogScale.prototype.ticks = function () {\n var _this = this;\n var _a;\n var count = (_a = this.tickCount) !== null && _a !== void 0 ? _a : 10;\n if (!this.domain || this.domain.length < 2 || count < 1) {\n return [];\n }\n this.refresh();\n var base = this.base;\n var _b = __read$m(this.getDomain(), 2), d0 = _b[0], d1 = _b[1];\n var p0 = this.log(d0);\n var p1 = this.log(d1);\n if (this.interval) {\n var step = Math.abs(this.interval);\n var absDiff = Math.abs(p1 - p0);\n var ticks_1 = range(p0, p1, Math.min(absDiff, step))\n .map(function (x) { return _this.pow(x); })\n .filter(function (t) { return t >= d0 && t <= d1; });\n if (!this.isDenseInterval({ start: d0, stop: d1, interval: step, count: ticks_1.length })) {\n return ticks_1;\n }\n }\n var isBaseInteger = base % 1 === 0;\n var isDiffLarge = p1 - p0 >= count;\n if (!isBaseInteger || isDiffLarge) {\n // Returns [10^1, 10^2, 10^3, 10^4, ...]\n return ticks(p0, p1, Math.min(p1 - p0, count)).map(function (x) { return _this.pow(x); });\n }\n var ticks$1 = [];\n var isPositive = d0 > 0;\n p0 = Math.floor(p0) - 1;\n p1 = Math.round(p1) + 1;\n var min = Math.min.apply(Math, __spreadArray$d([], __read$m(this.range)));\n var max = Math.max.apply(Math, __spreadArray$d([], __read$m(this.range)));\n var availableSpacing = (max - min) / count;\n var lastTickPosition = Infinity;\n for (var p = p0; p <= p1; p++) {\n var nextMagnitudeTickPosition = this.convert(this.pow(p + 1));\n for (var k = 1; k < base; k++) {\n var q = isPositive ? k : base - k + 1;\n var t = this.pow(p) * q;\n var tickPosition = this.convert(t);\n var prevSpacing = Math.abs(lastTickPosition - tickPosition);\n var nextSpacing = Math.abs(tickPosition - nextMagnitudeTickPosition);\n var fits = prevSpacing >= availableSpacing && nextSpacing >= availableSpacing;\n if (t >= d0 && t <= d1 && (k === 1 || fits)) {\n ticks$1.push(t);\n lastTickPosition = tickPosition;\n }\n }\n }\n return ticks$1;\n };\n LogScale.prototype.tickFormat = function (_a) {\n var count = _a.count, ticks = _a.ticks, specifier = _a.specifier;\n var base = this.base;\n if (specifier == null) {\n specifier = base === 10 ? '.0e' : ',';\n }\n if (typeof specifier === 'string') {\n specifier = format(specifier);\n }\n if (count === Infinity) {\n return specifier;\n }\n if (ticks == null) {\n this.ticks();\n }\n return function (d) {\n return specifier(d);\n };\n };\n __decorate$1K([\n Validate(NUMBER(0))\n ], LogScale.prototype, \"base\", void 0);\n return LogScale;\n}(ContinuousScale));\n\nfunction extent$4(values) {\n var length = values.length;\n if (length === 0) {\n return undefined;\n }\n var min = Infinity;\n var max = -Infinity;\n for (var i = 0; i < length; i++) {\n var v = values[i];\n if (v instanceof Date) {\n v = v.getTime();\n }\n if (typeof v !== 'number') {\n continue;\n }\n if (v < min) {\n min = v;\n }\n if (v > max) {\n max = v;\n }\n }\n var extent = [min, max];\n if (extent.some(function (v) { return !isFinite(v); })) {\n return undefined;\n }\n return extent;\n}\nfunction normalisedExtent(d, min, max) {\n var _a;\n if (d.length > 2) {\n d = (_a = extent$4(d)) !== null && _a !== void 0 ? _a : [NaN, NaN];\n }\n if (!isNaN(min)) {\n d = [min, d[1]];\n }\n if (!isNaN(max)) {\n d = [d[0], max];\n }\n if (d[0] > d[1]) {\n d = [];\n }\n return d;\n}\n\nvar __decorate$1J = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 Label$1 = /** @class */ (function () {\n function Label() {\n this.enabled = true;\n this.fontSize = 12;\n this.fontFamily = 'Verdana, sans-serif';\n this.fontStyle = undefined;\n this.fontWeight = undefined;\n this.color = 'rgba(70, 70, 70, 1)';\n }\n Label.prototype.getFont = function () {\n return getFont(this);\n };\n __decorate$1J([\n Validate(BOOLEAN)\n ], Label.prototype, \"enabled\", void 0);\n __decorate$1J([\n Validate(NUMBER(0))\n ], Label.prototype, \"fontSize\", void 0);\n __decorate$1J([\n Validate(STRING)\n ], Label.prototype, \"fontFamily\", void 0);\n __decorate$1J([\n Validate(OPT_FONT_STYLE)\n ], Label.prototype, \"fontStyle\", void 0);\n __decorate$1J([\n Validate(OPT_FONT_WEIGHT)\n ], Label.prototype, \"fontWeight\", void 0);\n __decorate$1J([\n Validate(COLOR_STRING)\n ], Label.prototype, \"color\", void 0);\n return Label;\n}());\nfunction calculateLabelRotation(opts) {\n var _a = opts.parallelFlipRotation, parallelFlipRotation = _a === void 0 ? 0 : _a, _b = opts.regularFlipRotation, regularFlipRotation = _b === void 0 ? 0 : _b;\n var configuredRotation = opts.rotation ? normalizeAngle360(toRadians$1(opts.rotation)) : 0;\n var parallelFlipFlag = !configuredRotation && parallelFlipRotation >= 0 && parallelFlipRotation <= Math.PI ? -1 : 1;\n // Flip if the axis rotation angle is in the top hemisphere.\n var regularFlipFlag = !configuredRotation && regularFlipRotation >= 0 && regularFlipRotation <= Math.PI ? -1 : 1;\n var defaultRotation = 0;\n if (opts.parallel) {\n defaultRotation = (parallelFlipFlag * Math.PI) / 2;\n }\n else if (regularFlipFlag === -1) {\n defaultRotation = Math.PI;\n }\n return { configuredRotation: configuredRotation, defaultRotation: defaultRotation, parallelFlipFlag: parallelFlipFlag, regularFlipFlag: regularFlipFlag };\n}\nfunction getLabelSpacing(minSpacing, rotated) {\n if (!isNaN(minSpacing)) {\n return minSpacing;\n }\n return rotated ? 0 : 10;\n}\nfunction getTextBaseline(parallel, labelRotation, sideFlag, parallelFlipFlag) {\n if (parallel && !labelRotation) {\n if (sideFlag * parallelFlipFlag === -1) {\n return 'hanging';\n }\n else {\n return 'bottom';\n }\n }\n return 'middle';\n}\nfunction getTextAlign(parallel, labelRotation, labelAutoRotation, sideFlag, regularFlipFlag) {\n var labelRotated = labelRotation > 0 && labelRotation <= Math.PI;\n var labelAutoRotated = labelAutoRotation > 0 && labelAutoRotation <= Math.PI;\n var alignFlag = labelRotated || labelAutoRotated ? -1 : 1;\n if (parallel) {\n if (labelRotation || labelAutoRotation) {\n if (sideFlag * alignFlag === -1) {\n return 'end';\n }\n }\n else {\n return 'center';\n }\n }\n else if (sideFlag * regularFlipFlag === -1) {\n return 'end';\n }\n return 'start';\n}\nfunction calculateLabelBBox(text, bbox, labelX, labelY, labelMatrix) {\n // Text.computeBBox() does not take into account any of the transformations that have been applied to the label nodes, only the width and height are useful.\n // Rather than taking into account all transformations including those of parent nodes which would be the result of `computeTransformedBBox()`, giving the x and y in the entire axis coordinate space,\n // take into account only the rotation and translation applied to individual label nodes to get the x y coordinates of the labels relative to each other\n // this makes label collision detection a lot simpler\n var width = bbox.width, height = bbox.height;\n var translatedBBox = new BBox(labelX, labelY, 0, 0);\n labelMatrix.transformBBox(translatedBBox, bbox);\n var _a = bbox.x, x = _a === void 0 ? 0 : _a, _b = bbox.y, y = _b === void 0 ? 0 : _b;\n bbox.width = width;\n bbox.height = height;\n return {\n point: {\n x: x,\n y: y,\n size: 0,\n },\n label: {\n width: width,\n height: height,\n text: text,\n },\n };\n}\n\nfunction Default(defaultValue, replaces) {\n if (replaces === void 0) { replaces = [undefined]; }\n return addTransformToInstanceProperty(function (_, __, v) {\n if (replaces.includes(v)) {\n return defaultValue;\n }\n return v;\n });\n}\n\nvar __decorate$1I = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 AxisLabel = /** @class */ (function () {\n function AxisLabel() {\n this.enabled = true;\n /** If set to `false`, axis labels will not be wrapped on multiple lines. */\n this.autoWrap = false;\n /** Used to constrain the width of the label when `autoWrap` is `true`, if the label text width exceeds the `maxWidth`, it will be wrapped on multiple lines automatically. If `maxWidth` is omitted, a default width constraint will be applied. */\n this.maxWidth = undefined;\n /** Used to constrain the height of the multiline label, if the label text height exceeds the `maxHeight`, it will be truncated automatically. If `maxHeight` is omitted, a default height constraint will be applied. */\n this.maxHeight = undefined;\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 * Minimum gap in pixels between the axis labels before being removed to avoid collisions.\n */\n this.minSpacing = NaN;\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 = undefined;\n /**\n * If specified and axis labels may collide, they are rotated to reduce collisions. If the\n * `rotation` property is specified, it takes precedence.\n */\n this.autoRotate = undefined;\n /**\n * Rotation angle to use when autoRotate is applied.\n */\n this.autoRotateAngle = 335;\n /**\n * Avoid axis label collision by automatically reducing the number of ticks displayed. If set to `false`, axis labels may collide.\n */\n this.avoidCollisions = true;\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, it's 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.format = undefined;\n }\n /**\n * The side of the axis line to position the labels on.\n * -1 = left (default)\n * 1 = right\n */\n AxisLabel.prototype.getSideFlag = function () {\n return this.mirrored ? 1 : -1;\n };\n AxisLabel.prototype.getFont = function () {\n return getFont(this);\n };\n __decorate$1I([\n Validate(BOOLEAN)\n ], AxisLabel.prototype, \"enabled\", void 0);\n __decorate$1I([\n Validate(OPT_BOOLEAN)\n ], AxisLabel.prototype, \"autoWrap\", void 0);\n __decorate$1I([\n Validate(OPT_NUMBER(0))\n ], AxisLabel.prototype, \"maxWidth\", void 0);\n __decorate$1I([\n Validate(OPT_NUMBER(0))\n ], AxisLabel.prototype, \"maxHeight\", void 0);\n __decorate$1I([\n Validate(OPT_FONT_STYLE)\n ], AxisLabel.prototype, \"fontStyle\", void 0);\n __decorate$1I([\n Validate(OPT_FONT_WEIGHT)\n ], AxisLabel.prototype, \"fontWeight\", void 0);\n __decorate$1I([\n Validate(NUMBER(1))\n ], AxisLabel.prototype, \"fontSize\", void 0);\n __decorate$1I([\n Validate(STRING)\n ], AxisLabel.prototype, \"fontFamily\", void 0);\n __decorate$1I([\n Validate(NUMBER(0))\n ], AxisLabel.prototype, \"padding\", void 0);\n __decorate$1I([\n Validate(NUMBER_OR_NAN()),\n Default(NaN)\n ], AxisLabel.prototype, \"minSpacing\", void 0);\n __decorate$1I([\n Validate(OPT_COLOR_STRING)\n ], AxisLabel.prototype, \"color\", void 0);\n __decorate$1I([\n Validate(OPT_NUMBER(-360, 360))\n ], AxisLabel.prototype, \"rotation\", void 0);\n __decorate$1I([\n Validate(OPT_BOOLEAN)\n ], AxisLabel.prototype, \"autoRotate\", void 0);\n __decorate$1I([\n Validate(NUMBER(-360, 360))\n ], AxisLabel.prototype, \"autoRotateAngle\", void 0);\n __decorate$1I([\n Validate(BOOLEAN)\n ], AxisLabel.prototype, \"avoidCollisions\", void 0);\n __decorate$1I([\n Validate(BOOLEAN)\n ], AxisLabel.prototype, \"mirrored\", void 0);\n __decorate$1I([\n Validate(BOOLEAN)\n ], AxisLabel.prototype, \"parallel\", void 0);\n __decorate$1I([\n Validate(OPT_STRING)\n ], AxisLabel.prototype, \"format\", void 0);\n return AxisLabel;\n}());\n\nvar __decorate$1H = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 AxisLine = /** @class */ (function () {\n function AxisLine() {\n this.width = 1;\n this.color = 'rgba(195, 195, 195, 1)';\n }\n __decorate$1H([\n Validate(NUMBER(0))\n ], AxisLine.prototype, \"width\", void 0);\n __decorate$1H([\n Validate(OPT_COLOR_STRING)\n ], AxisLine.prototype, \"color\", void 0);\n return AxisLine;\n}());\n\nvar __decorate$1G = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 TICK_COUNT = predicateWithMessage(function (v, ctx) { return NUMBER(0)(v, ctx) || v instanceof TimeInterval; }, \"expecting a tick count Number value or, for a time axis, a Time Interval such as 'agCharts.time.month'\");\nvar OPT_TICK_COUNT = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, TICK_COUNT); }, \"expecting an optional tick count Number value or, for a time axis, a Time Interval such as 'agCharts.time.month'\");\nvar OPT_TICK_INTERVAL = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, function (v, ctx) { return (v !== 0 && NUMBER(0)(v, ctx)) || v instanceof TimeInterval; }); }, \"expecting an optional non-zero positive Number value or, for a time axis, a Time Interval such as 'agCharts.time.month'\");\nvar AxisTick = /** @class */ (function () {\n function AxisTick() {\n this.enabled = true;\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 = undefined;\n this.interval = undefined;\n this.values = undefined;\n this.minSpacing = NaN;\n }\n __decorate$1G([\n Validate(BOOLEAN)\n ], AxisTick.prototype, \"enabled\", void 0);\n __decorate$1G([\n Validate(NUMBER(0))\n ], AxisTick.prototype, \"width\", void 0);\n __decorate$1G([\n Validate(NUMBER(0))\n ], AxisTick.prototype, \"size\", void 0);\n __decorate$1G([\n Validate(OPT_COLOR_STRING)\n ], AxisTick.prototype, \"color\", void 0);\n __decorate$1G([\n Validate(OPT_TICK_COUNT),\n Deprecated('Use tick.interval or tick.minSpacing and tick.maxSpacing instead')\n ], AxisTick.prototype, \"count\", void 0);\n __decorate$1G([\n Validate(OPT_TICK_INTERVAL)\n ], AxisTick.prototype, \"interval\", void 0);\n __decorate$1G([\n Validate(OPT_ARRAY())\n ], AxisTick.prototype, \"values\", void 0);\n __decorate$1G([\n Validate(AND(NUMBER_OR_NAN(1), LESS_THAN('maxSpacing'))),\n Default(NaN)\n ], AxisTick.prototype, \"minSpacing\", void 0);\n return AxisTick;\n}());\n\nvar StateMachine = /** @class */ (function () {\n function StateMachine(initialState, states) {\n this.state = initialState;\n this.states = states;\n if (StateMachine.DEBUG())\n Logger.debug(\"%c\" + this.constructor.name + \" | init -> \" + initialState, 'color: green');\n }\n StateMachine.prototype.transition = function (event, data) {\n var _a, _b, _c, _d, _e;\n var currentStateConfig = this.states[this.state];\n var destinationTransition = (_a = currentStateConfig === null || currentStateConfig === void 0 ? void 0 : currentStateConfig.on) === null || _a === void 0 ? void 0 : _a[event];\n if (!destinationTransition) {\n if (StateMachine.DEBUG()) {\n Logger.debug(\"%c\" + this.constructor.name + \" | \" + this.state + \" -> \" + event + \" -> \" + this.state, 'color: grey');\n }\n return;\n }\n var destinationState = destinationTransition.target;\n var destinationStateConfig = this.states[destinationState];\n if (StateMachine.DEBUG()) {\n Logger.debug(\"%c\" + this.constructor.name + \" | \" + this.state + \" -> \" + event + \" -> \" + destinationState, 'color: green');\n }\n destinationTransition.action(data);\n (_c = (_b = currentStateConfig === null || currentStateConfig === void 0 ? void 0 : currentStateConfig.actions) === null || _b === void 0 ? void 0 : _b.onExit) === null || _c === void 0 ? void 0 : _c.call(_b);\n (_e = (_d = destinationStateConfig === null || destinationStateConfig === void 0 ? void 0 : destinationStateConfig.actions) === null || _d === void 0 ? void 0 : _d.onEnter) === null || _e === void 0 ? void 0 : _e.call(_d);\n this.state = destinationState;\n return this.state;\n };\n StateMachine.DEBUG = function () { var _a; return (_a = [true, 'animation'].includes(windowValue('agChartsDebug'))) !== null && _a !== void 0 ? _a : false; };\n return StateMachine;\n}());\n\nvar __extends$G = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$i = (undefined && undefined.__assign) || function () {\n __assign$i = 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$i.apply(this, arguments);\n};\nvar __decorate$1F = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 __rest$3 = (undefined && undefined.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __values$c = (undefined && undefined.__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$l = (undefined && undefined.__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 __spreadArray$c = (undefined && undefined.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar GRID_STYLE_KEYS = ['stroke', 'lineDash'];\nvar GRID_STYLE = predicateWithMessage(ARRAY(undefined, function (o) {\n for (var key in o) {\n if (!GRID_STYLE_KEYS.includes(key)) {\n return false;\n }\n }\n return true;\n}), \"expecting an Array of objects with gridline style properties such as 'stroke' and 'lineDash'\");\nvar Tags;\n(function (Tags) {\n Tags[Tags[\"TickLine\"] = 0] = \"TickLine\";\n Tags[Tags[\"TickLabel\"] = 1] = \"TickLabel\";\n Tags[Tags[\"GridLine\"] = 2] = \"GridLine\";\n Tags[Tags[\"GridArc\"] = 3] = \"GridArc\";\n Tags[Tags[\"AxisLine\"] = 4] = \"AxisLine\";\n})(Tags || (Tags = {}));\nvar TickGenerationType;\n(function (TickGenerationType) {\n TickGenerationType[TickGenerationType[\"CREATE\"] = 0] = \"CREATE\";\n TickGenerationType[TickGenerationType[\"CREATE_SECONDARY\"] = 1] = \"CREATE_SECONDARY\";\n TickGenerationType[TickGenerationType[\"FILTER\"] = 2] = \"FILTER\";\n TickGenerationType[TickGenerationType[\"VALUES\"] = 3] = \"VALUES\";\n})(TickGenerationType || (TickGenerationType = {}));\nvar AxisStateMachine = /** @class */ (function (_super) {\n __extends$G(AxisStateMachine, _super);\n function AxisStateMachine() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return AxisStateMachine;\n}(StateMachine));\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(moduleCtx, scale) {\n var _this = this;\n this.moduleCtx = moduleCtx;\n this.id = createId$1(this);\n this.nice = true;\n this.dataDomain = [];\n this.keys = [];\n this.boundSeries = [];\n this.includeInvisibleDomains = false;\n this.axisGroup = new Group({ name: this.id + \"-axis\", zIndex: Layers.AXIS_ZINDEX });\n this.lineNode = this.axisGroup.appendChild(new Line());\n this.tickLineGroup = this.axisGroup.appendChild(new Group({ name: this.id + \"-Axis-tick-lines\", zIndex: Layers.AXIS_ZINDEX }));\n this.tickLabelGroup = this.axisGroup.appendChild(new Group({ name: this.id + \"-Axis-tick-labels\", zIndex: Layers.AXIS_ZINDEX }));\n this.crossLineGroup = new Group({ name: this.id + \"-CrossLines\" });\n this.gridGroup = new Group({ name: this.id + \"-Axis-grid\" });\n this.gridLineGroup = this.gridGroup.appendChild(new Group({\n name: this.id + \"-gridLines\",\n zIndex: Layers.AXIS_GRID_ZINDEX,\n }));\n this.tickLineGroupSelection = Selection.select(this.tickLineGroup, Line, false);\n this.tickLabelGroupSelection = Selection.select(this.tickLabelGroup, Text, false);\n this.gridLineGroupSelection = Selection.select(this.gridLineGroup, Line, false);\n this.line = new AxisLine();\n this.tick = this.createTick();\n this.label = new AxisLabel();\n this.translation = { x: 0, y: 0 };\n this.rotation = 0; // axis rotation angle in degrees\n this.layout = {\n label: {\n fractionDigits: 0,\n padding: this.label.padding,\n format: this.label.format,\n },\n };\n this.modules = {};\n this.destroyFns = [];\n this.range = [0, 1];\n this.visibleRange = [0, 1];\n this.title = undefined;\n this._titleCaption = new Caption();\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 {\n stroke: 'rgba(219, 219, 219, 1)',\n lineDash: [4, 2],\n },\n ];\n this.fractionDigits = 0;\n /**\n * The distance between the grid ticks and the axis ticks.\n */\n this.gridPadding = 0;\n /**\n * Is used to avoid collisions between axis labels and series.\n */\n this.seriesAreaPadding = 0;\n this.maxThickness = Infinity;\n this._scale = scale;\n this.refreshScale();\n this._titleCaption.node.rotation = -Math.PI / 2;\n this.axisGroup.appendChild(this._titleCaption.node);\n var axisHoverHandle = moduleCtx.interactionManager.addListener('hover', function (e) { return _this.checkAxisHover(e); });\n this.destroyFns.push(function () { return moduleCtx.interactionManager.removeListener(axisHoverHandle); });\n this.animationManager = moduleCtx.animationManager;\n this.animationState = new AxisStateMachine('empty', {\n empty: {\n on: {\n update: {\n target: 'align',\n action: function () { return _this.resetSelectionNodes(); },\n },\n },\n },\n align: {\n on: {\n update: {\n target: 'ready',\n action: function () { return _this.resetSelectionNodes(); },\n },\n },\n },\n ready: {\n on: {\n update: {\n target: 'ready',\n action: function (data) { return _this.animateReadyUpdate(data); },\n },\n },\n },\n });\n this._crossLines = [];\n this.assignCrossLineArrayConstructor(this._crossLines);\n }\n Object.defineProperty(Axis.prototype, \"scale\", {\n get: function () {\n return this._scale;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Axis.prototype, \"type\", {\n get: function () {\n var _a;\n return (_a = this.constructor.type) !== null && _a !== void 0 ? _a : '';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Axis.prototype, \"crossLines\", {\n get: function () {\n return this._crossLines;\n },\n set: function (value) {\n var _this = this;\n var _a, _b;\n (_a = this._crossLines) === null || _a === void 0 ? void 0 : _a.forEach(function (crossLine) { return _this.detachCrossLine(crossLine); });\n if (value) {\n this.assignCrossLineArrayConstructor(value);\n }\n this._crossLines = value;\n (_b = this._crossLines) === null || _b === void 0 ? void 0 : _b.forEach(function (crossLine) {\n _this.attachCrossLine(crossLine);\n _this.initCrossLine(crossLine);\n });\n },\n enumerable: false,\n configurable: true\n });\n Axis.prototype.attachCrossLine = function (crossLine) {\n this.crossLineGroup.appendChild(crossLine.group);\n };\n Axis.prototype.detachCrossLine = function (crossLine) {\n this.crossLineGroup.removeChild(crossLine.group);\n };\n Axis.prototype.destroy = function () {\n var e_1, _a;\n try {\n for (var _b = __values$c(Object.entries(this.modules)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var _d = __read$l(_c.value, 2), key = _d[0], module = _d[1];\n module.instance.destroy();\n delete this.modules[key];\n delete this[key];\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 this.destroyFns.forEach(function (f) { return f(); });\n };\n Axis.prototype.refreshScale = function () {\n var _this = this;\n var _a;\n this.range = this.scale.range.slice();\n (_a = this.crossLines) === null || _a === void 0 ? void 0 : _a.forEach(function (crossLine) {\n _this.initCrossLine(crossLine);\n });\n };\n Axis.prototype.updateRange = function () {\n var _a;\n var _b = this, rr = _b.range, vr = _b.visibleRange, scale = _b.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 (_a = this.crossLines) === null || _a === void 0 ? void 0 : _a.forEach(function (crossLine) {\n crossLine.clippedRange = [rr[0], rr[1]];\n });\n };\n Axis.prototype.setCrossLinesVisible = function (visible) {\n this.crossLineGroup.visible = visible;\n };\n Axis.prototype.attachAxis = function (node) {\n node.appendChild(this.gridGroup);\n node.appendChild(this.axisGroup);\n node.appendChild(this.crossLineGroup);\n };\n Axis.prototype.detachAxis = function (node) {\n node.removeChild(this.gridGroup);\n node.removeChild(this.axisGroup);\n node.removeChild(this.crossLineGroup);\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 Axis.prototype.onLabelFormatChange = function (ticks, format) {\n var _a = this, scale = _a.scale, fractionDigits = _a.fractionDigits;\n var logScale = scale instanceof LogScale;\n var defaultLabelFormatter = !logScale && fractionDigits > 0\n ? function (x) { return (typeof x === 'number' ? x.toFixed(fractionDigits) : String(x)); }\n : function (x) { return String(x); };\n if (format && scale && scale.tickFormat) {\n try {\n this.labelFormatter = scale.tickFormat({\n ticks: ticks,\n specifier: format,\n });\n }\n catch (e) {\n this.labelFormatter = defaultLabelFormatter;\n Logger.warnOnce(\"the axis label format string \" + format + \" is invalid. No formatting will be applied\");\n }\n }\n else {\n this.labelFormatter = defaultLabelFormatter;\n }\n };\n Axis.prototype.setDomain = function () {\n var _a;\n var _b = this, scale = _b.scale, dataDomain = _b.dataDomain, tickValues = _b.tick.values;\n if (tickValues && scale instanceof ContinuousScale) {\n var _c = __read$l((_a = extent$4(tickValues)) !== null && _a !== void 0 ? _a : [Infinity, -Infinity], 2), tickMin = _c[0], tickMax = _c[1];\n var min = Math.min(scale.fromDomain(dataDomain[0]), tickMin);\n var max = Math.max(scale.fromDomain(dataDomain[1]), tickMax);\n scale.domain = [scale.toDomain(min), scale.toDomain(max)];\n }\n else {\n scale.domain = dataDomain;\n }\n };\n Axis.prototype.setTickInterval = function (interval) {\n var _a;\n this.scale.interval = (_a = this.tick.interval) !== null && _a !== void 0 ? _a : interval;\n };\n Axis.prototype.setTickCount = function (count, minTickCount, maxTickCount) {\n var scale = this.scale;\n if (!(count && scale instanceof ContinuousScale)) {\n return;\n }\n if (typeof count === 'number') {\n scale.tickCount = count;\n scale.minTickCount = minTickCount !== null && minTickCount !== void 0 ? minTickCount : 0;\n scale.maxTickCount = maxTickCount !== null && maxTickCount !== void 0 ? maxTickCount : Infinity;\n return;\n }\n if (scale instanceof TimeScale$1) {\n this.setTickInterval(count);\n }\n };\n Object.defineProperty(Axis.prototype, \"gridLength\", {\n get: function () {\n return this._gridLength;\n },\n set: function (value) {\n var _this = this;\n var _a;\n // Was visible and now invisible, or was invisible and now visible.\n if ((this._gridLength && !value) || (!this._gridLength && value)) {\n this.gridLineGroupSelection = this.gridLineGroupSelection.clear();\n }\n this._gridLength = value;\n (_a = this.crossLines) === null || _a === void 0 ? void 0 : _a.forEach(function (crossLine) {\n _this.initCrossLine(crossLine);\n });\n },\n enumerable: false,\n configurable: true\n });\n Axis.prototype.createTick = function () {\n return new AxisTick();\n };\n Axis.prototype.checkAxisHover = function (event) {\n var bbox = this.computeBBox();\n var isInAxis = bbox.containsPoint(event.offsetX, event.offsetY);\n if (!isInAxis)\n return;\n this.moduleCtx.chartEventManager.axisHover(this.id, this.direction);\n };\n /**\n * Creates/removes/updates the scene graph nodes that constitute the axis.\n */\n Axis.prototype.update = function (primaryTickCount) {\n var previous = this.tickLabelGroupSelection.nodes().map(function (node) { return node.datum.tickId; });\n var _a = this.calculateRotations(), rotation = _a.rotation, parallelFlipRotation = _a.parallelFlipRotation, regularFlipRotation = _a.regularFlipRotation;\n var sideFlag = this.label.getSideFlag();\n var labelX = sideFlag * (this.tick.size + this.label.padding + this.seriesAreaPadding);\n this.updateScale();\n this.updatePosition({ rotation: rotation, sideFlag: sideFlag });\n this.updateLine();\n var _b = this.generateTicks({\n primaryTickCount: primaryTickCount,\n parallelFlipRotation: parallelFlipRotation,\n regularFlipRotation: regularFlipRotation,\n labelX: labelX,\n sideFlag: sideFlag,\n }), tickData = _b.tickData, combinedRotation = _b.combinedRotation, textBaseline = _b.textBaseline, textAlign = _b.textAlign, ticksResult = __rest$3(_b, [\"tickData\", \"combinedRotation\", \"textBaseline\", \"textAlign\"]);\n this.updateSelections(tickData.ticks);\n if (this.animationManager.skipAnimations) {\n this.resetSelectionNodes();\n }\n else {\n var diff = this.calculateUpdateDiff(previous, tickData);\n this.animationState.transition('update', diff);\n }\n this.updateLabels({\n tickLabelGroupSelection: this.tickLabelGroupSelection,\n combinedRotation: combinedRotation,\n textBaseline: textBaseline,\n textAlign: textAlign,\n labelX: labelX,\n });\n this.updateVisibility();\n this.updateGridLines(sideFlag);\n this.updateTickLines(sideFlag);\n this.updateTitle({ anyTickVisible: tickData.ticks.length > 0, sideFlag: sideFlag });\n this.updateCrossLines({ rotation: rotation, parallelFlipRotation: parallelFlipRotation, regularFlipRotation: regularFlipRotation, sideFlag: sideFlag });\n this.updateLayoutState();\n primaryTickCount = ticksResult.primaryTickCount;\n return primaryTickCount;\n };\n Axis.prototype.updateLayoutState = function () {\n this.layout.label = {\n fractionDigits: this.fractionDigits,\n padding: this.label.padding,\n format: this.label.format,\n };\n };\n Axis.prototype.updateScale = function () {\n this.updateRange();\n this.calculateDomain();\n this.setDomain();\n this.setTickInterval(this.tick.interval);\n var _a = this, scale = _a.scale, nice = _a.nice;\n if (!(scale instanceof ContinuousScale)) {\n return;\n }\n this.setTickCount(this.tick.count);\n scale.nice = nice;\n scale.update();\n };\n Axis.prototype.calculateRotations = function () {\n var rotation = toRadians$1(this.rotation);\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 regularFlipRotation = normalizeAngle360(rotation - Math.PI / 2);\n return { rotation: rotation, parallelFlipRotation: parallelFlipRotation, regularFlipRotation: regularFlipRotation };\n };\n Axis.prototype.generateTicks = function (_a) {\n var e_2, _b, _c;\n var _d;\n var primaryTickCount = _a.primaryTickCount, parallelFlipRotation = _a.parallelFlipRotation, regularFlipRotation = _a.regularFlipRotation, labelX = _a.labelX, sideFlag = _a.sideFlag;\n var _e = this, scale = _e.scale, tick = _e.tick, _f = _e.label, parallel = _f.parallel, rotation = _f.rotation, fontFamily = _f.fontFamily, fontSize = _f.fontSize, fontStyle = _f.fontStyle, fontWeight = _f.fontWeight;\n var secondaryAxis = primaryTickCount !== undefined;\n var _g = calculateLabelRotation({\n rotation: rotation,\n parallel: parallel,\n regularFlipRotation: regularFlipRotation,\n parallelFlipRotation: parallelFlipRotation,\n }), defaultRotation = _g.defaultRotation, configuredRotation = _g.configuredRotation, parallelFlipFlag = _g.parallelFlipFlag, regularFlipFlag = _g.regularFlipFlag;\n var initialRotation = configuredRotation + defaultRotation;\n var labelMatrix = new Matrix();\n var maxTickCount = this.estimateTickCount({\n minSpacing: tick.minSpacing,\n maxSpacing: (_d = tick.maxSpacing) !== null && _d !== void 0 ? _d : NaN,\n }).maxTickCount;\n var continuous = scale instanceof ContinuousScale;\n var maxIterations = tick.count || !continuous || isNaN(maxTickCount) ? 10 : maxTickCount;\n var textAlign = getTextAlign(parallel, configuredRotation, 0, sideFlag, regularFlipFlag);\n var textBaseline = getTextBaseline(parallel, configuredRotation, sideFlag, parallelFlipFlag);\n var textProps = {\n fontFamily: fontFamily,\n fontSize: fontSize,\n fontStyle: fontStyle,\n fontWeight: fontWeight,\n textBaseline: textBaseline,\n textAlign: textAlign,\n };\n var tickData = {\n rawTicks: [],\n ticks: [],\n labelCount: 0,\n };\n var index = 0;\n var autoRotation = 0;\n var labelOverlap = true;\n var terminate = false;\n while (labelOverlap && index <= maxIterations) {\n if (terminate) {\n break;\n }\n autoRotation = 0;\n textAlign = getTextAlign(parallel, configuredRotation, 0, sideFlag, regularFlipFlag);\n var tickStrategies = this.getTickStrategies({ secondaryAxis: secondaryAxis, index: index });\n try {\n for (var tickStrategies_1 = (e_2 = void 0, __values$c(tickStrategies)), tickStrategies_1_1 = tickStrategies_1.next(); !tickStrategies_1_1.done; tickStrategies_1_1 = tickStrategies_1.next()) {\n var strategy = tickStrategies_1_1.value;\n (_c = strategy({\n index: index,\n tickData: tickData,\n textProps: textProps,\n labelOverlap: labelOverlap,\n terminate: terminate,\n primaryTickCount: primaryTickCount,\n }), tickData = _c.tickData, index = _c.index, autoRotation = _c.autoRotation, terminate = _c.terminate);\n var ticksResult = tickData.ticks;\n textAlign = getTextAlign(parallel, configuredRotation, autoRotation, sideFlag, regularFlipFlag);\n var rotated = configuredRotation !== 0 || autoRotation !== 0;\n var rotation_1 = initialRotation + autoRotation;\n labelOverlap = this.checkLabelOverlap(rotation_1, rotated, labelMatrix, ticksResult, labelX, __assign$i(__assign$i({}, textProps), { textAlign: textAlign }));\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (tickStrategies_1_1 && !tickStrategies_1_1.done && (_b = tickStrategies_1.return)) _b.call(tickStrategies_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n var combinedRotation = defaultRotation + configuredRotation + autoRotation;\n if (!secondaryAxis && tickData.rawTicks.length > 0) {\n primaryTickCount = tickData.rawTicks.length;\n }\n return { tickData: tickData, primaryTickCount: primaryTickCount, combinedRotation: combinedRotation, textBaseline: textBaseline, textAlign: textAlign };\n };\n Axis.prototype.getTickStrategies = function (_a) {\n var _this = this;\n var index = _a.index, secondaryAxis = _a.secondaryAxis;\n var _b = this, scale = _b.scale, label = _b.label, tick = _b.tick;\n var continuous = scale instanceof ContinuousScale;\n var avoidLabelCollisions = label.enabled && label.avoidCollisions;\n var filterTicks = !(continuous && this.tick.count === undefined) && index !== 0 && avoidLabelCollisions;\n var autoRotate = label.autoRotate === true && label.rotation === undefined;\n var strategies = [];\n var tickGenerationType;\n if (this.tick.values) {\n tickGenerationType = TickGenerationType.VALUES;\n }\n else if (secondaryAxis) {\n tickGenerationType = TickGenerationType.CREATE_SECONDARY;\n }\n else if (filterTicks) {\n tickGenerationType = TickGenerationType.FILTER;\n }\n else {\n tickGenerationType = TickGenerationType.CREATE;\n }\n var tickGenerationStrategy = function (_a) {\n var index = _a.index, tickData = _a.tickData, primaryTickCount = _a.primaryTickCount, terminate = _a.terminate;\n return _this.createTickData(tickGenerationType, index, tickData, terminate, primaryTickCount);\n };\n strategies.push(tickGenerationStrategy);\n if (!continuous && !isNaN(tick.minSpacing)) {\n var tickFilterStrategy = function (_a) {\n var index = _a.index, tickData = _a.tickData, primaryTickCount = _a.primaryTickCount, terminate = _a.terminate;\n return _this.createTickData(TickGenerationType.FILTER, index, tickData, terminate, primaryTickCount);\n };\n strategies.push(tickFilterStrategy);\n }\n if (!avoidLabelCollisions) {\n return strategies;\n }\n if (label.autoWrap) {\n var autoWrapStrategy = function (_a) {\n var index = _a.index, tickData = _a.tickData, textProps = _a.textProps;\n return _this.wrapLabels(tickData, index, textProps);\n };\n strategies.push(autoWrapStrategy);\n }\n else if (autoRotate) {\n var autoRotateStrategy = function (_a) {\n var index = _a.index, tickData = _a.tickData, labelOverlap = _a.labelOverlap, terminate = _a.terminate;\n return ({\n index: index,\n tickData: tickData,\n autoRotation: _this.getAutoRotation(labelOverlap),\n terminate: terminate,\n });\n };\n strategies.push(autoRotateStrategy);\n }\n return strategies;\n };\n Axis.prototype.createTickData = function (tickGenerationType, index, tickData, terminate, primaryTickCount) {\n var _a, _b, _c;\n var _d = this, scale = _d.scale, tick = _d.tick;\n var _e = this.estimateTickCount({\n minSpacing: tick.minSpacing,\n maxSpacing: (_a = tick.maxSpacing) !== null && _a !== void 0 ? _a : NaN,\n }), maxTickCount = _e.maxTickCount, minTickCount = _e.minTickCount, defaultTickCount = _e.defaultTickCount;\n var continuous = scale instanceof ContinuousScale;\n var maxIterations = tick.count || !continuous || isNaN(maxTickCount) ? 10 : maxTickCount;\n var tickCount = (_b = tick.count) !== null && _b !== void 0 ? _b : (continuous ? Math.max(defaultTickCount - index, minTickCount) : maxTickCount);\n var regenerateTicks = tick.interval === undefined &&\n tick.values === undefined &&\n tick.count === undefined &&\n tickCount > minTickCount &&\n (continuous || tickGenerationType === TickGenerationType.FILTER);\n var unchanged = true;\n while (unchanged && index <= maxIterations) {\n var prevTicks = tickData.rawTicks;\n tickCount = (_c = tick.count) !== null && _c !== void 0 ? _c : (continuous ? Math.max(defaultTickCount - index, minTickCount) : maxTickCount);\n var _f = this.getTicks({\n tickGenerationType: tickGenerationType,\n previousTicks: prevTicks,\n tickCount: tickCount,\n minTickCount: minTickCount,\n maxTickCount: maxTickCount,\n primaryTickCount: primaryTickCount,\n }), rawTicks = _f.rawTicks, ticks = _f.ticks, labelCount = _f.labelCount;\n tickData.rawTicks = rawTicks;\n tickData.ticks = ticks;\n tickData.labelCount = labelCount;\n unchanged = regenerateTicks ? areArrayNumbersEqual(rawTicks, prevTicks) : false;\n index++;\n }\n var shouldTerminate = tick.interval !== undefined || tick.values !== undefined;\n terminate || (terminate = shouldTerminate);\n return { tickData: tickData, index: index, autoRotation: 0, terminate: terminate };\n };\n Axis.prototype.checkLabelOverlap = function (rotation, rotated, labelMatrix, tickData, labelX, textProps) {\n Matrix.updateTransformMatrix(labelMatrix, 1, 1, rotation, 0, 0);\n var labelData = this.createLabelData(tickData, labelX, textProps, labelMatrix);\n var labelSpacing = getLabelSpacing(this.label.minSpacing, rotated);\n return axisLabelsOverlap(labelData, labelSpacing);\n };\n Axis.prototype.createLabelData = function (tickData, labelX, textProps, labelMatrix) {\n var e_3, _a;\n var labelData = [];\n try {\n for (var tickData_1 = __values$c(tickData), tickData_1_1 = tickData_1.next(); !tickData_1_1.done; tickData_1_1 = tickData_1.next()) {\n var tickDatum = tickData_1_1.value;\n var tickLabel = tickDatum.tickLabel, translationY = tickDatum.translationY;\n if (tickLabel === '' || tickLabel == undefined) {\n // skip user hidden ticks\n continue;\n }\n var lines = splitText(tickLabel);\n var _b = measureText(lines, labelX, translationY, textProps), width = _b.width, height = _b.height;\n var bbox = new BBox(labelX, translationY, width, height);\n var labelDatum = calculateLabelBBox(tickLabel, bbox, labelX, translationY, labelMatrix);\n labelData.push(labelDatum);\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (tickData_1_1 && !tickData_1_1.done && (_a = tickData_1.return)) _a.call(tickData_1);\n }\n finally { if (e_3) throw e_3.error; }\n }\n return labelData;\n };\n Axis.prototype.getAutoRotation = function (labelOveralap) {\n return labelOveralap ? normalizeAngle360(toRadians$1(this.label.autoRotateAngle)) : 0;\n };\n Axis.prototype.getTicks = function (_a) {\n var _b;\n var tickGenerationType = _a.tickGenerationType, previousTicks = _a.previousTicks, tickCount = _a.tickCount, minTickCount = _a.minTickCount, maxTickCount = _a.maxTickCount, primaryTickCount = _a.primaryTickCount;\n var scale = this.scale;\n var rawTicks = [];\n switch (tickGenerationType) {\n case TickGenerationType.VALUES:\n rawTicks = this.tick.values;\n break;\n case TickGenerationType.CREATE_SECONDARY:\n // `updateSecondaryAxisTicks` mutates `scale.domain` based on `primaryTickCount`\n rawTicks = this.updateSecondaryAxisTicks(primaryTickCount);\n break;\n case TickGenerationType.FILTER:\n rawTicks = this.filterTicks(previousTicks, tickCount);\n break;\n default:\n rawTicks = this.createTicks(tickCount, minTickCount, maxTickCount);\n break;\n }\n // When the scale domain or the ticks change, the label format may change\n this.onLabelFormatChange(rawTicks, this.label.format);\n // `ticks instanceof NumericTicks` doesn't work here, so we feature detect.\n this.fractionDigits = rawTicks.fractionDigits >= 0 ? rawTicks.fractionDigits : 0;\n var halfBandwidth = ((_b = this.scale.bandwidth) !== null && _b !== void 0 ? _b : 0) / 2;\n var ticks = [];\n var labelCount = 0;\n var tickIdCounts = new Map();\n for (var i = 0; i < rawTicks.length; i++) {\n var rawTick = rawTicks[i];\n var translationY = scale.convert(rawTick) + halfBandwidth;\n var tickLabel = this.formatTick(rawTick, i);\n // Create a tick id from the label, or as an increment of the last label if this tick label is blank\n var tickId = tickLabel;\n if (tickIdCounts.has(tickId)) {\n var count = tickIdCounts.get(tickId);\n tickIdCounts.set(tickId, count + 1);\n tickId = tickId + \"_\" + count;\n }\n else {\n tickIdCounts.set(tickId, 1);\n }\n ticks.push({ tick: rawTick, tickId: tickId, tickLabel: tickLabel, translationY: translationY });\n if (tickLabel === '' || tickLabel == undefined) {\n continue;\n }\n labelCount++;\n }\n return { rawTicks: rawTicks, ticks: ticks, labelCount: labelCount };\n };\n Axis.prototype.filterTicks = function (ticks, tickCount) {\n var _a;\n var tickSpacing = !isNaN(this.tick.minSpacing) || !isNaN((_a = this.tick.maxSpacing) !== null && _a !== void 0 ? _a : NaN);\n var keepEvery = tickSpacing ? Math.ceil(ticks.length / tickCount) : 2;\n return ticks.filter(function (_, i) { return i % keepEvery === 0; });\n };\n Axis.prototype.createTicks = function (tickCount, minTickCount, maxTickCount) {\n var _a, _b, _c;\n this.setTickCount(tickCount, minTickCount, maxTickCount);\n return (_c = (_b = (_a = this.scale).ticks) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : [];\n };\n Axis.prototype.estimateTickCount = function (_a) {\n var minSpacing = _a.minSpacing, maxSpacing = _a.maxSpacing;\n var availableRange = this.calculateAvailableRange();\n var defaultMinSpacing = Math.max(Axis.defaultTickMinSpacing, availableRange / ContinuousScale.defaultMaxTickCount);\n if (isNaN(minSpacing) && isNaN(maxSpacing)) {\n minSpacing = defaultMinSpacing;\n maxSpacing = availableRange;\n if (minSpacing > maxSpacing) {\n // Take automatic minSpacing if there is a conflict.\n maxSpacing = minSpacing;\n }\n }\n else if (isNaN(minSpacing)) {\n minSpacing = defaultMinSpacing;\n if (minSpacing > maxSpacing) {\n // Take user-suplied maxSpacing if there is a conflict.\n minSpacing = maxSpacing;\n }\n }\n else if (isNaN(maxSpacing)) {\n maxSpacing = availableRange;\n if (minSpacing > maxSpacing) {\n // Take user-suplied minSpacing if there is a conflict.\n maxSpacing = minSpacing;\n }\n }\n var maxTickCount = Math.max(1, Math.floor(availableRange / minSpacing));\n var minTickCount = Math.min(maxTickCount, Math.ceil(availableRange / maxSpacing));\n var defaultTickCount = ContinuousScale.defaultTickCount;\n if (defaultTickCount > maxTickCount) {\n defaultTickCount = maxTickCount;\n }\n else if (defaultTickCount < minTickCount) {\n defaultTickCount = minTickCount;\n }\n return { minTickCount: minTickCount, maxTickCount: maxTickCount, defaultTickCount: defaultTickCount };\n };\n Axis.prototype.updateVisibility = function () {\n var requestedRange = this.range;\n var requestedRangeMin = Math.min.apply(Math, __spreadArray$c([], __read$l(requestedRange)));\n var requestedRangeMax = Math.max.apply(Math, __spreadArray$c([], __read$l(requestedRange)));\n var visibleFn = function (node) {\n var min = Math.floor(requestedRangeMin);\n var max = Math.ceil(requestedRangeMax);\n if (min === max) {\n node.visible = false;\n return;\n }\n // Fix an effect of rounding error\n if (node.translationY >= min - 1 && node.translationY < min) {\n node.translationY = min;\n }\n if (node.translationY > max && node.translationY <= max + 1) {\n node.translationY = max;\n }\n var visible = node.translationY >= min && node.translationY <= max;\n node.visible = visible;\n };\n var _a = this, gridLineGroupSelection = _a.gridLineGroupSelection, tickLineGroupSelection = _a.tickLineGroupSelection, tickLabelGroupSelection = _a.tickLabelGroupSelection;\n gridLineGroupSelection.each(visibleFn);\n tickLineGroupSelection.each(visibleFn);\n tickLabelGroupSelection.each(visibleFn);\n this.tickLineGroup.visible = this.tick.enabled;\n this.tickLabelGroup.visible = this.label.enabled;\n };\n Axis.prototype.updateCrossLines = function (_a) {\n var _this = this;\n var _b;\n var rotation = _a.rotation, parallelFlipRotation = _a.parallelFlipRotation, regularFlipRotation = _a.regularFlipRotation, sideFlag = _a.sideFlag;\n var anySeriesActive = this.isAnySeriesActive();\n (_b = this.crossLines) === null || _b === void 0 ? void 0 : _b.forEach(function (crossLine) {\n var _a;\n crossLine.sideFlag = -sideFlag;\n crossLine.direction = rotation === -Math.PI / 2 ? ChartAxisDirection.X : ChartAxisDirection.Y;\n crossLine.label.parallel = (_a = crossLine.label.parallel) !== null && _a !== void 0 ? _a : _this.label.parallel;\n crossLine.parallelFlipRotation = parallelFlipRotation;\n crossLine.regularFlipRotation = regularFlipRotation;\n crossLine.update(anySeriesActive);\n });\n };\n Axis.prototype.updateTickLines = function (sideFlag) {\n var tick = this.tick;\n this.tickLineGroupSelection.each(function (line) {\n line.strokeWidth = tick.width;\n line.stroke = tick.color;\n line.x1 = sideFlag * tick.size;\n line.x2 = 0;\n line.y1 = 0;\n line.y2 = 0;\n });\n };\n Axis.prototype.calculateAvailableRange = function () {\n var requestedRange = this.range;\n var min = Math.min.apply(Math, __spreadArray$c([], __read$l(requestedRange)));\n var max = Math.max.apply(Math, __spreadArray$c([], __read$l(requestedRange)));\n return max - min;\n };\n Axis.prototype.calculateDomain = function () {\n var e_4, _a, _b;\n var _c = this, direction = _c.direction, boundSeries = _c.boundSeries, includeInvisibleDomains = _c.includeInvisibleDomains;\n if (this.linkedTo) {\n this.dataDomain = this.linkedTo.dataDomain;\n }\n else {\n var domains = [];\n var visibleSeries = boundSeries.filter(function (s) { return includeInvisibleDomains || s.isEnabled(); });\n try {\n for (var visibleSeries_1 = __values$c(visibleSeries), visibleSeries_1_1 = visibleSeries_1.next(); !visibleSeries_1_1.done; visibleSeries_1_1 = visibleSeries_1.next()) {\n var series = visibleSeries_1_1.value;\n domains.push(series.getDomain(direction));\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (visibleSeries_1_1 && !visibleSeries_1_1.done && (_a = visibleSeries_1.return)) _a.call(visibleSeries_1);\n }\n finally { if (e_4) throw e_4.error; }\n }\n var domain = (_b = new Array()).concat.apply(_b, __spreadArray$c([], __read$l(domains)));\n this.dataDomain = this.normaliseDataDomain(domain);\n }\n };\n Axis.prototype.updatePosition = function (_a) {\n var rotation = _a.rotation, sideFlag = _a.sideFlag;\n var _b = this, crossLineGroup = _b.crossLineGroup, axisGroup = _b.axisGroup, gridGroup = _b.gridGroup, translation = _b.translation, gridLineGroupSelection = _b.gridLineGroupSelection, gridPadding = _b.gridPadding, gridLength = _b.gridLength;\n var translationX = Math.floor(translation.x);\n var translationY = Math.floor(translation.y);\n crossLineGroup.translationX = translationX;\n crossLineGroup.translationY = translationY;\n crossLineGroup.rotation = rotation;\n axisGroup.translationX = translationX;\n axisGroup.translationY = translationY;\n axisGroup.rotation = rotation;\n gridGroup.translationX = translationX;\n gridGroup.translationY = translationY;\n gridGroup.rotation = rotation;\n gridLineGroupSelection.each(function (line) {\n line.x1 = gridPadding;\n line.x2 = -sideFlag * gridLength + gridPadding;\n line.y1 = 0;\n line.y2 = 0;\n });\n };\n Axis.prototype.updateSecondaryAxisTicks = function (_primaryTickCount) {\n throw new Error('AG Charts - unexpected call to updateSecondaryAxisTicks() - check axes configuration.');\n };\n Axis.prototype.updateSelections = function (data) {\n var gridData = this.gridLength ? data : [];\n var gridLineGroupSelection = this.gridLineGroupSelection.update(gridData, function (group) {\n var node = new Line();\n node.tag = Tags.GridLine;\n group.append(node);\n }, function (datum) { return datum.tickId; });\n var tickLineGroupSelection = this.tickLineGroupSelection.update(data, function (group) {\n var line = new Line();\n line.tag = Tags.TickLine;\n group.appendChild(line);\n }, function (datum) { return datum.tickId; });\n var tickLabelGroupSelection = this.tickLabelGroupSelection.update(data, function (group) {\n var text = new Text();\n text.tag = Tags.TickLabel;\n group.appendChild(text);\n }, function (datum) { return datum.tickId; });\n this.tickLineGroupSelection = tickLineGroupSelection;\n this.tickLabelGroupSelection = tickLabelGroupSelection;\n this.gridLineGroupSelection = gridLineGroupSelection;\n };\n Axis.prototype.updateGridLines = function (sideFlag) {\n var _a = this, gridStyle = _a.gridStyle, tick = _a.tick, gridPadding = _a.gridPadding, gridLength = _a.gridLength;\n if (gridLength === 0 || gridStyle.length === 0) {\n return;\n }\n var styleCount = gridStyle.length;\n this.gridLineGroupSelection.each(function (line, _, index) {\n var style = gridStyle[index % styleCount];\n line.x1 = gridPadding;\n line.x2 = -sideFlag * gridLength + gridPadding;\n line.y1 = 0;\n line.y2 = 0;\n line.stroke = style.stroke;\n line.strokeWidth = tick.width;\n line.lineDash = style.lineDash;\n line.fill = undefined;\n });\n };\n Axis.prototype.updateLabels = function (_a) {\n var tickLabelGroupSelection = _a.tickLabelGroupSelection, combinedRotation = _a.combinedRotation, textBaseline = _a.textBaseline, textAlign = _a.textAlign, labelX = _a.labelX;\n var _b = this, label = _b.label, labelsEnabled = _b.label.enabled;\n if (!labelsEnabled) {\n return;\n }\n // Apply label option values\n tickLabelGroupSelection.each(function (node, datum) {\n var tickLabel = datum.tickLabel;\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.text = tickLabel;\n var userHidden = node.text === '' || node.text == undefined;\n if (userHidden) {\n node.visible = false; // hide empty labels\n return;\n }\n // Position labels\n node.textBaseline = textBaseline;\n node.textAlign = textAlign;\n node.x = labelX;\n node.rotationCenterX = labelX;\n node.rotation = combinedRotation;\n node.visible = true;\n });\n };\n Axis.prototype.wrapLabels = function (tickData, index, labelProps) {\n var _a = this.label, parallel = _a.parallel, maxWidth = _a.maxWidth, maxHeight = _a.maxHeight;\n var defaultMaxLabelWidth = parallel\n ? Math.round(this.calculateAvailableRange() / tickData.labelCount)\n : this.maxThickness;\n var maxLabelWidth = maxWidth !== null && maxWidth !== void 0 ? maxWidth : defaultMaxLabelWidth;\n var defaultMaxLabelHeight = parallel\n ? this.maxThickness\n : Math.round(this.calculateAvailableRange() / tickData.labelCount);\n var maxLabelHeight = maxHeight !== null && maxHeight !== void 0 ? maxHeight : defaultMaxLabelHeight;\n tickData.ticks.forEach(function (tickDatum) {\n var tickLabel = tickDatum.tickLabel;\n var wrapping = 'hyphenate';\n var wrappedTickLabel = Text.wrap(tickLabel, maxLabelWidth, maxLabelHeight, labelProps, wrapping);\n tickDatum.tickLabel = wrappedTickLabel;\n });\n return { tickData: tickData, index: index, autoRotation: 0, terminate: true };\n };\n Axis.prototype.updateLine = function () {\n // Render axis line.\n var _a = this, lineNode = _a.lineNode, requestedRange = _a.range;\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 = true;\n };\n Axis.prototype.updateTitle = function (_a) {\n var _b;\n var anyTickVisible = _a.anyTickVisible, sideFlag = _a.sideFlag;\n var identityFormatter = function (params) { return params.defaultValue; };\n var _c = this, rotation = _c.rotation, title = _c.title, _titleCaption = _c._titleCaption, lineNode = _c.lineNode, requestedRange = _c.range, tickLineGroup = _c.tickLineGroup, tickLabelGroup = _c.tickLabelGroup, callbackCache = _c.moduleCtx.callbackCache;\n var _d = ((_b = this.title) !== null && _b !== void 0 ? _b : {}).formatter, formatter = _d === void 0 ? identityFormatter : _d;\n if (!title) {\n _titleCaption.enabled = false;\n return;\n }\n _titleCaption.enabled = title.enabled;\n _titleCaption.fontFamily = title.fontFamily;\n _titleCaption.fontSize = title.fontSize;\n _titleCaption.fontStyle = title.fontStyle;\n _titleCaption.fontWeight = title.fontWeight;\n _titleCaption.color = title.color;\n _titleCaption.wrapping = title.wrapping;\n var titleVisible = false;\n var titleNode = _titleCaption.node;\n if (title.enabled && lineNode.visible) {\n titleVisible = true;\n var parallelFlipRotation = normalizeAngle360(rotation);\n var padding = Caption.PADDING;\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 = Math.floor((titleRotationFlag * sideFlag * (requestedRange[0] + requestedRange[1])) / 2);\n var bboxYDimension = 0;\n if (anyTickVisible) {\n var tickBBox = Group.computeBBox([tickLineGroup, tickLabelGroup]);\n var tickWidth = rotation === 0 ? tickBBox.width : tickBBox.height;\n if (Math.abs(tickWidth) < Infinity) {\n bboxYDimension += tickWidth;\n }\n }\n if (sideFlag === -1) {\n titleNode.y = Math.floor(titleRotationFlag * (-padding - bboxYDimension));\n }\n else {\n titleNode.y = Math.floor(-padding - bboxYDimension);\n }\n titleNode.textBaseline = titleRotationFlag === 1 ? 'bottom' : 'top';\n titleNode.text = callbackCache.call(formatter, this.getTitleFormatterParams());\n }\n titleNode.visible = titleVisible;\n };\n // For formatting (nice rounded) tick values.\n Axis.prototype.formatTick = function (datum, index) {\n var _a, _b;\n var _c = this, label = _c.label, labelFormatter = _c.labelFormatter, fractionDigits = _c.fractionDigits, callbackCache = _c.moduleCtx.callbackCache;\n if (label.formatter) {\n var defaultValue = fractionDigits > 0 ? datum : String(datum);\n return ((_a = callbackCache.call(label.formatter, {\n value: defaultValue,\n index: index,\n fractionDigits: fractionDigits,\n formatter: labelFormatter,\n })) !== null && _a !== void 0 ? _a : defaultValue);\n }\n else if (labelFormatter) {\n return (_b = callbackCache.call(labelFormatter, datum)) !== null && _b !== void 0 ? _b : String(datum);\n }\n // The axis is using a logScale or the`datum` is an integer, a string or an object\n return 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 () {\n return this.axisGroup.computeBBox();\n };\n Axis.prototype.initCrossLine = function (crossLine) {\n crossLine.scale = this.scale;\n crossLine.gridLength = this.gridLength;\n };\n Axis.prototype.isAnySeriesActive = function () {\n var _this = this;\n return this.boundSeries.some(function (s) { return _this.includeInvisibleDomains || s.isEnabled(); });\n };\n Axis.prototype.clipTickLines = function (x, y, width, height) {\n this.tickLineGroup.setClipRectInGroupCoordinateSpace(new BBox(x, y, width, height));\n };\n Axis.prototype.clipGrid = function (x, y, width, height) {\n this.gridGroup.setClipRectInGroupCoordinateSpace(new BBox(x, y, width, height));\n };\n Axis.prototype.calculatePadding = function (min, _max) {\n return [Math.abs(min * 0.01), Math.abs(min * 0.01)];\n };\n Axis.prototype.getTitleFormatterParams = function () {\n var _this = this;\n var _a;\n var boundSeries = this.boundSeries.reduce(function (acc, next) {\n var keys = next.getKeys(_this.direction);\n var names = next.getNames(_this.direction);\n for (var idx = 0; idx < keys.length; idx++) {\n acc.push({\n key: keys[idx],\n name: names[idx],\n });\n }\n return acc;\n }, []);\n return {\n direction: this.direction,\n boundSeries: boundSeries,\n defaultValue: (_a = this.title) === null || _a === void 0 ? void 0 : _a.text,\n };\n };\n Axis.prototype.normaliseDataDomain = function (d) {\n return d;\n };\n Axis.prototype.getLayoutState = function () {\n return __assign$i({ rect: this.computeBBox(), gridPadding: this.gridPadding, seriesAreaPadding: this.seriesAreaPadding, tickSize: this.tick.size }, this.layout);\n };\n Axis.prototype.createAxisContext = function () {\n var _this = this;\n var keys = function () {\n return _this.boundSeries\n .map(function (s) { return s.getKeys(_this.direction); })\n .reduce(function (keys, seriesKeys) {\n keys.push.apply(keys, __spreadArray$c([], __read$l(seriesKeys)));\n return keys;\n }, []);\n };\n return {\n axisId: this.id,\n direction: this.direction,\n continuous: this.scale instanceof ContinuousScale,\n keys: keys,\n scaleValueFormatter: function (specifier) { var _a, _b, _c; return (_c = (_b = (_a = _this.scale).tickFormat) === null || _b === void 0 ? void 0 : _b.call(_a, { specifier: specifier })) !== null && _c !== void 0 ? _c : undefined; },\n scaleBandwidth: function () { var _a; return (_a = _this.scale.bandwidth) !== null && _a !== void 0 ? _a : 0; },\n scaleConvert: function (val) { return _this.scale.convert(val); },\n scaleInvert: function (val) { var _a, _b, _c; return (_c = (_b = (_a = _this.scale).invert) === null || _b === void 0 ? void 0 : _b.call(_a, val)) !== null && _c !== void 0 ? _c : undefined; },\n };\n };\n Axis.prototype.addModule = function (module) {\n if (this.modules[module.optionsKey] != null) {\n throw new Error('AG Charts - module already initialised: ' + module.optionsKey);\n }\n if (this.axisContext == null) {\n this.axisContext = this.createAxisContext();\n }\n var moduleInstance = new module.instanceConstructor(__assign$i(__assign$i({}, this.moduleCtx), { parent: this.axisContext }));\n this.modules[module.optionsKey] = { instance: moduleInstance };\n this[module.optionsKey] = moduleInstance;\n };\n Axis.prototype.removeModule = function (module) {\n var _a, _b;\n (_b = (_a = this.modules[module.optionsKey]) === null || _a === void 0 ? void 0 : _a.instance) === null || _b === void 0 ? void 0 : _b.destroy();\n delete this.modules[module.optionsKey];\n delete this[module.optionsKey];\n };\n Axis.prototype.isModuleEnabled = function (module) {\n return this.modules[module.optionsKey] != null;\n };\n Axis.prototype.animateReadyUpdate = function (diff) {\n var _this = this;\n var _a, _b;\n if (!diff.changed) {\n this.resetSelectionNodes();\n return;\n }\n var _c = this, gridLineGroupSelection = _c.gridLineGroupSelection, tickLineGroupSelection = _c.tickLineGroupSelection, tickLabelGroupSelection = _c.tickLabelGroupSelection;\n var addedCount = Object.keys(diff.added).length;\n var removedCount = Object.keys(diff.removed).length;\n if (removedCount === diff.tickCount) {\n this.resetSelectionNodes();\n return;\n }\n var totalDuration = (_b = (_a = this.animationManager) === null || _a === void 0 ? void 0 : _a.defaultOptions.duration) !== null && _b !== void 0 ? _b : 1000;\n var sectionDuration = Math.floor(totalDuration / 2);\n if (addedCount > 0 && removedCount > 0) {\n sectionDuration = Math.floor(totalDuration / 3);\n }\n var options = {\n delay: removedCount > 0 ? sectionDuration : 0,\n duration: sectionDuration,\n };\n var animationGroup = this.id + \"_\" + Math.random();\n tickLabelGroupSelection.each(function (node, datum) {\n _this.animateSelectionNode(tickLabelGroupSelection, diff, options, node, datum, animationGroup);\n });\n gridLineGroupSelection.each(function (node, datum) {\n _this.animateSelectionNode(gridLineGroupSelection, diff, options, node, datum, animationGroup);\n });\n tickLineGroupSelection.each(function (node, datum) {\n _this.animateSelectionNode(tickLineGroupSelection, diff, options, node, datum, animationGroup);\n });\n };\n Axis.prototype.animateSelectionNode = function (selection, diff, options, node, datum, animationGroup) {\n var roundedTranslationY = Math.round(datum.translationY);\n var translate = { from: node.translationY, to: roundedTranslationY };\n var opacity = { from: 1, to: 1 };\n var duration = options.duration;\n var delay = options.delay;\n var datumId = datum.tickLabel;\n if (diff.added[datumId]) {\n translate = { from: roundedTranslationY, to: roundedTranslationY };\n opacity = { from: 0, to: 1 };\n delay += duration;\n }\n else if (diff.removed[datumId]) {\n opacity = { from: 1, to: 0 };\n delay = 0;\n }\n var props = [translate, opacity];\n this.animationManager.animateManyWithThrottle(this.id + \"_ready-update_\" + node.id, props, {\n disableInteractions: false,\n delay: delay,\n duration: duration,\n ease: easeOut,\n throttleId: this.id,\n throttleGroup: animationGroup,\n onUpdate: function (_a) {\n var _b = __read$l(_a, 2), translationY = _b[0], opacity = _b[1];\n node.translationY = translationY;\n node.opacity = opacity;\n },\n onComplete: function () {\n selection.cleanup();\n },\n });\n };\n Axis.prototype.resetSelectionNodes = function () {\n var _a = this, gridLineGroupSelection = _a.gridLineGroupSelection, tickLineGroupSelection = _a.tickLineGroupSelection, tickLabelGroupSelection = _a.tickLabelGroupSelection;\n gridLineGroupSelection.cleanup();\n tickLineGroupSelection.cleanup();\n tickLabelGroupSelection.cleanup();\n // We need raw `translationY` values on `datum` for accurate label collision detection in axes.update()\n // But node `translationY` values must be rounded to get pixel grid alignment\n var resetFn = function (node) {\n node.translationY = Math.round(node.datum.translationY);\n node.opacity = 1;\n };\n gridLineGroupSelection.each(resetFn);\n tickLineGroupSelection.each(resetFn);\n tickLabelGroupSelection.each(resetFn);\n };\n Axis.prototype.calculateUpdateDiff = function (previous, tickData) {\n var _a;\n var added = new Set();\n var removed = new Set();\n var tickCount = Math.max(previous.length, tickData.ticks.length);\n for (var i = 0; i < tickCount; i++) {\n var prev = previous[i];\n var tick = (_a = tickData.ticks[i]) === null || _a === void 0 ? void 0 : _a.tickId;\n if (prev === tick) {\n continue;\n }\n if (removed.has(tick)) {\n removed.delete(tick);\n }\n else if (tick) {\n added.add(tick);\n }\n if (added.has(prev)) {\n added.delete(prev);\n }\n else if (prev) {\n removed.add(prev);\n }\n }\n var addedKeys = {};\n var removedKeys = {};\n added.forEach(function (a) {\n addedKeys[a] = true;\n });\n removed.forEach(function (r) {\n removedKeys[r] = true;\n });\n return {\n changed: added.size > 0 || removed.size > 0,\n tickCount: tickCount,\n added: addedKeys,\n removed: removedKeys,\n };\n };\n Axis.defaultTickMinSpacing = 50;\n __decorate$1F([\n Validate(BOOLEAN)\n ], Axis.prototype, \"nice\", void 0);\n __decorate$1F([\n Validate(STRING_ARRAY)\n ], Axis.prototype, \"keys\", void 0);\n __decorate$1F([\n Validate(GRID_STYLE)\n ], Axis.prototype, \"gridStyle\", void 0);\n return Axis;\n}());\n\nvar __decorate$1E = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 AxisTitle = /** @class */ (function () {\n function AxisTitle() {\n this.enabled = false;\n this.text = undefined;\n this.fontStyle = undefined;\n this.fontWeight = undefined;\n this.fontSize = 10;\n this.fontFamily = 'sans-serif';\n this.color = undefined;\n this.wrapping = 'always';\n this.formatter = undefined;\n }\n __decorate$1E([\n Validate(BOOLEAN)\n ], AxisTitle.prototype, \"enabled\", void 0);\n __decorate$1E([\n Validate(OPT_STRING)\n ], AxisTitle.prototype, \"text\", void 0);\n __decorate$1E([\n Validate(OPT_FONT_STYLE)\n ], AxisTitle.prototype, \"fontStyle\", void 0);\n __decorate$1E([\n Validate(OPT_FONT_WEIGHT)\n ], AxisTitle.prototype, \"fontWeight\", void 0);\n __decorate$1E([\n Validate(NUMBER(0))\n ], AxisTitle.prototype, \"fontSize\", void 0);\n __decorate$1E([\n Validate(STRING)\n ], AxisTitle.prototype, \"fontFamily\", void 0);\n __decorate$1E([\n Validate(OPT_COLOR_STRING)\n ], AxisTitle.prototype, \"color\", void 0);\n __decorate$1E([\n Validate(TEXT_WRAP)\n ], AxisTitle.prototype, \"wrapping\", void 0);\n __decorate$1E([\n Validate(OPT_FUNCTION)\n ], AxisTitle.prototype, \"formatter\", void 0);\n return AxisTitle;\n}());\n\nvar __extends$F = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1D = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 DropShadow = /** @class */ (function (_super) {\n __extends$F(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$1D([\n Validate(BOOLEAN),\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], DropShadow.prototype, \"enabled\", void 0);\n __decorate$1D([\n Validate(COLOR_STRING),\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], DropShadow.prototype, \"color\", void 0);\n __decorate$1D([\n Validate(NUMBER()),\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], DropShadow.prototype, \"xOffset\", void 0);\n __decorate$1D([\n Validate(NUMBER()),\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], DropShadow.prototype, \"yOffset\", void 0);\n __decorate$1D([\n Validate(NUMBER(0)),\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], DropShadow.prototype, \"blur\", void 0);\n return DropShadow;\n}(ChangeDetectable));\n\nvar __extends$E = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read$k = (undefined && undefined.__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 continuous domain to a continuous range.\n */\nvar LinearScale$1 = /** @class */ (function (_super) {\n __extends$E(LinearScale, _super);\n function LinearScale() {\n var _this = _super.call(this, [0, 1], [0, 1]) || this;\n _this.type = 'linear';\n return _this;\n }\n LinearScale.prototype.toDomain = function (d) {\n return d;\n };\n LinearScale.prototype.ticks = function () {\n var _a;\n var count = (_a = this.tickCount) !== null && _a !== void 0 ? _a : ContinuousScale.defaultTickCount;\n if (!this.domain || this.domain.length < 2 || count < 1 || this.domain.some(function (d) { return !isFinite(d); })) {\n return [];\n }\n this.refresh();\n var _b = __read$k(this.getDomain(), 2), d0 = _b[0], d1 = _b[1];\n var interval = this.interval;\n if (interval) {\n var step = Math.abs(interval);\n if (!this.isDenseInterval({ start: d0, stop: d1, interval: step })) {\n return range(d0, d1, step);\n }\n }\n return ticks(d0, d1, count, this.minTickCount, this.maxTickCount);\n };\n LinearScale.prototype.update = function () {\n if (!this.domain || this.domain.length < 2) {\n return;\n }\n if (this.nice) {\n this.updateNiceDomain();\n }\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.updateNiceDomain = function () {\n var _a, _b;\n var count = (_a = this.tickCount) !== null && _a !== void 0 ? _a : ContinuousScale.defaultTickCount;\n var _c = __read$k(this.domain, 2), start = _c[0], stop = _c[1];\n if (count < 1) {\n this.niceDomain = [start, stop];\n return;\n }\n if (count === 1) {\n this.niceDomain = singleTickDomain(start, stop);\n return;\n }\n var maxAttempts = 4;\n var prev0 = start;\n var prev1 = stop;\n for (var i = 0; i < maxAttempts; i++) {\n var step = (_b = this.interval) !== null && _b !== void 0 ? _b : tickStep(start, stop, count, this.minTickCount, this.maxTickCount);\n var _d = __read$k(this.domain, 2), d0 = _d[0], d1 = _d[1];\n if (step >= 1) {\n start = Math.floor(d0 / step) * step;\n stop = Math.ceil(d1 / step) * step;\n }\n else {\n // Prevent floating point error\n var s = 1 / step;\n start = Math.floor(d0 * s) / s;\n stop = Math.ceil(d1 * s) / s;\n }\n if (start === prev0 && stop === prev1) {\n break;\n }\n prev0 = start;\n prev1 = stop;\n }\n this.niceDomain = [start, stop];\n };\n LinearScale.prototype.tickFormat = function (_a) {\n var ticks = _a.ticks, specifier = _a.specifier;\n return tickFormat(ticks !== null && ticks !== void 0 ? ticks : this.ticks(), specifier);\n };\n return LinearScale;\n}(ContinuousScale));\n\nfunction 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 */\nfunction 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}\n/**\n * Returns the mathematically correct n modulus of m. For context, the JS % operator is remainder\n * NOT modulus, which is why this is needed.\n */\nfunction mod(n, m) {\n if (n >= 0) {\n return Math.floor(n % m);\n }\n return Math.floor((n % m) + m);\n}\n\nfunction isPointInSector(x, y, sector) {\n var radius = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\n var innerRadius = sector.innerRadius, outerRadius = sector.outerRadius;\n if (radius < Math.min(innerRadius, outerRadius) || radius > Math.max(innerRadius, outerRadius)) {\n return false;\n }\n // Start and End angles are expected to be [-90, 270]\n // while Math.atan2 returns [-180, 180]\n var angle = Math.atan2(y, x);\n if (angle < -Math.PI / 2) {\n angle += 2 * Math.PI;\n }\n // Start is actually bigger than End clock-wise\n var startAngle = sector.startAngle, endAngle = sector.endAngle;\n if (endAngle === -Math.PI / 2) {\n return angle < startAngle;\n }\n if (startAngle === (3 * Math.PI) / 2) {\n return angle > endAngle;\n }\n return angle <= endAngle && angle >= startAngle;\n}\nfunction lineCollidesSector(line, sector) {\n var startAngle = sector.startAngle, endAngle = sector.endAngle, innerRadius = sector.innerRadius, outerRadius = sector.outerRadius;\n var outerStart = { x: outerRadius * Math.cos(startAngle), y: outerRadius * Math.sin(startAngle) };\n var outerEnd = { x: outerRadius * Math.cos(endAngle), y: outerRadius * Math.sin(endAngle) };\n var innerStart = innerRadius === 0\n ? { x: 0, y: 0 }\n : { x: innerRadius * Math.cos(startAngle), y: innerRadius * Math.sin(startAngle) };\n var innerEnd = innerRadius === 0\n ? { x: 0, y: 0 }\n : { x: innerRadius * Math.cos(endAngle), y: innerRadius * Math.sin(endAngle) };\n return (segmentIntersection(line.start.x, line.start.y, line.end.x, line.end.y, outerStart.x, outerStart.y, innerStart.x, innerStart.y) != null ||\n segmentIntersection(line.start.x, line.start.y, line.end.x, line.end.y, outerEnd.x, outerEnd.y, innerEnd.x, innerEnd.y) != null ||\n arcIntersections(0, 0, outerRadius, startAngle, endAngle, true, line.start.x, line.start.y, line.end.x, line.end.y).length > 0);\n}\nfunction boxCollidesSector(box, sector) {\n var topLeft = { x: box.x, y: box.y };\n var topRight = { x: box.x + box.width, y: box.y };\n var bottomLeft = { x: box.x, y: box.y + box.height };\n var bottomRight = { x: box.x + box.width, y: box.y + box.height };\n return (lineCollidesSector({ start: topLeft, end: topRight }, sector) ||\n lineCollidesSector({ start: bottomLeft, end: bottomRight }, sector));\n}\n\nvar __extends$D = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1C = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 Sector = /** @class */ (function (_super) {\n __extends$D(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.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 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.updatePath = function () {\n var path = this.path;\n var angleOffset = this.angleOffset;\n var startAngle = this.startAngle + angleOffset;\n var endAngle = this.endAngle + angleOffset;\n var innerRadius = Math.min(this.innerRadius, this.outerRadius);\n var outerRadius = Math.max(this.innerRadius, this.outerRadius);\n var fullPie = isEqual(normalizeAngle360(this.startAngle), normalizeAngle360(this.endAngle));\n var centerX = this.centerX;\n var centerY = this.centerY;\n path.clear();\n if (fullPie) {\n path.arc(centerX, centerY, outerRadius, startAngle, endAngle);\n if (innerRadius > 0) {\n path.moveTo(centerX + innerRadius * Math.cos(endAngle), centerY + innerRadius * Math.sin(endAngle));\n path.arc(centerX, centerY, innerRadius, endAngle, startAngle, true);\n }\n }\n else {\n path.moveTo(centerX + innerRadius * Math.cos(startAngle), centerY + innerRadius * Math.sin(startAngle));\n path.arc(centerX, centerY, outerRadius, startAngle, endAngle);\n if (innerRadius > 0) {\n path.arc(centerX, centerY, innerRadius, endAngle, startAngle, true);\n }\n else {\n path.lineTo(centerX, centerY);\n }\n }\n path.closePath();\n this.dirtyPath = false;\n };\n Sector.prototype.isPointInPath = function (x, y) {\n var angleOffset = this.angleOffset;\n var startAngle = this.startAngle + angleOffset;\n var endAngle = this.endAngle + angleOffset;\n var innerRadius = Math.min(this.innerRadius, this.outerRadius);\n var outerRadius = Math.max(this.innerRadius, this.outerRadius);\n var point = this.transformPoint(x, y);\n return isPointInSector(point.x, point.y, { startAngle: startAngle, endAngle: endAngle, innerRadius: innerRadius, outerRadius: outerRadius });\n };\n Sector.className = 'Sector';\n __decorate$1C([\n ScenePathChangeDetection()\n ], Sector.prototype, \"centerX\", void 0);\n __decorate$1C([\n ScenePathChangeDetection()\n ], Sector.prototype, \"centerY\", void 0);\n __decorate$1C([\n ScenePathChangeDetection()\n ], Sector.prototype, \"innerRadius\", void 0);\n __decorate$1C([\n ScenePathChangeDetection()\n ], Sector.prototype, \"outerRadius\", void 0);\n __decorate$1C([\n ScenePathChangeDetection()\n ], Sector.prototype, \"startAngle\", void 0);\n __decorate$1C([\n ScenePathChangeDetection()\n ], Sector.prototype, \"endAngle\", void 0);\n __decorate$1C([\n ScenePathChangeDetection()\n ], Sector.prototype, \"angleOffset\", void 0);\n return Sector;\n}(Path));\n\nvar __extends$C = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar PolarSeries = /** @class */ (function (_super) {\n __extends$C(PolarSeries, _super);\n function PolarSeries(_a) {\n var _b, _c;\n var moduleCtx = _a.moduleCtx, _d = _a.useLabelLayer, useLabelLayer = _d === void 0 ? false : _d, _e = _a.pickModes, pickModes = _e === void 0 ? [SeriesNodePickMode.EXACT_SHAPE_MATCH] : _e;\n var _this = _super.call(this, {\n moduleCtx: moduleCtx,\n useLabelLayer: useLabelLayer,\n pickModes: pickModes,\n contentGroupVirtual: false,\n directionKeys: (_b = {},\n _b[ChartAxisDirection.X] = ['angleKey'],\n _b[ChartAxisDirection.Y] = ['radiusKey'],\n _b),\n directionNames: (_c = {},\n _c[ChartAxisDirection.X] = ['angleName'],\n _c[ChartAxisDirection.Y] = ['radiusName'],\n _c),\n }) || this;\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 PolarSeries.prototype.getLabelData = function () {\n return [];\n };\n PolarSeries.prototype.computeLabelsBBox = function (_options, _seriesRect) {\n return null;\n };\n return PolarSeries;\n}(Series));\n\nvar __extends$B = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$h = (undefined && undefined.__assign) || function () {\n __assign$h = 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$h.apply(this, arguments);\n};\nvar __decorate$1B = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 __awaiter$b = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$b = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read$j = (undefined && undefined.__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 __spreadArray$b = (undefined && undefined.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar PieSeriesNodeBaseClickEvent = /** @class */ (function (_super) {\n __extends$B(PieSeriesNodeBaseClickEvent, _super);\n function PieSeriesNodeBaseClickEvent(angleKey, calloutLabelKey, sectorLabelKey, radiusKey, nativeEvent, datum, series) {\n var _this = _super.call(this, nativeEvent, datum, series) || this;\n _this.angleKey = angleKey;\n _this.calloutLabelKey = calloutLabelKey;\n _this.sectorLabelKey = sectorLabelKey;\n _this.radiusKey = radiusKey;\n return _this;\n }\n return PieSeriesNodeBaseClickEvent;\n}(SeriesNodeBaseClickEvent));\nvar PieSeriesNodeClickEvent = /** @class */ (function (_super) {\n __extends$B(PieSeriesNodeClickEvent, _super);\n function PieSeriesNodeClickEvent() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'nodeClick';\n return _this;\n }\n return PieSeriesNodeClickEvent;\n}(PieSeriesNodeBaseClickEvent));\nvar PieSeriesNodeDoubleClickEvent = /** @class */ (function (_super) {\n __extends$B(PieSeriesNodeDoubleClickEvent, _super);\n function PieSeriesNodeDoubleClickEvent() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'nodeDoubleClick';\n return _this;\n }\n return PieSeriesNodeDoubleClickEvent;\n}(PieSeriesNodeBaseClickEvent));\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 PieSeriesCalloutLabel = /** @class */ (function (_super) {\n __extends$B(PieSeriesCalloutLabel, _super);\n function PieSeriesCalloutLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.offset = 3; // from the callout line\n _this.minAngle = 0; // in degrees\n _this.formatter = undefined;\n _this.minSpacing = 4;\n _this.maxCollisionOffset = 50;\n _this.avoidCollisions = true;\n return _this;\n }\n __decorate$1B([\n Validate(NUMBER(0))\n ], PieSeriesCalloutLabel.prototype, \"offset\", void 0);\n __decorate$1B([\n Validate(NUMBER(0))\n ], PieSeriesCalloutLabel.prototype, \"minAngle\", void 0);\n __decorate$1B([\n Validate(OPT_FUNCTION)\n ], PieSeriesCalloutLabel.prototype, \"formatter\", void 0);\n __decorate$1B([\n Validate(NUMBER(0))\n ], PieSeriesCalloutLabel.prototype, \"minSpacing\", void 0);\n __decorate$1B([\n Validate(NUMBER(0))\n ], PieSeriesCalloutLabel.prototype, \"maxCollisionOffset\", void 0);\n __decorate$1B([\n Validate(BOOLEAN)\n ], PieSeriesCalloutLabel.prototype, \"avoidCollisions\", void 0);\n return PieSeriesCalloutLabel;\n}(Label$1));\nvar PieSeriesSectorLabel = /** @class */ (function (_super) {\n __extends$B(PieSeriesSectorLabel, _super);\n function PieSeriesSectorLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.positionOffset = 0;\n _this.positionRatio = 0.5;\n _this.formatter = undefined;\n return _this;\n }\n __decorate$1B([\n Validate(NUMBER())\n ], PieSeriesSectorLabel.prototype, \"positionOffset\", void 0);\n __decorate$1B([\n Validate(NUMBER(0, 1))\n ], PieSeriesSectorLabel.prototype, \"positionRatio\", void 0);\n __decorate$1B([\n Validate(OPT_FUNCTION)\n ], PieSeriesSectorLabel.prototype, \"formatter\", void 0);\n return PieSeriesSectorLabel;\n}(Label$1));\nvar PieSeriesCalloutLine = /** @class */ (function () {\n function PieSeriesCalloutLine() {\n this.colors = undefined;\n this.length = 10;\n this.strokeWidth = 1;\n }\n __decorate$1B([\n Validate(OPT_COLOR_STRING_ARRAY)\n ], PieSeriesCalloutLine.prototype, \"colors\", void 0);\n __decorate$1B([\n Validate(NUMBER(0))\n ], PieSeriesCalloutLine.prototype, \"length\", void 0);\n __decorate$1B([\n Validate(NUMBER(0))\n ], PieSeriesCalloutLine.prototype, \"strokeWidth\", void 0);\n return PieSeriesCalloutLine;\n}());\nvar PieSeriesTooltip = /** @class */ (function (_super) {\n __extends$B(PieSeriesTooltip, _super);\n function PieSeriesTooltip() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.renderer = undefined;\n return _this;\n }\n __decorate$1B([\n Validate(OPT_FUNCTION)\n ], PieSeriesTooltip.prototype, \"renderer\", void 0);\n return PieSeriesTooltip;\n}(SeriesTooltip));\nvar PieTitle = /** @class */ (function (_super) {\n __extends$B(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$1B([\n Validate(BOOLEAN)\n ], PieTitle.prototype, \"showInLegend\", void 0);\n return PieTitle;\n}(Caption));\nvar DoughnutInnerLabel = /** @class */ (function (_super) {\n __extends$B(DoughnutInnerLabel, _super);\n function DoughnutInnerLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.text = '';\n _this.margin = 2;\n return _this;\n }\n __decorate$1B([\n Validate(STRING)\n ], DoughnutInnerLabel.prototype, \"text\", void 0);\n __decorate$1B([\n Validate(NUMBER())\n ], DoughnutInnerLabel.prototype, \"margin\", void 0);\n return DoughnutInnerLabel;\n}(Label$1));\nvar DoughnutInnerCircle = /** @class */ (function () {\n function DoughnutInnerCircle() {\n this.fill = 'transparent';\n this.fillOpacity = 1;\n }\n __decorate$1B([\n Validate(COLOR_STRING)\n ], DoughnutInnerCircle.prototype, \"fill\", void 0);\n __decorate$1B([\n Validate(OPT_NUMBER(0, 1))\n ], DoughnutInnerCircle.prototype, \"fillOpacity\", void 0);\n return DoughnutInnerCircle;\n}());\nvar PieStateMachine = /** @class */ (function (_super) {\n __extends$B(PieStateMachine, _super);\n function PieStateMachine() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return PieStateMachine;\n}(StateMachine));\nvar PieSeries = /** @class */ (function (_super) {\n __extends$B(PieSeries, _super);\n function PieSeries(moduleCtx) {\n var _a, _b, _c;\n var _this = _super.call(this, { moduleCtx: moduleCtx, useLabelLayer: true }) || this;\n _this.radiusScale = new LinearScale$1();\n _this.groupSelection = Selection.select(_this.contentGroup, Group);\n _this.highlightSelection = Selection.select(_this.highlightGroup, Group);\n _this.nodeData = [];\n // When a user toggles a series item (e.g. from the legend), its boolean state is recorded here.\n _this.seriesItemEnabled = [];\n _this.title = undefined;\n _this.calloutLabel = new PieSeriesCalloutLabel();\n _this.sectorLabel = new PieSeriesSectorLabel();\n _this.calloutLine = new PieSeriesCalloutLine();\n _this.tooltip = new PieSeriesTooltip();\n /**\n * The key of the numeric field to use to determine the angle (for example,\n * a pie sector angle).\n */\n _this.angleKey = '';\n _this.angleName = '';\n _this.innerLabels = [];\n _this.innerCircle = undefined;\n /**\n * The key of the numeric field to use to determine the radii of pie sectors.\n * The largest value will correspond to the full radius and smaller values to\n * proportionally smaller radii.\n */\n _this.radiusKey = undefined;\n _this.radiusName = undefined;\n _this.radiusMin = undefined;\n _this.radiusMax = undefined;\n _this.calloutLabelKey = undefined;\n _this.calloutLabelName = undefined;\n _this.sectorLabelKey = undefined;\n _this.sectorLabelName = undefined;\n _this.legendItemKey = undefined;\n _this.fills = ['#c16068', '#a2bf8a', '#ebcc87', '#80a0c3', '#b58dae', '#85c0d1'];\n _this.strokes = ['#874349', '#718661', '#a48f5f', '#5a7088', '#7f637a', '#5d8692'];\n _this.fillOpacity = 1;\n _this.strokeOpacity = 1;\n _this.lineDash = [0];\n _this.lineDashOffset = 0;\n _this.formatter = undefined;\n /**\n * The series rotation in degrees.\n */\n _this.rotation = 0;\n _this.outerRadiusOffset = 0;\n _this.outerRadiusRatio = 1;\n _this.innerRadiusOffset = 0;\n _this.innerRadiusRatio = 1;\n _this.strokeWidth = 1;\n _this.shadow = undefined;\n _this.highlightStyle = new HighlightStyle();\n _this.surroundingRadius = undefined;\n _this.angleScale = new LinearScale$1();\n // Each sector is a ratio of the whole, where all ratios add up to 1.\n _this.angleScale.domain = [0, 1];\n // Add 90 deg to start the first pie at 12 o'clock.\n _this.angleScale.range = [-Math.PI, Math.PI].map(function (angle) { return angle + Math.PI / 2; });\n _this.backgroundGroup = _this.rootGroup.appendChild(new Group({\n name: _this.id + \"-background\",\n layer: true,\n zIndex: Layers.SERIES_BACKGROUND_ZINDEX,\n }));\n var pieCalloutLabels = new Group({ name: 'pieCalloutLabels' });\n var pieSectorLabels = new Group({ name: 'pieSectorLabels' });\n var innerLabels = new Group({ name: 'innerLabels' });\n (_a = _this.labelGroup) === null || _a === void 0 ? void 0 : _a.append(pieCalloutLabels);\n (_b = _this.labelGroup) === null || _b === void 0 ? void 0 : _b.append(pieSectorLabels);\n (_c = _this.labelGroup) === null || _c === void 0 ? void 0 : _c.append(innerLabels);\n _this.calloutLabelSelection = Selection.select(pieCalloutLabels, Group);\n _this.sectorLabelSelection = Selection.select(pieSectorLabels, Text);\n _this.innerLabelsSelection = Selection.select(innerLabels, Text);\n _this.animationState = new PieStateMachine('empty', {\n empty: {\n on: {\n update: {\n target: 'ready',\n action: function () { return _this.animateEmptyUpdateReady(); },\n },\n },\n },\n ready: {\n on: {\n update: {\n target: 'ready',\n action: function () { return _this.animateReadyUpdateReady(); },\n },\n },\n },\n });\n return _this;\n }\n Object.defineProperty(PieSeries.prototype, \"data\", {\n get: function () {\n return this._data;\n },\n set: function (input) {\n this._data = input;\n this.processSeriesItemEnabled();\n },\n enumerable: false,\n configurable: true\n });\n PieSeries.prototype.addChartEventListeners = function () {\n var _this = this;\n var _a;\n (_a = this.ctx.chartEventManager) === null || _a === void 0 ? void 0 : _a.addListener('legend-item-click', function (event) { return _this.onLegendItemClick(event); });\n };\n PieSeries.prototype.visibleChanged = function () {\n this.processSeriesItemEnabled();\n };\n PieSeries.prototype.processSeriesItemEnabled = function () {\n var _a;\n var _b = this, data = _b.data, visible = _b.visible;\n this.seriesItemEnabled = (_a = data === null || data === void 0 ? void 0 : data.map(function () { return visible; })) !== null && _a !== void 0 ? _a : [];\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 (dataController) {\n var _a, _b;\n return __awaiter$b(this, void 0, void 0, function () {\n var _c, data, _d, angleKey, radiusKey, calloutLabelKey, sectorLabelKey, legendItemKey, seriesItemEnabled, extraProps, _e, dataModel, processedData;\n return __generator$b(this, function (_f) {\n switch (_f.label) {\n case 0:\n _c = this.data, data = _c === void 0 ? [] : _c;\n _d = this, angleKey = _d.angleKey, radiusKey = _d.radiusKey, calloutLabelKey = _d.calloutLabelKey, sectorLabelKey = _d.sectorLabelKey, legendItemKey = _d.legendItemKey, seriesItemEnabled = _d.seriesItemEnabled;\n if (!angleKey)\n return [2 /*return*/];\n extraProps = [];\n if (radiusKey) {\n extraProps.push(rangedValueProperty(this, radiusKey, {\n id: 'radiusValue',\n min: (_a = this.radiusMin) !== null && _a !== void 0 ? _a : 0,\n max: this.radiusMax,\n }), valueProperty(this, radiusKey, true, { id: \"radiusRaw\" }), // Raw value pass-through.\n normalisePropertyTo(this, { id: 'radiusValue' }, [0, 1], (_b = this.radiusMin) !== null && _b !== void 0 ? _b : 0, this.radiusMax));\n extraProps.push();\n }\n if (calloutLabelKey) {\n extraProps.push(valueProperty(this, calloutLabelKey, false, { id: \"calloutLabelValue\" }));\n }\n if (sectorLabelKey) {\n extraProps.push(valueProperty(this, sectorLabelKey, false, { id: \"sectorLabelValue\" }));\n }\n if (legendItemKey) {\n extraProps.push(valueProperty(this, legendItemKey, false, { id: \"legendItemValue\" }));\n }\n data = data.map(function (d, idx) {\n var _a;\n return (seriesItemEnabled[idx] ? d : __assign$h(__assign$h({}, d), (_a = {}, _a[angleKey] = 0, _a)));\n });\n return [4 /*yield*/, dataController.request(this.id, data, {\n props: __spreadArray$b([\n accumulativeValueProperty(this, angleKey, true, { id: \"angleValue\" }),\n valueProperty(this, angleKey, true, { id: \"angleRaw\" }),\n normalisePropertyTo(this, { id: 'angleValue' }, [0, 1], 0)\n ], __read$j(extraProps)),\n })];\n case 1:\n _e = _f.sent(), dataModel = _e.dataModel, processedData = _e.processedData;\n this.dataModel = dataModel;\n this.processedData = processedData;\n return [2 /*return*/];\n }\n });\n });\n };\n PieSeries.prototype.maybeRefreshNodeData = function () {\n if (!this.nodeDataRefresh)\n return;\n var _a = __read$j(this._createNodeData(), 1), _b = _a[0], _c = _b === void 0 ? {} : _b, _d = _c.nodeData, nodeData = _d === void 0 ? [] : _d;\n this.nodeData = nodeData;\n this.nodeDataRefresh = false;\n };\n PieSeries.prototype.createNodeData = function () {\n return __awaiter$b(this, void 0, void 0, function () {\n return __generator$b(this, function (_a) {\n return [2 /*return*/, this._createNodeData()];\n });\n });\n };\n PieSeries.prototype.getProcessedDataIndexes = function (dataModel) {\n var angleIdx = dataModel.resolveProcessedDataIndexById(this, \"angleValue\").index;\n var radiusIdx = this.radiusKey ? dataModel.resolveProcessedDataIndexById(this, \"radiusValue\").index : -1;\n var calloutLabelIdx = this.calloutLabelKey\n ? dataModel.resolveProcessedDataIndexById(this, \"calloutLabelValue\").index\n : -1;\n var sectorLabelIdx = this.sectorLabelKey\n ? dataModel.resolveProcessedDataIndexById(this, \"sectorLabelValue\").index\n : -1;\n var legendItemIdx = this.legendItemKey\n ? dataModel.resolveProcessedDataIndexById(this, \"legendItemValue\").index\n : -1;\n return { angleIdx: angleIdx, radiusIdx: radiusIdx, calloutLabelIdx: calloutLabelIdx, sectorLabelIdx: sectorLabelIdx, legendItemIdx: legendItemIdx };\n };\n PieSeries.prototype._createNodeData = function () {\n var _this = this;\n var _a = this, seriesId = _a.id, processedData = _a.processedData, dataModel = _a.dataModel, rotation = _a.rotation, angleScale = _a.angleScale;\n if (!processedData || !dataModel || processedData.type !== 'ungrouped')\n return [];\n var _b = this.getProcessedDataIndexes(dataModel), angleIdx = _b.angleIdx, radiusIdx = _b.radiusIdx, calloutLabelIdx = _b.calloutLabelIdx, sectorLabelIdx = _b.sectorLabelIdx, legendItemIdx = _b.legendItemIdx;\n var currentStart = 0;\n var nodeData = processedData.data.map(function (group, index) {\n var _a;\n var datum = group.datum, values = group.values;\n var currentValue = values[angleIdx];\n var startAngle = angleScale.convert(currentStart) + toRadians$1(rotation);\n currentStart = currentValue;\n var endAngle = angleScale.convert(currentStart) + toRadians$1(rotation);\n var span = Math.abs(endAngle - startAngle);\n var midAngle = startAngle + span / 2;\n var angleValue = values[angleIdx + 1];\n var radius = radiusIdx >= 0 ? (_a = values[radiusIdx]) !== null && _a !== void 0 ? _a : 1 : 1;\n var radiusValue = radiusIdx >= 0 ? values[radiusIdx + 1] : undefined;\n var legendItemValue = legendItemIdx >= 0 ? values[legendItemIdx] : undefined;\n var labels = _this.getLabels(datum, midAngle, span, true, currentValue, radiusValue, values[calloutLabelIdx], values[sectorLabelIdx], legendItemValue);\n var sectorFormat = _this.getSectorFormat(datum, index, index, false);\n return __assign$h({ itemId: index, series: _this, datum: datum, index: index, angleValue: angleValue, midAngle: midAngle, midCos: Math.cos(midAngle), midSin: Math.sin(midAngle), startAngle: startAngle, endAngle: endAngle, sectorFormat: sectorFormat, radius: radius, radiusValue: radiusValue, legendItemValue: legendItemValue }, labels);\n });\n return [\n {\n itemId: seriesId,\n nodeData: nodeData,\n labelData: nodeData,\n },\n ];\n };\n PieSeries.prototype.getLabels = function (datum, midAngle, span, skipDisabled, angleValue, radiusValue, calloutLabelValue, sectorLabelValue, legendItemValue) {\n var _a = this, calloutLabel = _a.calloutLabel, sectorLabel = _a.sectorLabel, legendItemKey = _a.legendItemKey, callbackCache = _a.ctx.callbackCache;\n var calloutLabelKey = !skipDisabled || calloutLabel.enabled ? this.calloutLabelKey : undefined;\n var sectorLabelKey = !skipDisabled || sectorLabel.enabled ? this.sectorLabelKey : undefined;\n if (!calloutLabelKey && !sectorLabelKey && !legendItemKey)\n return {};\n var labelFormatterParams = this.getLabelFormatterParams(datum, angleValue, radiusValue, calloutLabelValue, sectorLabelValue);\n var calloutLabelText;\n if (calloutLabelKey) {\n var calloutLabelMinAngle = toRadians$1(calloutLabel.minAngle);\n var calloutLabelVisible = span > calloutLabelMinAngle;\n if (!calloutLabelVisible) {\n calloutLabelText = undefined;\n }\n else if (calloutLabel.formatter) {\n calloutLabelText = callbackCache.call(calloutLabel.formatter, labelFormatterParams);\n }\n else {\n calloutLabelText = String(calloutLabelValue);\n }\n }\n var sectorLabelText;\n if (sectorLabelKey) {\n if (sectorLabel.formatter) {\n sectorLabelText = callbackCache.call(sectorLabel.formatter, labelFormatterParams);\n }\n else {\n sectorLabelText = String(sectorLabelValue);\n }\n }\n return __assign$h(__assign$h(__assign$h({}, (calloutLabelText != null\n ? {\n calloutLabel: __assign$h(__assign$h({}, this.getTextAlignment(midAngle)), { text: calloutLabelText, hidden: false, collisionTextAlign: undefined, collisionOffsetY: 0, box: undefined }),\n }\n : {})), (sectorLabelText != null ? { sectorLabel: { text: sectorLabelText } } : {})), (legendItemKey != null && legendItemValue != null\n ? { legendItem: { key: legendItemKey, text: legendItemValue } }\n : {}));\n };\n PieSeries.prototype.getLabelFormatterParams = function (datum, angleValue, radiusValue, calloutLabelValue, sectorLabelValue) {\n var _a = this, seriesId = _a.id, radiusKey = _a.radiusKey, radiusName = _a.radiusName, angleKey = _a.angleKey, angleName = _a.angleName, calloutLabelKey = _a.calloutLabelKey, calloutLabelName = _a.calloutLabelName, sectorLabelKey = _a.sectorLabelKey, sectorLabelName = _a.sectorLabelName;\n return {\n datum: datum,\n angleKey: angleKey,\n angleValue: angleValue,\n angleName: angleName,\n radiusKey: radiusKey,\n radiusValue: radiusValue,\n radiusName: radiusName,\n calloutLabelKey: calloutLabelKey,\n calloutLabelValue: calloutLabelValue,\n calloutLabelName: calloutLabelName,\n sectorLabelKey: sectorLabelKey,\n sectorLabelValue: sectorLabelValue,\n sectorLabelName: sectorLabelName,\n seriesId: seriesId,\n };\n };\n PieSeries.prototype.getTextAlignment = function (midAngle) {\n var quadrantTextOpts = [\n { textAlign: 'center', textBaseline: 'bottom' },\n { textAlign: 'left', textBaseline: 'middle' },\n { textAlign: 'center', textBaseline: 'hanging' },\n { textAlign: 'right', textBaseline: 'middle' },\n ];\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 quadrantOffset = midAngle180 - quadrantStart;\n var quadrant = Math.floor(quadrantOffset / (Math.PI / 2));\n var quadrantIndex = mod(quadrant, quadrantTextOpts.length);\n return quadrantTextOpts[quadrantIndex];\n };\n PieSeries.prototype.getSectorFormat = function (datum, itemId, index, highlight) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n var _j = this, angleKey = _j.angleKey, radiusKey = _j.radiusKey, fills = _j.fills, strokes = _j.strokes, seriesFillOpacity = _j.fillOpacity, formatter = _j.formatter, seriesId = _j.id, _k = _j.ctx, callbackCache = _k.callbackCache, highlightManager = _k.highlightManager;\n var highlightedDatum = highlightManager === null || highlightManager === void 0 ? void 0 : highlightManager.getActiveHighlight();\n var isDatumHighlighted = highlight && (highlightedDatum === null || highlightedDatum === void 0 ? void 0 : highlightedDatum.series) === this && itemId === highlightedDatum.itemId;\n var highlightedStyle = isDatumHighlighted ? this.highlightStyle.item : null;\n var fill = (_a = highlightedStyle === null || highlightedStyle === void 0 ? void 0 : highlightedStyle.fill) !== null && _a !== void 0 ? _a : fills[index % fills.length];\n var fillOpacity = (_b = highlightedStyle === null || highlightedStyle === void 0 ? void 0 : highlightedStyle.fillOpacity) !== null && _b !== void 0 ? _b : seriesFillOpacity;\n var stroke = (_c = highlightedStyle === null || highlightedStyle === void 0 ? void 0 : highlightedStyle.stroke) !== null && _c !== void 0 ? _c : strokes[index % strokes.length];\n var strokeWidth = (_d = highlightedStyle === null || highlightedStyle === void 0 ? void 0 : highlightedStyle.strokeWidth) !== null && _d !== void 0 ? _d : this.getStrokeWidth(this.strokeWidth);\n var format;\n if (formatter) {\n format = callbackCache.call(formatter, {\n datum: datum,\n angleKey: angleKey,\n radiusKey: radiusKey,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n highlighted: isDatumHighlighted,\n seriesId: seriesId,\n });\n }\n return {\n fill: (_e = format === null || format === void 0 ? void 0 : format.fill) !== null && _e !== void 0 ? _e : fill,\n fillOpacity: (_f = format === null || format === void 0 ? void 0 : format.fillOpacity) !== null && _f !== void 0 ? _f : fillOpacity,\n stroke: (_g = format === null || format === void 0 ? void 0 : format.stroke) !== null && _g !== void 0 ? _g : stroke,\n strokeWidth: (_h = format === null || format === void 0 ? void 0 : format.strokeWidth) !== null && _h !== void 0 ? _h : strokeWidth,\n };\n };\n PieSeries.prototype.getInnerRadius = function () {\n var _a = this, radius = _a.radius, innerRadiusRatio = _a.innerRadiusRatio, innerRadiusOffset = _a.innerRadiusOffset;\n var innerRadius = radius * (innerRadiusRatio !== null && innerRadiusRatio !== void 0 ? innerRadiusRatio : 1) + (innerRadiusOffset ? innerRadiusOffset : 0);\n if (innerRadius === radius || innerRadius < 0) {\n return 0;\n }\n return innerRadius;\n };\n PieSeries.prototype.getOuterRadius = function () {\n var _a = this, radius = _a.radius, outerRadiusRatio = _a.outerRadiusRatio, outerRadiusOffset = _a.outerRadiusOffset;\n var outerRadius = radius * (outerRadiusRatio !== null && outerRadiusRatio !== void 0 ? outerRadiusRatio : 1) + (outerRadiusOffset ? outerRadiusOffset : 0);\n if (outerRadius < 0) {\n return 0;\n }\n return outerRadius;\n };\n PieSeries.prototype.updateRadiusScale = function () {\n var innerRadius = this.getInnerRadius();\n var outerRadius = this.getOuterRadius();\n this.radiusScale.range = [innerRadius, outerRadius];\n };\n PieSeries.prototype.getTitleTranslationY = function () {\n var _a, _b;\n var outerRadius = Math.max(0, this.radiusScale.range[1]);\n if (outerRadius === 0) {\n return NaN;\n }\n var spacing = (_b = (_a = this.title) === null || _a === void 0 ? void 0 : _a.spacing) !== null && _b !== void 0 ? _b : 0;\n var titleOffset = 2 + spacing;\n var dy = Math.max(0, -outerRadius);\n return -outerRadius - titleOffset - dy;\n };\n PieSeries.prototype.update = function (_a) {\n var seriesRect = _a.seriesRect;\n return __awaiter$b(this, void 0, void 0, function () {\n var title, dy, titleBox;\n return __generator$b(this, function (_b) {\n switch (_b.label) {\n case 0:\n title = this.title;\n this.maybeRefreshNodeData();\n this.updateTitleNodes();\n this.updateRadiusScale();\n this.updateInnerCircleNodes();\n this.contentGroup.translationX = this.centerX;\n this.contentGroup.translationY = this.centerY;\n this.highlightGroup.translationX = this.centerX;\n this.highlightGroup.translationY = this.centerY;\n this.backgroundGroup.translationX = this.centerX;\n this.backgroundGroup.translationY = this.centerY;\n if (this.labelGroup) {\n this.labelGroup.translationX = this.centerX;\n this.labelGroup.translationY = this.centerY;\n }\n if (title) {\n dy = this.getTitleTranslationY();\n titleBox = title.node.computeBBox();\n title.node.visible =\n title.enabled && isFinite(dy) && !this.bboxIntersectsSurroundingSeries(titleBox, 0, dy);\n title.node.translationY = isFinite(dy) ? dy : 0;\n }\n this.updateNodeMidPoint();\n return [4 /*yield*/, this.updateSelections()];\n case 1:\n _b.sent();\n return [4 /*yield*/, this.updateNodes(seriesRect)];\n case 2:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n PieSeries.prototype.updateTitleNodes = function () {\n var _a, _b;\n var _c = this, title = _c.title, oldTitle = _c.oldTitle;\n if (oldTitle !== title) {\n if (oldTitle) {\n (_a = this.labelGroup) === null || _a === void 0 ? void 0 : _a.removeChild(oldTitle.node);\n }\n if (title) {\n title.node.textBaseline = 'bottom';\n (_b = this.labelGroup) === null || _b === void 0 ? void 0 : _b.appendChild(title.node);\n }\n this.oldTitle = title;\n }\n };\n PieSeries.prototype.updateInnerCircleNodes = function () {\n var _a;\n var _b = this, innerCircle = _b.innerCircle, oldInnerCircle = _b.oldInnerCircle, oldNode = _b.innerCircleNode;\n if (oldInnerCircle !== innerCircle) {\n var circle = void 0;\n if (oldNode) {\n this.backgroundGroup.removeChild(oldNode);\n }\n if (innerCircle) {\n circle = new Circle();\n circle.fill = innerCircle.fill;\n circle.fillOpacity = (_a = innerCircle.fillOpacity) !== null && _a !== void 0 ? _a : 1;\n this.backgroundGroup.appendChild(circle);\n }\n this.oldInnerCircle = innerCircle;\n this.innerCircleNode = circle;\n }\n };\n PieSeries.prototype.updateNodeMidPoint = function () {\n var _this = this;\n this.nodeData.forEach(function (d) {\n var radius = _this.radiusScale.convert(d.radius);\n d.nodeMidPoint = {\n x: d.midCos * Math.max(0, radius / 2),\n y: d.midSin * Math.max(0, radius / 2),\n };\n });\n };\n PieSeries.prototype.updateSelections = function () {\n return __awaiter$b(this, void 0, void 0, function () {\n return __generator$b(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.updateGroupSelection()];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n PieSeries.prototype.updateGroupSelection = function () {\n return __awaiter$b(this, void 0, void 0, function () {\n var _a, groupSelection, highlightSelection, calloutLabelSelection, sectorLabelSelection, innerLabelsSelection, update;\n var _this = this;\n return __generator$b(this, function (_b) {\n _a = this, groupSelection = _a.groupSelection, highlightSelection = _a.highlightSelection, calloutLabelSelection = _a.calloutLabelSelection, sectorLabelSelection = _a.sectorLabelSelection, innerLabelsSelection = _a.innerLabelsSelection;\n update = function (selection) {\n return selection.update(_this.nodeData, function (group) {\n var sector = new Sector();\n sector.tag = PieNodeTag.Sector;\n group.appendChild(sector);\n });\n };\n this.groupSelection = update(groupSelection);\n this.highlightSelection = update(highlightSelection);\n calloutLabelSelection.update(this.nodeData, function (group) {\n var line = new Line();\n line.tag = PieNodeTag.Callout;\n line.pointerEvents = PointerEvents.None;\n group.appendChild(line);\n var text = new Text();\n text.tag = PieNodeTag.Label;\n text.pointerEvents = PointerEvents.None;\n group.appendChild(text);\n });\n sectorLabelSelection.update(this.nodeData, function (node) {\n node.pointerEvents = PointerEvents.None;\n });\n innerLabelsSelection.update(this.innerLabels, function (node) {\n node.pointerEvents = PointerEvents.None;\n });\n return [2 /*return*/];\n });\n });\n };\n PieSeries.prototype.updateNodes = function (seriesRect) {\n var _a;\n return __awaiter$b(this, void 0, void 0, function () {\n var highlightedDatum, isVisible, radiusScale, innerRadius, updateSectorFn;\n var _this = this;\n return __generator$b(this, function (_b) {\n highlightedDatum = (_a = this.ctx.highlightManager) === null || _a === void 0 ? void 0 : _a.getActiveHighlight();\n isVisible = this.seriesItemEnabled.indexOf(true) >= 0;\n this.rootGroup.visible = isVisible;\n this.backgroundGroup.visible = isVisible;\n this.contentGroup.visible = isVisible;\n this.highlightGroup.visible = isVisible && (highlightedDatum === null || highlightedDatum === void 0 ? void 0 : highlightedDatum.series) === this;\n if (this.labelGroup) {\n this.labelGroup.visible = isVisible;\n }\n this.contentGroup.opacity = this.getOpacity();\n this.updateInnerCircle();\n radiusScale = this.radiusScale;\n innerRadius = radiusScale.convert(0);\n updateSectorFn = function (sector, datum, index, isDatumHighlighted) {\n var radius = radiusScale.convert(datum.radius);\n // Bring highlighted sector's parent group to front.\n var sectorParent = sector.parent;\n var sectorGrandParent = sectorParent === null || sectorParent === void 0 ? void 0 : sectorParent.parent;\n if (isDatumHighlighted && sectorParent && sectorGrandParent) {\n sectorGrandParent.removeChild(sectorParent);\n sectorGrandParent.appendChild(sectorParent);\n }\n sector.innerRadius = Math.max(0, innerRadius);\n sector.outerRadius = Math.max(0, radius);\n if (isDatumHighlighted) {\n sector.startAngle = datum.startAngle;\n sector.endAngle = datum.endAngle;\n }\n var format = _this.getSectorFormat(datum.datum, datum.itemId, index, isDatumHighlighted);\n sector.fill = format.fill;\n sector.stroke = format.stroke;\n sector.strokeWidth = format.strokeWidth;\n sector.fillOpacity = format.fillOpacity;\n sector.strokeOpacity = _this.strokeOpacity;\n sector.lineDash = _this.lineDash;\n sector.lineDashOffset = _this.lineDashOffset;\n sector.fillShadow = _this.shadow;\n sector.lineJoin = 'round';\n sector.visible = _this.seriesItemEnabled[index];\n };\n this.groupSelection\n .selectByTag(PieNodeTag.Sector)\n .forEach(function (node, index) { return updateSectorFn(node, node.datum, index, false); });\n this.highlightSelection.selectByTag(PieNodeTag.Sector).forEach(function (node, index) {\n var isDatumHighlighted = (highlightedDatum === null || highlightedDatum === void 0 ? void 0 : highlightedDatum.series) === _this && node.datum.itemId === highlightedDatum.itemId;\n if (isDatumHighlighted) {\n updateSectorFn(node, node.datum, index, isDatumHighlighted);\n }\n else {\n node.visible = false;\n }\n });\n this.animationState.transition('update');\n this.updateCalloutLineNodes();\n this.updateCalloutLabelNodes(seriesRect);\n this.updateSectorLabelNodes();\n this.updateInnerLabelNodes();\n return [2 /*return*/];\n });\n });\n };\n PieSeries.prototype.updateCalloutLineNodes = function () {\n var _a;\n var _b = this, radiusScale = _b.radiusScale, calloutLine = _b.calloutLine;\n var calloutLength = calloutLine.length;\n var calloutStrokeWidth = calloutLine.strokeWidth;\n var calloutColors = (_a = calloutLine.colors) !== null && _a !== void 0 ? _a : this.strokes;\n var offset = this.calloutLabel.offset;\n this.calloutLabelSelection.selectByTag(PieNodeTag.Callout).forEach(function (line, index) {\n var datum = line.datum;\n var radius = radiusScale.convert(datum.radius);\n var outerRadius = Math.max(0, radius);\n var label = datum.calloutLabel;\n if ((label === null || label === void 0 ? void 0 : label.text) && !label.hidden && outerRadius !== 0) {\n line.visible = true;\n line.strokeWidth = calloutStrokeWidth;\n line.stroke = calloutColors[index % calloutColors.length];\n line.fill = undefined;\n var x1 = datum.midCos * outerRadius;\n var y1 = datum.midSin * outerRadius;\n var x2 = datum.midCos * (outerRadius + calloutLength);\n var y2 = datum.midSin * (outerRadius + calloutLength);\n var isMoved = label.collisionTextAlign || label.collisionOffsetY !== 0;\n if (isMoved && label.box != null) {\n // Get the closest point to the text bounding box\n var box = label.box;\n var cx = x2;\n var cy = y2;\n if (x2 < box.x) {\n cx = box.x;\n }\n else if (x2 > box.x + box.width) {\n cx = box.x + box.width;\n }\n if (y2 < box.y) {\n cy = box.y;\n }\n else if (y2 > box.y + box.height) {\n cy = box.y + box.height;\n }\n // Apply label offset\n var dx = cx - x2;\n var dy = cy - y2;\n var length_1 = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));\n var paddedLength = length_1 - offset;\n if (paddedLength > 0) {\n x2 = x2 + (dx * paddedLength) / length_1;\n y2 = y2 + (dy * paddedLength) / length_1;\n }\n }\n line.x1 = x1;\n line.y1 = y1;\n line.x2 = x2;\n line.y2 = y2;\n }\n else {\n line.visible = false;\n }\n });\n };\n PieSeries.prototype.getLabelOverflow = function (text, box, seriesRect) {\n var seriesLeft = seriesRect.x - this.centerX;\n var seriesRight = seriesRect.x + seriesRect.width - this.centerX;\n var seriesTop = seriesRect.y - this.centerY;\n var seriesBottom = seriesRect.y + seriesRect.height - this.centerY;\n var errPx = 1; // Prevents errors related to floating point calculations\n var visibleTextPart = 1;\n if (box.x + errPx < seriesLeft) {\n visibleTextPart = (box.x + box.width - seriesLeft) / box.width;\n }\n else if (box.x + box.width - errPx > seriesRight) {\n visibleTextPart = (seriesRight - box.x) / box.width;\n }\n var hasVerticalOverflow = box.y + errPx < seriesTop || box.y + box.height - errPx > seriesBottom;\n var textLength = visibleTextPart === 1 ? text.length : Math.floor(text.length * visibleTextPart) - 1;\n var hasSurroundingSeriesOverflow = this.bboxIntersectsSurroundingSeries(box);\n return { textLength: textLength, hasVerticalOverflow: hasVerticalOverflow, hasSurroundingSeriesOverflow: hasSurroundingSeriesOverflow };\n };\n PieSeries.prototype.bboxIntersectsSurroundingSeries = function (box, dx, dy) {\n if (dx === void 0) { dx = 0; }\n if (dy === void 0) { dy = 0; }\n var surroundingRadius = this.surroundingRadius;\n if (surroundingRadius == null) {\n return false;\n }\n var corners = [\n { x: box.x + dx, y: box.y + dy },\n { x: box.x + box.width + dx, y: box.y + dy },\n { x: box.x + box.width + dx, y: box.y + box.height + dy },\n { x: box.x + dx, y: box.y + box.height + dy },\n ];\n var sur2 = Math.pow(surroundingRadius, 2);\n return corners.some(function (corner) { return Math.pow(corner.x, 2) + Math.pow(corner.y, 2) > sur2; });\n };\n PieSeries.prototype.computeCalloutLabelCollisionOffsets = function () {\n var _this = this;\n var _a = this, radiusScale = _a.radiusScale, calloutLabel = _a.calloutLabel, calloutLine = _a.calloutLine;\n var offset = calloutLabel.offset, minSpacing = calloutLabel.minSpacing;\n var innerRadius = radiusScale.convert(0);\n var shouldSkip = function (datum) {\n var label = datum.calloutLabel;\n var radius = radiusScale.convert(datum.radius);\n var outerRadius = Math.max(0, radius);\n return !label || outerRadius === 0;\n };\n var fullData = this.nodeData;\n var data = this.nodeData.filter(function (t) { return !shouldSkip(t); });\n data.forEach(function (datum) {\n var label = datum.calloutLabel;\n if (label == null)\n return;\n label.hidden = false;\n label.collisionTextAlign = undefined;\n label.collisionOffsetY = 0;\n });\n if (data.length <= 1) {\n return;\n }\n var leftLabels = data.filter(function (d) { return d.midCos < 0; }).sort(function (a, b) { return a.midSin - b.midSin; });\n var rightLabels = data.filter(function (d) { return d.midCos >= 0; }).sort(function (a, b) { return a.midSin - b.midSin; });\n var topLabels = data\n .filter(function (d) { var _a; return d.midSin < 0 && ((_a = d.calloutLabel) === null || _a === void 0 ? void 0 : _a.textAlign) === 'center'; })\n .sort(function (a, b) { return a.midCos - b.midCos; });\n var bottomLabels = data\n .filter(function (d) { var _a; return d.midSin >= 0 && ((_a = d.calloutLabel) === null || _a === void 0 ? void 0 : _a.textAlign) === 'center'; })\n .sort(function (a, b) { return a.midCos - b.midCos; });\n var tempTextNode = new Text();\n var getTextBBox = function (datum) {\n var _a;\n var label = datum.calloutLabel;\n if (label == null)\n return new BBox(0, 0, 0, 0);\n var radius = radiusScale.convert(datum.radius);\n var outerRadius = Math.max(0, radius);\n var labelRadius = outerRadius + calloutLine.length + offset;\n var x = datum.midCos * labelRadius;\n var y = datum.midSin * labelRadius + label.collisionOffsetY;\n tempTextNode.text = label.text;\n tempTextNode.x = x;\n tempTextNode.y = y;\n tempTextNode.setFont(_this.calloutLabel);\n tempTextNode.setAlign({\n textAlign: (_a = label.collisionTextAlign) !== null && _a !== void 0 ? _a : label.textAlign,\n textBaseline: label.textBaseline,\n });\n return tempTextNode.computeBBox();\n };\n var avoidNeighbourYCollision = function (label, next, direction) {\n var box = getTextBBox(label).grow(minSpacing / 2);\n var other = getTextBBox(next).grow(minSpacing / 2);\n // The full collision is not detected, because sometimes\n // the next label can appear behind the label with offset\n var collidesOrBehind = box.x < other.x + other.width &&\n box.x + box.width > other.x &&\n (direction === 'to-top' ? box.y < other.y + other.height : box.y + box.height > other.y);\n if (collidesOrBehind) {\n var dy = direction === 'to-top' ? box.y - other.y - other.height : box.y + box.height - other.y;\n next.calloutLabel.collisionOffsetY = dy;\n }\n };\n var avoidYCollisions = function (labels) {\n var midLabel = labels.slice().sort(function (a, b) { return Math.abs(a.midSin) - Math.abs(b.midSin); })[0];\n var midIndex = labels.indexOf(midLabel);\n for (var i = midIndex - 1; i >= 0; i--) {\n var prev = labels[i + 1];\n var next = labels[i];\n avoidNeighbourYCollision(prev, next, 'to-top');\n }\n for (var i = midIndex + 1; i < labels.length; i++) {\n var prev = labels[i - 1];\n var next = labels[i];\n avoidNeighbourYCollision(prev, next, 'to-bottom');\n }\n };\n var avoidXCollisions = function (labels) {\n var labelsCollideLabelsByY = data.some(function (datum) { return datum.calloutLabel.collisionOffsetY !== 0; });\n var boxes = labels.map(function (label) { return getTextBBox(label); });\n var paddedBoxes = boxes.map(function (box) { return box.clone().grow(minSpacing / 2); });\n var labelsCollideLabelsByX = false;\n for (var i = 0; i < paddedBoxes.length && !labelsCollideLabelsByX; i++) {\n var box = paddedBoxes[i];\n for (var j = i + 1; j < labels.length; j++) {\n var other = paddedBoxes[j];\n if (box.collidesBBox(other)) {\n labelsCollideLabelsByX = true;\n break;\n }\n }\n }\n var sectors = fullData.map(function (datum) {\n var startAngle = datum.startAngle, endAngle = datum.endAngle;\n var radius = radiusScale.convert(datum.radius);\n var outerRadius = Math.max(0, radius);\n return { startAngle: startAngle, endAngle: endAngle, innerRadius: innerRadius, outerRadius: outerRadius };\n });\n var labelsCollideSectors = boxes.some(function (box) {\n return sectors.some(function (sector) { return boxCollidesSector(box, sector); });\n });\n if (!labelsCollideLabelsByX && !labelsCollideLabelsByY && !labelsCollideSectors) {\n return;\n }\n labels\n .filter(function (d) { return d.calloutLabel.textAlign === 'center'; })\n .forEach(function (d) {\n var label = d.calloutLabel;\n if (d.midCos < 0) {\n label.collisionTextAlign = 'right';\n }\n else if (d.midCos > 0) {\n label.collisionTextAlign = 'left';\n }\n else {\n label.collisionTextAlign = 'center';\n }\n });\n };\n avoidYCollisions(leftLabels);\n avoidYCollisions(rightLabels);\n avoidXCollisions(topLabels);\n avoidXCollisions(bottomLabels);\n };\n PieSeries.prototype.updateCalloutLabelNodes = function (seriesRect) {\n var _this = this;\n var _a = this, radiusScale = _a.radiusScale, calloutLabel = _a.calloutLabel, calloutLine = _a.calloutLine;\n var calloutLength = calloutLine.length;\n var offset = calloutLabel.offset, color = calloutLabel.color;\n var tempTextNode = new Text();\n this.calloutLabelSelection.selectByTag(PieNodeTag.Label).forEach(function (text) {\n var _a;\n var datum = text.datum;\n var label = datum.calloutLabel;\n var radius = radiusScale.convert(datum.radius);\n var outerRadius = Math.max(0, radius);\n if (!(label === null || label === void 0 ? void 0 : label.text) || outerRadius === 0 || label.hidden) {\n text.visible = false;\n return;\n }\n var labelRadius = outerRadius + calloutLength + offset;\n var x = datum.midCos * labelRadius;\n var y = datum.midSin * labelRadius + label.collisionOffsetY;\n // Detect text overflow\n var align = { textAlign: (_a = label.collisionTextAlign) !== null && _a !== void 0 ? _a : label.textAlign, textBaseline: label.textBaseline };\n tempTextNode.text = label.text;\n tempTextNode.x = x;\n tempTextNode.y = y;\n tempTextNode.setFont(_this.calloutLabel);\n tempTextNode.setAlign(align);\n var box = tempTextNode.computeBBox();\n var displayText = label.text;\n var visible = true;\n if (calloutLabel.avoidCollisions) {\n var _b = _this.getLabelOverflow(label.text, box, seriesRect), textLength = _b.textLength, hasVerticalOverflow = _b.hasVerticalOverflow;\n displayText = label.text.length === textLength ? label.text : label.text.substring(0, textLength) + \"\\u2026\";\n visible = !hasVerticalOverflow;\n }\n text.text = displayText;\n text.x = x;\n text.y = y;\n text.setFont(_this.calloutLabel);\n text.setAlign(align);\n text.fill = color;\n text.visible = visible;\n });\n };\n PieSeries.prototype.computeLabelsBBox = function (options, seriesRect) {\n var _this = this;\n var _a;\n var _b = this, radiusScale = _b.radiusScale, calloutLabel = _b.calloutLabel, calloutLine = _b.calloutLine;\n var calloutLength = calloutLine.length;\n var offset = calloutLabel.offset, maxCollisionOffset = calloutLabel.maxCollisionOffset, minSpacing = calloutLabel.minSpacing;\n if (!calloutLabel.avoidCollisions) {\n return null;\n }\n this.maybeRefreshNodeData();\n this.updateRadiusScale();\n this.computeCalloutLabelCollisionOffsets();\n var textBoxes = [];\n var text = new Text();\n var titleBox;\n if (((_a = this.title) === null || _a === void 0 ? void 0 : _a.text) && this.title.enabled) {\n var dy = this.getTitleTranslationY();\n if (isFinite(dy)) {\n text.text = this.title.text;\n text.x = 0;\n text.y = dy;\n text.setFont(this.title);\n text.setAlign({\n textBaseline: 'bottom',\n textAlign: 'center',\n });\n titleBox = text.computeBBox();\n textBoxes.push(titleBox);\n }\n }\n this.nodeData.forEach(function (datum) {\n var _a;\n var label = datum.calloutLabel;\n var radius = radiusScale.convert(datum.radius);\n var outerRadius = Math.max(0, radius);\n if (!label || outerRadius === 0) {\n return null;\n }\n var labelRadius = outerRadius + calloutLength + offset;\n var x = datum.midCos * labelRadius;\n var y = datum.midSin * labelRadius + label.collisionOffsetY;\n text.text = label.text;\n text.x = x;\n text.y = y;\n text.setFont(_this.calloutLabel);\n text.setAlign({ textAlign: (_a = label.collisionTextAlign) !== null && _a !== void 0 ? _a : label.textAlign, textBaseline: label.textBaseline });\n var box = text.computeBBox();\n label.box = box;\n // Hide labels that where pushed too far by the collision avoidance algorithm\n if (Math.abs(label.collisionOffsetY) > maxCollisionOffset) {\n label.hidden = true;\n return;\n }\n // Hide labels intersecting or above the title\n if (titleBox) {\n var seriesTop = seriesRect.y - _this.centerY;\n var titleCleanArea = new BBox(titleBox.x - minSpacing, seriesTop, titleBox.width + 2 * minSpacing, titleBox.y + titleBox.height + minSpacing - seriesTop);\n if (box.collidesBBox(titleCleanArea)) {\n label.hidden = true;\n return;\n }\n }\n if (options.hideWhenNecessary) {\n var _b = _this.getLabelOverflow(label.text, box, seriesRect), textLength = _b.textLength, hasVerticalOverflow = _b.hasVerticalOverflow, hasSurroundingSeriesOverflow = _b.hasSurroundingSeriesOverflow;\n var isTooShort = label.text.length > 2 && textLength < 2;\n if (hasVerticalOverflow || isTooShort || hasSurroundingSeriesOverflow) {\n label.hidden = true;\n return;\n }\n }\n label.hidden = false;\n textBoxes.push(box);\n });\n if (textBoxes.length === 0) {\n return null;\n }\n return BBox.merge(textBoxes);\n };\n PieSeries.prototype.updateSectorLabelNodes = function () {\n var radiusScale = this.radiusScale;\n var innerRadius = radiusScale.convert(0);\n var _a = this.sectorLabel, fontSize = _a.fontSize, fontStyle = _a.fontStyle, fontWeight = _a.fontWeight, fontFamily = _a.fontFamily, positionOffset = _a.positionOffset, positionRatio = _a.positionRatio, color = _a.color;\n var isDoughnut = innerRadius > 0;\n var singleVisibleSector = this.seriesItemEnabled.filter(Boolean).length === 1;\n this.sectorLabelSelection.each(function (text, datum) {\n var sectorLabel = datum.sectorLabel;\n var radius = radiusScale.convert(datum.radius);\n var outerRadius = Math.max(0, radius);\n var isTextVisible = false;\n if (sectorLabel && outerRadius !== 0) {\n var labelRadius = innerRadius * (1 - positionRatio) + radius * positionRatio + positionOffset;\n text.fill = color;\n text.fontStyle = fontStyle;\n text.fontWeight = fontWeight;\n text.fontSize = fontSize;\n text.fontFamily = fontFamily;\n text.text = sectorLabel.text;\n var shouldPutTextInCenter = !isDoughnut && singleVisibleSector;\n if (shouldPutTextInCenter) {\n text.x = 0;\n text.y = 0;\n }\n else {\n text.x = datum.midCos * labelRadius;\n text.y = datum.midSin * labelRadius;\n }\n text.textAlign = 'center';\n text.textBaseline = 'middle';\n var bbox = text.computeBBox();\n var corners = [\n [bbox.x, bbox.y],\n [bbox.x + bbox.width, bbox.y],\n [bbox.x + bbox.width, bbox.y + bbox.height],\n [bbox.x, bbox.y + bbox.height],\n ];\n var startAngle = datum.startAngle, endAngle = datum.endAngle;\n var sectorBounds_1 = { startAngle: startAngle, endAngle: endAngle, innerRadius: innerRadius, outerRadius: outerRadius };\n if (corners.every(function (_a) {\n var _b = __read$j(_a, 2), x = _b[0], y = _b[1];\n return isPointInSector(x, y, sectorBounds_1);\n })) {\n isTextVisible = true;\n }\n }\n text.visible = isTextVisible;\n });\n };\n PieSeries.prototype.updateInnerCircle = function () {\n var circle = this.innerCircleNode;\n if (!circle) {\n return;\n }\n var innerRadius = this.getInnerRadius();\n if (innerRadius === 0) {\n circle.size = 0;\n }\n else {\n var circleRadius = Math.min(innerRadius, this.getOuterRadius());\n var antiAliasingPadding = 1;\n circle.size = Math.ceil(circleRadius * 2 + antiAliasingPadding);\n }\n };\n PieSeries.prototype.updateInnerLabelNodes = function () {\n var textBBoxes = [];\n var margins = [];\n this.innerLabelsSelection.each(function (text, datum) {\n var fontStyle = datum.fontStyle, fontWeight = datum.fontWeight, fontSize = datum.fontSize, fontFamily = datum.fontFamily, color = datum.color;\n text.fontStyle = fontStyle;\n text.fontWeight = fontWeight;\n text.fontSize = fontSize;\n text.fontFamily = fontFamily;\n text.text = datum.text;\n text.x = 0;\n text.y = 0;\n text.fill = color;\n text.textAlign = 'center';\n text.textBaseline = 'alphabetic';\n textBBoxes.push(text.computeBBox());\n margins.push(datum.margin);\n });\n var getMarginTop = function (index) { return (index === 0 ? 0 : margins[index]); };\n var getMarginBottom = function (index) { return (index === margins.length - 1 ? 0 : margins[index]); };\n var totalHeight = textBBoxes.reduce(function (sum, bbox, i) {\n return sum + bbox.height + getMarginTop(i) + getMarginBottom(i);\n }, 0);\n var totalWidth = Math.max.apply(Math, __spreadArray$b([], __read$j(textBBoxes.map(function (bbox) { return bbox.width; }))));\n var innerRadius = this.getInnerRadius();\n var labelRadius = Math.sqrt(Math.pow(totalWidth / 2, 2) + Math.pow(totalHeight / 2, 2));\n var labelsVisible = labelRadius <= (innerRadius > 0 ? innerRadius : this.getOuterRadius());\n var textBottoms = [];\n for (var i = 0, prev = -totalHeight / 2; i < textBBoxes.length; i++) {\n var bbox = textBBoxes[i];\n var bottom = bbox.height + prev + getMarginTop(i);\n textBottoms.push(bottom);\n prev = bottom + getMarginBottom(i);\n }\n this.innerLabelsSelection.each(function (text, _datum, index) {\n text.y = textBottoms[index];\n text.visible = labelsVisible;\n });\n };\n PieSeries.prototype.getNodeClickEvent = function (event, datum) {\n return new PieSeriesNodeClickEvent(this.angleKey, this.calloutLabelKey, this.sectorLabelKey, this.radiusKey, event, datum, this);\n };\n PieSeries.prototype.getNodeDoubleClickEvent = function (event, datum) {\n return new PieSeriesNodeDoubleClickEvent(this.angleKey, this.calloutLabelKey, this.sectorLabelKey, this.radiusKey, event, datum, this);\n };\n PieSeries.prototype.getTooltipHtml = function (nodeDatum) {\n var _a;\n var angleKey = this.angleKey;\n if (!angleKey) {\n return '';\n }\n var _b = this, tooltip = _b.tooltip, angleName = _b.angleName, radiusKey = _b.radiusKey, radiusName = _b.radiusName, calloutLabelKey = _b.calloutLabelKey, sectorLabelKey = _b.sectorLabelKey, calloutLabelName = _b.calloutLabelName, sectorLabelName = _b.sectorLabelName, seriesId = _b.id;\n var tooltipRenderer = tooltip.renderer;\n var datum = nodeDatum.datum, angleValue = nodeDatum.angleValue, radiusValue = nodeDatum.radiusValue, color = nodeDatum.sectorFormat.fill, _c = nodeDatum.calloutLabel, _d = _c === void 0 ? {} : _c, _e = _d.text, label = _e === void 0 ? '' : _e;\n var formattedAngleValue = typeof angleValue === 'number' ? toFixed(angleValue) : String(angleValue);\n var title = (_a = this.title) === null || _a === void 0 ? void 0 : _a.text;\n var content = \"\" + (label ? label + \": \" : '') + formattedAngleValue;\n var defaults = {\n title: title,\n backgroundColor: color,\n content: content,\n };\n if (tooltipRenderer) {\n return toTooltipHtml$1(tooltipRenderer({\n datum: datum,\n angleKey: angleKey,\n angleValue: angleValue,\n angleName: angleName,\n radiusKey: radiusKey,\n radiusValue: radiusValue,\n radiusName: radiusName,\n calloutLabelKey: calloutLabelKey,\n calloutLabelName: calloutLabelName,\n sectorLabelKey: sectorLabelKey,\n sectorLabelName: sectorLabelName,\n title: title,\n color: color,\n seriesId: seriesId,\n }), defaults);\n }\n return toTooltipHtml$1(defaults);\n };\n PieSeries.prototype.getLegendData = function () {\n var _a, _b, _c;\n var _d = this, processedData = _d.processedData, calloutLabelKey = _d.calloutLabelKey, legendItemKey = _d.legendItemKey, id = _d.id, dataModel = _d.dataModel;\n if (!dataModel || !processedData || processedData.data.length === 0)\n return [];\n if (!legendItemKey && !calloutLabelKey)\n return [];\n var _e = this.getProcessedDataIndexes(dataModel), angleIdx = _e.angleIdx, radiusIdx = _e.radiusIdx, calloutLabelIdx = _e.calloutLabelIdx, sectorLabelIdx = _e.sectorLabelIdx, legendItemIdx = _e.legendItemIdx;\n var titleText = ((_a = this.title) === null || _a === void 0 ? void 0 : _a.showInLegend) && this.title.text;\n var legendData = [];\n for (var index = 0; index < processedData.data.length; index++) {\n var _f = processedData.data[index], datum = _f.datum, values = _f.values;\n var labelParts = [];\n if (titleText) {\n labelParts.push(titleText);\n }\n var labels = this.getLabels(datum, 2 * Math.PI, 2 * Math.PI, false, values[angleIdx], values[radiusIdx], values[calloutLabelIdx], values[sectorLabelIdx], values[legendItemIdx]);\n if (legendItemKey && labels.legendItem !== undefined) {\n labelParts.push(labels.legendItem.text);\n }\n else if (calloutLabelKey && ((_b = labels.calloutLabel) === null || _b === void 0 ? void 0 : _b.text) !== undefined) {\n labelParts.push((_c = labels.calloutLabel) === null || _c === void 0 ? void 0 : _c.text);\n }\n if (labelParts.length === 0)\n continue;\n var sectorFormat = this.getSectorFormat(datum, index, index, false);\n legendData.push({\n legendType: 'category',\n id: id,\n itemId: index,\n seriesId: id,\n enabled: this.seriesItemEnabled[index],\n label: {\n text: labelParts.join(' - '),\n },\n marker: {\n fill: sectorFormat.fill,\n stroke: sectorFormat.stroke,\n fillOpacity: this.fillOpacity,\n strokeOpacity: this.strokeOpacity,\n },\n });\n }\n return legendData;\n };\n PieSeries.prototype.onLegendItemClick = function (event) {\n var enabled = event.enabled, itemId = event.itemId, series = event.series;\n if (series.id === this.id) {\n this.toggleSeriesItem(itemId, enabled);\n }\n else if (series.type === 'pie') {\n this.toggleOtherSeriesItems(series, itemId, enabled);\n }\n };\n PieSeries.prototype.toggleSeriesItem = function (itemId, enabled) {\n this.seriesItemEnabled[itemId] = enabled;\n this.nodeDataRefresh = true;\n };\n PieSeries.prototype.toggleOtherSeriesItems = function (series, itemId, enabled) {\n var _this = this;\n var _a, _b;\n var _c = this, legendItemKey = _c.legendItemKey, dataModel = _c.dataModel;\n if (!legendItemKey || !dataModel)\n return;\n var datumToggledLegendItemValue = series.legendItemKey && ((_a = series.data) === null || _a === void 0 ? void 0 : _a.find(function (_, index) { return index === itemId; })[series.legendItemKey]);\n if (!datumToggledLegendItemValue)\n return;\n var legendItemIdx = dataModel.resolveProcessedDataIndexById(this, \"legendItemValue\").index;\n (_b = this.processedData) === null || _b === void 0 ? void 0 : _b.data.forEach(function (_a, datumItemId) {\n var values = _a.values;\n if (values[legendItemIdx] === datumToggledLegendItemValue) {\n _this.toggleSeriesItem(datumItemId, enabled);\n }\n });\n };\n PieSeries.prototype.animateEmptyUpdateReady = function () {\n var _this = this;\n var _a, _b;\n var duration = (_b = (_a = this.ctx.animationManager) === null || _a === void 0 ? void 0 : _a.defaultOptions.duration) !== null && _b !== void 0 ? _b : 1000;\n var labelDuration = 200;\n var rotation = Math.PI / -2 + toRadians$1(this.rotation);\n this.groupSelection.selectByTag(PieNodeTag.Sector).forEach(function (node) {\n var _a;\n var datum = node.datum;\n (_a = _this.ctx.animationManager) === null || _a === void 0 ? void 0 : _a.animateMany(_this.id + \"_empty-update-ready_\" + node.id, [\n { from: rotation, to: datum.startAngle },\n { from: rotation, to: datum.endAngle },\n ], {\n duration: duration,\n ease: easeOut,\n onUpdate: function (_a) {\n var _b = __read$j(_a, 2), startAngle = _b[0], endAngle = _b[1];\n node.startAngle = startAngle;\n node.endAngle = endAngle;\n },\n });\n });\n var labelAnimationOptions = {\n from: 0,\n to: 1,\n delay: duration,\n duration: labelDuration,\n };\n this.calloutLabelSelection.each(function (label) {\n var _a;\n (_a = _this.ctx.animationManager) === null || _a === void 0 ? void 0 : _a.animate(_this.id + \"_empty-update-ready_\" + label.id, __assign$h(__assign$h({}, labelAnimationOptions), { onUpdate: function (opacity) {\n label.opacity = opacity;\n } }));\n });\n this.sectorLabelSelection.each(function (label) {\n var _a;\n (_a = _this.ctx.animationManager) === null || _a === void 0 ? void 0 : _a.animate(_this.id + \"_empty-update-ready_\" + label.id, __assign$h(__assign$h({}, labelAnimationOptions), { onUpdate: function (opacity) {\n label.opacity = opacity;\n } }));\n });\n this.innerLabelsSelection.each(function (label) {\n var _a;\n (_a = _this.ctx.animationManager) === null || _a === void 0 ? void 0 : _a.animate(_this.id + \"_empty-update-ready_\" + label.id, __assign$h(__assign$h({}, labelAnimationOptions), { onUpdate: function (opacity) {\n label.opacity = opacity;\n } }));\n });\n };\n PieSeries.prototype.animateReadyUpdateReady = function () {\n this.groupSelection.selectByTag(PieNodeTag.Sector).forEach(function (node) {\n var datum = node.datum;\n node.startAngle = datum.startAngle;\n node.endAngle = datum.endAngle;\n });\n };\n PieSeries.className = 'PieSeries';\n PieSeries.type = 'pie';\n __decorate$1B([\n Validate(STRING)\n ], PieSeries.prototype, \"angleKey\", void 0);\n __decorate$1B([\n Validate(STRING)\n ], PieSeries.prototype, \"angleName\", void 0);\n __decorate$1B([\n Validate(OPT_STRING)\n ], PieSeries.prototype, \"radiusKey\", void 0);\n __decorate$1B([\n Validate(OPT_STRING)\n ], PieSeries.prototype, \"radiusName\", void 0);\n __decorate$1B([\n Validate(OPT_NUMBER(0))\n ], PieSeries.prototype, \"radiusMin\", void 0);\n __decorate$1B([\n Validate(OPT_NUMBER(0))\n ], PieSeries.prototype, \"radiusMax\", void 0);\n __decorate$1B([\n Validate(OPT_STRING)\n ], PieSeries.prototype, \"calloutLabelKey\", void 0);\n __decorate$1B([\n Validate(OPT_STRING)\n ], PieSeries.prototype, \"calloutLabelName\", void 0);\n __decorate$1B([\n Validate(OPT_STRING)\n ], PieSeries.prototype, \"sectorLabelKey\", void 0);\n __decorate$1B([\n Validate(OPT_STRING)\n ], PieSeries.prototype, \"sectorLabelName\", void 0);\n __decorate$1B([\n Validate(OPT_STRING)\n ], PieSeries.prototype, \"legendItemKey\", void 0);\n __decorate$1B([\n Validate(COLOR_STRING_ARRAY)\n ], PieSeries.prototype, \"fills\", void 0);\n __decorate$1B([\n Validate(COLOR_STRING_ARRAY)\n ], PieSeries.prototype, \"strokes\", void 0);\n __decorate$1B([\n Validate(NUMBER(0, 1))\n ], PieSeries.prototype, \"fillOpacity\", void 0);\n __decorate$1B([\n Validate(NUMBER(0, 1))\n ], PieSeries.prototype, \"strokeOpacity\", void 0);\n __decorate$1B([\n Validate(OPT_LINE_DASH)\n ], PieSeries.prototype, \"lineDash\", void 0);\n __decorate$1B([\n Validate(NUMBER(0))\n ], PieSeries.prototype, \"lineDashOffset\", void 0);\n __decorate$1B([\n Validate(OPT_FUNCTION)\n ], PieSeries.prototype, \"formatter\", void 0);\n __decorate$1B([\n Validate(NUMBER(-360, 360))\n ], PieSeries.prototype, \"rotation\", void 0);\n __decorate$1B([\n Validate(NUMBER())\n ], PieSeries.prototype, \"outerRadiusOffset\", void 0);\n __decorate$1B([\n Validate(NUMBER(0))\n ], PieSeries.prototype, \"outerRadiusRatio\", void 0);\n __decorate$1B([\n Validate(NUMBER())\n ], PieSeries.prototype, \"innerRadiusOffset\", void 0);\n __decorate$1B([\n Validate(NUMBER(0))\n ], PieSeries.prototype, \"innerRadiusRatio\", void 0);\n __decorate$1B([\n Validate(NUMBER(0))\n ], PieSeries.prototype, \"strokeWidth\", void 0);\n return PieSeries;\n}(PolarSeries));\n\nvar __assign$g = (undefined && undefined.__assign) || function () {\n __assign$g = 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$g.apply(this, arguments);\n};\nvar JSON_APPLY_PLUGINS = {\n constructors: {},\n constructedArrays: new WeakMap(),\n};\nfunction assignJsonApplyConstructedArray(array, ctor) {\n var _a;\n (_a = JSON_APPLY_PLUGINS.constructedArrays) === null || _a === void 0 ? void 0 : _a.set(array, ctor);\n}\nvar JSON_APPLY_OPTIONS = {\n constructors: {\n title: Caption,\n subtitle: Caption,\n footnote: Caption,\n shadow: DropShadow,\n innerCircle: DoughnutInnerCircle,\n 'axes[].title': AxisTitle,\n 'series[].innerLabels[]': DoughnutInnerLabel,\n },\n allowedTypes: {\n 'legend.pagination.marker.shape': ['primitive', 'function'],\n 'series[].marker.shape': ['primitive', 'function'],\n 'axis[].tick.count': ['primitive', 'class-instance'],\n },\n};\nfunction getJsonApplyOptions() {\n return {\n constructors: __assign$g(__assign$g({}, JSON_APPLY_OPTIONS.constructors), JSON_APPLY_PLUGINS.constructors),\n constructedArrays: JSON_APPLY_PLUGINS.constructedArrays,\n allowedTypes: __assign$g({}, JSON_APPLY_OPTIONS.allowedTypes),\n };\n}\n\nvar horizontalCrosslineTranslationDirections = {\n top: { xTranslationDirection: 0, yTranslationDirection: -1 },\n bottom: { xTranslationDirection: 0, yTranslationDirection: 1 },\n left: { xTranslationDirection: -1, yTranslationDirection: 0 },\n right: { xTranslationDirection: 1, yTranslationDirection: 0 },\n topLeft: { xTranslationDirection: 1, yTranslationDirection: -1 },\n topRight: { xTranslationDirection: -1, yTranslationDirection: -1 },\n bottomLeft: { xTranslationDirection: 1, yTranslationDirection: 1 },\n bottomRight: { xTranslationDirection: -1, yTranslationDirection: 1 },\n inside: { xTranslationDirection: 0, yTranslationDirection: 0 },\n insideLeft: { xTranslationDirection: 1, yTranslationDirection: 0 },\n insideRight: { xTranslationDirection: -1, yTranslationDirection: 0 },\n insideTop: { xTranslationDirection: 0, yTranslationDirection: 1 },\n insideBottom: { xTranslationDirection: 0, yTranslationDirection: -1 },\n insideTopLeft: { xTranslationDirection: 1, yTranslationDirection: 1 },\n insideBottomLeft: { xTranslationDirection: 1, yTranslationDirection: -1 },\n insideTopRight: { xTranslationDirection: -1, yTranslationDirection: 1 },\n insideBottomRight: { xTranslationDirection: -1, yTranslationDirection: -1 },\n};\nvar verticalCrossLineTranslationDirections = {\n top: { xTranslationDirection: 1, yTranslationDirection: 0 },\n bottom: { xTranslationDirection: -1, yTranslationDirection: 0 },\n left: { xTranslationDirection: 0, yTranslationDirection: -1 },\n right: { xTranslationDirection: 0, yTranslationDirection: 1 },\n topLeft: { xTranslationDirection: -1, yTranslationDirection: -1 },\n topRight: { xTranslationDirection: -1, yTranslationDirection: 1 },\n bottomLeft: { xTranslationDirection: 1, yTranslationDirection: -1 },\n bottomRight: { xTranslationDirection: 1, yTranslationDirection: 1 },\n inside: { xTranslationDirection: 0, yTranslationDirection: 0 },\n insideLeft: { xTranslationDirection: 0, yTranslationDirection: 1 },\n insideRight: { xTranslationDirection: 0, yTranslationDirection: -1 },\n insideTop: { xTranslationDirection: -1, yTranslationDirection: 0 },\n insideBottom: { xTranslationDirection: 1, yTranslationDirection: 0 },\n insideTopLeft: { xTranslationDirection: -1, yTranslationDirection: 1 },\n insideBottomLeft: { xTranslationDirection: 1, yTranslationDirection: 1 },\n insideTopRight: { xTranslationDirection: -1, yTranslationDirection: -1 },\n insideBottomRight: { xTranslationDirection: 1, yTranslationDirection: -1 },\n};\nfunction calculateLabelTranslation(_a) {\n var yDirection = _a.yDirection, _b = _a.padding, padding = _b === void 0 ? 0 : _b, _c = _a.position, position = _c === void 0 ? 'top' : _c, bbox = _a.bbox;\n var crossLineTranslationDirections = yDirection\n ? horizontalCrosslineTranslationDirections\n : verticalCrossLineTranslationDirections;\n var _d = crossLineTranslationDirections[position], xTranslationDirection = _d.xTranslationDirection, yTranslationDirection = _d.yTranslationDirection;\n var w = yDirection ? bbox.width : bbox.height;\n var h = yDirection ? bbox.height : bbox.width;\n var xTranslation = xTranslationDirection * (padding + w / 2);\n var yTranslation = yTranslationDirection * (padding + h / 2);\n var result = {\n xTranslation: xTranslation,\n yTranslation: yTranslation,\n };\n return result;\n}\nfunction calculateLabelChartPadding(_a) {\n var yDirection = _a.yDirection, bbox = _a.bbox, _b = _a.padding, padding = _b === void 0 ? 0 : _b, _c = _a.position, position = _c === void 0 ? 'top' : _c;\n var chartPadding = {};\n if (position.startsWith('inside'))\n return chartPadding;\n if (position === 'top' && !yDirection) {\n chartPadding.top = padding + bbox.height;\n }\n else if (position === 'bottom' && !yDirection) {\n chartPadding.bottom = padding + bbox.height;\n }\n else if (position === 'left' && yDirection) {\n chartPadding.left = padding + bbox.width;\n }\n else if (position === 'right' && yDirection) {\n chartPadding.right = padding + bbox.width;\n }\n return chartPadding;\n}\nvar POSITION_TOP_COORDINATES = function (_a) {\n var yDirection = _a.yDirection, xEnd = _a.xEnd, yStart = _a.yStart, yEnd = _a.yEnd;\n if (yDirection) {\n return { x: xEnd / 2, y: yStart };\n }\n else {\n return { x: xEnd, y: !isNaN(yEnd) ? (yStart + yEnd) / 2 : yStart };\n }\n};\nvar POSITION_LEFT_COORDINATES = function (_a) {\n var yDirection = _a.yDirection, xStart = _a.xStart, xEnd = _a.xEnd, yStart = _a.yStart, yEnd = _a.yEnd;\n if (yDirection) {\n return { x: xStart, y: !isNaN(yEnd) ? (yStart + yEnd) / 2 : yStart };\n }\n else {\n return { x: xEnd / 2, y: yStart };\n }\n};\nvar POSITION_RIGHT_COORDINATES = function (_a) {\n var yDirection = _a.yDirection, xEnd = _a.xEnd, yStart = _a.yStart, yEnd = _a.yEnd;\n if (yDirection) {\n return { x: xEnd, y: !isNaN(yEnd) ? (yStart + yEnd) / 2 : yStart };\n }\n else {\n return { x: xEnd / 2, y: !isNaN(yEnd) ? yEnd : yStart };\n }\n};\nvar POSITION_BOTTOM_COORDINATES = function (_a) {\n var yDirection = _a.yDirection, xStart = _a.xStart, xEnd = _a.xEnd, yStart = _a.yStart, yEnd = _a.yEnd;\n if (yDirection) {\n return { x: xEnd / 2, y: !isNaN(yEnd) ? yEnd : yStart };\n }\n else {\n return { x: xStart, y: !isNaN(yEnd) ? (yStart + yEnd) / 2 : yStart };\n }\n};\nvar POSITION_INSIDE_COORDINATES = function (_a) {\n var xEnd = _a.xEnd, yStart = _a.yStart, yEnd = _a.yEnd;\n return { x: xEnd / 2, y: !isNaN(yEnd) ? (yStart + yEnd) / 2 : yStart };\n};\nvar POSITION_TOP_LEFT_COORDINATES = function (_a) {\n var yDirection = _a.yDirection, xStart = _a.xStart, xEnd = _a.xEnd, yStart = _a.yStart;\n if (yDirection) {\n return { x: xStart / 2, y: yStart };\n }\n else {\n return { x: xEnd, y: yStart };\n }\n};\nvar POSITION_BOTTOM_LEFT_COORDINATES = function (_a) {\n var yDirection = _a.yDirection, xStart = _a.xStart, yStart = _a.yStart, yEnd = _a.yEnd;\n if (yDirection) {\n return { x: xStart, y: !isNaN(yEnd) ? yEnd : yStart };\n }\n else {\n return { x: xStart, y: yStart };\n }\n};\nvar POSITION_TOP_RIGHT_COORDINATES = function (_a) {\n var yDirection = _a.yDirection, xEnd = _a.xEnd, yStart = _a.yStart, yEnd = _a.yEnd;\n if (yDirection) {\n return { x: xEnd, y: yStart };\n }\n else {\n return { x: xEnd, y: !isNaN(yEnd) ? yEnd : yStart };\n }\n};\nvar POSITION_BOTTOM_RIGHT_COORDINATES = function (_a) {\n var yDirection = _a.yDirection, xStart = _a.xStart, xEnd = _a.xEnd, yStart = _a.yStart, yEnd = _a.yEnd;\n if (yDirection) {\n return { x: xEnd, y: !isNaN(yEnd) ? yEnd : yStart };\n }\n else {\n return { x: xStart, y: !isNaN(yEnd) ? yEnd : yStart };\n }\n};\nvar labeldDirectionHandling = {\n top: { c: POSITION_TOP_COORDINATES },\n bottom: { c: POSITION_BOTTOM_COORDINATES },\n left: { c: POSITION_LEFT_COORDINATES },\n right: { c: POSITION_RIGHT_COORDINATES },\n topLeft: { c: POSITION_TOP_LEFT_COORDINATES },\n topRight: { c: POSITION_TOP_RIGHT_COORDINATES },\n bottomLeft: { c: POSITION_BOTTOM_LEFT_COORDINATES },\n bottomRight: { c: POSITION_BOTTOM_RIGHT_COORDINATES },\n inside: { c: POSITION_INSIDE_COORDINATES },\n insideLeft: { c: POSITION_LEFT_COORDINATES },\n insideRight: { c: POSITION_RIGHT_COORDINATES },\n insideTop: { c: POSITION_TOP_COORDINATES },\n insideBottom: { c: POSITION_BOTTOM_COORDINATES },\n insideTopLeft: { c: POSITION_TOP_LEFT_COORDINATES },\n insideBottomLeft: { c: POSITION_BOTTOM_LEFT_COORDINATES },\n insideTopRight: { c: POSITION_TOP_RIGHT_COORDINATES },\n insideBottomRight: { c: POSITION_BOTTOM_RIGHT_COORDINATES },\n};\n\nvar __extends$A = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$f = (undefined && undefined.__assign) || function () {\n __assign$f = 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$f.apply(this, arguments);\n};\nvar __decorate$1A = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 Range = /** @class */ (function (_super) {\n __extends$A(Range, _super);\n function Range() {\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.startLine = false;\n _this.endLine = false;\n _this.isRange = false;\n _this.restoreOwnStyles();\n return _this;\n }\n Range.prototype.computeBBox = function () {\n return new BBox(this.x1, this.y1, this.x2 - this.x1, this.y2 - this.y1);\n };\n Range.prototype.isPointInPath = function (_x, _y) {\n return false;\n };\n Range.prototype.render = function (renderCtx) {\n var _a;\n var ctx = renderCtx.ctx, forceRender = renderCtx.forceRender, stats = renderCtx.stats;\n if (this.dirty === RedrawType.NONE && !forceRender) {\n if (stats)\n stats.nodesSkipped += this.nodeCount.count;\n return;\n }\n this.computeTransformMatrix();\n this.matrix.toContext(ctx);\n var _b = this, x1 = _b.x1, y1 = _b.y1, x2 = _b.x2, y2 = _b.y2;\n x1 = this.align(x1);\n y1 = this.align(y1);\n x2 = this.align(x2);\n y2 = this.align(y2);\n var _c = this, fill = _c.fill, opacity = _c.opacity, isRange = _c.isRange;\n var fillActive = !!(isRange && fill);\n if (fillActive) {\n var fillOpacity = this.fillOpacity;\n ctx.fillStyle = fill;\n ctx.globalAlpha = opacity * fillOpacity;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y1);\n ctx.lineTo(x2, y2);\n ctx.lineTo(x1, y2);\n ctx.closePath();\n ctx.fill();\n }\n var _d = this, stroke = _d.stroke, strokeWidth = _d.strokeWidth, startLine = _d.startLine, endLine = _d.endLine;\n var strokeActive = !!((startLine || endLine) && stroke && strokeWidth);\n if (strokeActive) {\n var _e = this, strokeOpacity = _e.strokeOpacity, lineDash = _e.lineDash, lineDashOffset = _e.lineDashOffset, lineCap = _e.lineCap, lineJoin = _e.lineJoin;\n ctx.strokeStyle = stroke;\n ctx.globalAlpha = opacity * strokeOpacity;\n ctx.lineWidth = strokeWidth;\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 ctx.beginPath();\n if (startLine) {\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y1);\n }\n if (endLine) {\n ctx.moveTo(x2, y2);\n ctx.lineTo(x1, y2);\n }\n ctx.stroke();\n }\n (_a = this.fillShadow) === null || _a === void 0 ? void 0 : _a.markClean();\n _super.prototype.render.call(this, renderCtx);\n };\n Range.className = 'Range';\n Range.defaultStyles = __assign$f(__assign$f({}, Shape.defaultStyles), { strokeWidth: 1 });\n __decorate$1A([\n SceneChangeDetection({ redraw: RedrawType.MINOR })\n ], Range.prototype, \"x1\", void 0);\n __decorate$1A([\n SceneChangeDetection({ redraw: RedrawType.MINOR })\n ], Range.prototype, \"y1\", void 0);\n __decorate$1A([\n SceneChangeDetection({ redraw: RedrawType.MINOR })\n ], Range.prototype, \"x2\", void 0);\n __decorate$1A([\n SceneChangeDetection({ redraw: RedrawType.MINOR })\n ], Range.prototype, \"y2\", void 0);\n __decorate$1A([\n SceneChangeDetection({ redraw: RedrawType.MINOR })\n ], Range.prototype, \"startLine\", void 0);\n __decorate$1A([\n SceneChangeDetection({ redraw: RedrawType.MINOR })\n ], Range.prototype, \"endLine\", void 0);\n __decorate$1A([\n SceneChangeDetection({ redraw: RedrawType.MINOR })\n ], Range.prototype, \"isRange\", void 0);\n return Range;\n}(Shape));\n\nvar __decorate$1z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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$i = (undefined && undefined.__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 __spreadArray$a = (undefined && undefined.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar CROSSLINE_LABEL_POSITIONS = [\n 'top',\n 'left',\n 'right',\n 'bottom',\n 'topLeft',\n 'topRight',\n 'bottomLeft',\n 'bottomRight',\n 'inside',\n 'insideLeft',\n 'insideRight',\n 'insideTop',\n 'insideBottom',\n 'insideTopLeft',\n 'insideBottomLeft',\n 'insideTopRight',\n 'insideBottomRight',\n];\nvar OPT_CROSSLINE_LABEL_POSITION = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, function (v) { return CROSSLINE_LABEL_POSITIONS.includes(v); }); }, \"expecting an optional crossLine label position keyword such as 'topLeft', 'topRight' or 'inside'\");\nvar OPT_CROSSLINE_TYPE = predicateWithMessage(function (v, ctx) { return OPTIONAL(v, ctx, function (v) { return v === 'range' || v === 'line'; }); }, \"expecting a crossLine type keyword such as 'range' or 'line'\");\nvar CartesianCrossLineLabel = /** @class */ (function () {\n function CartesianCrossLineLabel() {\n this.enabled = undefined;\n this.text = undefined;\n this.fontStyle = undefined;\n this.fontWeight = undefined;\n this.fontSize = 14;\n this.fontFamily = 'Verdana, sans-serif';\n /**\n * The padding between the label and the line.\n */\n this.padding = 5;\n /**\n * The color of the labels.\n */\n this.color = 'rgba(87, 87, 87, 1)';\n this.position = undefined;\n this.rotation = undefined;\n this.parallel = undefined;\n }\n __decorate$1z([\n Validate(OPT_BOOLEAN)\n ], CartesianCrossLineLabel.prototype, \"enabled\", void 0);\n __decorate$1z([\n Validate(OPT_STRING)\n ], CartesianCrossLineLabel.prototype, \"text\", void 0);\n __decorate$1z([\n Validate(OPT_FONT_STYLE)\n ], CartesianCrossLineLabel.prototype, \"fontStyle\", void 0);\n __decorate$1z([\n Validate(OPT_FONT_WEIGHT)\n ], CartesianCrossLineLabel.prototype, \"fontWeight\", void 0);\n __decorate$1z([\n Validate(NUMBER(0))\n ], CartesianCrossLineLabel.prototype, \"fontSize\", void 0);\n __decorate$1z([\n Validate(STRING)\n ], CartesianCrossLineLabel.prototype, \"fontFamily\", void 0);\n __decorate$1z([\n Validate(NUMBER(0))\n ], CartesianCrossLineLabel.prototype, \"padding\", void 0);\n __decorate$1z([\n Validate(OPT_COLOR_STRING)\n ], CartesianCrossLineLabel.prototype, \"color\", void 0);\n __decorate$1z([\n Validate(OPT_CROSSLINE_LABEL_POSITION)\n ], CartesianCrossLineLabel.prototype, \"position\", void 0);\n __decorate$1z([\n Validate(OPT_NUMBER(-360, 360))\n ], CartesianCrossLineLabel.prototype, \"rotation\", void 0);\n __decorate$1z([\n Validate(OPT_BOOLEAN)\n ], CartesianCrossLineLabel.prototype, \"parallel\", void 0);\n return CartesianCrossLineLabel;\n}());\nvar CartesianCrossLine = /** @class */ (function () {\n function CartesianCrossLine() {\n this.id = createId$1(this);\n this.enabled = undefined;\n this.type = undefined;\n this.range = undefined;\n this.value = undefined;\n this.fill = undefined;\n this.fillOpacity = undefined;\n this.stroke = undefined;\n this.strokeWidth = undefined;\n this.strokeOpacity = undefined;\n this.lineDash = undefined;\n this.label = new CartesianCrossLineLabel();\n this.scale = undefined;\n this.clippedRange = [-Infinity, Infinity];\n this.gridLength = 0;\n this.sideFlag = -1;\n this.parallelFlipRotation = 0;\n this.regularFlipRotation = 0;\n this.direction = ChartAxisDirection.X;\n this.group = new Group({ name: \"\" + this.id, layer: true, zIndex: CartesianCrossLine.LINE_LAYER_ZINDEX });\n this.crossLineRange = new Range();\n this.crossLineLabel = new Text();\n this.labelPoint = undefined;\n this.data = [];\n this.startLine = false;\n this.endLine = false;\n this.isRange = false;\n var _a = this, group = _a.group, crossLineRange = _a.crossLineRange, crossLineLabel = _a.crossLineLabel;\n group.append([crossLineRange, crossLineLabel]);\n crossLineRange.pointerEvents = PointerEvents.None;\n }\n CartesianCrossLine.prototype.update = function (visible) {\n if (!this.enabled) {\n return;\n }\n this.group.visible = visible;\n if (!visible) {\n return;\n }\n var dataCreated = this.createNodeData();\n if (!dataCreated) {\n this.group.visible = false;\n return;\n }\n this.updateNodes();\n this.group.zIndex = this.getZIndex(this.isRange);\n };\n CartesianCrossLine.prototype.updateNodes = function () {\n this.updateRangeNode();\n if (this.label.enabled) {\n this.updateLabel();\n this.positionLabel();\n }\n };\n CartesianCrossLine.prototype.createNodeData = function () {\n var _a, _b, _c;\n var _d, _e;\n var _f = this, scale = _f.scale, gridLength = _f.gridLength, sideFlag = _f.sideFlag, direction = _f.direction, _g = _f.label.position, position = _g === void 0 ? 'top' : _g, clippedRange = _f.clippedRange, _h = _f.strokeWidth, strokeWidth = _h === void 0 ? 0 : _h;\n if (!scale) {\n return false;\n }\n var bandwidth = (_d = scale.bandwidth) !== null && _d !== void 0 ? _d : 0;\n var clippedRangeClamper = function (x) {\n return Math.max(Math.min.apply(Math, __spreadArray$a([], __read$i(clippedRange))), Math.min(Math.max.apply(Math, __spreadArray$a([], __read$i(clippedRange))), x));\n };\n var _j = __read$i([0, sideFlag * gridLength], 2), xStart = _j[0], xEnd = _j[1];\n var _k = __read$i(this.getRange(), 2), yStart = _k[0], yEnd = _k[1];\n var _l = __read$i([\n Number(scale.convert(yStart, { strict: false })),\n scale.convert(yEnd, { strict: false }) + bandwidth,\n ], 2), clampedYStart = _l[0], clampedYEnd = _l[1];\n clampedYStart = clippedRangeClamper(clampedYStart);\n clampedYEnd = clippedRangeClamper(clampedYEnd);\n _a = __read$i([Number(scale.convert(yStart)), scale.convert(yEnd) + bandwidth], 2), yStart = _a[0], yEnd = _a[1];\n var validRange = !isNaN(clampedYStart) &&\n !isNaN(clampedYEnd) &&\n (yStart === clampedYStart || yEnd === clampedYEnd || clampedYStart !== clampedYEnd) &&\n Math.abs(clampedYEnd - clampedYStart) > 0;\n if (validRange) {\n var reverse = clampedYStart !== Math.min(clampedYStart, clampedYEnd);\n if (reverse) {\n _b = __read$i([\n Math.min(clampedYStart, clampedYEnd),\n Math.max(clampedYStart, clampedYEnd),\n ], 2), clampedYStart = _b[0], clampedYEnd = _b[1];\n _c = __read$i([yEnd, yStart], 2), yStart = _c[0], yEnd = _c[1];\n }\n }\n this.isRange = validRange;\n this.startLine = !isNaN(yStart) && strokeWidth > 0 && yStart === clampedYStart;\n this.endLine = !isNaN(yEnd) && strokeWidth > 0 && yEnd === clampedYEnd;\n if (!validRange && !this.startLine && !this.endLine) {\n return false;\n }\n this.data = [clampedYStart, clampedYEnd];\n if (this.label.enabled) {\n var yDirection = direction === ChartAxisDirection.Y;\n var _m = ((_e = labeldDirectionHandling[position]) !== null && _e !== void 0 ? _e : {}).c, c = _m === void 0 ? POSITION_TOP_COORDINATES : _m;\n var _o = c({ yDirection: yDirection, xStart: xStart, xEnd: xEnd, yStart: clampedYStart, yEnd: clampedYEnd }), labelX = _o.x, labelY = _o.y;\n this.labelPoint = {\n x: labelX,\n y: labelY,\n };\n }\n return true;\n };\n CartesianCrossLine.prototype.updateRangeNode = function () {\n var _a;\n var _b = this, crossLineRange = _b.crossLineRange, sideFlag = _b.sideFlag, gridLength = _b.gridLength, data = _b.data, startLine = _b.startLine, endLine = _b.endLine, isRange = _b.isRange, fill = _b.fill, fillOpacity = _b.fillOpacity, stroke = _b.stroke, strokeWidth = _b.strokeWidth, lineDash = _b.lineDash;\n crossLineRange.x1 = 0;\n crossLineRange.x2 = sideFlag * gridLength;\n crossLineRange.y1 = data[0];\n crossLineRange.y2 = data[1];\n crossLineRange.startLine = startLine;\n crossLineRange.endLine = endLine;\n crossLineRange.isRange = isRange;\n crossLineRange.fill = fill;\n crossLineRange.fillOpacity = fillOpacity !== null && fillOpacity !== void 0 ? fillOpacity : 1;\n crossLineRange.stroke = stroke;\n crossLineRange.strokeWidth = strokeWidth !== null && strokeWidth !== void 0 ? strokeWidth : 1;\n crossLineRange.strokeOpacity = (_a = this.strokeOpacity) !== null && _a !== void 0 ? _a : 1;\n crossLineRange.lineDash = lineDash;\n };\n CartesianCrossLine.prototype.updateLabel = function () {\n var _a = this, crossLineLabel = _a.crossLineLabel, label = _a.label;\n if (!label.text) {\n return;\n }\n crossLineLabel.fontStyle = label.fontStyle;\n crossLineLabel.fontWeight = label.fontWeight;\n crossLineLabel.fontSize = label.fontSize;\n crossLineLabel.fontFamily = label.fontFamily;\n crossLineLabel.fill = label.color;\n crossLineLabel.text = label.text;\n };\n CartesianCrossLine.prototype.positionLabel = function () {\n var _a = this, crossLineLabel = _a.crossLineLabel, _b = _a.labelPoint, _c = _b === void 0 ? {} : _b, _d = _c.x, x = _d === void 0 ? undefined : _d, _e = _c.y, y = _e === void 0 ? undefined : _e, _f = _a.label, parallel = _f.parallel, rotation = _f.rotation, _g = _f.position, position = _g === void 0 ? 'top' : _g, _h = _f.padding, padding = _h === void 0 ? 0 : _h, direction = _a.direction, parallelFlipRotation = _a.parallelFlipRotation, regularFlipRotation = _a.regularFlipRotation;\n if (x === undefined || y === undefined) {\n return;\n }\n var _j = calculateLabelRotation({\n rotation: rotation,\n parallel: parallel,\n regularFlipRotation: regularFlipRotation,\n parallelFlipRotation: parallelFlipRotation,\n }), defaultRotation = _j.defaultRotation, configuredRotation = _j.configuredRotation;\n crossLineLabel.rotation = defaultRotation + configuredRotation;\n crossLineLabel.textBaseline = 'middle';\n crossLineLabel.textAlign = 'center';\n var bbox = this.computeLabelBBox();\n if (!bbox) {\n return;\n }\n var yDirection = direction === ChartAxisDirection.Y;\n var _k = calculateLabelTranslation({ yDirection: yDirection, padding: padding, position: position, bbox: bbox }), xTranslation = _k.xTranslation, yTranslation = _k.yTranslation;\n crossLineLabel.translationX = x + xTranslation;\n crossLineLabel.translationY = y + yTranslation;\n };\n CartesianCrossLine.prototype.getZIndex = function (isRange) {\n if (isRange === void 0) { isRange = false; }\n if (isRange) {\n return CartesianCrossLine.RANGE_LAYER_ZINDEX;\n }\n return CartesianCrossLine.LINE_LAYER_ZINDEX;\n };\n CartesianCrossLine.prototype.getRange = function () {\n var _a = this, value = _a.value, range = _a.range, scale = _a.scale;\n var isContinuous = scale instanceof ContinuousScale;\n var _b = __read$i(range !== null && range !== void 0 ? range : [value, undefined], 2), start = _b[0], end = _b[1];\n if (!isContinuous && end === undefined) {\n end = start;\n }\n start = checkDatum(start, isContinuous) != null ? start : undefined;\n end = checkDatum(end, isContinuous) != null ? end : undefined;\n if (isContinuous && start === end) {\n end = undefined;\n }\n if (start === undefined && end !== undefined) {\n start = end;\n end = undefined;\n }\n return [start, end];\n };\n CartesianCrossLine.prototype.computeLabelBBox = function () {\n return this.crossLineLabel.computeTransformedBBox();\n };\n CartesianCrossLine.prototype.calculatePadding = function (padding) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n var _j = this, isRange = _j.isRange, startLine = _j.startLine, endLine = _j.endLine, direction = _j.direction, _k = _j.label, _l = _k.padding, labelPadding = _l === void 0 ? 0 : _l, _m = _k.position, position = _m === void 0 ? 'top' : _m;\n if (!isRange && !startLine && !endLine) {\n return;\n }\n var crossLineLabelBBox = this.computeLabelBBox();\n var labelX = crossLineLabelBBox === null || crossLineLabelBBox === void 0 ? void 0 : crossLineLabelBBox.x;\n var labelY = crossLineLabelBBox === null || crossLineLabelBBox === void 0 ? void 0 : crossLineLabelBBox.y;\n if (!crossLineLabelBBox || labelX == undefined || labelY == undefined) {\n return;\n }\n var chartPadding = calculateLabelChartPadding({\n yDirection: direction === ChartAxisDirection.Y,\n padding: labelPadding,\n position: position,\n bbox: crossLineLabelBBox,\n });\n padding.left = Math.max((_a = padding.left) !== null && _a !== void 0 ? _a : 0, (_b = chartPadding.left) !== null && _b !== void 0 ? _b : 0);\n padding.right = Math.max((_c = padding.right) !== null && _c !== void 0 ? _c : 0, (_d = chartPadding.right) !== null && _d !== void 0 ? _d : 0);\n padding.top = Math.max((_e = padding.top) !== null && _e !== void 0 ? _e : 0, (_f = chartPadding.top) !== null && _f !== void 0 ? _f : 0);\n padding.bottom = Math.max((_g = padding.bottom) !== null && _g !== void 0 ? _g : 0, (_h = chartPadding.bottom) !== null && _h !== void 0 ? _h : 0);\n };\n CartesianCrossLine.LINE_LAYER_ZINDEX = Layers.SERIES_CROSSLINE_LINE_ZINDEX;\n CartesianCrossLine.RANGE_LAYER_ZINDEX = Layers.SERIES_CROSSLINE_RANGE_ZINDEX;\n CartesianCrossLine.className = 'CrossLine';\n __decorate$1z([\n Validate(OPT_BOOLEAN)\n ], CartesianCrossLine.prototype, \"enabled\", void 0);\n __decorate$1z([\n Validate(OPT_CROSSLINE_TYPE)\n ], CartesianCrossLine.prototype, \"type\", void 0);\n __decorate$1z([\n Validate(OPT_ARRAY(2))\n ], CartesianCrossLine.prototype, \"range\", void 0);\n __decorate$1z([\n Validate(OPT_COLOR_STRING)\n ], CartesianCrossLine.prototype, \"fill\", void 0);\n __decorate$1z([\n Validate(OPT_NUMBER(0, 1))\n ], CartesianCrossLine.prototype, \"fillOpacity\", void 0);\n __decorate$1z([\n Validate(OPT_COLOR_STRING)\n ], CartesianCrossLine.prototype, \"stroke\", void 0);\n __decorate$1z([\n Validate(OPT_NUMBER())\n ], CartesianCrossLine.prototype, \"strokeWidth\", void 0);\n __decorate$1z([\n Validate(OPT_NUMBER(0, 1))\n ], CartesianCrossLine.prototype, \"strokeOpacity\", void 0);\n __decorate$1z([\n Validate(OPT_LINE_DASH)\n ], CartesianCrossLine.prototype, \"lineDash\", void 0);\n return CartesianCrossLine;\n}());\n\nvar __extends$z = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$e = (undefined && undefined.__assign) || function () {\n __assign$e = 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$e.apply(this, arguments);\n};\nvar __decorate$1y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 CartesianAxis = /** @class */ (function (_super) {\n __extends$z(CartesianAxis, _super);\n function CartesianAxis() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.thickness = 0;\n _this.position = 'left';\n return _this;\n }\n Object.defineProperty(CartesianAxis.prototype, \"direction\", {\n get: function () {\n return ['top', 'bottom'].includes(this.position) ? ChartAxisDirection.X : ChartAxisDirection.Y;\n },\n enumerable: false,\n configurable: true\n });\n CartesianAxis.prototype.updateDirection = function () {\n switch (this.position) {\n case 'top':\n this.rotation = -90;\n this.label.mirrored = true;\n this.label.parallel = true;\n break;\n case 'right':\n this.rotation = 0;\n this.label.mirrored = true;\n this.label.parallel = false;\n break;\n case 'bottom':\n this.rotation = -90;\n this.label.mirrored = false;\n this.label.parallel = true;\n break;\n case 'left':\n this.rotation = 0;\n this.label.mirrored = false;\n this.label.parallel = false;\n break;\n }\n if (this.axisContext) {\n this.axisContext.position = this.position;\n this.axisContext.direction = this.direction;\n }\n };\n CartesianAxis.prototype.update = function (primaryTickCount) {\n this.updateDirection();\n return _super.prototype.update.call(this, primaryTickCount);\n };\n CartesianAxis.prototype.createAxisContext = function () {\n return __assign$e(__assign$e({}, _super.prototype.createAxisContext.call(this)), { position: this.position });\n };\n CartesianAxis.prototype.assignCrossLineArrayConstructor = function (crossLines) {\n assignJsonApplyConstructedArray(crossLines, CartesianCrossLine);\n };\n __decorate$1y([\n Validate(NUMBER(0))\n ], CartesianAxis.prototype, \"thickness\", void 0);\n __decorate$1y([\n Validate(POSITION)\n ], CartesianAxis.prototype, \"position\", void 0);\n return CartesianAxis;\n}(Axis));\n\nvar __extends$y = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1x = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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$b = (undefined && undefined.__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$h = (undefined && undefined.__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 __spreadArray$9 = (undefined && undefined.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar CategoryAxis = /** @class */ (function (_super) {\n __extends$y(CategoryAxis, _super);\n function CategoryAxis(moduleCtx) {\n var _this = _super.call(this, moduleCtx, new BandScale$5()) || this;\n _this._paddingOverrideEnabled = false;\n _this.groupPaddingInner = 0.1;\n _this.includeInvisibleDomains = true;\n return _this;\n }\n Object.defineProperty(CategoryAxis.prototype, \"paddingInner\", {\n get: function () {\n this._paddingOverrideEnabled = true;\n return this.scale.paddingInner;\n },\n set: function (value) {\n this._paddingOverrideEnabled = true;\n this.scale.paddingInner = value;\n },\n enumerable: false,\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: false,\n configurable: true\n });\n CategoryAxis.prototype.normaliseDataDomain = function (d) {\n var e_1, _a;\n var _b;\n var _c;\n // Prevent duplicate categories.\n var valuesSet = {};\n try {\n for (var d_1 = __values$b(d), d_1_1 = d_1.next(); !d_1_1.done; d_1_1 = d_1.next()) {\n var next = d_1_1.value;\n (_b = valuesSet[_c = String(next)]) !== null && _b !== void 0 ? _b : (valuesSet[_c] = next);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (d_1_1 && !d_1_1.done && (_a = d_1.return)) _a.call(d_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return Object.values(valuesSet);\n };\n CategoryAxis.prototype.calculateDomain = function () {\n if (!this._paddingOverrideEnabled) {\n var boundSeries = this.boundSeries;\n var paddings = boundSeries.map(function (s) { var _a; return (_a = s.getBandScalePadding) === null || _a === void 0 ? void 0 : _a.call(s); }).filter(function (p) { return p != null; });\n if (paddings.length > 0) {\n this.scale.paddingInner = Math.min.apply(Math, __spreadArray$9([], __read$h(paddings.map(function (p) { return p.inner; }))));\n this.scale.paddingOuter = Math.max.apply(Math, __spreadArray$9([], __read$h(paddings.map(function (p) { return p.outer; }))));\n }\n }\n return _super.prototype.calculateDomain.call(this);\n };\n CategoryAxis.className = 'CategoryAxis';\n CategoryAxis.type = 'category';\n __decorate$1x([\n Validate(NUMBER(0, 1))\n ], CategoryAxis.prototype, \"groupPaddingInner\", void 0);\n return CategoryAxis;\n}(CartesianAxis));\n\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 */\nfunction 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 = children.find(function (child) { return child.label === pathPart; });\n var isNotLeaf = partIndex !== lastPartIndex;\n if (existingNode && isNotLeaf) {\n // 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}\nfunction 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}());\n\nvar __extends$x = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1w = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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$g = (undefined && undefined.__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 __spreadArray$8 = (undefined && undefined.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar GroupedCategoryAxisLabel = /** @class */ (function (_super) {\n __extends$x(GroupedCategoryAxisLabel, _super);\n function GroupedCategoryAxisLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.grid = false;\n return _this;\n }\n __decorate$1w([\n Validate(BOOLEAN)\n ], GroupedCategoryAxisLabel.prototype, \"grid\", void 0);\n return GroupedCategoryAxisLabel;\n}(AxisLabel));\nvar GroupedCategoryAxis = /** @class */ (function (_super) {\n __extends$x(GroupedCategoryAxis, _super);\n function GroupedCategoryAxis(moduleCtx) {\n var _this = _super.call(this, moduleCtx, new BandScale$5()) || this;\n // Label scale (labels are positioned between ticks, tick count = label count + 1).\n // We don't call is `labelScale` for consistency with other axes.\n _this.tickScale = new BandScale$5();\n _this.translation = {\n x: 0,\n y: 0,\n };\n _this.line = new AxisLine();\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 _this.includeInvisibleDomains = true;\n var _a = _this, tickLineGroup = _a.tickLineGroup, tickLabelGroup = _a.tickLabelGroup, gridLineGroup = _a.gridLineGroup, tickScale = _a.tickScale, scale = _a.scale;\n scale.paddingOuter = 0.1;\n scale.paddingInner = scale.paddingOuter * 2;\n _this.range = scale.range.slice();\n _this.refreshScale();\n tickScale.paddingInner = 1;\n tickScale.paddingOuter = 0;\n _this.gridLineSelection = Selection.select(gridLineGroup, Line);\n _this.axisLineSelection = Selection.select(tickLineGroup, Line);\n _this.separatorSelection = Selection.select(tickLineGroup, Line);\n _this.labelSelection = Selection.select(tickLabelGroup, Text);\n return _this;\n }\n GroupedCategoryAxis.prototype.updateRange = function () {\n var _a = this, rr = _a.range, 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 _a;\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) + ((_a = s.bandwidth) !== null && _a !== void 0 ? _a : 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: false,\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.clear();\n this.labelSelection.clear();\n }\n this._gridLength = value;\n },\n enumerable: false,\n configurable: true\n });\n GroupedCategoryAxis.prototype.calculateDomain = function () {\n var _a;\n var _b;\n var _c = this, direction = _c.direction, boundSeries = _c.boundSeries;\n var domains = [];\n var isNumericX = undefined;\n boundSeries\n .filter(function (s) { return s.visible; })\n .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, __spreadArray$8([], __read$g(domains)));\n var values = (_b = extent$4(domain)) !== null && _b !== void 0 ? _b : domain;\n this.dataDomain = this.normaliseDataDomain(values);\n this.scale.domain = this.dataDomain;\n };\n GroupedCategoryAxis.prototype.normaliseDataDomain = function (d) {\n // Prevent duplicate categories.\n var values = d.filter(function (s, i, arr) { return arr.indexOf(s) === i; });\n var tickTree = ticksToTree(values);\n this.tickTreeLayout = treeLayout(tickTree);\n var tickScaleDomain = values.slice();\n tickScaleDomain.push('');\n this.tickScale.domain = tickScaleDomain;\n this.resizeTickTree();\n return values;\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 (primaryTickCount) {\n var _this = this;\n this.updateDirection();\n this.calculateDomain();\n this.updateRange();\n var _a = this, scale = _a.scale, label = _a.label, parallel = _a.label.parallel, callbackCache = _a.moduleCtx.callbackCache, tickScale = _a.tickScale, requestedRange = _a.range, title = _a.title, _b = _a.title, _c = _b === void 0 ? {} : _b, _d = _c.formatter, formatter = _d === void 0 ? function (p) { return p.defaultValue; } : _d, _titleCaption = _a._titleCaption;\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 rotation = toRadians$1(this.rotation);\n var isHorizontal = Math.abs(Math.cos(rotation)) < 1e-8;\n var sideFlag = label.getSideFlag();\n this.updatePosition({ rotation: rotation, sideFlag: sideFlag });\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 _titleCaption.node.visible = false;\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 // 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 _e = calculateLabelRotation({\n rotation: label.rotation,\n parallel: parallel,\n regularFlipRotation: normalizeAngle360(rotation - Math.PI / 2),\n parallelFlipRotation: normalizeAngle360(rotation),\n }), defaultRotation = _e.defaultRotation, configuredRotation = _e.configuredRotation, parallelFlipFlag = _e.parallelFlipFlag;\n var gridLineSelection = this.gridLineSelection.update(this.gridLength ? ticks : []);\n var labelSelection = this.labelSelection.update(treeLabels);\n var labelFormatter = label.formatter;\n var labelBBoxes = new Map();\n var maxLeafLabelWidth = 0;\n labelSelection.each(function (node, datum, index) {\n var _a;\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 node.textAlign = 'center';\n node.translationX = datum.screenY - label.fontSize * 0.25;\n node.translationY = datum.screenX;\n if (index === 0) {\n // use the phantom root as the axis title\n if ((title === null || title === void 0 ? void 0 : title.enabled) && labels.length > 0) {\n node.visible = true;\n node.text = callbackCache.call(formatter, _this.getTitleFormatterParams());\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 if (labelFormatter) {\n node.text =\n (_a = callbackCache.call(labelFormatter, {\n value: String(datum.label),\n index: index,\n })) !== null && _a !== void 0 ? _a : String(datum.label);\n node.visible = datum.screenX >= requestedRange[0] && datum.screenX <= requestedRange[1];\n }\n else {\n node.text = String(datum.label);\n node.visible = datum.screenX >= requestedRange[0] && datum.screenX <= requestedRange[1];\n }\n var bbox = node.computeBBox();\n labelBBoxes.set(node.id, bbox);\n if (bbox.width > maxLeafLabelWidth) {\n maxLeafLabelWidth = bbox.width;\n }\n });\n var labelX = sideFlag * label.padding;\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 = configuredRotation;\n label.textAlign = 'end';\n label.textBaseline = 'middle';\n var bbox = labelBBoxes.get(label.id);\n if (bbox && bbox.height > bandwidth) {\n label.visible = false;\n }\n }\n else {\n label.translationX -= maxLeafLabelWidth - lineHeight + _this.label.padding;\n var availableRange = datum.leafCount * bandwidth;\n var bbox = labelBBoxes.get(label.id);\n if (bbox && bbox.width > availableRange) {\n label.visible = false;\n }\n else if (isHorizontal) {\n label.rotation = defaultRotation;\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 separatorData.push({\n y: Math.max(rangeStart, rangeEnd),\n x1: 0,\n x2: minX,\n toString: function () { return String(separatorData.length); },\n });\n var separatorSelection = this.separatorSelection.update(separatorData);\n var epsilon = 0.0000001;\n separatorSelection.each(function (line, datum) {\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 axisLineSelection = this.axisLineSelection.update(lines);\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.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 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 return primaryTickCount;\n };\n GroupedCategoryAxis.className = 'GroupedCategoryAxis';\n GroupedCategoryAxis.type = 'groupedCategory';\n __decorate$1w([\n Validate(OPT_COLOR_STRING)\n ], GroupedCategoryAxis.prototype, \"labelColor\", void 0);\n return GroupedCategoryAxis;\n}(CartesianAxis));\n\nvar __extends$w = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$d = (undefined && undefined.__assign) || function () {\n __assign$d = 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$d.apply(this, arguments);\n};\nvar __awaiter$a = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$a = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __values$a = (undefined && undefined.__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$f = (undefined && undefined.__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 directions = ['top', 'right', 'bottom', 'left'];\nvar CartesianChart = /** @class */ (function (_super) {\n __extends$w(CartesianChart, _super);\n function CartesianChart(document, overrideDevicePixelRatio, resources) {\n if (document === void 0) { document = window.document; }\n var _this = _super.call(this, document, overrideDevicePixelRatio, resources) || this;\n /** Integrated Charts feature state - not used in Standalone Charts. */\n _this.paired = true;\n _this._lastAxisWidths = {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n };\n _this._lastVisibility = {\n crossLines: true,\n series: true,\n };\n return _this;\n }\n CartesianChart.prototype.performLayout = function () {\n return __awaiter$a(this, void 0, void 0, function () {\n var shrinkRect, _a, seriesRect, visibility, clipSeries, _b, seriesRoot, seriesAreaPadding, seriesPaddedRect, hoverRectPadding, hoverRect;\n return __generator$a(this, function (_c) {\n switch (_c.label) {\n case 0: return [4 /*yield*/, _super.prototype.performLayout.call(this)];\n case 1:\n shrinkRect = _c.sent();\n _a = this.updateAxes(shrinkRect), seriesRect = _a.seriesRect, visibility = _a.visibility, clipSeries = _a.clipSeries;\n this.seriesRoot.visible = visibility.series;\n this.seriesRect = seriesRect;\n this.seriesRoot.translationX = Math.floor(seriesRect.x);\n this.seriesRoot.translationY = Math.floor(seriesRect.y);\n _b = this, seriesRoot = _b.seriesRoot, seriesAreaPadding = _b.seriesAreaPadding;\n seriesPaddedRect = seriesRect.clone().grow({\n top: seriesAreaPadding.top,\n right: seriesAreaPadding.right,\n bottom: seriesAreaPadding.bottom,\n left: seriesAreaPadding.left,\n });\n hoverRectPadding = 20;\n hoverRect = seriesPaddedRect.clone().grow(hoverRectPadding);\n this.hoverRect = hoverRect;\n this.layoutService.dispatchLayoutComplete({\n type: 'layout-complete',\n chart: { width: this.scene.width, height: this.scene.height },\n series: { rect: seriesRect, paddedRect: seriesPaddedRect, hoverRect: hoverRect, visible: visibility.series },\n axes: this.axes.map(function (axis) { return (__assign$d({ id: axis.id }, axis.getLayoutState())); }),\n });\n if (clipSeries) {\n seriesRoot.setClipRectInGroupCoordinateSpace(seriesRect);\n }\n else {\n seriesRoot.setClipRectInGroupCoordinateSpace();\n }\n return [2 /*return*/, shrinkRect];\n }\n });\n });\n };\n CartesianChart.prototype.updateAxes = function (inputShrinkRect) {\n var e_1, _a;\n var _b;\n // Start with a good approximation from the last update - this should mean that in many resize\n // cases that only a single pass is needed \\o/.\n var axisWidths = __assign$d({}, this._lastAxisWidths);\n var visibility = __assign$d({}, this._lastVisibility);\n // Clean any positions which aren't valid with the current axis status (otherwise we end up\n // never being able to find a stable result).\n var liveAxisWidths = new Set(this._axes.map(function (a) { return a.position; }));\n try {\n for (var _c = __values$a(Object.keys(axisWidths)), _d = _c.next(); !_d.done; _d = _c.next()) {\n var position = _d.value;\n if (!liveAxisWidths.has(position)) {\n delete axisWidths[position];\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n var stableOutputs = function (otherAxisWidths, otherVisibility) {\n // Check for new axis positions.\n if (Object.keys(otherAxisWidths).some(function (k) { return axisWidths[k] == null; })) {\n return false;\n }\n return (visibility.crossLines === otherVisibility.crossLines &&\n visibility.series === otherVisibility.series &&\n // Check for existing axis positions and equality.\n Object.entries(axisWidths).every(function (_a) {\n var _b = __read$f(_a, 2), p = _b[0], w = _b[1];\n var otherW = otherAxisWidths[p];\n if (w != null || otherW != null) {\n return w === otherW;\n }\n return true;\n }));\n };\n var ceilValues = function (records) {\n return Object.entries(records).reduce(function (out, _a) {\n var _b = __read$f(_a, 2), key = _b[0], value = _b[1];\n if (value && Math.abs(value) === Infinity) {\n value = 0;\n }\n out[key] = value != null ? Math.ceil(value) : value;\n return out;\n }, {});\n };\n // Iteratively try to resolve axis widths - since X axis width affects Y axis range,\n // and vice-versa, we need to iteratively try and find a fit for the axes and their\n // ticks/labels.\n var lastPassAxisWidths = {};\n var lastPassVisibility = {};\n var clipSeries = false;\n var seriesRect = (_b = this.seriesRect) === null || _b === void 0 ? void 0 : _b.clone();\n var count = 0;\n do {\n Object.assign(axisWidths, lastPassAxisWidths);\n Object.assign(visibility, lastPassVisibility);\n var result = this.updateAxesPass(axisWidths, inputShrinkRect.clone(), seriesRect);\n lastPassAxisWidths = ceilValues(result.axisWidths);\n lastPassVisibility = result.visibility;\n clipSeries = result.clipSeries;\n seriesRect = result.seriesRect;\n if (count++ > 10) {\n Logger.warn('unable to find stable axis layout.');\n break;\n }\n } while (!stableOutputs(lastPassAxisWidths, lastPassVisibility));\n var clipRectPadding = 5;\n this.axes.forEach(function (axis) {\n // update visibility of crosslines\n axis.setCrossLinesVisible(visibility.crossLines);\n if (!seriesRect) {\n return;\n }\n axis.clipGrid(seriesRect.x, seriesRect.y, seriesRect.width + clipRectPadding, seriesRect.height + clipRectPadding);\n switch (axis.position) {\n case 'left':\n case 'right':\n axis.clipTickLines(inputShrinkRect.x, seriesRect.y, inputShrinkRect.width + clipRectPadding, seriesRect.height + clipRectPadding);\n break;\n case 'top':\n case 'bottom':\n axis.clipTickLines(seriesRect.x, inputShrinkRect.y, seriesRect.width + clipRectPadding, inputShrinkRect.height + clipRectPadding);\n break;\n }\n });\n this._lastAxisWidths = axisWidths;\n this._lastVisibility = visibility;\n return { seriesRect: seriesRect, visibility: visibility, clipSeries: clipSeries };\n };\n CartesianChart.prototype.updateAxesPass = function (axisWidths, bounds, lastPassSeriesRect) {\n var _this = this;\n var axes = this.axes;\n var visited = {};\n var newAxisWidths = {};\n var visibility = {\n series: true,\n crossLines: true,\n };\n var clipSeries = false;\n var primaryTickCounts = {};\n var paddedBounds = this.applySeriesPadding(bounds);\n var crossLinePadding = lastPassSeriesRect ? this.buildCrossLinePadding(axisWidths) : {};\n var axisBound = this.buildAxisBound(paddedBounds, axisWidths, crossLinePadding, visibility);\n var seriesRect = this.buildSeriesRect(axisBound, axisWidths);\n // Set the number of ticks for continuous axes based on the available range\n // before updating the axis domain via `this.updateAxes()` as the tick count has an effect on the calculated `nice` domain extent\n axes.forEach(function (axis) {\n var _a, _b;\n var _c = axis.position, position = _c === void 0 ? 'left' : _c;\n var _d = _this.calculateAxisDimensions({\n axis: axis,\n seriesRect: seriesRect,\n paddedBounds: paddedBounds,\n axisWidths: axisWidths,\n newAxisWidths: newAxisWidths,\n primaryTickCounts: primaryTickCounts,\n clipSeries: clipSeries,\n addInterAxisPadding: ((_a = visited[position]) !== null && _a !== void 0 ? _a : 0) > 0,\n }), newClipSeries = _d.clipSeries, axisThickness = _d.axisThickness, axisOffset = _d.axisOffset;\n visited[position] = ((_b = visited[position]) !== null && _b !== void 0 ? _b : 0) + 1;\n clipSeries = clipSeries || newClipSeries;\n _this.positionAxis({\n axis: axis,\n axisBound: axisBound,\n axisOffset: axisOffset,\n axisThickness: axisThickness,\n axisWidths: axisWidths,\n primaryTickCounts: primaryTickCounts,\n seriesRect: seriesRect,\n });\n });\n return { clipSeries: clipSeries, seriesRect: seriesRect, axisWidths: newAxisWidths, visibility: visibility };\n };\n CartesianChart.prototype.buildCrossLinePadding = function (axisWidths) {\n var e_2, _a;\n var _b;\n var crossLinePadding = {};\n this.axes.forEach(function (axis) {\n if (axis.crossLines) {\n axis.crossLines.forEach(function (crossLine) {\n crossLine.calculatePadding(crossLinePadding);\n });\n }\n });\n try {\n // Reduce cross-line padding to account for overlap with axes.\n for (var _c = __values$a(Object.entries(crossLinePadding)), _d = _c.next(); !_d.done; _d = _c.next()) {\n var _e = __read$f(_d.value, 2), side = _e[0], _f = _e[1], padding = _f === void 0 ? 0 : _f;\n crossLinePadding[side] = Math.max(padding - ((_b = axisWidths[side]) !== null && _b !== void 0 ? _b : 0), 0);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return crossLinePadding;\n };\n CartesianChart.prototype.applySeriesPadding = function (bounds) {\n var _this = this;\n var paddedRect = bounds.clone();\n var reversedAxes = this.axes.slice().reverse();\n directions.forEach(function (dir) {\n var padding = _this.seriesAreaPadding[dir];\n var axis = reversedAxes.find(function (axis) { return axis.position === dir; });\n if (axis) {\n axis.seriesAreaPadding = padding;\n }\n else {\n paddedRect.shrink(padding, dir);\n }\n });\n return paddedRect;\n };\n CartesianChart.prototype.buildAxisBound = function (bounds, axisWidths, crossLinePadding, visibility) {\n var _a, _b, _c, _d;\n var result = bounds.clone();\n var _e = crossLinePadding.top, top = _e === void 0 ? 0 : _e, _f = crossLinePadding.right, right = _f === void 0 ? 0 : _f, _g = crossLinePadding.bottom, bottom = _g === void 0 ? 0 : _g, _h = crossLinePadding.left, left = _h === void 0 ? 0 : _h;\n var horizontalPadding = left + right;\n var verticalPadding = top + bottom;\n var totalWidth = ((_a = axisWidths.left) !== null && _a !== void 0 ? _a : 0) + ((_b = axisWidths.right) !== null && _b !== void 0 ? _b : 0) + horizontalPadding;\n var totalHeight = ((_c = axisWidths.top) !== null && _c !== void 0 ? _c : 0) + ((_d = axisWidths.bottom) !== null && _d !== void 0 ? _d : 0) + verticalPadding;\n if (result.width <= totalWidth || result.height <= totalHeight) {\n // Not enough space for crossLines and series\n visibility.crossLines = false;\n visibility.series = false;\n return result;\n }\n result.x += left;\n result.y += top;\n result.width -= horizontalPadding;\n result.height -= verticalPadding;\n return result;\n };\n CartesianChart.prototype.buildSeriesRect = function (axisBound, axisWidths) {\n var result = axisBound.clone();\n var top = axisWidths.top, bottom = axisWidths.bottom, left = axisWidths.left, right = axisWidths.right;\n result.x += left !== null && left !== void 0 ? left : 0;\n result.y += top !== null && top !== void 0 ? top : 0;\n result.width -= (left !== null && left !== void 0 ? left : 0) + (right !== null && right !== void 0 ? right : 0);\n result.height -= (top !== null && top !== void 0 ? top : 0) + (bottom !== null && bottom !== void 0 ? bottom : 0);\n // Width and height should not be negative.\n result.width = Math.max(0, result.width);\n result.height = Math.max(0, result.height);\n return result;\n };\n CartesianChart.prototype.clampToOutsideSeriesRect = function (seriesRect, value, dimension, direction) {\n var x = seriesRect.x, y = seriesRect.y, width = seriesRect.width, height = seriesRect.height;\n var clampBounds = [x, y, x + width, y + height];\n var fn = direction === 1 ? Math.min : Math.max;\n var compareTo = clampBounds[(dimension === 'x' ? 0 : 1) + (direction === 1 ? 0 : 2)];\n return fn(value, compareTo);\n };\n CartesianChart.prototype.calculateAxisDimensions = function (opts) {\n var _a, _b, _c, _d, _e;\n var axis = opts.axis, seriesRect = opts.seriesRect, paddedBounds = opts.paddedBounds, axisWidths = opts.axisWidths, newAxisWidths = opts.newAxisWidths, primaryTickCounts = opts.primaryTickCounts, addInterAxisPadding = opts.addInterAxisPadding;\n var clipSeries = opts.clipSeries;\n var _f = axis.position, position = _f === void 0 ? 'left' : _f, direction = axis.direction;\n var axisLeftRightRange = function (axis) {\n if (axis instanceof CategoryAxis || axis instanceof GroupedCategoryAxis) {\n return [0, seriesRect.height];\n }\n return [seriesRect.height, 0];\n };\n var axisOffset = (_a = newAxisWidths[position]) !== null && _a !== void 0 ? _a : 0;\n switch (position) {\n case 'top':\n case 'bottom':\n axis.range = [0, seriesRect.width];\n axis.gridLength = seriesRect.height;\n break;\n case 'right':\n case 'left':\n axis.range = axisLeftRightRange(axis);\n axis.gridLength = seriesRect.width;\n break;\n }\n var zoom = this.zoomManager.getAxisZoom(axis.id);\n var _g = zoom !== null && zoom !== void 0 ? zoom : {}, _h = _g.min, min = _h === void 0 ? 0 : _h, _j = _g.max, max = _j === void 0 ? 1 : _j;\n axis.visibleRange = [min, max];\n if (!clipSeries && (axis.visibleRange[0] > 0 || axis.visibleRange[1] < 1)) {\n clipSeries = true;\n }\n var primaryTickCount = axis.nice ? primaryTickCounts[direction] : undefined;\n var paddedBoundsCoefficient = 0.3;\n if (axis.thickness != null && axis.thickness > 0) {\n axis.maxThickness = axis.thickness;\n }\n else if (direction === ChartAxisDirection.Y) {\n axis.maxThickness = paddedBounds.width * paddedBoundsCoefficient;\n }\n else {\n axis.maxThickness = paddedBounds.height * paddedBoundsCoefficient;\n }\n primaryTickCount = axis.update(primaryTickCount);\n primaryTickCounts[direction] = (_b = primaryTickCounts[direction]) !== null && _b !== void 0 ? _b : primaryTickCount;\n var axisThickness = 0;\n if (axis.thickness != null && axis.thickness > 0) {\n axisThickness = axis.thickness;\n }\n else {\n var bbox = axis.computeBBox();\n axisThickness = direction === ChartAxisDirection.X ? bbox.height : bbox.width;\n }\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 = 15;\n if (addInterAxisPadding) {\n axisThickness += axisPadding;\n }\n axisThickness = Math.ceil(axisThickness);\n newAxisWidths[position] = ((_c = newAxisWidths[position]) !== null && _c !== void 0 ? _c : 0) + axisThickness;\n axis.gridPadding = ((_d = axisWidths[position]) !== null && _d !== void 0 ? _d : 0) - ((_e = newAxisWidths[position]) !== null && _e !== void 0 ? _e : 0);\n return { clipSeries: clipSeries, axisThickness: axisThickness, axisOffset: axisOffset };\n };\n CartesianChart.prototype.positionAxis = function (opts) {\n var _a, _b, _c, _d;\n var axis = opts.axis, axisBound = opts.axisBound, axisWidths = opts.axisWidths, seriesRect = opts.seriesRect, axisOffset = opts.axisOffset, axisThickness = opts.axisThickness;\n var position = axis.position;\n switch (position) {\n case 'top':\n axis.translation.x = axisBound.x + ((_a = axisWidths.left) !== null && _a !== void 0 ? _a : 0);\n axis.translation.y = this.clampToOutsideSeriesRect(seriesRect, axisBound.y + 1 + axisOffset + axisThickness, 'y', 1);\n break;\n case 'bottom':\n axis.translation.x = axisBound.x + ((_b = axisWidths.left) !== null && _b !== void 0 ? _b : 0);\n axis.translation.y = this.clampToOutsideSeriesRect(seriesRect, axisBound.y + axisBound.height + 1 - axisThickness - axisOffset, 'y', -1);\n break;\n case 'left':\n axis.translation.y = axisBound.y + ((_c = axisWidths.top) !== null && _c !== void 0 ? _c : 0);\n axis.translation.x = this.clampToOutsideSeriesRect(seriesRect, axisBound.x + axisOffset + axisThickness, 'x', 1);\n break;\n case 'right':\n axis.translation.y = axisBound.y + ((_d = axisWidths.top) !== null && _d !== void 0 ? _d : 0);\n axis.translation.x = this.clampToOutsideSeriesRect(seriesRect, axisBound.x + axisBound.width - axisThickness - axisOffset, 'x', -1);\n break;\n }\n axis.updatePosition({ rotation: toRadians$1(axis.rotation), sideFlag: axis.label.getSideFlag() });\n };\n CartesianChart.className = 'CartesianChart';\n CartesianChart.type = 'cartesian';\n return CartesianChart;\n}(Chart));\n\nvar __extends$v = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar PolarAxis = /** @class */ (function (_super) {\n __extends$v(PolarAxis, _super);\n function PolarAxis() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.shape = 'polygon';\n return _this;\n }\n PolarAxis.prototype.computeLabelsBBox = function (_options, _seriesRect) {\n return null;\n };\n return PolarAxis;\n}(Axis));\n\nvar __extends$u = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter$9 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$9 = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read$e = (undefined && undefined.__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 __spreadArray$7 = (undefined && undefined.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar __values$9 = (undefined && undefined.__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 PolarChart = /** @class */ (function (_super) {\n __extends$u(PolarChart, _super);\n function PolarChart(document, overrideDevicePixelRatio, resources) {\n if (document === void 0) { document = window.document; }\n var _this = _super.call(this, document, overrideDevicePixelRatio, resources) || this;\n _this.padding = new Padding$1(40);\n return _this;\n }\n PolarChart.prototype.performLayout = function () {\n return __awaiter$9(this, void 0, void 0, function () {\n var shrinkRect, fullSeriesRect, hoverRectPadding, hoverRect;\n return __generator$9(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, _super.prototype.performLayout.call(this)];\n case 1:\n shrinkRect = _a.sent();\n fullSeriesRect = shrinkRect.clone();\n this.computeSeriesRect(shrinkRect);\n this.computeCircle(shrinkRect);\n this.axes.forEach(function (axis) { return axis.update(); });\n hoverRectPadding = 20;\n hoverRect = shrinkRect.clone().grow(hoverRectPadding);\n this.hoverRect = hoverRect;\n this.layoutService.dispatchLayoutComplete({\n type: 'layout-complete',\n chart: { width: this.scene.width, height: this.scene.height },\n series: { rect: fullSeriesRect, paddedRect: shrinkRect, hoverRect: hoverRect, visible: true },\n axes: [],\n });\n return [2 /*return*/, shrinkRect];\n }\n });\n });\n };\n PolarChart.prototype.updateAxes = function (cx, cy, radius) {\n var _a;\n this.axes.forEach(function (axis) {\n var _a;\n if (axis.direction === ChartAxisDirection.X) {\n var rotation = toRadians$1((_a = axis.rotation) !== null && _a !== void 0 ? _a : 0);\n axis.range = [-Math.PI / 2 + rotation, (3 * Math.PI) / 2 + rotation];\n axis.gridLength = radius;\n axis.translation.x = cx;\n axis.translation.y = cy;\n }\n else if (axis.direction === ChartAxisDirection.Y) {\n axis.range = [radius, 0];\n axis.translation.x = cx;\n axis.translation.y = cy - radius;\n }\n axis.updateScale();\n });\n var angleAxis = this.axes.find(function (axis) { return axis.direction === ChartAxisDirection.X; });\n var scale = angleAxis === null || angleAxis === void 0 ? void 0 : angleAxis.scale;\n var angles = (_a = scale === null || scale === void 0 ? void 0 : scale.ticks) === null || _a === void 0 ? void 0 : _a.call(scale).map(function (value) { return scale.convert(value); });\n this.axes\n .filter(function (axis) { return axis instanceof PolarAxis; })\n .forEach(function (axis) { return (axis.gridAngles = angles); });\n };\n PolarChart.prototype.computeSeriesRect = function (shrinkRect) {\n var seriesAreaPadding = this.seriesAreaPadding;\n shrinkRect.shrink(seriesAreaPadding.left, 'left');\n shrinkRect.shrink(seriesAreaPadding.top, 'top');\n shrinkRect.shrink(seriesAreaPadding.right, 'right');\n shrinkRect.shrink(seriesAreaPadding.bottom, 'bottom');\n this.seriesRect = shrinkRect;\n };\n PolarChart.prototype.computeCircle = function (seriesBox) {\n var _this = this;\n var polarSeries = this.series.filter(function (series) {\n return series instanceof PolarSeries;\n });\n var polarAxes = this.axes.filter(function (axis) {\n return axis instanceof PolarAxis;\n });\n var setSeriesCircle = function (cx, cy, r) {\n _this.updateAxes(cx, cy, r);\n polarSeries.forEach(function (series) {\n series.centerX = cx;\n series.centerY = cy;\n series.radius = r;\n });\n var pieSeries = polarSeries.filter(function (series) { return series instanceof PieSeries; });\n if (pieSeries.length > 1) {\n var innerRadii = pieSeries\n .map(function (series) {\n var innerRadius = series.getInnerRadius();\n return { series: series, innerRadius: innerRadius };\n })\n .sort(function (a, b) { return a.innerRadius - b.innerRadius; });\n innerRadii[innerRadii.length - 1].series.surroundingRadius = undefined;\n for (var i = 0; i < innerRadii.length - 1; i++) {\n innerRadii[i].series.surroundingRadius = innerRadii[i + 1].innerRadius;\n }\n }\n };\n var centerX = seriesBox.x + seriesBox.width / 2;\n var centerY = seriesBox.y + seriesBox.height / 2;\n var initialRadius = Math.max(0, Math.min(seriesBox.width, seriesBox.height) / 2);\n var radius = initialRadius;\n setSeriesCircle(centerX, centerY, radius);\n var shake = function (_a) {\n var e_1, _b;\n var _c = _a === void 0 ? {} : _a, _d = _c.hideWhenNecessary, hideWhenNecessary = _d === void 0 ? false : _d;\n var labelBoxes = [];\n try {\n for (var _e = __values$9(__spreadArray$7(__spreadArray$7([], __read$e(polarAxes)), __read$e(polarSeries))), _f = _e.next(); !_f.done; _f = _e.next()) {\n var series = _f.value;\n var box = series.computeLabelsBBox({ hideWhenNecessary: hideWhenNecessary }, seriesBox);\n if (box) {\n labelBoxes.push(box);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\n }\n finally { if (e_1) throw e_1.error; }\n }\n if (labelBoxes.length === 0) {\n setSeriesCircle(centerX, centerY, initialRadius);\n return;\n }\n var labelBox = BBox.merge(labelBoxes);\n var refined = _this.refineCircle(labelBox, radius, seriesBox);\n setSeriesCircle(refined.centerX, refined.centerY, refined.radius);\n if (refined.radius === radius) {\n return;\n }\n radius = refined.radius;\n };\n shake(); // Initial attempt\n shake(); // Precise attempt\n shake(); // Just in case\n shake({ hideWhenNecessary: true }); // Hide unnecessary labels\n shake({ hideWhenNecessary: true }); // Final result\n return { radius: radius, centerX: centerX, centerY: centerY };\n };\n PolarChart.prototype.refineCircle = function (labelsBox, radius, seriesBox) {\n var minCircleRatio = 0.5; // Prevents reduced circle to be too small\n var circleLeft = -radius;\n var circleTop = -radius;\n var circleRight = radius;\n var circleBottom = radius;\n // Label padding around the circle\n var padLeft = Math.max(0, circleLeft - labelsBox.x);\n var padTop = Math.max(0, circleTop - labelsBox.y);\n var padRight = Math.max(0, labelsBox.x + labelsBox.width - circleRight);\n var padBottom = Math.max(0, labelsBox.y + labelsBox.height - circleBottom);\n // Available area for the circle (after the padding will be applied)\n var availCircleWidth = seriesBox.width - padLeft - padRight;\n var availCircleHeight = seriesBox.height - padTop - padBottom;\n var newRadius = Math.min(availCircleWidth, availCircleHeight) / 2;\n var minHorizontalRadius = (minCircleRatio * seriesBox.width) / 2;\n var minVerticalRadius = (minCircleRatio * seriesBox.height) / 2;\n var minRadius = Math.min(minHorizontalRadius, minVerticalRadius);\n if (newRadius < minRadius) {\n // If the radius is too small, reduce the label padding\n newRadius = minRadius;\n var horizontalPadding = padLeft + padRight;\n var verticalPadding = padTop + padBottom;\n if (2 * newRadius + verticalPadding > seriesBox.height) {\n var padHeight = seriesBox.height - 2 * newRadius;\n if (Math.min(padTop, padBottom) * 2 > padHeight) {\n padTop = padHeight / 2;\n padBottom = padHeight / 2;\n }\n else if (padTop > padBottom) {\n padTop = padHeight - padBottom;\n }\n else {\n padBottom = padHeight - padTop;\n }\n }\n if (2 * newRadius + horizontalPadding > seriesBox.width) {\n var padWidth = seriesBox.width - 2 * newRadius;\n if (Math.min(padLeft, padRight) * 2 > padWidth) {\n padLeft = padWidth / 2;\n padRight = padWidth / 2;\n }\n else if (padLeft > padRight) {\n padLeft = padWidth - padRight;\n }\n else {\n padRight = padWidth - padLeft;\n }\n }\n }\n var newWidth = padLeft + 2 * newRadius + padRight;\n var newHeight = padTop + 2 * newRadius + padBottom;\n return {\n centerX: seriesBox.x + (seriesBox.width - newWidth) / 2 + padLeft + newRadius,\n centerY: seriesBox.y + (seriesBox.height - newHeight) / 2 + padTop + newRadius,\n radius: newRadius,\n };\n };\n PolarChart.className = 'PolarChart';\n PolarChart.type = 'polar';\n return PolarChart;\n}(Chart));\n\nvar __extends$t = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter$8 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$8 = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar HierarchyChart = /** @class */ (function (_super) {\n __extends$t(HierarchyChart, _super);\n function HierarchyChart(document, overrideDevicePixelRatio, resources) {\n if (document === void 0) { document = window.document; }\n var _this = _super.call(this, document, overrideDevicePixelRatio, resources) || this;\n _this._data = {};\n return _this;\n }\n HierarchyChart.prototype.performLayout = function () {\n return __awaiter$8(this, void 0, void 0, function () {\n var shrinkRect, seriesAreaPadding, fullSeriesRect, hoverRectPadding, hoverRect, seriesRoot;\n var _this = this;\n return __generator$8(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, _super.prototype.performLayout.call(this)];\n case 1:\n shrinkRect = _a.sent();\n seriesAreaPadding = this.seriesAreaPadding;\n fullSeriesRect = shrinkRect.clone();\n shrinkRect.shrink(seriesAreaPadding.left, 'left');\n shrinkRect.shrink(seriesAreaPadding.top, 'top');\n shrinkRect.shrink(seriesAreaPadding.right, 'right');\n shrinkRect.shrink(seriesAreaPadding.bottom, 'bottom');\n this.seriesRect = shrinkRect;\n hoverRectPadding = 20;\n hoverRect = shrinkRect.clone().grow(hoverRectPadding);\n this.hoverRect = hoverRect;\n this.seriesRoot.translationX = Math.floor(shrinkRect.x);\n this.seriesRoot.translationY = Math.floor(shrinkRect.y);\n return [4 /*yield*/, Promise.all(this.series.map(function (series) { return __awaiter$8(_this, void 0, void 0, function () {\n return __generator$8(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, series.update({ seriesRect: shrinkRect })];\n case 1:\n _a.sent(); // this has to happen after the `updateAxes` call\n return [2 /*return*/];\n }\n });\n }); }))];\n case 2:\n _a.sent();\n seriesRoot = this.seriesRoot;\n seriesRoot.setClipRectInGroupCoordinateSpace(new BBox(shrinkRect.x, shrinkRect.y, shrinkRect.width, shrinkRect.height));\n this.layoutService.dispatchLayoutComplete({\n type: 'layout-complete',\n chart: { width: this.scene.width, height: this.scene.height },\n series: { rect: fullSeriesRect, paddedRect: shrinkRect, hoverRect: hoverRect, visible: true },\n axes: [],\n });\n return [2 /*return*/, shrinkRect];\n }\n });\n });\n };\n HierarchyChart.className = 'HierarchyChart';\n HierarchyChart.type = 'hierarchy';\n return HierarchyChart;\n}(Chart));\n\nfunction 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}\nfunction 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}\nfunction 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\nvar __extends$s = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1v = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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$d = (undefined && undefined.__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 NumberAxisTick = /** @class */ (function (_super) {\n __extends$s(NumberAxisTick, _super);\n function NumberAxisTick() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.maxSpacing = NaN;\n return _this;\n }\n __decorate$1v([\n Validate(AND(NUMBER_OR_NAN(1), GREATER_THAN('minSpacing'))),\n Default(NaN)\n ], NumberAxisTick.prototype, \"maxSpacing\", void 0);\n return NumberAxisTick;\n}(AxisTick));\nvar NumberAxis = /** @class */ (function (_super) {\n __extends$s(NumberAxis, _super);\n function NumberAxis(moduleCtx, scale) {\n if (scale === void 0) { scale = new LinearScale$1(); }\n var _this = _super.call(this, moduleCtx, scale) || this;\n _this.min = NaN;\n _this.max = NaN;\n scale.strictClampByDefault = true;\n return _this;\n }\n NumberAxis.prototype.normaliseDataDomain = function (d) {\n var _a = this, min = _a.min, max = _a.max;\n return normalisedExtent(d, min, max);\n };\n NumberAxis.prototype.formatDatum = function (datum) {\n if (typeof datum === 'number') {\n return datum.toFixed(2);\n }\n else {\n Logger.warnOnce('data contains Date objects which are being plotted against a number axis, please only use a number axis for numbers.');\n return String(datum);\n }\n };\n NumberAxis.prototype.createTick = function () {\n return new NumberAxisTick();\n };\n NumberAxis.prototype.updateSecondaryAxisTicks = function (primaryTickCount) {\n if (this.dataDomain == null) {\n throw new Error('AG Charts - dataDomain not calculated, cannot perform tick calculation.');\n }\n var _a = __read$d(calculateNiceSecondaryAxis(this.dataDomain, primaryTickCount !== null && primaryTickCount !== void 0 ? primaryTickCount : 0), 2), d = _a[0], ticks = _a[1];\n this.scale.nice = false;\n this.scale.domain = d;\n this.scale.update();\n return ticks;\n };\n NumberAxis.className = 'NumberAxis';\n NumberAxis.type = 'number';\n __decorate$1v([\n Validate(AND(NUMBER_OR_NAN(), LESS_THAN('max'))),\n Default(NaN)\n ], NumberAxis.prototype, \"min\", void 0);\n __decorate$1v([\n Validate(AND(NUMBER_OR_NAN(), GREATER_THAN('min'))),\n Default(NaN)\n ], NumberAxis.prototype, \"max\", void 0);\n return NumberAxis;\n}(CartesianAxis));\n\nvar __extends$r = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1u = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nfunction NON_ZERO_NUMBER() {\n // Cannot be 0\n var message = \"expecting a non-zero Number\";\n return predicateWithMessage(function (v) { return typeof v === 'number' && v !== 0; }, message);\n}\nvar LogAxis = /** @class */ (function (_super) {\n __extends$r(LogAxis, _super);\n function LogAxis(moduleCtx) {\n var _this = _super.call(this, moduleCtx, new LogScale()) || this;\n _this.min = NaN;\n _this.max = NaN;\n _this.scale.strictClampByDefault = true;\n return _this;\n }\n LogAxis.prototype.normaliseDataDomain = function (d) {\n var _a;\n var _b = this, min = _b.min, max = _b.max;\n if (d.length > 2) {\n d = (_a = extent$4(d)) !== null && _a !== void 0 ? _a : [NaN, NaN];\n }\n if (!isNaN(min)) {\n d = [min, d[1]];\n }\n if (!isNaN(max)) {\n d = [d[0], max];\n }\n var isInverted = d[0] > d[1];\n var crossesZero = d[0] < 0 && d[1] > 0;\n var hasZeroExtent = d[0] === 0 && d[1] === 0;\n var invalidDomain = isInverted || crossesZero || hasZeroExtent;\n if (invalidDomain) {\n d = [];\n if (crossesZero) {\n Logger.warn(\"the data domain crosses zero, the chart data cannot be rendered. See log axis documentation for more information.\");\n }\n else if (hasZeroExtent) {\n Logger.warn(\"the data domain has 0 extent, no data is rendered.\");\n }\n }\n if (d[0] === 0) {\n d[0] = 1;\n }\n if (d[1] === 0) {\n d[1] = -1;\n }\n return d;\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: false,\n configurable: true\n });\n LogAxis.className = 'LogAxis';\n LogAxis.type = 'log';\n __decorate$1u([\n Validate(AND(NUMBER_OR_NAN(), LESS_THAN('max'), NON_ZERO_NUMBER())),\n Default(NaN)\n ], LogAxis.prototype, \"min\", void 0);\n __decorate$1u([\n Validate(AND(NUMBER_OR_NAN(), GREATER_THAN('min'), NON_ZERO_NUMBER())),\n Default(NaN)\n ], LogAxis.prototype, \"max\", void 0);\n return LogAxis;\n}(NumberAxis));\n\nvar __extends$q = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1t = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 TimeAxisTick = /** @class */ (function (_super) {\n __extends$q(TimeAxisTick, _super);\n function TimeAxisTick() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.maxSpacing = NaN;\n return _this;\n }\n __decorate$1t([\n Validate(AND(NUMBER_OR_NAN(1), GREATER_THAN('minSpacing'))),\n Default(NaN)\n ], TimeAxisTick.prototype, \"maxSpacing\", void 0);\n return TimeAxisTick;\n}(AxisTick));\nvar TimeAxis = /** @class */ (function (_super) {\n __extends$q(TimeAxis, _super);\n function TimeAxis(moduleCtx) {\n var _this = _super.call(this, moduleCtx, new TimeScale$1()) || this;\n _this.datumFormat = '%m/%d/%y, %H:%M:%S';\n _this.min = undefined;\n _this.max = undefined;\n var scale = _this.scale;\n scale.strictClampByDefault = true;\n _this.refreshScale();\n _this.datumFormatter = scale.tickFormat({\n specifier: _this.datumFormat,\n });\n return _this;\n }\n TimeAxis.prototype.normaliseDataDomain = function (d) {\n var _a;\n var _b = this, min = _b.min, max = _b.max;\n if (typeof min === 'number') {\n min = new Date(min);\n }\n if (typeof max === 'number') {\n max = new Date(max);\n }\n if (d.length > 2) {\n d = ((_a = extent$4(d)) !== null && _a !== void 0 ? _a : [0, 1000]).map(function (x) { return new Date(x); });\n }\n if (min instanceof Date) {\n d = [min, d[1]];\n }\n if (max instanceof Date) {\n d = [d[0], max];\n }\n if (d[0] > d[1]) {\n d = [];\n }\n return d;\n };\n TimeAxis.prototype.createTick = function () {\n return new TimeAxisTick();\n };\n TimeAxis.prototype.onLabelFormatChange = function (ticks, format) {\n if (format) {\n _super.prototype.onLabelFormatChange.call(this, ticks, 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({ ticks: ticks });\n }\n };\n TimeAxis.prototype.formatDatum = function (datum) {\n var _a;\n return (_a = this.moduleCtx.callbackCache.call(this.datumFormatter, datum)) !== null && _a !== void 0 ? _a : String(datum);\n };\n TimeAxis.prototype.calculatePadding = function (_min, _max) {\n // numbers in domain correspond to Unix timestamps\n // automatically expand domain by 1 in forward direction\n return [0, 1];\n };\n TimeAxis.className = 'TimeAxis';\n TimeAxis.type = 'time';\n __decorate$1t([\n Validate(AND(OPT_DATE_OR_DATETIME_MS, LESS_THAN('max')))\n ], TimeAxis.prototype, \"min\", void 0);\n __decorate$1t([\n Validate(AND(OPT_DATE_OR_DATETIME_MS, GREATER_THAN('min')))\n ], TimeAxis.prototype, \"max\", void 0);\n return TimeAxis;\n}(CartesianAxis));\n\nvar _a$1;\nvar AXIS_CONSTRUCTORS = (_a$1 = {},\n _a$1[NumberAxis.type] = NumberAxis,\n _a$1[CategoryAxis.type] = CategoryAxis,\n _a$1[TimeAxis.type] = TimeAxis,\n _a$1[GroupedCategoryAxis.type] = GroupedCategoryAxis,\n _a$1[LogAxis.type] = LogAxis,\n _a$1);\nfunction registerAxis(axisType, ctor) {\n AXIS_CONSTRUCTORS[axisType] = ctor;\n}\nfunction getAxis(axisType, moduleCtx) {\n var axisConstructor = AXIS_CONSTRUCTORS[axisType];\n if (axisConstructor) {\n return new axisConstructor(moduleCtx);\n }\n throw new Error(\"AG Charts - unknown axis type: \" + axisType);\n}\nvar AXIS_TYPES = {\n has: function (axisType) {\n return Object.prototype.hasOwnProperty.call(AXIS_CONSTRUCTORS, axisType);\n },\n get axesTypes() {\n return Object.keys(AXIS_CONSTRUCTORS);\n },\n};\nvar AXIS_THEME_TEMPLATES = {};\nfunction registerAxisThemeTemplate(axisType, theme) {\n AXIS_THEME_TEMPLATES[axisType] = theme;\n}\nfunction getAxisThemeTemplate(axisType) {\n var _a;\n return (_a = AXIS_THEME_TEMPLATES[axisType]) !== null && _a !== void 0 ? _a : {};\n}\n\nvar __extends$p = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1s = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 MARKER_SHAPES = ['circle', 'cross', 'diamond', 'heart', 'plus', 'square', 'triangle'];\nvar MARKER_SHAPE = predicateWithMessage(function (v) { return MARKER_SHAPES.includes(v) || Object.getPrototypeOf(v) === Marker; }, \"expecting a marker shape keyword such as 'circle', 'diamond' or 'square' or an object extending the Marker class\");\nvar SeriesMarker = /** @class */ (function (_super) {\n __extends$p(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.domain = undefined;\n _this.fill = undefined;\n _this.stroke = undefined;\n _this.strokeWidth = 1;\n _this.fillOpacity = undefined;\n _this.strokeOpacity = undefined;\n return _this;\n }\n __decorate$1s([\n Validate(BOOLEAN),\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], SeriesMarker.prototype, \"enabled\", void 0);\n __decorate$1s([\n Validate(MARKER_SHAPE),\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], SeriesMarker.prototype, \"shape\", void 0);\n __decorate$1s([\n Validate(NUMBER(0)),\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], SeriesMarker.prototype, \"size\", void 0);\n __decorate$1s([\n Validate(NUMBER(0)),\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], SeriesMarker.prototype, \"maxSize\", void 0);\n __decorate$1s([\n Validate(OPT_NUMBER_ARRAY),\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], SeriesMarker.prototype, \"domain\", void 0);\n __decorate$1s([\n Validate(OPT_COLOR_STRING),\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], SeriesMarker.prototype, \"fill\", void 0);\n __decorate$1s([\n Validate(OPT_COLOR_STRING),\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], SeriesMarker.prototype, \"stroke\", void 0);\n __decorate$1s([\n Validate(OPT_NUMBER(0)),\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], SeriesMarker.prototype, \"strokeWidth\", void 0);\n __decorate$1s([\n Validate(OPT_NUMBER(0, 1)),\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], SeriesMarker.prototype, \"fillOpacity\", void 0);\n __decorate$1s([\n Validate(OPT_NUMBER(0, 1)),\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], SeriesMarker.prototype, \"strokeOpacity\", void 0);\n return SeriesMarker;\n}(ChangeDetectable));\n\nvar __extends$o = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$c = (undefined && undefined.__assign) || function () {\n __assign$c = 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$c.apply(this, arguments);\n};\nvar __decorate$1r = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 __awaiter$7 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$7 = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __values$8 = (undefined && undefined.__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$c = (undefined && undefined.__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 _a, _b;\nvar DEFAULT_DIRECTION_KEYS = (_a = {},\n _a[ChartAxisDirection.X] = ['xKey'],\n _a[ChartAxisDirection.Y] = ['yKey'],\n _a);\nvar DEFAULT_DIRECTION_NAMES = (_b = {},\n _b[ChartAxisDirection.X] = ['xName'],\n _b[ChartAxisDirection.Y] = ['yName'],\n _b);\nvar CartesianSeriesNodeBaseClickEvent = /** @class */ (function (_super) {\n __extends$o(CartesianSeriesNodeBaseClickEvent, _super);\n function CartesianSeriesNodeBaseClickEvent(xKey, yKey, nativeEvent, datum, series) {\n var _this = _super.call(this, nativeEvent, datum, series) || this;\n _this.xKey = xKey;\n _this.yKey = yKey;\n return _this;\n }\n return CartesianSeriesNodeBaseClickEvent;\n}(SeriesNodeBaseClickEvent));\nvar CartesianSeriesNodeClickEvent = /** @class */ (function (_super) {\n __extends$o(CartesianSeriesNodeClickEvent, _super);\n function CartesianSeriesNodeClickEvent() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'nodeClick';\n return _this;\n }\n return CartesianSeriesNodeClickEvent;\n}(CartesianSeriesNodeBaseClickEvent));\nvar CartesianSeriesNodeDoubleClickEvent = /** @class */ (function (_super) {\n __extends$o(CartesianSeriesNodeDoubleClickEvent, _super);\n function CartesianSeriesNodeDoubleClickEvent() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'nodeDoubleClick';\n return _this;\n }\n return CartesianSeriesNodeDoubleClickEvent;\n}(CartesianSeriesNodeBaseClickEvent));\nvar CartesianStateMachine = /** @class */ (function (_super) {\n __extends$o(CartesianStateMachine, _super);\n function CartesianStateMachine() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return CartesianStateMachine;\n}(StateMachine));\nvar CartesianSeries = /** @class */ (function (_super) {\n __extends$o(CartesianSeries, _super);\n function CartesianSeries(opts) {\n var _this = _super.call(this, __assign$c(__assign$c({}, opts), { useSeriesGroupLayer: true, directionKeys: DEFAULT_DIRECTION_KEYS, directionNames: DEFAULT_DIRECTION_NAMES })) || this;\n _this.legendItemName = undefined;\n _this._contextNodeData = [];\n _this.nodeDataDependencies = {};\n _this.highlightSelection = Selection.select(_this.highlightNode, function () {\n return _this.opts.hasMarkers ? _this.markerFactory() : _this.nodeFactory();\n });\n _this.highlightLabelSelection = Selection.select(_this.highlightLabel, Text);\n _this.subGroups = [];\n _this.subGroupId = 0;\n _this.datumSelectionGarbageCollection = true;\n var _a = opts.pathsPerSeries, pathsPerSeries = _a === void 0 ? 1 : _a, _b = opts.hasMarkers, hasMarkers = _b === void 0 ? false : _b, _c = opts.hasHighlightedLabels, hasHighlightedLabels = _c === void 0 ? false : _c, _d = opts.pathsZIndexSubOrderOffset, pathsZIndexSubOrderOffset = _d === void 0 ? [] : _d;\n _this.opts = { pathsPerSeries: pathsPerSeries, hasMarkers: hasMarkers, hasHighlightedLabels: hasHighlightedLabels, pathsZIndexSubOrderOffset: pathsZIndexSubOrderOffset };\n _this.animationState = new CartesianStateMachine('empty', {\n empty: {\n on: {\n update: {\n target: 'ready',\n action: function (data) { return _this.animateEmptyUpdateReady(data); },\n },\n },\n },\n ready: {\n on: {\n updateData: {\n target: 'waiting',\n action: function () { },\n },\n update: {\n target: 'ready',\n action: function (data) { return _this.animateReadyUpdate(data); },\n },\n highlight: {\n target: 'ready',\n action: function (data) { return _this.animateReadyHighlight(data); },\n },\n highlightMarkers: {\n target: 'ready',\n action: function (data) { return _this.animateReadyHighlightMarkers(data); },\n },\n resize: {\n target: 'ready',\n action: function (data) { return _this.animateReadyResize(data); },\n },\n },\n },\n waiting: {\n on: {\n update: {\n target: 'ready',\n action: function (data) { return _this.animateWaitingUpdateReady(data); },\n },\n },\n },\n });\n return _this;\n }\n Object.defineProperty(CartesianSeries.prototype, \"contextNodeData\", {\n get: function () {\n var _a;\n return (_a = this._contextNodeData) === null || _a === void 0 ? void 0 : _a.slice();\n },\n enumerable: false,\n configurable: true\n });\n CartesianSeries.prototype.addChartEventListeners = function () {\n var _this = this;\n var _a, _b;\n (_a = this.ctx.chartEventManager) === null || _a === void 0 ? void 0 : _a.addListener('legend-item-click', function (event) { return _this.onLegendItemClick(event); });\n (_b = this.ctx.chartEventManager) === null || _b === void 0 ? void 0 : _b.addListener('legend-item-double-click', function (event) {\n return _this.onLegendItemDoubleClick(event);\n });\n };\n CartesianSeries.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this._contextNodeData.splice(0, this._contextNodeData.length);\n this.subGroups.splice(0, this.subGroups.length);\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)) || (!isContinuousX && isDiscrete(x))) &&\n ((isContinuousY && isContinuous(y)) || (!isContinuousY && 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 CartesianSeries.prototype.update = function (_a) {\n var _b, _c;\n var seriesRect = _a.seriesRect;\n return __awaiter$7(this, void 0, void 0, function () {\n var visible, series, seriesHighlighted, newNodeDataDependencies, resize;\n return __generator$7(this, function (_d) {\n switch (_d.label) {\n case 0:\n visible = this.visible;\n series = ((_c = (_b = this.ctx.highlightManager) === null || _b === void 0 ? void 0 : _b.getActiveHighlight()) !== null && _c !== void 0 ? _c : {}).series;\n seriesHighlighted = series ? series === this : undefined;\n newNodeDataDependencies = {\n seriesRectWidth: seriesRect === null || seriesRect === void 0 ? void 0 : seriesRect.width,\n seriesRectHeight: seriesRect === null || seriesRect === void 0 ? void 0 : seriesRect.height,\n };\n resize = jsonDiff(this.nodeDataDependencies, newNodeDataDependencies) != null;\n if (resize) {\n this.nodeDataDependencies = newNodeDataDependencies;\n this.markNodeDataDirty();\n }\n return [4 /*yield*/, this.updateSelections(seriesHighlighted, visible)];\n case 1:\n _d.sent();\n return [4 /*yield*/, this.updateNodes(seriesHighlighted, visible)];\n case 2:\n _d.sent();\n if (resize) {\n this.animationState.transition('resize', {\n datumSelections: this.subGroups.map(function (_a) {\n var datumSelection = _a.datumSelection;\n return datumSelection;\n }),\n markerSelections: this.subGroups.map(function (_a) {\n var markerSelection = _a.markerSelection;\n return markerSelection;\n }),\n contextData: this._contextNodeData,\n paths: this.subGroups.map(function (_a) {\n var paths = _a.paths;\n return paths;\n }),\n });\n }\n this.animationState.transition('update', {\n datumSelections: this.subGroups.map(function (_a) {\n var datumSelection = _a.datumSelection;\n return datumSelection;\n }),\n markerSelections: this.subGroups.map(function (_a) {\n var markerSelection = _a.markerSelection;\n return markerSelection;\n }),\n labelSelections: this.subGroups.map(function (_a) {\n var labelSelection = _a.labelSelection;\n return labelSelection;\n }),\n contextData: this._contextNodeData,\n paths: this.subGroups.map(function (_a) {\n var paths = _a.paths;\n return paths;\n }),\n seriesRect: seriesRect,\n });\n return [2 /*return*/];\n }\n });\n });\n };\n CartesianSeries.prototype.updateSelections = function (seriesHighlighted, anySeriesItemEnabled) {\n var _a;\n return __awaiter$7(this, void 0, void 0, function () {\n var _b;\n var _this = this;\n return __generator$7(this, function (_c) {\n switch (_c.label) {\n case 0: return [4 /*yield*/, this.updateHighlightSelection(seriesHighlighted)];\n case 1:\n _c.sent();\n if (!anySeriesItemEnabled) {\n return [2 /*return*/];\n }\n if (!this.nodeDataRefresh && !this.isPathOrSelectionDirty()) {\n return [2 /*return*/];\n }\n if (!this.nodeDataRefresh) return [3 /*break*/, 4];\n this.nodeDataRefresh = false;\n if ((_a = this.chart) === null || _a === void 0 ? void 0 : _a.debug) {\n Logger.debug(\"CartesianSeries.updateSelections() - calling createNodeData() for\", this.id);\n }\n _b = this;\n return [4 /*yield*/, this.createNodeData()];\n case 2:\n _b._contextNodeData = _c.sent();\n return [4 /*yield*/, this.updateSeriesGroups()];\n case 3:\n _c.sent();\n _c.label = 4;\n case 4: return [4 /*yield*/, Promise.all(this.subGroups.map(function (g, i) { return _this.updateSeriesGroupSelections(g, i); }))];\n case 5:\n _c.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n CartesianSeries.prototype.updateSeriesGroupSelections = function (subGroup, seriesIdx) {\n return __awaiter$7(this, void 0, void 0, function () {\n var datumSelection, labelSelection, markerSelection, contextData, nodeData, labelData, _a, _b, _c;\n return __generator$7(this, function (_d) {\n switch (_d.label) {\n case 0:\n datumSelection = subGroup.datumSelection, labelSelection = subGroup.labelSelection, markerSelection = subGroup.markerSelection;\n contextData = this._contextNodeData[seriesIdx];\n nodeData = contextData.nodeData, labelData = contextData.labelData;\n _a = subGroup;\n return [4 /*yield*/, this.updateDatumSelection({ nodeData: nodeData, datumSelection: datumSelection, seriesIdx: seriesIdx })];\n case 1:\n _a.datumSelection = _d.sent();\n _b = subGroup;\n return [4 /*yield*/, this.updateLabelSelection({ labelData: labelData, labelSelection: labelSelection, seriesIdx: seriesIdx })];\n case 2:\n _b.labelSelection = _d.sent();\n if (!markerSelection) return [3 /*break*/, 4];\n _c = subGroup;\n return [4 /*yield*/, this.updateMarkerSelection({\n nodeData: nodeData,\n markerSelection: markerSelection,\n seriesIdx: seriesIdx,\n })];\n case 3:\n _c.markerSelection = _d.sent();\n _d.label = 4;\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n CartesianSeries.prototype.nodeFactory = function () {\n return new Group();\n };\n CartesianSeries.prototype.markerFactory = function () {\n var MarkerShape = getMarker$1();\n return new MarkerShape();\n };\n CartesianSeries.prototype.updateSeriesGroups = function () {\n return __awaiter$7(this, void 0, void 0, function () {\n var _a, contextNodeData, contentGroup, subGroups, _b, pathsPerSeries, hasMarkers, totalGroups, layer, subGroupId, dataNodeGroup, markerGroup, labelGroup, paths, index;\n var _this = this;\n return __generator$7(this, function (_c) {\n _a = this, contextNodeData = _a._contextNodeData, contentGroup = _a.contentGroup, subGroups = _a.subGroups, _b = _a.opts, pathsPerSeries = _b.pathsPerSeries, hasMarkers = _b.hasMarkers;\n if (contextNodeData.length === subGroups.length) {\n return [2 /*return*/];\n }\n if (contextNodeData.length < subGroups.length) {\n subGroups.splice(contextNodeData.length).forEach(function (_a) {\n var e_1, _b;\n var dataNodeGroup = _a.dataNodeGroup, markerGroup = _a.markerGroup, labelGroup = _a.labelGroup, paths = _a.paths;\n contentGroup.removeChild(dataNodeGroup);\n if (markerGroup) {\n contentGroup.removeChild(markerGroup);\n }\n if (labelGroup) {\n contentGroup.removeChild(labelGroup);\n }\n try {\n for (var paths_1 = __values$8(paths), paths_1_1 = paths_1.next(); !paths_1_1.done; paths_1_1 = paths_1.next()) {\n var path = paths_1_1.value;\n contentGroup.removeChild(path);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (paths_1_1 && !paths_1_1.done && (_b = paths_1.return)) _b.call(paths_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n });\n }\n totalGroups = contextNodeData.length;\n while (totalGroups > subGroups.length) {\n layer = false;\n subGroupId = this.subGroupId++;\n dataNodeGroup = new Group({\n name: this.id + \"-series-sub\" + subGroupId + \"-dataNodes\",\n layer: layer,\n zIndex: Layers.SERIES_LAYER_ZINDEX,\n zIndexSubOrder: this.getGroupZIndexSubOrder('data', subGroupId),\n });\n markerGroup = hasMarkers\n ? new Group({\n name: this.id + \"-series-sub\" + this.subGroupId++ + \"-markers\",\n layer: layer,\n zIndex: Layers.SERIES_LAYER_ZINDEX,\n zIndexSubOrder: this.getGroupZIndexSubOrder('marker', subGroupId),\n })\n : undefined;\n labelGroup = new Group({\n name: this.id + \"-series-sub\" + this.subGroupId++ + \"-labels\",\n layer: layer,\n zIndex: Layers.SERIES_LABEL_ZINDEX,\n zIndexSubOrder: this.getGroupZIndexSubOrder('labels', subGroupId),\n });\n contentGroup.appendChild(dataNodeGroup);\n contentGroup.appendChild(labelGroup);\n if (markerGroup) {\n contentGroup.appendChild(markerGroup);\n }\n paths = [];\n for (index = 0; index < pathsPerSeries; index++) {\n paths[index] = new Path();\n paths[index].zIndex = Layers.SERIES_LAYER_ZINDEX;\n paths[index].zIndexSubOrder = this.getGroupZIndexSubOrder('paths', index);\n contentGroup.appendChild(paths[index]);\n }\n subGroups.push({\n paths: paths,\n dataNodeGroup: dataNodeGroup,\n markerGroup: markerGroup,\n labelGroup: labelGroup,\n labelSelection: Selection.select(labelGroup, Text),\n datumSelection: Selection.select(dataNodeGroup, function () { return _this.nodeFactory(); }, this.datumSelectionGarbageCollection),\n markerSelection: markerGroup ? Selection.select(markerGroup, function () { return _this.markerFactory(); }) : undefined,\n });\n }\n return [2 /*return*/];\n });\n });\n };\n CartesianSeries.prototype.getGroupZIndexSubOrder = function (type, subIndex) {\n var _a;\n if (subIndex === void 0) { subIndex = 0; }\n var result = _super.prototype.getGroupZIndexSubOrder.call(this, type, subIndex);\n if (type === 'paths') {\n var pathOffset_1 = (_a = this.opts.pathsZIndexSubOrderOffset[subIndex]) !== null && _a !== void 0 ? _a : 0;\n var superFn_1 = result[0];\n if (typeof superFn_1 === 'function') {\n result[0] = function () { return +superFn_1() + pathOffset_1; };\n }\n else {\n result[0] = +superFn_1 + pathOffset_1;\n }\n }\n return result;\n };\n CartesianSeries.prototype.updateNodes = function (seriesHighlighted, anySeriesItemEnabled) {\n var _a;\n return __awaiter$7(this, void 0, void 0, function () {\n var _b, highlightSelection, highlightLabelSelection, contextNodeData, _c, hasMarkers, hasHighlightedLabels, visible, subGroupOpacities;\n var _this = this;\n return __generator$7(this, function (_d) {\n switch (_d.label) {\n case 0:\n _b = this, highlightSelection = _b.highlightSelection, highlightLabelSelection = _b.highlightLabelSelection, contextNodeData = _b._contextNodeData, _c = _b.opts, hasMarkers = _c.hasMarkers, hasHighlightedLabels = _c.hasHighlightedLabels;\n visible = this.visible && ((_a = this._contextNodeData) === null || _a === void 0 ? void 0 : _a.length) > 0 && anySeriesItemEnabled;\n this.rootGroup.visible = visible;\n this.contentGroup.visible = visible;\n this.highlightGroup.visible = visible && !!seriesHighlighted;\n subGroupOpacities = this.subGroups.map(function (_, index) {\n var itemId = contextNodeData[index].itemId;\n return _this.getOpacity({ itemId: itemId });\n });\n if (!hasMarkers) return [3 /*break*/, 2];\n return [4 /*yield*/, this.updateMarkerNodes({\n markerSelection: highlightSelection,\n isHighlight: true,\n seriesIdx: -1,\n })];\n case 1:\n _d.sent();\n this.animationState.transition('highlightMarkers', highlightSelection);\n return [3 /*break*/, 4];\n case 2: return [4 /*yield*/, this.updateDatumNodes({ datumSelection: highlightSelection, isHighlight: true, seriesIdx: -1 })];\n case 3:\n _d.sent();\n this.animationState.transition('highlight', highlightSelection);\n _d.label = 4;\n case 4:\n if (!hasHighlightedLabels) return [3 /*break*/, 6];\n return [4 /*yield*/, this.updateLabelNodes({ labelSelection: highlightLabelSelection, seriesIdx: -1 })];\n case 5:\n _d.sent();\n _d.label = 6;\n case 6: return [4 /*yield*/, Promise.all(this.subGroups.map(function (subGroup, seriesIdx) { return __awaiter$7(_this, void 0, void 0, function () {\n var dataNodeGroup, markerGroup, datumSelection, labelSelection, markerSelection, paths, labelGroup, subGroupVisible, subGroupOpacity, paths_2, paths_2_1, path;\n var e_2, _a;\n return __generator$7(this, function (_b) {\n switch (_b.label) {\n case 0:\n dataNodeGroup = subGroup.dataNodeGroup, markerGroup = subGroup.markerGroup, datumSelection = subGroup.datumSelection, labelSelection = subGroup.labelSelection, markerSelection = subGroup.markerSelection, paths = subGroup.paths, labelGroup = subGroup.labelGroup;\n subGroupVisible = visible;\n subGroupOpacity = subGroupOpacities[seriesIdx];\n dataNodeGroup.opacity = subGroupOpacity;\n dataNodeGroup.visible = subGroupVisible;\n labelGroup.visible = subGroupVisible;\n if (markerGroup) {\n markerGroup.opacity = subGroupOpacity;\n markerGroup.zIndex =\n dataNodeGroup.zIndex >= Layers.SERIES_LAYER_ZINDEX\n ? dataNodeGroup.zIndex\n : dataNodeGroup.zIndex + 1;\n markerGroup.visible = subGroupVisible;\n }\n if (labelGroup) {\n labelGroup.opacity = subGroupOpacity;\n }\n try {\n for (paths_2 = __values$8(paths), paths_2_1 = paths_2.next(); !paths_2_1.done; paths_2_1 = paths_2.next()) {\n path = paths_2_1.value;\n path.opacity = subGroupOpacity;\n path.visible = subGroupVisible;\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (paths_2_1 && !paths_2_1.done && (_a = paths_2.return)) _a.call(paths_2);\n }\n finally { if (e_2) throw e_2.error; }\n }\n if (!dataNodeGroup.visible) {\n return [2 /*return*/];\n }\n return [4 /*yield*/, this.updateDatumNodes({ datumSelection: datumSelection, isHighlight: false, seriesIdx: seriesIdx })];\n case 1:\n _b.sent();\n return [4 /*yield*/, this.updateLabelNodes({ labelSelection: labelSelection, seriesIdx: seriesIdx })];\n case 2:\n _b.sent();\n if (!(hasMarkers && markerSelection)) return [3 /*break*/, 4];\n return [4 /*yield*/, this.updateMarkerNodes({ markerSelection: markerSelection, isHighlight: false, seriesIdx: seriesIdx })];\n case 3:\n _b.sent();\n _b.label = 4;\n case 4: return [2 /*return*/];\n }\n });\n }); }))];\n case 7:\n _d.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n CartesianSeries.prototype.updateHighlightSelection = function (seriesHighlighted) {\n var _a;\n return __awaiter$7(this, void 0, void 0, function () {\n var _b, highlightSelection, highlightLabelSelection, contextNodeData, highlightedDatum, item, _c, labelItem, _d, itemId_1, contextNodeData_1, contextNodeData_1_1, labelData, _e;\n var e_3, _f;\n return __generator$7(this, function (_g) {\n switch (_g.label) {\n case 0:\n _b = this, highlightSelection = _b.highlightSelection, highlightLabelSelection = _b.highlightLabelSelection, contextNodeData = _b._contextNodeData;\n highlightedDatum = (_a = this.ctx.highlightManager) === null || _a === void 0 ? void 0 : _a.getActiveHighlight();\n item = seriesHighlighted && (highlightedDatum === null || highlightedDatum === void 0 ? void 0 : highlightedDatum.datum) ? highlightedDatum : undefined;\n _c = this;\n return [4 /*yield*/, this.updateHighlightSelectionItem({ item: item, highlightSelection: highlightSelection })];\n case 1:\n _c.highlightSelection = _g.sent();\n if (this.isLabelEnabled() && item != null) {\n _d = item.itemId, itemId_1 = _d === void 0 ? undefined : _d;\n try {\n for (contextNodeData_1 = __values$8(contextNodeData), contextNodeData_1_1 = contextNodeData_1.next(); !contextNodeData_1_1.done; contextNodeData_1_1 = contextNodeData_1.next()) {\n labelData = contextNodeData_1_1.value.labelData;\n labelItem = labelData.find(function (ld) { return ld.datum === item.datum && ld.itemId === itemId_1; });\n if (labelItem != null) {\n break;\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (contextNodeData_1_1 && !contextNodeData_1_1.done && (_f = contextNodeData_1.return)) _f.call(contextNodeData_1);\n }\n finally { if (e_3) throw e_3.error; }\n }\n }\n _e = this;\n return [4 /*yield*/, this.updateHighlightSelectionLabel({\n item: labelItem,\n highlightLabelSelection: highlightLabelSelection,\n })];\n case 2:\n _e.highlightLabelSelection = _g.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n CartesianSeries.prototype.pickNodeExactShape = function (point) {\n var e_4, _a;\n var result = _super.prototype.pickNodeExactShape.call(this, point);\n if (result) {\n return result;\n }\n var x = point.x, y = point.y;\n var hasMarkers = this.opts.hasMarkers;\n try {\n for (var _b = __values$8(this.subGroups), _c = _b.next(); !_c.done; _c = _b.next()) {\n var _d = _c.value, dataNodeGroup = _d.dataNodeGroup, markerGroup = _d.markerGroup;\n var match = dataNodeGroup.pickNode(x, y);\n if (!match && hasMarkers) {\n match = markerGroup === null || markerGroup === void 0 ? void 0 : markerGroup.pickNode(x, y);\n }\n if (match) {\n return { datum: match.datum, distance: 0 };\n }\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_4) throw e_4.error; }\n }\n };\n CartesianSeries.prototype.pickNodeClosestDatum = function (point) {\n var e_5, _a, e_6, _b;\n var _c, _d;\n var x = point.x, y = point.y;\n var _e = this, axes = _e.axes, rootGroup = _e.rootGroup, contextNodeData = _e._contextNodeData;\n var xAxis = axes[ChartAxisDirection.X];\n var yAxis = axes[ChartAxisDirection.Y];\n var hitPoint = rootGroup.transformPoint(x, y);\n var minDistance = Infinity;\n var closestDatum;\n try {\n for (var contextNodeData_2 = __values$8(contextNodeData), contextNodeData_2_1 = contextNodeData_2.next(); !contextNodeData_2_1.done; contextNodeData_2_1 = contextNodeData_2.next()) {\n var context = contextNodeData_2_1.value;\n try {\n for (var _f = (e_6 = void 0, __values$8(context.nodeData)), _g = _f.next(); !_g.done; _g = _f.next()) {\n var datum = _g.value;\n var _h = datum.point, _j = _h === void 0 ? {} : _h, _k = _j.x, datumX = _k === void 0 ? NaN : _k, _l = _j.y, datumY = _l === void 0 ? NaN : _l;\n if (isNaN(datumX) || isNaN(datumY)) {\n continue;\n }\n var isInRange = (xAxis === null || xAxis === void 0 ? void 0 : xAxis.inRange(datumX)) && (yAxis === null || yAxis === void 0 ? void 0 : yAxis.inRange(datumY));\n if (!isInRange) {\n continue;\n }\n // No need to use Math.sqrt() since x < y implies Math.sqrt(x) < Math.sqrt(y) for\n // values > 1\n var distance = Math.max(Math.pow((hitPoint.x - datumX), 2) + Math.pow((hitPoint.y - datumY), 2), 0);\n if (distance < minDistance) {\n minDistance = distance;\n closestDatum = datum;\n }\n }\n }\n catch (e_6_1) { e_6 = { error: e_6_1 }; }\n finally {\n try {\n if (_g && !_g.done && (_b = _f.return)) _b.call(_f);\n }\n finally { if (e_6) throw e_6.error; }\n }\n }\n }\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\n finally {\n try {\n if (contextNodeData_2_1 && !contextNodeData_2_1.done && (_a = contextNodeData_2.return)) _a.call(contextNodeData_2);\n }\n finally { if (e_5) throw e_5.error; }\n }\n if (closestDatum) {\n var distance = Math.max(Math.sqrt(minDistance) - ((_d = (_c = closestDatum.point) === null || _c === void 0 ? void 0 : _c.size) !== null && _d !== void 0 ? _d : 0), 0);\n return { datum: closestDatum, distance: distance };\n }\n };\n CartesianSeries.prototype.pickNodeMainAxisFirst = function (point, requireCategoryAxis) {\n var e_7, _a, e_8, _b;\n var _c, _d;\n var x = point.x, y = point.y;\n var _e = this, axes = _e.axes, rootGroup = _e.rootGroup, contextNodeData = _e._contextNodeData;\n var xAxis = axes[ChartAxisDirection.X];\n var yAxis = axes[ChartAxisDirection.Y];\n // Prefer to start search with any available category axis.\n var directions = [xAxis, yAxis]\n .filter(function (a) { return a instanceof CategoryAxis; })\n .map(function (a) { return a.direction; });\n if (requireCategoryAxis && directions.length === 0) {\n return;\n }\n // Default to X-axis unless we found a suitable category axis.\n var _f = __read$c(directions, 1), _g = _f[0], primaryDirection = _g === void 0 ? ChartAxisDirection.X : _g;\n var hitPoint = rootGroup.transformPoint(x, y);\n var hitPointCoords = primaryDirection === ChartAxisDirection.X ? [hitPoint.x, hitPoint.y] : [hitPoint.y, hitPoint.x];\n var minDistance = [Infinity, Infinity];\n var closestDatum = undefined;\n try {\n for (var contextNodeData_3 = __values$8(contextNodeData), contextNodeData_3_1 = contextNodeData_3.next(); !contextNodeData_3_1.done; contextNodeData_3_1 = contextNodeData_3.next()) {\n var context = contextNodeData_3_1.value;\n try {\n for (var _h = (e_8 = void 0, __values$8(context.nodeData)), _j = _h.next(); !_j.done; _j = _h.next()) {\n var datum = _j.value;\n var _k = datum.point, _l = _k === void 0 ? {} : _k, _m = _l.x, datumX = _m === void 0 ? NaN : _m, _o = _l.y, datumY = _o === void 0 ? NaN : _o;\n if (isNaN(datumX) || isNaN(datumY)) {\n continue;\n }\n var isInRange = (xAxis === null || xAxis === void 0 ? void 0 : xAxis.inRange(datumX)) && (yAxis === null || yAxis === void 0 ? void 0 : yAxis.inRange(datumY));\n if (!isInRange) {\n continue;\n }\n var point_1 = primaryDirection === ChartAxisDirection.X ? [datumX, datumY] : [datumY, datumX];\n // Compare distances from most significant dimension to least.\n var newMinDistance = true;\n for (var i = 0; i < point_1.length; i++) {\n var dist = Math.abs(point_1[i] - hitPointCoords[i]);\n if (dist > minDistance[i]) {\n newMinDistance = false;\n break;\n }\n if (dist < minDistance[i]) {\n minDistance[i] = dist;\n minDistance.fill(Infinity, i + 1, minDistance.length);\n }\n }\n if (newMinDistance) {\n closestDatum = datum;\n }\n }\n }\n catch (e_8_1) { e_8 = { error: e_8_1 }; }\n finally {\n try {\n if (_j && !_j.done && (_b = _h.return)) _b.call(_h);\n }\n finally { if (e_8) throw e_8.error; }\n }\n }\n }\n catch (e_7_1) { e_7 = { error: e_7_1 }; }\n finally {\n try {\n if (contextNodeData_3_1 && !contextNodeData_3_1.done && (_a = contextNodeData_3.return)) _a.call(contextNodeData_3);\n }\n finally { if (e_7) throw e_7.error; }\n }\n if (closestDatum) {\n var distance = Math.max(Math.sqrt(Math.pow(minDistance[0], 2) + Math.pow(minDistance[1], 2)) - ((_d = (_c = closestDatum.point) === null || _c === void 0 ? void 0 : _c.size) !== null && _d !== void 0 ? _d : 0), 0);\n return { datum: closestDatum, distance: distance };\n }\n };\n CartesianSeries.prototype.onLegendItemClick = function (event) {\n var enabled = event.enabled, itemId = event.itemId, series = event.series, legendItemName = event.legendItemName;\n var matchedLegendItemName = this.legendItemName != null && this.legendItemName === legendItemName;\n if (series.id === this.id) {\n this.toggleSeriesItem(itemId, enabled);\n }\n else if (matchedLegendItemName) {\n this.toggleSeriesItem(itemId, enabled);\n }\n };\n CartesianSeries.prototype.onLegendItemDoubleClick = function (event) {\n var enabled = event.enabled, itemId = event.itemId, series = event.series, numVisibleItems = event.numVisibleItems, legendItemName = event.legendItemName;\n var totalVisibleItems = Object.values(numVisibleItems).reduce(function (p, v) { return p + v; }, 0);\n var matchedLegendItemName = this.legendItemName != null && this.legendItemName === legendItemName;\n if (series.id === this.id || matchedLegendItemName) {\n // Double-clicked item should always become visible.\n this.toggleSeriesItem(itemId, true);\n }\n else if (enabled && totalVisibleItems === 1) {\n // Other items should become visible if there is only one existing visible item.\n this.toggleSeriesItem(itemId, true);\n }\n else {\n // Disable other items if not exactly one enabled.\n this.toggleSeriesItem(itemId, false);\n }\n };\n CartesianSeries.prototype.isPathOrSelectionDirty = function () {\n // Override point to allow more sophisticated dirty selection detection.\n return false;\n };\n CartesianSeries.prototype.getLabelData = function () {\n return [];\n };\n CartesianSeries.prototype.updateHighlightSelectionItem = function (opts) {\n return __awaiter$7(this, void 0, void 0, function () {\n var hasMarkers, item, highlightSelection, nodeData, markerSelection;\n return __generator$7(this, function (_a) {\n hasMarkers = this.opts.hasMarkers;\n item = opts.item, highlightSelection = opts.highlightSelection;\n nodeData = item ? [item] : [];\n if (hasMarkers) {\n markerSelection = highlightSelection;\n return [2 /*return*/, this.updateMarkerSelection({ nodeData: nodeData, markerSelection: markerSelection, seriesIdx: -1 })];\n }\n else {\n return [2 /*return*/, this.updateDatumSelection({ nodeData: nodeData, datumSelection: highlightSelection, seriesIdx: -1 })];\n }\n });\n });\n };\n CartesianSeries.prototype.updateHighlightSelectionLabel = function (opts) {\n return __awaiter$7(this, void 0, void 0, function () {\n var item, highlightLabelSelection, labelData;\n return __generator$7(this, function (_a) {\n item = opts.item, highlightLabelSelection = opts.highlightLabelSelection;\n labelData = item ? [item] : [];\n return [2 /*return*/, this.updateLabelSelection({ labelData: labelData, labelSelection: highlightLabelSelection, seriesIdx: -1 })];\n });\n });\n };\n CartesianSeries.prototype.updateDatumSelection = function (opts) {\n return __awaiter$7(this, void 0, void 0, function () {\n return __generator$7(this, function (_a) {\n // Override point for sub-classes.\n return [2 /*return*/, opts.datumSelection];\n });\n });\n };\n CartesianSeries.prototype.updateDatumNodes = function (_opts) {\n return __awaiter$7(this, void 0, void 0, function () {\n return __generator$7(this, function (_a) {\n return [2 /*return*/];\n });\n });\n };\n CartesianSeries.prototype.updateMarkerSelection = function (opts) {\n return __awaiter$7(this, void 0, void 0, function () {\n return __generator$7(this, function (_a) {\n // Override point for sub-classes.\n return [2 /*return*/, opts.markerSelection];\n });\n });\n };\n CartesianSeries.prototype.updateMarkerNodes = function (_opts) {\n return __awaiter$7(this, void 0, void 0, function () {\n return __generator$7(this, function (_a) {\n return [2 /*return*/];\n });\n });\n };\n CartesianSeries.prototype.animateEmptyUpdateReady = function (_data) {\n // Override point for sub-classes.\n };\n CartesianSeries.prototype.animateReadyUpdate = function (_data) {\n // Override point for sub-classes.\n };\n CartesianSeries.prototype.animateWaitingUpdateReady = function (_data) {\n // Override point for sub-classes.\n };\n CartesianSeries.prototype.animateReadyHighlight = function (_data) {\n // Override point for sub-classes.\n };\n CartesianSeries.prototype.animateReadyHighlightMarkers = function (_data) {\n // Override point for sub-classes.\n };\n CartesianSeries.prototype.animateReadyResize = function (_data) {\n // Override point for sub-classes.\n };\n __decorate$1r([\n Validate(OPT_STRING)\n ], CartesianSeries.prototype, \"legendItemName\", void 0);\n return CartesianSeries;\n}(Series));\nvar CartesianSeriesMarker = /** @class */ (function (_super) {\n __extends$o(CartesianSeriesMarker, _super);\n function CartesianSeriesMarker() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.formatter = undefined;\n return _this;\n }\n __decorate$1r([\n Validate(OPT_FUNCTION),\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], CartesianSeriesMarker.prototype, \"formatter\", void 0);\n return CartesianSeriesMarker;\n}(SeriesMarker));\n\nvar __read$b = (undefined && undefined.__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 interpolatePattern = /(#\\{(.*?)\\})/g;\nfunction interpolate(input, values, formats) {\n return input.replace(interpolatePattern, function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var name = args[2];\n var _a = __read$b(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 = buildFormatter(format);\n return formatter(value);\n }\n return value.toDateString();\n }\n if (typeof value === 'string' || (value === null || value === void 0 ? void 0 : value.toString)) {\n return String(value);\n }\n return '';\n });\n}\n\nvar element = null;\nfunction sanitizeHtml(text) {\n element = element !== null && element !== void 0 ? element : document.createElement('div');\n if (!text) {\n return '';\n }\n element.textContent = text;\n return element.innerHTML;\n}\n\nvar __extends$n = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$b = (undefined && undefined.__assign) || function () {\n __assign$b = 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$b.apply(this, arguments);\n};\nvar __decorate$1q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 __awaiter$6 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$6 = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read$a = (undefined && undefined.__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 __spreadArray$6 = (undefined && undefined.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar AreaSeriesLabel = /** @class */ (function (_super) {\n __extends$n(AreaSeriesLabel, _super);\n function AreaSeriesLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.formatter = undefined;\n return _this;\n }\n __decorate$1q([\n Validate(OPT_FUNCTION)\n ], AreaSeriesLabel.prototype, \"formatter\", void 0);\n return AreaSeriesLabel;\n}(Label$1));\nvar AreaSeriesTooltip = /** @class */ (function (_super) {\n __extends$n(AreaSeriesTooltip, _super);\n function AreaSeriesTooltip() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.renderer = undefined;\n _this.format = undefined;\n return _this;\n }\n __decorate$1q([\n Validate(OPT_FUNCTION)\n ], AreaSeriesTooltip.prototype, \"renderer\", void 0);\n __decorate$1q([\n Validate(OPT_STRING)\n ], AreaSeriesTooltip.prototype, \"format\", void 0);\n return AreaSeriesTooltip;\n}(SeriesTooltip));\nvar AreaSeriesTag;\n(function (AreaSeriesTag) {\n AreaSeriesTag[AreaSeriesTag[\"Fill\"] = 0] = \"Fill\";\n AreaSeriesTag[AreaSeriesTag[\"Stroke\"] = 1] = \"Stroke\";\n AreaSeriesTag[AreaSeriesTag[\"Marker\"] = 2] = \"Marker\";\n AreaSeriesTag[AreaSeriesTag[\"Label\"] = 3] = \"Label\";\n})(AreaSeriesTag || (AreaSeriesTag = {}));\nvar AreaSeries = /** @class */ (function (_super) {\n __extends$n(AreaSeries, _super);\n function AreaSeries(moduleCtx) {\n var _this = _super.call(this, {\n moduleCtx: moduleCtx,\n pathsPerSeries: 2,\n pathsZIndexSubOrderOffset: [0, 1000],\n hasMarkers: true,\n }) || this;\n _this.tooltip = new AreaSeriesTooltip();\n _this.marker = new CartesianSeriesMarker();\n _this.label = new AreaSeriesLabel();\n _this.fill = '#c16068';\n _this.stroke = '#874349';\n _this.fillOpacity = 1;\n _this.strokeOpacity = 1;\n _this.lineDash = [0];\n _this.lineDashOffset = 0;\n _this.xKey = undefined;\n _this.xName = undefined;\n _this.strokeWidth = 2;\n _this.shadow = undefined;\n var _a = _this, marker = _a.marker, label = _a.label;\n marker.enabled = false;\n label.enabled = false;\n return _this;\n }\n AreaSeries.prototype.processData = function (dataController) {\n return __awaiter$6(this, void 0, void 0, function () {\n var _a, xKey, yKey, axes, normalizedTo, data, visible, _b, _c, _d, groupIndex, xAxis, yAxis, isContinuousX, isContinuousY, ids, extraProps, normaliseTo, _e, dataModel, processedData;\n return __generator$6(this, function (_f) {\n switch (_f.label) {\n case 0:\n _a = this, xKey = _a.xKey, yKey = _a.yKey, axes = _a.axes, normalizedTo = _a.normalizedTo, data = _a.data, visible = _a.visible, _b = _a.seriesGrouping, _c = _b === void 0 ? {} : _b, _d = _c.groupIndex, groupIndex = _d === void 0 ? this.id : _d;\n if (!xKey || !yKey || !data)\n return [2 /*return*/];\n xAxis = axes[ChartAxisDirection.X];\n yAxis = axes[ChartAxisDirection.Y];\n isContinuousX = (xAxis === null || xAxis === void 0 ? void 0 : xAxis.scale) instanceof ContinuousScale;\n isContinuousY = (yAxis === null || yAxis === void 0 ? void 0 : yAxis.scale) instanceof ContinuousScale;\n ids = [\n \"area-stack-\" + groupIndex + \"-yValues\",\n \"area-stack-\" + groupIndex + \"-yValues-trailing\",\n \"area-stack-\" + groupIndex + \"-yValues-prev\",\n \"area-stack-\" + groupIndex + \"-yValues-trailing-prev\",\n \"area-stack-\" + groupIndex + \"-yValues-marker\",\n ];\n extraProps = [];\n normaliseTo = normalizedTo && isFinite(normalizedTo) ? normalizedTo : undefined;\n if (normaliseTo) {\n extraProps.push(normaliseGroupTo(this, [ids[0], ids[1], ids[4]], normaliseTo, 'range'));\n extraProps.push(normaliseGroupTo(this, [ids[2], ids[3]], normaliseTo, 'range'));\n }\n return [4 /*yield*/, dataController.request(this.id, data, {\n props: __spreadArray$6(__spreadArray$6(__spreadArray$6(__spreadArray$6(__spreadArray$6(__spreadArray$6([\n keyProperty(this, xKey, isContinuousX, { id: 'xValue' }),\n valueProperty(this, yKey, isContinuousY, { id: \"yValue-raw\", invalidValue: null })\n ], __read$a(groupAccumulativeValueProperty(this, yKey, isContinuousY, 'window', 'current', {\n id: \"yValue-end\",\n invalidValue: null,\n groupId: ids[0],\n }))), __read$a(groupAccumulativeValueProperty(this, yKey, isContinuousY, 'window-trailing', 'current', {\n id: \"yValue-start\",\n invalidValue: null,\n groupId: ids[1],\n }))), __read$a(groupAccumulativeValueProperty(this, yKey, isContinuousY, 'window', 'last', {\n id: \"yValue-previous-end\",\n invalidValue: null,\n groupId: ids[2],\n }))), __read$a(groupAccumulativeValueProperty(this, yKey, isContinuousY, 'window-trailing', 'last', {\n id: \"yValue-previous-start\",\n invalidValue: null,\n groupId: ids[3],\n }))), __read$a(groupAccumulativeValueProperty(this, yKey, isContinuousY, 'normal', 'current', {\n id: \"yValue-cumulative\",\n invalidValue: null,\n groupId: ids[4],\n }))), __read$a(extraProps)),\n groupByKeys: true,\n dataVisible: visible,\n })];\n case 1:\n _e = _f.sent(), dataModel = _e.dataModel, processedData = _e.processedData;\n this.dataModel = dataModel;\n this.processedData = processedData;\n return [2 /*return*/];\n }\n });\n });\n };\n AreaSeries.prototype.getDomain = function (direction) {\n var _a = this, processedData = _a.processedData, dataModel = _a.dataModel, axes = _a.axes;\n if (!processedData || !dataModel)\n return [];\n var xAxis = axes[ChartAxisDirection.X];\n var yAxis = axes[ChartAxisDirection.Y];\n var keyDef = dataModel.resolveProcessedDataDefById(this, \"xValue\");\n var keys = dataModel.getDomain(this, \"xValue\", 'key', processedData);\n var yExtent = dataModel.getDomain(this, /yValue-(previous-)?end/, 'value', processedData);\n if (direction === ChartAxisDirection.X) {\n if ((keyDef === null || keyDef === void 0 ? void 0 : keyDef.def.type) === 'key' && keyDef.def.valueType === 'category') {\n return keys;\n }\n return this.fixNumericExtent(extent$4(keys), xAxis);\n }\n else if (yAxis instanceof LogAxis || yAxis instanceof TimeAxis) {\n return this.fixNumericExtent(yExtent, yAxis);\n }\n else {\n var fixedYExtent = [yExtent[0] > 0 ? 0 : yExtent[0], yExtent[1] < 0 ? 0 : yExtent[1]];\n return this.fixNumericExtent(fixedYExtent, yAxis);\n }\n };\n AreaSeries.prototype.createNodeData = function () {\n var _a;\n return __awaiter$6(this, void 0, void 0, function () {\n var _b, axes, data, _c, _d, groupedData, dataModel, callbackCache, xAxis, yAxis, _e, _f, yKey, _g, xKey, marker, label, fill, stroke, seriesId, xScale, yScale, continuousY, xOffset, yStartIndex, yEndIndex, yRawIndex, yPreviousStartIndex, yPreviousEndIndex, yCumulativeIndex, createPathCoordinates, createMarkerCoordinate, labelSelectionData, markerSelectionData, strokeSelectionData, fillSelectionData, context, fillPoints, fillPhantomPoints, strokePoints, yValues, datumIdx, lastXDatum, i;\n var _this = this;\n return __generator$6(this, function (_h) {\n _b = this, axes = _b.axes, data = _b.data, _c = _b.processedData, _d = _c === void 0 ? {} : _c, groupedData = _d.data, dataModel = _b.dataModel, callbackCache = _b.ctx.callbackCache;\n xAxis = axes[ChartAxisDirection.X];\n yAxis = axes[ChartAxisDirection.Y];\n if (!xAxis || !yAxis || !data || !dataModel) {\n return [2 /*return*/, []];\n }\n _e = this, _f = _e.yKey, yKey = _f === void 0 ? '' : _f, _g = _e.xKey, xKey = _g === void 0 ? '' : _g, marker = _e.marker, label = _e.label, fill = _e.fill, stroke = _e.stroke, seriesId = _e.id;\n xScale = xAxis.scale;\n yScale = yAxis.scale;\n continuousY = yScale instanceof ContinuousScale;\n xOffset = ((_a = xScale.bandwidth) !== null && _a !== void 0 ? _a : 0) / 2;\n yStartIndex = dataModel.resolveProcessedDataIndexById(this, \"yValue-start\").index;\n yEndIndex = dataModel.resolveProcessedDataIndexById(this, \"yValue-end\").index;\n yRawIndex = dataModel.resolveProcessedDataIndexById(this, \"yValue-raw\").index;\n yPreviousStartIndex = dataModel.resolveProcessedDataIndexById(this, \"yValue-previous-start\").index;\n yPreviousEndIndex = dataModel.resolveProcessedDataIndexById(this, \"yValue-previous-end\").index;\n yCumulativeIndex = dataModel.resolveProcessedDataIndexById(this, \"yValue-cumulative\").index;\n createPathCoordinates = function (xDatum, lastYEnd, yEnd) {\n var x = xScale.convert(xDatum) + xOffset;\n var prevYCoordinate = yScale.convert(lastYEnd, { strict: false });\n var currYCoordinate = yScale.convert(yEnd, { strict: false });\n return [\n { x: x, y: currYCoordinate, size: marker.size },\n { x: x, y: prevYCoordinate, size: marker.size },\n ];\n };\n createMarkerCoordinate = function (xDatum, yEnd, 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 var valid = (!normalized && !isNaN(rawYDatum)) || normalizedAndValid;\n if (valid) {\n currY = yEnd;\n }\n var x = xScale.convert(xDatum) + xOffset;\n var y = yScale.convert(currY, { strict: false });\n return { x: x, y: y, size: marker.size };\n };\n labelSelectionData = [];\n markerSelectionData = [];\n strokeSelectionData = { itemId: yKey, points: [], yValues: [] };\n fillSelectionData = { itemId: yKey, points: [] };\n context = {\n itemId: yKey,\n fillSelectionData: fillSelectionData,\n labelData: labelSelectionData,\n nodeData: markerSelectionData,\n strokeSelectionData: strokeSelectionData,\n };\n fillPoints = fillSelectionData.points;\n fillPhantomPoints = [];\n strokePoints = strokeSelectionData.points;\n yValues = strokeSelectionData.yValues;\n datumIdx = -1;\n groupedData === null || groupedData === void 0 ? void 0 : groupedData.forEach(function (datumGroup) {\n var _a = __read$a(datumGroup.keys, 1), xDatum = _a[0], datumArray = datumGroup.datum, valuesArray = datumGroup.values;\n valuesArray.forEach(function (values, valueIdx) {\n var _a;\n datumIdx++;\n var seriesDatum = datumArray[valueIdx];\n var yRawDatum = values[yRawIndex];\n var yStart = values[yStartIndex];\n var yEnd = values[yEndIndex];\n var yPreviousStart = values[yPreviousStartIndex];\n var yPreviousEnd = values[yPreviousEndIndex];\n var yCumulative = values[yCumulativeIndex];\n var validPoint = yRawDatum != null;\n // marker data\n var point = createMarkerCoordinate(xDatum, +yCumulative, yRawDatum);\n if (validPoint && marker) {\n markerSelectionData.push({\n index: datumIdx,\n series: _this,\n itemId: yKey,\n datum: seriesDatum,\n nodeMidPoint: { x: point.x, y: point.y },\n cumulativeValue: yEnd,\n yValue: yRawDatum,\n xValue: xDatum,\n yKey: yKey,\n xKey: xKey,\n point: point,\n fill: fill,\n stroke: stroke,\n });\n }\n // label data\n if (validPoint && label) {\n var labelText = void 0;\n if (label.formatter) {\n labelText = (_a = callbackCache.call(label.formatter, { value: yRawDatum, seriesId: seriesId })) !== null && _a !== void 0 ? _a : '';\n }\n else {\n labelText = isNumber$4(yRawDatum) ? Number(yRawDatum).toFixed(2) : String(yRawDatum);\n }\n labelSelectionData.push({\n index: datumIdx,\n itemId: yKey,\n point: point,\n label: labelText\n ? {\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 }\n : undefined,\n });\n }\n // fill data\n // Handle data in pairs of current and next x and y values\n var windowX = [lastXDatum, xDatum];\n var windowYStart = [yPreviousStart, yStart];\n var windowYEnd = [yPreviousEnd, yEnd];\n if (windowX.some(function (v) { return v == undefined; })) {\n lastXDatum = xDatum;\n return;\n }\n if (windowYStart.some(function (v) { return v == undefined; })) {\n windowYStart[0] = 0;\n windowYStart[1] = 0;\n }\n if (windowYEnd.some(function (v) { return v == undefined; })) {\n windowYEnd[0] = 0;\n windowYEnd[1] = 0;\n }\n var prevCoordinates = createPathCoordinates(lastXDatum, +windowYStart[0], +windowYEnd[0]);\n fillPoints.push(prevCoordinates[0]);\n fillPhantomPoints.push(prevCoordinates[1]);\n var nextCoordinates = createPathCoordinates(xDatum, +windowYStart[1], +windowYEnd[1]);\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 if (yPreviousEnd != null) {\n strokePoints.push(prevCoordinates[0]);\n yValues.push(yPreviousEnd);\n }\n if (yEnd != undefined) {\n strokePoints.push(nextCoordinates[0]);\n yValues.push(yEnd);\n }\n lastXDatum = xDatum;\n });\n });\n for (i = fillPhantomPoints.length - 1; i >= 0; i--) {\n fillPoints.push(fillPhantomPoints[i]);\n }\n return [2 /*return*/, [context]];\n });\n });\n };\n AreaSeries.prototype.isPathOrSelectionDirty = function () {\n return this.marker.isDirty();\n };\n AreaSeries.prototype.markerFactory = function () {\n var shape = this.marker.shape;\n var MarkerShape = getMarker$1(shape);\n return new MarkerShape();\n };\n AreaSeries.prototype.updateMarkerSelection = function (opts) {\n return __awaiter$6(this, void 0, void 0, function () {\n var nodeData, markerSelection, enabled, data;\n return __generator$6(this, function (_a) {\n nodeData = opts.nodeData, markerSelection = opts.markerSelection;\n enabled = this.marker.enabled;\n data = enabled && nodeData ? nodeData : [];\n if (this.marker.isDirty()) {\n markerSelection.clear();\n }\n return [2 /*return*/, markerSelection.update(data, function (marker) {\n marker.tag = AreaSeriesTag.Marker;\n })];\n });\n });\n };\n AreaSeries.prototype.updateMarkerNodes = function (opts) {\n var _a;\n return __awaiter$6(this, void 0, void 0, function () {\n var markerSelection, isDatumHighlighted, _b, seriesId, _c, xKey, marker, seriesFill, seriesStroke, seriesFillOpacity, _d, markerFillOpacity, strokeOpacity, _e, highlightedFill, _f, highlightFillOpacity, highlightedStroke, highlightedDatumStrokeWidth, visible, callbackCache, size, formatter, markerStrokeWidth, customMarker;\n return __generator$6(this, function (_g) {\n markerSelection = opts.markerSelection, isDatumHighlighted = opts.isHighlight;\n _b = this, seriesId = _b.id, _c = _b.xKey, xKey = _c === void 0 ? '' : _c, marker = _b.marker, seriesFill = _b.fill, seriesStroke = _b.stroke, seriesFillOpacity = _b.fillOpacity, _d = _b.marker.fillOpacity, markerFillOpacity = _d === void 0 ? seriesFillOpacity : _d, strokeOpacity = _b.strokeOpacity, _e = _b.highlightStyle.item, highlightedFill = _e.fill, _f = _e.fillOpacity, highlightFillOpacity = _f === void 0 ? markerFillOpacity : _f, highlightedStroke = _e.stroke, highlightedDatumStrokeWidth = _e.strokeWidth, visible = _b.visible, callbackCache = _b.ctx.callbackCache;\n size = marker.size, formatter = marker.formatter;\n markerStrokeWidth = (_a = marker.strokeWidth) !== null && _a !== void 0 ? _a : this.strokeWidth;\n customMarker = typeof marker.shape === 'function';\n markerSelection.each(function (node, datum) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n var fill = isDatumHighlighted && highlightedFill !== undefined ? highlightedFill : (_a = marker.fill) !== null && _a !== void 0 ? _a : seriesFill;\n var fillOpacity = isDatumHighlighted ? highlightFillOpacity : markerFillOpacity;\n var stroke = isDatumHighlighted && highlightedStroke !== undefined\n ? highlightedStroke\n : (_b = marker.stroke) !== null && _b !== void 0 ? _b : seriesStroke;\n var strokeWidth = isDatumHighlighted && highlightedDatumStrokeWidth !== undefined\n ? highlightedDatumStrokeWidth\n : markerStrokeWidth;\n var format = undefined;\n if (formatter) {\n format = callbackCache.call(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 seriesId: seriesId,\n });\n }\n node.fill = (_c = format === null || format === void 0 ? void 0 : format.fill) !== null && _c !== void 0 ? _c : fill;\n node.stroke = (_d = format === null || format === void 0 ? void 0 : format.stroke) !== null && _d !== void 0 ? _d : stroke;\n node.strokeWidth = (_e = format === null || format === void 0 ? void 0 : format.strokeWidth) !== null && _e !== void 0 ? _e : strokeWidth;\n node.fillOpacity = fillOpacity !== null && fillOpacity !== void 0 ? fillOpacity : 1;\n node.strokeOpacity = (_g = (_f = marker.strokeOpacity) !== null && _f !== void 0 ? _f : strokeOpacity) !== null && _g !== void 0 ? _g : 1;\n node.size = (_h = format === null || format === void 0 ? void 0 : format.size) !== null && _h !== void 0 ? _h : size;\n node.translationX = datum.point.x;\n node.translationY = datum.point.y;\n node.visible = node.size > 0 && visible && !isNaN(datum.point.x) && !isNaN(datum.point.y);\n if (!customMarker || node.dirtyPath) {\n return;\n }\n // Only for custom marker shapes\n node.path.clear({ trackChanges: true });\n node.updatePath();\n node.checkPathDirty();\n });\n if (!isDatumHighlighted) {\n this.marker.markClean();\n }\n return [2 /*return*/];\n });\n });\n };\n AreaSeries.prototype.updateLabelSelection = function (opts) {\n return __awaiter$6(this, void 0, void 0, function () {\n var labelData, labelSelection;\n return __generator$6(this, function (_a) {\n labelData = opts.labelData, labelSelection = opts.labelSelection;\n return [2 /*return*/, labelSelection.update(labelData, function (text) {\n text.tag = AreaSeriesTag.Label;\n })];\n });\n });\n };\n AreaSeries.prototype.updateLabelNodes = function (opts) {\n return __awaiter$6(this, void 0, void 0, function () {\n var labelSelection, _a, labelEnabled, fontStyle, fontWeight, fontSize, fontFamily, color;\n return __generator$6(this, function (_b) {\n labelSelection = opts.labelSelection;\n _a = this.label, labelEnabled = _a.enabled, fontStyle = _a.fontStyle, fontWeight = _a.fontWeight, fontSize = _a.fontSize, fontFamily = _a.fontFamily, color = _a.color;\n 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 }\n else {\n text.visible = false;\n }\n });\n return [2 /*return*/];\n });\n });\n };\n AreaSeries.prototype.getNodeClickEvent = function (event, datum) {\n var _a;\n return new CartesianSeriesNodeClickEvent((_a = this.xKey) !== null && _a !== void 0 ? _a : '', datum.yKey, event, datum, this);\n };\n AreaSeries.prototype.getNodeDoubleClickEvent = function (event, datum) {\n var _a;\n return new CartesianSeriesNodeDoubleClickEvent((_a = this.xKey) !== null && _a !== void 0 ? _a : '', datum.yKey, event, datum, this);\n };\n AreaSeries.prototype.getTooltipHtml = function (nodeDatum) {\n var _a, _b, _c;\n var _d = this, xKey = _d.xKey, seriesId = _d.id, axes = _d.axes, xName = _d.xName, yName = _d.yName, seriesFill = _d.fill, seriesStroke = _d.stroke, tooltip = _d.tooltip, marker = _d.marker, dataModel = _d.dataModel;\n var yKey = nodeDatum.yKey, xValue = nodeDatum.xValue, yValue = nodeDatum.yValue, datum = nodeDatum.datum;\n var xAxis = axes[ChartAxisDirection.X];\n var yAxis = axes[ChartAxisDirection.Y];\n if (!(xKey && yKey) || !(xAxis && yAxis && isNumber$4(yValue)) || !dataModel) {\n return '';\n }\n var yRawIndex = dataModel.resolveProcessedDataIndexById(this, \"yValue-raw\").index;\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 processedYValue = (_b = (_a = this.processedData) === null || _a === void 0 ? void 0 : _a.data[nodeDatum.index]) === null || _b === void 0 ? void 0 : _b.values[0][yRawIndex];\n var title = sanitizeHtml(yName);\n var content = sanitizeHtml(xString + ': ' + yString);\n var strokeWidth = markerStrokeWidth !== null && markerStrokeWidth !== void 0 ? markerStrokeWidth : this.strokeWidth;\n var fill = markerFill !== null && markerFill !== void 0 ? markerFill : seriesFill;\n var stroke = markerStroke !== null && markerStroke !== void 0 ? markerStroke : seriesStroke;\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 seriesId: seriesId,\n });\n }\n var color = (_c = format === null || format === void 0 ? void 0 : format.fill) !== null && _c !== void 0 ? _c : 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 title: title,\n seriesId: seriesId,\n };\n if (tooltipFormat) {\n return toTooltipHtml$1({\n content: interpolate(tooltipFormat, params),\n }, defaults);\n }\n if (tooltipRenderer) {\n return toTooltipHtml$1(tooltipRenderer(params), defaults);\n }\n }\n return toTooltipHtml$1(defaults);\n };\n AreaSeries.prototype.getLegendData = function () {\n var _a, _b, _c, _d;\n var _e = this, data = _e.data, id = _e.id, xKey = _e.xKey, yKey = _e.yKey, yName = _e.yName, marker = _e.marker, fill = _e.fill, stroke = _e.stroke, fillOpacity = _e.fillOpacity, strokeOpacity = _e.strokeOpacity, visible = _e.visible;\n if (!(data === null || data === void 0 ? void 0 : data.length) || !xKey || !yKey) {\n return [];\n }\n // Area stacks should be listed in the legend in reverse order, for symmetry with the\n // vertical stack display order.\n return [\n {\n legendType: 'category',\n id: id,\n itemId: yKey,\n seriesId: id,\n enabled: visible,\n label: {\n text: yName !== null && yName !== void 0 ? yName : yKey,\n },\n marker: {\n shape: marker.shape,\n fill: (_a = marker.fill) !== null && _a !== void 0 ? _a : fill,\n stroke: (_b = marker.stroke) !== null && _b !== void 0 ? _b : stroke,\n fillOpacity: (_c = marker.fillOpacity) !== null && _c !== void 0 ? _c : fillOpacity,\n strokeOpacity: (_d = marker.strokeOpacity) !== null && _d !== void 0 ? _d : strokeOpacity,\n },\n },\n ];\n };\n AreaSeries.prototype.animateEmptyUpdateReady = function (_a) {\n var _this = this;\n var markerSelections = _a.markerSelections, labelSelections = _a.labelSelections, contextData = _a.contextData, paths = _a.paths, seriesRect = _a.seriesRect;\n var _b = this, seriesStroke = _b.stroke, seriesFill = _b.fill, fillOpacity = _b.fillOpacity, lineDash = _b.lineDash, lineDashOffset = _b.lineDashOffset, strokeOpacity = _b.strokeOpacity, strokeWidth = _b.strokeWidth, shadow = _b.shadow;\n contextData.forEach(function (_a, seriesIdx) {\n var _b, _c, _d, _e, _f;\n var fillSelectionData = _a.fillSelectionData, strokeSelectionData = _a.strokeSelectionData, itemId = _a.itemId;\n var _g = __read$a(paths[seriesIdx], 2), fill = _g[0], stroke = _g[1];\n var duration = (_c = (_b = _this.ctx.animationManager) === null || _b === void 0 ? void 0 : _b.defaultOptions.duration) !== null && _c !== void 0 ? _c : 1000;\n var markerDuration = 200;\n var animationOptions = {\n from: 0,\n to: (_d = seriesRect === null || seriesRect === void 0 ? void 0 : seriesRect.width) !== null && _d !== void 0 ? _d : 0,\n duration: duration,\n };\n // Stroke\n {\n var points_1 = strokeSelectionData.points, yValues_1 = strokeSelectionData.yValues;\n stroke.tag = AreaSeriesTag.Stroke;\n stroke.fill = undefined;\n stroke.lineJoin = stroke.lineCap = 'round';\n stroke.pointerEvents = PointerEvents.None;\n stroke.stroke = seriesStroke;\n stroke.strokeWidth = _this.getStrokeWidth(_this.strokeWidth, { itemId: itemId });\n stroke.strokeOpacity = strokeOpacity;\n stroke.lineDash = lineDash;\n stroke.lineDashOffset = lineDashOffset;\n (_e = _this.ctx.animationManager) === null || _e === void 0 ? void 0 : _e.animate(_this.id + \"_empty-update-ready_stroke_\" + seriesIdx, __assign$b(__assign$b({}, animationOptions), { onUpdate: function (xValue) {\n stroke.path.clear({ trackChanges: true });\n var moveTo = true;\n points_1.forEach(function (point, index) {\n // Draw/move the full segment if past the end of this segment\n if (yValues_1[index] === undefined || isNaN(point.x) || isNaN(point.y)) {\n moveTo = true;\n }\n else if (point.x <= xValue) {\n if (moveTo) {\n stroke.path.moveTo(point.x, point.y);\n moveTo = false;\n }\n else {\n stroke.path.lineTo(point.x, point.y);\n }\n }\n else if (index > 0 &&\n yValues_1[index] !== undefined &&\n yValues_1[index - 1] !== undefined &&\n points_1[index - 1].x <= xValue) {\n // Draw/move partial line if in between the start and end of this segment\n var start = points_1[index - 1];\n var end = point;\n var x = xValue;\n var y = start.y + ((x - start.x) * (end.y - start.y)) / (end.x - start.x);\n stroke.path.lineTo(x, y);\n }\n });\n stroke.checkPathDirty();\n } }));\n }\n // Fill\n {\n var allPoints = fillSelectionData.points;\n var points_2 = allPoints.slice(0, allPoints.length / 2);\n var bottomPoints_1 = allPoints.slice(allPoints.length / 2);\n fill.tag = AreaSeriesTag.Fill;\n fill.stroke = undefined;\n fill.lineJoin = 'round';\n fill.pointerEvents = PointerEvents.None;\n fill.fill = seriesFill;\n fill.fillOpacity = fillOpacity;\n fill.strokeOpacity = strokeOpacity;\n fill.strokeWidth = strokeWidth;\n fill.lineDash = lineDash;\n fill.lineDashOffset = lineDashOffset;\n fill.fillShadow = shadow;\n (_f = _this.ctx.animationManager) === null || _f === void 0 ? void 0 : _f.animate(_this.id + \"_empty-update-ready_fill_\" + seriesIdx, __assign$b(__assign$b({}, animationOptions), { onUpdate: function (xValue) {\n fill.path.clear({ trackChanges: true });\n var x = 0;\n var y = 0;\n points_2.forEach(function (point, index) {\n if (point.x <= xValue) {\n // Draw/move the full segment if past the end of this segment\n x = point.x;\n y = point.y;\n fill.path.lineTo(point.x, point.y);\n }\n else if (index > 0 && points_2[index - 1].x < xValue) {\n // Draw/move partial line if in between the start and end of this segment\n var start = points_2[index - 1];\n var end = point;\n x = xValue;\n y = start.y + ((x - start.x) * (end.y - start.y)) / (end.x - start.x);\n fill.path.lineTo(x, y);\n }\n });\n bottomPoints_1.forEach(function (point, index) {\n var reverseIndex = bottomPoints_1.length - index - 1;\n if (point.x <= xValue) {\n fill.path.lineTo(point.x, point.y);\n }\n else if (reverseIndex > 0 && points_2[reverseIndex - 1].x < xValue) {\n var start = point;\n var end = bottomPoints_1[index + 1];\n var bottomY = start.y + ((x - start.x) * (end.y - start.y)) / (end.x - start.x);\n fill.path.lineTo(x, bottomY);\n }\n });\n if (bottomPoints_1.length > 0) {\n fill.path.lineTo(bottomPoints_1[bottomPoints_1.length - 1].x, bottomPoints_1[bottomPoints_1.length - 1].y);\n }\n fill.path.closePath();\n fill.checkPathDirty();\n } }));\n }\n markerSelections[seriesIdx].each(function (marker, datum) {\n var _a, _b, _c, _d;\n var delay = (seriesRect === null || seriesRect === void 0 ? void 0 : seriesRect.width) ? (datum.point.x / seriesRect.width) * duration : 0;\n var format = _this.animateFormatter(datum);\n var size = (_b = (_a = datum.point) === null || _a === void 0 ? void 0 : _a.size) !== null && _b !== void 0 ? _b : 0;\n (_c = _this.ctx.animationManager) === null || _c === void 0 ? void 0 : _c.animate(_this.id + \"_empty-update-ready_\" + marker.id, __assign$b(__assign$b({}, animationOptions), { to: (_d = format === null || format === void 0 ? void 0 : format.size) !== null && _d !== void 0 ? _d : size, delay: delay, duration: markerDuration, onUpdate: function (size) {\n marker.size = size;\n } }));\n });\n labelSelections[seriesIdx].each(function (label, datum) {\n var _a;\n var delay = (seriesRect === null || seriesRect === void 0 ? void 0 : seriesRect.width) ? (datum.point.x / seriesRect.width) * duration : 0;\n (_a = _this.ctx.animationManager) === null || _a === void 0 ? void 0 : _a.animate(_this.id + \"_empty-update-ready_\" + label.id, {\n from: 0,\n to: 1,\n delay: delay,\n duration: markerDuration,\n onUpdate: function (opacity) {\n label.opacity = opacity;\n },\n });\n });\n });\n };\n AreaSeries.prototype.animateReadyUpdate = function (_a) {\n var _this = this;\n var contextData = _a.contextData, paths = _a.paths;\n var _b = this, seriesStroke = _b.stroke, seriesFill = _b.fill, fillOpacity = _b.fillOpacity, lineDash = _b.lineDash, lineDashOffset = _b.lineDashOffset, strokeOpacity = _b.strokeOpacity, strokeWidth = _b.strokeWidth, shadow = _b.shadow;\n contextData.forEach(function (_a, seriesIdx) {\n var strokeSelectionData = _a.strokeSelectionData, fillSelectionData = _a.fillSelectionData, itemId = _a.itemId;\n var _b = __read$a(paths[seriesIdx], 2), fill = _b[0], stroke = _b[1];\n // Stroke\n stroke.stroke = seriesStroke;\n stroke.strokeWidth = _this.getStrokeWidth(_this.strokeWidth, { itemId: itemId });\n stroke.strokeOpacity = strokeOpacity;\n stroke.lineDash = lineDash;\n stroke.lineDashOffset = lineDashOffset;\n stroke.path.clear({ trackChanges: true });\n var moveTo = true;\n strokeSelectionData.points.forEach(function (point, index) {\n if (strokeSelectionData.yValues[index] === undefined || isNaN(point.x) || isNaN(point.y)) {\n moveTo = true;\n }\n else if (moveTo) {\n stroke.path.moveTo(point.x, point.y);\n moveTo = false;\n }\n else {\n stroke.path.lineTo(point.x, point.y);\n }\n });\n stroke.checkPathDirty();\n // Fill\n fill.fill = seriesFill;\n fill.fillOpacity = fillOpacity;\n fill.strokeOpacity = strokeOpacity;\n fill.strokeWidth = strokeWidth;\n fill.lineDash = lineDash;\n fill.lineDashOffset = lineDashOffset;\n fill.fillShadow = shadow;\n fill.path.clear({ trackChanges: true });\n fillSelectionData.points.forEach(function (point) {\n fill.path.lineTo(point.x, point.y);\n });\n fill.path.closePath();\n fill.checkPathDirty();\n });\n };\n AreaSeries.prototype.animateFormatter = function (datum) {\n var _a, _b, _c;\n var _d = this, marker = _d.marker, seriesFill = _d.fill, seriesStroke = _d.stroke, _e = _d.xKey, xKey = _e === void 0 ? '' : _e, seriesId = _d.id, callbackCache = _d.ctx.callbackCache;\n var size = marker.size, formatter = marker.formatter;\n var fill = (_a = marker.fill) !== null && _a !== void 0 ? _a : seriesFill;\n var stroke = (_b = marker.stroke) !== null && _b !== void 0 ? _b : seriesStroke;\n var strokeWidth = (_c = marker.strokeWidth) !== null && _c !== void 0 ? _c : this.strokeWidth;\n var format = undefined;\n if (formatter) {\n format = callbackCache.call(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: false,\n seriesId: seriesId,\n });\n }\n return format;\n };\n AreaSeries.prototype.isLabelEnabled = function () {\n return this.label.enabled;\n };\n AreaSeries.className = 'AreaSeries';\n AreaSeries.type = 'area';\n __decorate$1q([\n Validate(COLOR_STRING)\n ], AreaSeries.prototype, \"fill\", void 0);\n __decorate$1q([\n Validate(COLOR_STRING)\n ], AreaSeries.prototype, \"stroke\", void 0);\n __decorate$1q([\n Validate(NUMBER(0, 1))\n ], AreaSeries.prototype, \"fillOpacity\", void 0);\n __decorate$1q([\n Validate(NUMBER(0, 1))\n ], AreaSeries.prototype, \"strokeOpacity\", void 0);\n __decorate$1q([\n Validate(OPT_LINE_DASH)\n ], AreaSeries.prototype, \"lineDash\", void 0);\n __decorate$1q([\n Validate(NUMBER(0))\n ], AreaSeries.prototype, \"lineDashOffset\", void 0);\n __decorate$1q([\n Validate(OPT_STRING)\n ], AreaSeries.prototype, \"xKey\", void 0);\n __decorate$1q([\n Validate(OPT_STRING)\n ], AreaSeries.prototype, \"xName\", void 0);\n __decorate$1q([\n Validate(OPT_STRING)\n ], AreaSeries.prototype, \"yKey\", void 0);\n __decorate$1q([\n Validate(OPT_STRING)\n ], AreaSeries.prototype, \"yName\", void 0);\n __decorate$1q([\n Validate(OPT_NUMBER(0))\n ], AreaSeries.prototype, \"normalizedTo\", void 0);\n __decorate$1q([\n Validate(NUMBER(0))\n ], AreaSeries.prototype, \"strokeWidth\", void 0);\n return AreaSeries;\n}(CartesianSeries));\n\nvar __extends$m = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1p = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 Rect = /** @class */ (function (_super) {\n __extends$m(Rect, _super);\n function Rect() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.borderPath = new Path2D();\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.lastUpdatePathStrokeWidth = Shape.defaultStyles.strokeWidth;\n _this.effectiveStrokeWidth = Shape.defaultStyles.strokeWidth;\n /**\n * When the rectangle's width or height is less than a pixel\n * and crisp mode is on, the rectangle will still fit into the pixel,\n * but will be less opaque to make an effect of holding less space.\n */\n _this.microPixelEffectOpacity = 1;\n return _this;\n }\n Rect.prototype.isDirtyPath = function () {\n var _a;\n if (this.lastUpdatePathStrokeWidth !== this.strokeWidth) {\n return true;\n }\n if (this.path.isDirty() || this.borderPath.isDirty() || ((_a = this.clipPath) === null || _a === void 0 ? void 0 : _a.isDirty())) {\n return true;\n }\n return false;\n };\n Rect.prototype.updatePath = function () {\n var _a, _b, _c;\n var _d = this, path = _d.path, borderPath = _d.borderPath, crisp = _d.crisp;\n var _e = this, x = _e.x, y = _e.y, w = _e.width, h = _e.height, strokeWidth = _e.strokeWidth;\n var pixelRatio = (_b = (_a = this.layerManager) === null || _a === void 0 ? void 0 : _a.canvas.pixelRatio) !== null && _b !== void 0 ? _b : 1;\n var pixelSize = 1 / pixelRatio;\n var microPixelEffectOpacity = 1;\n path.clear({ trackChanges: true });\n borderPath.clear({ trackChanges: true });\n if (crisp) {\n if (w <= pixelSize) {\n microPixelEffectOpacity *= w / pixelSize;\n }\n if (h <= pixelSize) {\n microPixelEffectOpacity *= h / pixelSize;\n }\n w = this.align(x, w);\n h = this.align(y, h);\n x = this.align(x);\n y = this.align(y);\n }\n if (strokeWidth) {\n if (w < pixelSize) {\n // Too narrow, draw a vertical stroke\n var lx = x + pixelSize / 2;\n borderPath.moveTo(lx, y);\n borderPath.lineTo(lx, y + h);\n strokeWidth = pixelSize;\n this.borderClipPath = undefined;\n }\n else if (h < pixelSize) {\n // Too narrow, draw a horizontal stroke\n var ly = y + pixelSize / 2;\n borderPath.moveTo(x, ly);\n borderPath.lineTo(x + w, ly);\n strokeWidth = pixelSize;\n this.borderClipPath = undefined;\n }\n else if (strokeWidth < w && strokeWidth < h) {\n var halfStrokeWidth = strokeWidth / 2;\n x += halfStrokeWidth;\n y += halfStrokeWidth;\n w -= strokeWidth;\n h -= strokeWidth;\n // Clipping not needed in this case; fill to center of stroke.\n this.borderClipPath = undefined;\n path.rect(x, y, w, h);\n borderPath.rect(x, y, w, h);\n }\n else {\n // Skip the fill and just render the stroke.\n this.borderClipPath = (_c = this.borderClipPath) !== null && _c !== void 0 ? _c : new Path2D();\n this.borderClipPath.clear({ trackChanges: true });\n this.borderClipPath.rect(x, y, w, h);\n borderPath.rect(x, y, w, h);\n }\n }\n else {\n // No borderPath needed, and thus no clipPath needed either. Fill to full extent of\n // Rect.\n this.borderClipPath = undefined;\n path.rect(x, y, w, h);\n }\n this.effectiveStrokeWidth = strokeWidth;\n this.lastUpdatePathStrokeWidth = strokeWidth;\n this.microPixelEffectOpacity = microPixelEffectOpacity;\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.applyFillAlpha = function (ctx) {\n var _a = this, fillOpacity = _a.fillOpacity, microPixelEffectOpacity = _a.microPixelEffectOpacity, opacity = _a.opacity;\n var globalAlpha = ctx.globalAlpha;\n ctx.globalAlpha = globalAlpha * opacity * fillOpacity * microPixelEffectOpacity;\n };\n Rect.prototype.renderStroke = function (ctx) {\n var _a = this, stroke = _a.stroke, effectiveStrokeWidth = _a.effectiveStrokeWidth, borderPath = _a.borderPath, borderClipPath = _a.borderClipPath, opacity = _a.opacity, microPixelEffectOpacity = _a.microPixelEffectOpacity;\n var borderActive = !!stroke && !!effectiveStrokeWidth;\n if (borderActive) {\n var _b = this, strokeOpacity = _b.strokeOpacity, lineDash = _b.lineDash, lineDashOffset = _b.lineDashOffset, lineCap = _b.lineCap, lineJoin = _b.lineJoin;\n if (borderClipPath) {\n // strokeWidth is larger than width or height, so use clipping to render correctly.\n // This is the simplest way to achieve the correct rendering due to nuances with ~0\n // width/height lines in Canvas operations.\n borderClipPath.draw(ctx);\n ctx.clip();\n }\n borderPath.draw(ctx);\n var globalAlpha = ctx.globalAlpha;\n ctx.strokeStyle = stroke;\n ctx.globalAlpha = globalAlpha * opacity * strokeOpacity * microPixelEffectOpacity;\n ctx.lineWidth = effectiveStrokeWidth;\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 ctx.stroke();\n ctx.globalAlpha = globalAlpha;\n }\n };\n Rect.className = 'Rect';\n __decorate$1p([\n ScenePathChangeDetection()\n ], Rect.prototype, \"x\", void 0);\n __decorate$1p([\n ScenePathChangeDetection()\n ], Rect.prototype, \"y\", void 0);\n __decorate$1p([\n ScenePathChangeDetection()\n ], Rect.prototype, \"width\", void 0);\n __decorate$1p([\n ScenePathChangeDetection()\n ], Rect.prototype, \"height\", void 0);\n __decorate$1p([\n ScenePathChangeDetection()\n ], Rect.prototype, \"radius\", void 0);\n __decorate$1p([\n ScenePathChangeDetection()\n ], Rect.prototype, \"crisp\", void 0);\n return Rect;\n}(Path));\n\nvar __assign$a = (undefined && undefined.__assign) || function () {\n __assign$a = 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$a.apply(this, arguments);\n};\nvar __rest$2 = (undefined && undefined.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __read$9 = (undefined && undefined.__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};\nfunction createLabelData(_a) {\n var value = _a.value, rect = _a.rect, placement = _a.placement, seriesId = _a.seriesId, _b = _a.padding, padding = _b === void 0 ? 0 : _b, formatter = _a.formatter, barAlongX = _a.barAlongX, callbackCache = _a.ctx.callbackCache;\n var labelText;\n if (formatter) {\n labelText = callbackCache.call(formatter, {\n value: isNumber$4(value) ? value : undefined,\n seriesId: seriesId,\n });\n }\n if (labelText === undefined) {\n labelText = isNumber$4(value) ? value.toFixed(2) : '';\n }\n var labelX = rect.x + rect.width / 2;\n var labelY = rect.y + rect.height / 2;\n var labelTextAlign = 'center';\n var labelTextBaseline = 'middle';\n var isPositive = value >= 0;\n switch (placement) {\n case 'start': {\n if (barAlongX) {\n labelX = isPositive ? rect.x - padding : rect.x + rect.width + padding;\n labelTextAlign = isPositive ? 'start' : 'end';\n }\n else {\n labelY = isPositive ? rect.y + rect.height + padding : rect.y - padding;\n labelTextBaseline = isPositive ? 'top' : 'bottom';\n }\n break;\n }\n case 'outside':\n case 'end': {\n if (barAlongX) {\n labelX = isPositive ? rect.x + rect.width + padding : rect.x - padding;\n labelTextAlign = isPositive ? 'start' : 'end';\n }\n else {\n labelY = isPositive ? rect.y - padding : rect.y + rect.height + padding;\n labelTextBaseline = isPositive ? 'bottom' : 'top';\n }\n break;\n }\n case 'inside':\n default: {\n labelTextBaseline = 'middle';\n break;\n }\n }\n return {\n text: labelText,\n textAlign: labelTextAlign,\n textBaseline: labelTextBaseline,\n x: labelX,\n y: labelY,\n };\n}\nfunction updateRect(_a) {\n var rect = _a.rect, config = _a.config;\n var _b = config.crisp, crisp = _b === void 0 ? true : _b, fill = config.fill, stroke = config.stroke, strokeWidth = config.strokeWidth, fillOpacity = config.fillOpacity, strokeOpacity = config.strokeOpacity, lineDash = config.lineDash, lineDashOffset = config.lineDashOffset, fillShadow = config.fillShadow, _c = config.visible, visible = _c === void 0 ? true : _c;\n rect.crisp = crisp;\n rect.fill = fill;\n rect.stroke = stroke;\n rect.strokeWidth = strokeWidth;\n rect.fillOpacity = fillOpacity;\n rect.strokeOpacity = strokeOpacity;\n rect.lineDash = lineDash;\n rect.lineDashOffset = lineDashOffset;\n rect.fillShadow = fillShadow;\n rect.visible = visible;\n}\nfunction getRectConfig(_a) {\n var _b, _c, _d, _e, _f, _g, _h;\n var datum = _a.datum, isHighlighted = _a.isHighlighted, style = _a.style, highlightStyle = _a.highlightStyle, formatter = _a.formatter, seriesId = _a.seriesId, stackGroup = _a.stackGroup, callbackCache = _a.ctx.callbackCache, opts = __rest$2(_a, [\"datum\", \"isHighlighted\", \"style\", \"highlightStyle\", \"formatter\", \"seriesId\", \"stackGroup\", \"ctx\"]);\n var itemFill = isHighlighted ? (_b = highlightStyle.fill) !== null && _b !== void 0 ? _b : style.fill : style.fill;\n var itemStroke = isHighlighted ? (_c = highlightStyle.stroke) !== null && _c !== void 0 ? _c : style.stroke : style.stroke;\n var itemStrokeWidth = isHighlighted ? (_d = highlightStyle.strokeWidth) !== null && _d !== void 0 ? _d : style.strokeWidth : style.strokeWidth;\n var fillOpacity = isHighlighted ? (_e = highlightStyle.fillOpacity) !== null && _e !== void 0 ? _e : style.fillOpacity : style.fillOpacity;\n var strokeOpacity = style.strokeOpacity, fillShadow = style.fillShadow, lineDash = style.lineDash, lineDashOffset = style.lineDashOffset;\n var format = undefined;\n if (formatter) {\n format = callbackCache.call(formatter, __assign$a({ datum: datum.datum, xKey: datum.xKey, yKey: datum.yKey, fill: itemFill, stroke: itemStroke, strokeWidth: itemStrokeWidth, highlighted: isHighlighted, seriesId: seriesId, stackGroup: stackGroup }, opts));\n }\n return {\n fill: (_f = format === null || format === void 0 ? void 0 : format.fill) !== null && _f !== void 0 ? _f : itemFill,\n stroke: (_g = format === null || format === void 0 ? void 0 : format.stroke) !== null && _g !== void 0 ? _g : itemStroke,\n strokeWidth: (_h = format === null || format === void 0 ? void 0 : format.strokeWidth) !== null && _h !== void 0 ? _h : itemStrokeWidth,\n fillOpacity: fillOpacity,\n strokeOpacity: strokeOpacity,\n lineDash: lineDash,\n lineDashOffset: lineDashOffset,\n fillShadow: fillShadow,\n };\n}\nfunction checkCrisp(visibleRange) {\n if (visibleRange === void 0) { visibleRange = []; }\n var _a = __read$9(visibleRange, 2), visibleMin = _a[0], visibleMax = _a[1];\n var isZoomed = visibleMin !== 0 || visibleMax !== 1;\n var crisp = !isZoomed;\n return crisp;\n}\nfunction updateLabel(_a) {\n var labelNode = _a.labelNode, labelDatum = _a.labelDatum, config = _a.config, visible = _a.visible;\n if (labelDatum && config && config.enabled) {\n var x = labelDatum.x, y = labelDatum.y, text = labelDatum.text, textAlign = labelDatum.textAlign, textBaseline = labelDatum.textBaseline;\n var fontStyle = config.fontStyle, fontWeight = config.fontWeight, fontSize = config.fontSize, fontFamily = config.fontFamily, color = config.color;\n labelNode.fontStyle = fontStyle;\n labelNode.fontWeight = fontWeight;\n labelNode.fontSize = fontSize;\n labelNode.fontFamily = fontFamily;\n labelNode.textAlign = textAlign;\n labelNode.textBaseline = textBaseline;\n labelNode.text = text;\n labelNode.x = x;\n labelNode.y = y;\n labelNode.fill = color;\n labelNode.visible = visible;\n }\n else {\n labelNode.visible = false;\n }\n}\n\nvar __extends$l = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1o = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 __awaiter$5 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$5 = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read$8 = (undefined && undefined.__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 __spreadArray$5 = (undefined && undefined.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar BAR_LABEL_PLACEMENTS = ['inside', 'outside'];\nvar OPT_BAR_LABEL_PLACEMENT = function (v, ctx) {\n return OPTIONAL(v, ctx, function (v) { return BAR_LABEL_PLACEMENTS.includes(v); });\n};\nvar BarSeriesNodeTag;\n(function (BarSeriesNodeTag) {\n BarSeriesNodeTag[BarSeriesNodeTag[\"Bar\"] = 0] = \"Bar\";\n BarSeriesNodeTag[BarSeriesNodeTag[\"Label\"] = 1] = \"Label\";\n})(BarSeriesNodeTag || (BarSeriesNodeTag = {}));\nvar BarSeriesLabel = /** @class */ (function (_super) {\n __extends$l(BarSeriesLabel, _super);\n function BarSeriesLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.formatter = undefined;\n _this.placement = 'inside';\n return _this;\n }\n __decorate$1o([\n Validate(OPT_FUNCTION)\n ], BarSeriesLabel.prototype, \"formatter\", void 0);\n __decorate$1o([\n Validate(OPT_BAR_LABEL_PLACEMENT)\n ], BarSeriesLabel.prototype, \"placement\", void 0);\n return BarSeriesLabel;\n}(Label$1));\nvar BarSeriesTooltip = /** @class */ (function (_super) {\n __extends$l(BarSeriesTooltip, _super);\n function BarSeriesTooltip() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.renderer = undefined;\n return _this;\n }\n __decorate$1o([\n Validate(OPT_FUNCTION)\n ], BarSeriesTooltip.prototype, \"renderer\", void 0);\n return BarSeriesTooltip;\n}(SeriesTooltip));\nvar BarSeries = /** @class */ (function (_super) {\n __extends$l(BarSeries, _super);\n function BarSeries(moduleCtx) {\n var _this = _super.call(this, {\n moduleCtx: moduleCtx,\n pickModes: [SeriesNodePickMode.EXACT_SHAPE_MATCH],\n pathsPerSeries: 0,\n hasHighlightedLabels: true,\n }) || this;\n _this.label = new BarSeriesLabel();\n _this.tooltip = new BarSeriesTooltip();\n _this.fill = '#c16068';\n _this.stroke = '#874349';\n _this.fillOpacity = 1;\n _this.strokeOpacity = 1;\n _this.lineDash = [0];\n _this.lineDashOffset = 0;\n _this.formatter = undefined;\n _this.xKey = undefined;\n _this.xName = undefined;\n _this.yKey = undefined;\n _this.yName = undefined;\n /**\n * Used to get the position of bars within each group.\n */\n _this.groupScale = new BandScale$5();\n _this.stackGroup = undefined;\n _this.strokeWidth = 1;\n _this.shadow = undefined;\n _this.smallestDataInterval = undefined;\n _this.datumSelectionGarbageCollection = false;\n _this.label.enabled = false;\n return _this;\n }\n BarSeries.prototype.resolveKeyDirection = function (direction) {\n if (this.getBarDirection() === ChartAxisDirection.X) {\n if (direction === ChartAxisDirection.X) {\n return ChartAxisDirection.Y;\n }\n return ChartAxisDirection.X;\n }\n return direction;\n };\n BarSeries.prototype.processData = function (dataController) {\n var _a, _b, _c, _d, _e;\n return __awaiter$5(this, void 0, void 0, function () {\n var _f, xKey, yKey, normalizedTo, _g, _h, _j, groupIndex, _k, data, normalizedToAbs, isContinuousX, isContinuousY, stackGroupName, stackGroupTrailingName, normaliseTo, extraProps, _l, dataModel, processedData;\n return __generator$5(this, function (_m) {\n switch (_m.label) {\n case 0:\n _f = this, xKey = _f.xKey, yKey = _f.yKey, normalizedTo = _f.normalizedTo, _g = _f.seriesGrouping, _h = _g === void 0 ? {} : _g, _j = _h.groupIndex, groupIndex = _j === void 0 ? this.id : _j, _k = _f.data, data = _k === void 0 ? [] : _k;\n normalizedToAbs = Math.abs(normalizedTo !== null && normalizedTo !== void 0 ? normalizedTo : NaN);\n isContinuousX = ((_a = this.getCategoryAxis()) === null || _a === void 0 ? void 0 : _a.scale) instanceof ContinuousScale;\n isContinuousY = ((_b = this.getValueAxis()) === null || _b === void 0 ? void 0 : _b.scale) instanceof ContinuousScale;\n stackGroupName = \"bar-stack-\" + groupIndex + \"-yValues\";\n stackGroupTrailingName = stackGroupName + \"-trailing\";\n normaliseTo = normalizedToAbs && isFinite(normalizedToAbs) ? normalizedToAbs : undefined;\n extraProps = [];\n if (normaliseTo) {\n extraProps.push(normaliseGroupTo(this, [stackGroupName, stackGroupTrailingName], normaliseTo, 'range'));\n }\n if (!((_c = this.ctx.animationManager) === null || _c === void 0 ? void 0 : _c.skipAnimations) && this.processedData) {\n extraProps.push(diff(this.processedData));\n }\n return [4 /*yield*/, dataController.request(this.id, data, {\n props: __spreadArray$5(__spreadArray$5(__spreadArray$5(__spreadArray$5([\n keyProperty(this, xKey, isContinuousX, { id: 'xValue' }),\n valueProperty(this, yKey, isContinuousY, { id: \"yValue-raw\", invalidValue: null })\n ], __read$8(groupAccumulativeValueProperty(this, yKey, isContinuousY, 'normal', 'current', {\n id: \"yValue-end\",\n invalidValue: null,\n groupId: stackGroupName,\n }))), __read$8(groupAccumulativeValueProperty(this, yKey, isContinuousY, 'trailing', 'current', {\n id: \"yValue-start\",\n invalidValue: null,\n groupId: stackGroupTrailingName,\n }))), __read$8((isContinuousX ? [SMALLEST_KEY_INTERVAL] : []))), __read$8(extraProps)),\n groupByKeys: true,\n dataVisible: this.visible,\n })];\n case 1:\n _l = _m.sent(), dataModel = _l.dataModel, processedData = _l.processedData;\n this.dataModel = dataModel;\n this.processedData = processedData;\n this.smallestDataInterval = {\n x: (_e = (_d = processedData.reduced) === null || _d === void 0 ? void 0 : _d[SMALLEST_KEY_INTERVAL.property]) !== null && _e !== void 0 ? _e : Infinity,\n y: Infinity,\n };\n this.animationState.transition('updateData');\n return [2 /*return*/];\n }\n });\n });\n };\n BarSeries.prototype.getDomain = function (direction) {\n var _a;\n var _b = this, processedData = _b.processedData, dataModel = _b.dataModel;\n if (!processedData || !dataModel)\n return [];\n var _c = processedData, _d = _c.reduced, _e = _d === void 0 ? {} : _d, _f = SMALLEST_KEY_INTERVAL.property, smallestX = _e[_f];\n var categoryAxis = this.getCategoryAxis();\n var valueAxis = this.getValueAxis();\n var keyDef = dataModel.resolveProcessedDataDefById(this, \"xValue\");\n var keys = dataModel.getDomain(this, \"xValue\", 'key', processedData);\n var yExtent = dataModel.getDomain(this, \"yValue-end\", 'value', processedData);\n if (direction === this.getCategoryDirection()) {\n if ((keyDef === null || keyDef === void 0 ? void 0 : keyDef.def.type) === 'key' && (keyDef === null || keyDef === void 0 ? void 0 : keyDef.def.valueType) === 'category') {\n return keys;\n }\n var scalePadding = isFinite(smallestX) ? smallestX : 0;\n var keysExtent = (_a = extent$4(keys)) !== null && _a !== void 0 ? _a : [NaN, NaN];\n if (direction === ChartAxisDirection.Y) {\n return this.fixNumericExtent([keysExtent[0] + -scalePadding, keysExtent[1]], categoryAxis);\n }\n return this.fixNumericExtent([keysExtent[0], keysExtent[1] + scalePadding], categoryAxis);\n }\n else if (this.getValueAxis() instanceof LogAxis) {\n return this.fixNumericExtent(yExtent, valueAxis);\n }\n else {\n var fixedYExtent = [yExtent[0] > 0 ? 0 : yExtent[0], yExtent[1] < 0 ? 0 : yExtent[1]];\n return this.fixNumericExtent(fixedYExtent, valueAxis);\n }\n };\n BarSeries.prototype.getNodeClickEvent = function (event, datum) {\n var _a;\n return new CartesianSeriesNodeClickEvent((_a = this.xKey) !== null && _a !== void 0 ? _a : '', datum.yKey, event, datum, this);\n };\n BarSeries.prototype.getNodeDoubleClickEvent = function (event, datum) {\n var _a;\n return new CartesianSeriesNodeDoubleClickEvent((_a = this.xKey) !== null && _a !== void 0 ? _a : '', datum.yKey, event, datum, this);\n };\n BarSeries.prototype.getCategoryAxis = function () {\n var direction = this.getCategoryDirection();\n return this.axes[direction];\n };\n BarSeries.prototype.getValueAxis = function () {\n var direction = this.getBarDirection();\n return this.axes[direction];\n };\n BarSeries.prototype.calculateStep = function (range) {\n var _a;\n var smallestInterval = this.smallestDataInterval;\n var xAxis = this.getCategoryAxis();\n if (!xAxis) {\n return;\n }\n // calculate step\n var domainLength = xAxis.dataDomain[1] - xAxis.dataDomain[0];\n var intervals = domainLength / ((_a = smallestInterval === null || smallestInterval === void 0 ? void 0 : smallestInterval.x) !== null && _a !== void 0 ? _a : 1) + 1;\n // The number of intervals/bands is used to determine the width of individual bands by dividing the available range.\n // Allow a maximum number of bands to ensure the step does not fall below 1 pixel.\n // This means there could be some overlap of the bands in the chart.\n var maxBands = Math.floor(range); // A minimum of 1px per bar/column means the maximum number of bands will equal the available range\n var bands = Math.min(intervals, maxBands);\n var step = range / Math.max(1, bands);\n return step;\n };\n BarSeries.prototype.createNodeData = function () {\n return __awaiter$5(this, void 0, void 0, function () {\n var _a, visible, dataModel, xAxis, yAxis, xScale, yScale, _b, groupScale, _c, yKey, _d, xKey, fill, stroke, strokeWidth, label, seriesId, processedData, ctx, seriesStateManager, xBandWidth, availableRange, step, domain, _e, groupIndex, visibleGroupCount, groupIdx, barWidth, xIndex, yRawIndex, yStartIndex, yEndIndex, context;\n var _this = this;\n return __generator$5(this, function (_f) {\n _a = this, visible = _a.visible, dataModel = _a.dataModel;\n xAxis = this.getCategoryAxis();\n yAxis = this.getValueAxis();\n if (!(dataModel && visible && xAxis && yAxis)) {\n return [2 /*return*/, []];\n }\n xScale = xAxis.scale;\n yScale = yAxis.scale;\n _b = this, groupScale = _b.groupScale, _c = _b.yKey, yKey = _c === void 0 ? '' : _c, _d = _b.xKey, xKey = _d === void 0 ? '' : _d, fill = _b.fill, stroke = _b.stroke, strokeWidth = _b.strokeWidth, label = _b.label, seriesId = _b.id, processedData = _b.processedData, ctx = _b.ctx, seriesStateManager = _b.ctx.seriesStateManager;\n xBandWidth = xScale.bandwidth;\n if (xScale instanceof ContinuousScale) {\n availableRange = Math.max(xAxis.range[0], xAxis.range[1]);\n step = this.calculateStep(availableRange);\n xBandWidth = step;\n }\n domain = [];\n _e = seriesStateManager.getVisiblePeerGroupIndex(this), groupIndex = _e.index, visibleGroupCount = _e.visibleGroupCount;\n for (groupIdx = 0; groupIdx < visibleGroupCount; groupIdx++) {\n domain.push(String(groupIdx));\n }\n groupScale.domain = domain;\n groupScale.range = [0, xBandWidth !== null && xBandWidth !== void 0 ? xBandWidth : 0];\n if (xAxis instanceof CategoryAxis) {\n groupScale.padding = xAxis.groupPaddingInner;\n }\n else if (xAxis instanceof GroupedCategoryAxis) {\n groupScale.padding = 0.1;\n }\n else {\n // Number or Time axis\n groupScale.padding = 0;\n }\n // To get exactly `0` padding we need to turn off rounding\n if (groupScale.padding === 0) {\n groupScale.round = false;\n }\n else {\n groupScale.round = true;\n }\n barWidth = groupScale.bandwidth >= 1\n ? // Pixel-rounded value for low-volume bar charts.\n groupScale.bandwidth\n : // Handle high-volume bar charts gracefully.\n groupScale.rawBandwidth;\n xIndex = dataModel.resolveProcessedDataIndexById(this, \"xValue\", 'key').index;\n yRawIndex = dataModel.resolveProcessedDataIndexById(this, \"yValue-raw\").index;\n yStartIndex = dataModel.resolveProcessedDataIndexById(this, \"yValue-start\").index;\n yEndIndex = dataModel.resolveProcessedDataIndexById(this, \"yValue-end\").index;\n context = {\n itemId: yKey,\n nodeData: [],\n labelData: [],\n };\n processedData === null || processedData === void 0 ? void 0 : processedData.data.forEach(function (_a, dataIndex) {\n var keys = _a.keys, seriesDatum = _a.datum, values = _a.values;\n var xValue = keys[xIndex];\n var x = xScale.convert(xValue);\n var currY = +values[0][yEndIndex];\n var prevY = +values[0][yStartIndex];\n var yRawValue = values[0][yRawIndex];\n var barX = x + groupScale.convert(String(groupIndex));\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 return;\n }\n if (isNaN(currY)) {\n return;\n }\n var y = yScale.convert(currY, { strict: false });\n var bottomY = yScale.convert(prevY, { strict: false });\n var barAlongX = _this.getBarDirection() === ChartAxisDirection.X;\n var rect = {\n x: barAlongX ? Math.min(y, bottomY) : barX,\n y: barAlongX ? barX : Math.min(y, bottomY),\n width: barAlongX ? Math.abs(bottomY - y) : barWidth,\n height: barAlongX ? barWidth : Math.abs(bottomY - y),\n };\n var nodeMidPoint = {\n x: rect.x + rect.width / 2,\n y: rect.y + rect.height / 2,\n };\n var labelFontStyle = label.fontStyle, labelFontWeight = label.fontWeight, labelFontSize = label.fontSize, labelFontFamily = label.fontFamily, labelColor = label.color, formatter = label.formatter, placement = label.placement;\n var _b = createLabelData({ value: yRawValue, rect: rect, formatter: formatter, placement: placement, seriesId: seriesId, barAlongX: barAlongX, ctx: ctx }), labelText = _b.text, labelTextAlign = _b.textAlign, labelTextBaseline = _b.textBaseline, labelX = _b.x, labelY = _b.y;\n var nodeData = {\n index: dataIndex,\n series: _this,\n itemId: yKey,\n datum: seriesDatum[0],\n cumulativeValue: prevY + currY,\n xValue: xValue,\n yValue: yRawValue,\n yKey: yKey,\n xKey: xKey,\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height,\n nodeMidPoint: nodeMidPoint,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n label: labelText\n ? {\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 }\n : undefined,\n };\n context.nodeData.push(nodeData);\n context.labelData.push(nodeData);\n });\n return [2 /*return*/, [context]];\n });\n });\n };\n BarSeries.prototype.nodeFactory = function () {\n return new Rect();\n };\n BarSeries.prototype.updateDatumSelection = function (opts) {\n return __awaiter$5(this, void 0, void 0, function () {\n var nodeData, datumSelection, getDatumId;\n return __generator$5(this, function (_a) {\n nodeData = opts.nodeData, datumSelection = opts.datumSelection;\n getDatumId = function (datum) { return datum.xValue; };\n return [2 /*return*/, datumSelection.update(nodeData, function (rect) { return (rect.tag = BarSeriesNodeTag.Bar); }, getDatumId)];\n });\n });\n };\n BarSeries.prototype.updateDatumNodes = function (opts) {\n return __awaiter$5(this, void 0, void 0, function () {\n var datumSelection, isHighlight, _a, fill, stroke, fillOpacity, strokeOpacity, lineDash, lineDashOffset, shadow, formatter, seriesId, itemHighlightStyle, ctx, stackGroup, xAxis, crisp, categoryAlongX;\n var _this = this;\n return __generator$5(this, function (_b) {\n datumSelection = opts.datumSelection, isHighlight = opts.isHighlight;\n _a = this, fill = _a.fill, stroke = _a.stroke, fillOpacity = _a.fillOpacity, strokeOpacity = _a.strokeOpacity, lineDash = _a.lineDash, lineDashOffset = _a.lineDashOffset, shadow = _a.shadow, formatter = _a.formatter, seriesId = _a.id, itemHighlightStyle = _a.highlightStyle.item, ctx = _a.ctx, stackGroup = _a.stackGroup;\n xAxis = this.axes[ChartAxisDirection.X];\n crisp = checkCrisp(xAxis === null || xAxis === void 0 ? void 0 : xAxis.visibleRange);\n categoryAlongX = this.getCategoryDirection() === ChartAxisDirection.X;\n datumSelection.each(function (rect, datum) {\n var style = {\n fill: fill,\n stroke: stroke,\n fillOpacity: fillOpacity,\n strokeOpacity: strokeOpacity,\n lineDash: lineDash,\n lineDashOffset: lineDashOffset,\n fillShadow: shadow,\n strokeWidth: _this.getStrokeWidth(_this.strokeWidth, datum),\n };\n var visible = categoryAlongX ? datum.width > 0 : datum.height > 0;\n var config = getRectConfig({\n datum: datum,\n isHighlighted: isHighlight,\n style: style,\n highlightStyle: itemHighlightStyle,\n formatter: formatter,\n seriesId: seriesId,\n stackGroup: stackGroup,\n ctx: ctx,\n });\n config.crisp = crisp;\n config.visible = visible;\n updateRect({ rect: rect, config: config });\n });\n return [2 /*return*/];\n });\n });\n };\n BarSeries.prototype.updateLabelSelection = function (opts) {\n return __awaiter$5(this, void 0, void 0, function () {\n var labelData, labelSelection, enabled, data;\n return __generator$5(this, function (_a) {\n labelData = opts.labelData, labelSelection = opts.labelSelection;\n enabled = this.label.enabled;\n data = enabled ? labelData : [];\n return [2 /*return*/, labelSelection.update(data, function (text) {\n text.tag = BarSeriesNodeTag.Label;\n text.pointerEvents = PointerEvents.None;\n })];\n });\n });\n };\n BarSeries.prototype.updateLabelNodes = function (opts) {\n return __awaiter$5(this, void 0, void 0, function () {\n var labelSelection;\n var _this = this;\n return __generator$5(this, function (_a) {\n labelSelection = opts.labelSelection;\n labelSelection.each(function (text, datum) {\n var labelDatum = datum.label;\n updateLabel({ labelNode: text, labelDatum: labelDatum, config: _this.label, visible: true });\n });\n return [2 /*return*/];\n });\n });\n };\n BarSeries.prototype.getTooltipHtml = function (nodeDatum) {\n var _a;\n var _b = this, xKey = _b.xKey, yKey = _b.yKey, processedData = _b.processedData, callbackCache = _b.ctx.callbackCache;\n var xAxis = this.getCategoryAxis();\n var yAxis = this.getValueAxis();\n var xValue = nodeDatum.xValue, yValue = nodeDatum.yValue, datum = nodeDatum.datum;\n if (!processedData || !xKey || !yKey || !xAxis || !yAxis) {\n return '';\n }\n var _c = this, xName = _c.xName, yName = _c.yName, fill = _c.fill, stroke = _c.stroke, tooltip = _c.tooltip, formatter = _c.formatter, seriesId = _c.id, stackGroup = _c.stackGroup;\n var tooltipRenderer = tooltip.renderer;\n var strokeWidth = this.getStrokeWidth(this.strokeWidth);\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 = callbackCache.call(formatter, {\n datum: datum,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n highlighted: false,\n xKey: xKey,\n yKey: yKey,\n seriesId: seriesId,\n stackGroup: stackGroup,\n });\n }\n var color = (_a = format === null || format === void 0 ? void 0 : format.fill) !== null && _a !== void 0 ? _a : fill;\n var defaults = {\n title: title,\n backgroundColor: color,\n content: content,\n };\n if (tooltipRenderer) {\n return toTooltipHtml$1(tooltipRenderer({\n datum: datum,\n xKey: xKey,\n xValue: xValue,\n xName: xName,\n yKey: yKey,\n yValue: yValue,\n yName: yName,\n color: color,\n title: title,\n seriesId: seriesId,\n stackGroup: stackGroup,\n }), defaults);\n }\n return toTooltipHtml$1(defaults);\n };\n BarSeries.prototype.getLegendData = function () {\n var _a;\n var _b = this, id = _b.id, data = _b.data, xKey = _b.xKey, yKey = _b.yKey, yName = _b.yName, legendItemName = _b.legendItemName, fill = _b.fill, stroke = _b.stroke, fillOpacity = _b.fillOpacity, strokeOpacity = _b.strokeOpacity, visible = _b.visible, showInLegend = _b.showInLegend;\n if (!showInLegend || !(data === null || data === void 0 ? void 0 : data.length) || !xKey || !yKey) {\n return [];\n }\n var legendData = [];\n legendData.push({\n legendType: 'category',\n id: id,\n itemId: yKey,\n seriesId: id,\n enabled: visible,\n label: {\n text: (_a = legendItemName !== null && legendItemName !== void 0 ? legendItemName : yName) !== null && _a !== void 0 ? _a : yKey,\n },\n legendItemName: legendItemName,\n marker: {\n fill: fill,\n stroke: stroke,\n fillOpacity: fillOpacity,\n strokeOpacity: strokeOpacity,\n },\n });\n return legendData;\n };\n BarSeries.prototype.animateEmptyUpdateReady = function (_a) {\n var _this = this;\n var _b, _c;\n var datumSelections = _a.datumSelections, labelSelections = _a.labelSelections;\n var duration = (_c = (_b = this.ctx.animationManager) === null || _b === void 0 ? void 0 : _b.defaultOptions.duration) !== null && _c !== void 0 ? _c : 1000;\n var labelDuration = 200;\n var _d = this.getDirectionStartingValues(datumSelections), startingX = _d.startingX, startingY = _d.startingY;\n datumSelections.forEach(function (datumSelection) {\n datumSelection.each(function (rect, datum) {\n var _a;\n var contextX = startingX;\n var contextWidth = 0;\n var contextY = datum.y;\n var contextHeight = datum.height;\n if (_this.getBarDirection() === ChartAxisDirection.Y) {\n contextX = datum.x;\n contextWidth = datum.width;\n contextY = startingY;\n contextHeight = 0;\n }\n var props = [\n { from: contextX, to: datum.x },\n { from: contextWidth, to: datum.width },\n { from: contextY, to: datum.y },\n { from: contextHeight, to: datum.height },\n ];\n (_a = _this.ctx.animationManager) === null || _a === void 0 ? void 0 : _a.animateMany(_this.id + \"_empty-update-ready_\" + rect.id, props, {\n duration: duration,\n ease: easeOut,\n onUpdate: function (_a) {\n var _b = __read$8(_a, 4), x = _b[0], width = _b[1], y = _b[2], height = _b[3];\n rect.x = x;\n rect.width = width;\n rect.y = y;\n rect.height = height;\n },\n });\n });\n });\n labelSelections.forEach(function (labelSelection) {\n labelSelection.each(function (label) {\n var _a;\n (_a = _this.ctx.animationManager) === null || _a === void 0 ? void 0 : _a.animate(_this.id + \"_empty-update-ready_\" + label.id, {\n from: 0,\n to: 1,\n delay: duration,\n duration: labelDuration,\n onUpdate: function (opacity) {\n label.opacity = opacity;\n },\n });\n });\n });\n };\n BarSeries.prototype.animateReadyHighlight = function (highlightSelection) {\n this.resetSelectionRects(highlightSelection);\n };\n BarSeries.prototype.animateReadyResize = function (_a) {\n var _this = this;\n var _b;\n var datumSelections = _a.datumSelections;\n (_b = this.ctx.animationManager) === null || _b === void 0 ? void 0 : _b.reset();\n datumSelections.forEach(function (datumSelection) {\n _this.resetSelectionRects(datumSelection);\n });\n };\n BarSeries.prototype.animateWaitingUpdateReady = function (_a) {\n var _this = this;\n var _b, _c, _d, _e, _f;\n var datumSelections = _a.datumSelections, labelSelections = _a.labelSelections;\n var processedData = this.processedData;\n var diff = (_b = processedData === null || processedData === void 0 ? void 0 : processedData.reduced) === null || _b === void 0 ? void 0 : _b.diff;\n if (!(diff === null || diff === void 0 ? void 0 : diff.changed)) {\n datumSelections.forEach(function (datumSelection) {\n _this.resetSelectionRects(datumSelection);\n });\n return;\n }\n var totalDuration = (_d = (_c = this.ctx.animationManager) === null || _c === void 0 ? void 0 : _c.defaultOptions.duration) !== null && _d !== void 0 ? _d : 1000;\n var labelDuration = 200;\n var sectionDuration = totalDuration;\n if (diff.added.length > 0 || diff.removed.length > 0) {\n sectionDuration = Math.floor(totalDuration / 2);\n }\n var _g = this.getDirectionStartingValues(datumSelections), startingX = _g.startingX, startingY = _g.startingY;\n var datumIdKey = (_f = (_e = this.processedData) === null || _e === void 0 ? void 0 : _e.defs.keys) === null || _f === void 0 ? void 0 : _f[0];\n var addedIds = {};\n diff.added.forEach(function (d) {\n addedIds[d[0]] = true;\n });\n var removedIds = {};\n diff.removed.forEach(function (d) {\n removedIds[d[0]] = true;\n });\n var rectThrottleGroup = this.id + \"_\" + Math.random();\n var labelThrottleGroup = this.id + \"_\" + Math.random();\n datumSelections.forEach(function (datumSelection) {\n datumSelection.each(function (rect, datum) {\n var _a;\n var props = [\n { from: rect.x, to: datum.x },\n { from: rect.width, to: datum.width },\n { from: rect.y, to: datum.y },\n { from: rect.height, to: datum.height },\n ];\n var delay = diff.removed.length > 0 ? sectionDuration : 0;\n var duration = sectionDuration;\n var cleanup = false;\n var datumId = datumIdKey ? datum.xValue : '';\n var contextX = startingX;\n var contextWidth = 0;\n var contextY = datum.y;\n var contextHeight = datum.height;\n if (_this.getBarDirection() === ChartAxisDirection.Y) {\n contextX = datum.x;\n contextWidth = datum.width;\n contextY = startingY;\n contextHeight = 0;\n }\n var isAdded = datumId !== undefined && addedIds[datumId] !== undefined;\n var isRemoved = datumId !== undefined && removedIds[datumId] !== undefined;\n if (isAdded) {\n props = [\n { from: contextX, to: datum.x },\n { from: contextWidth, to: datum.width },\n { from: contextY, to: datum.y },\n { from: contextHeight, to: datum.height },\n ];\n duration = sectionDuration;\n }\n else if (isRemoved) {\n props = [\n { from: datum.x, to: contextX },\n { from: datum.width, to: contextWidth },\n { from: datum.y, to: contextY },\n { from: datum.height, to: contextHeight },\n ];\n delay = 0;\n duration = sectionDuration;\n cleanup = true;\n }\n (_a = _this.ctx.animationManager) === null || _a === void 0 ? void 0 : _a.animateManyWithThrottle(_this.id + \"_waiting-update-ready_\" + rect.id, props, {\n delay: delay,\n duration: duration,\n ease: easeOut,\n throttleId: _this.id + \"_rects\",\n throttleGroup: rectThrottleGroup,\n onUpdate: function (_a) {\n var _b = __read$8(_a, 4), x = _b[0], width = _b[1], y = _b[2], height = _b[3];\n rect.x = x;\n rect.width = width;\n rect.y = y;\n rect.height = height;\n },\n onComplete: function () {\n if (cleanup)\n datumSelection.cleanup();\n },\n });\n });\n });\n labelSelections.forEach(function (labelSelection) {\n labelSelection.each(function (label) {\n var _a;\n label.opacity = 0;\n (_a = _this.ctx.animationManager) === null || _a === void 0 ? void 0 : _a.animateWithThrottle(_this.id + \"_waiting-update-ready_\" + label.id, {\n from: 0,\n to: 1,\n delay: totalDuration,\n duration: labelDuration,\n throttleId: _this.id + \"_labels\",\n throttleGroup: labelThrottleGroup,\n onUpdate: function (opacity) {\n label.opacity = opacity;\n },\n });\n });\n });\n };\n BarSeries.prototype.resetSelectionRects = function (selection) {\n selection.each(function (rect, datum) {\n rect.x = datum.x;\n rect.y = datum.y;\n rect.width = datum.width;\n rect.height = datum.height;\n });\n selection.cleanup();\n };\n BarSeries.prototype.getDirectionStartingValues = function (datumSelections) {\n var isColumnSeries = this.getBarDirection() === ChartAxisDirection.Y;\n var xAxis = this.axes[ChartAxisDirection.X];\n var yAxis = this.axes[ChartAxisDirection.Y];\n var isContinuousX = (xAxis === null || xAxis === void 0 ? void 0 : xAxis.scale) instanceof ContinuousScale;\n var isContinuousY = (yAxis === null || yAxis === void 0 ? void 0 : yAxis.scale) instanceof ContinuousScale;\n var startingX = Infinity;\n var startingY = 0;\n if (yAxis && isColumnSeries) {\n if (isContinuousY) {\n startingY = yAxis.scale.convert(0);\n }\n else {\n datumSelections.forEach(function (datumSelection) {\n return datumSelection.each(function (_, datum) {\n if (datum.yValue >= 0) {\n startingY = Math.max(startingY, datum.height + datum.y);\n }\n });\n });\n }\n }\n if (xAxis && !isColumnSeries) {\n if (isContinuousX) {\n startingX = xAxis.scale.convert(0);\n }\n else {\n datumSelections.forEach(function (datumSelection) {\n return datumSelection.each(function (_, datum) {\n if (datum.yValue >= 0) {\n startingX = Math.min(startingX, datum.x);\n }\n });\n });\n }\n }\n return { startingX: startingX, startingY: startingY };\n };\n BarSeries.prototype.isLabelEnabled = function () {\n return this.label.enabled;\n };\n BarSeries.prototype.getBandScalePadding = function () {\n return { inner: 0.2, outer: 0.3 };\n };\n BarSeries.prototype.getBarDirection = function () {\n return ChartAxisDirection.X;\n };\n BarSeries.prototype.getCategoryDirection = function () {\n return ChartAxisDirection.Y;\n };\n BarSeries.className = 'BarSeries';\n BarSeries.type = 'bar';\n __decorate$1o([\n Validate(OPT_COLOR_STRING)\n ], BarSeries.prototype, \"fill\", void 0);\n __decorate$1o([\n Validate(OPT_COLOR_STRING)\n ], BarSeries.prototype, \"stroke\", void 0);\n __decorate$1o([\n Validate(NUMBER(0, 1))\n ], BarSeries.prototype, \"fillOpacity\", void 0);\n __decorate$1o([\n Validate(NUMBER(0, 1))\n ], BarSeries.prototype, \"strokeOpacity\", void 0);\n __decorate$1o([\n Validate(OPT_LINE_DASH)\n ], BarSeries.prototype, \"lineDash\", void 0);\n __decorate$1o([\n Validate(NUMBER(0))\n ], BarSeries.prototype, \"lineDashOffset\", void 0);\n __decorate$1o([\n Validate(OPT_FUNCTION)\n ], BarSeries.prototype, \"formatter\", void 0);\n __decorate$1o([\n Validate(OPT_STRING)\n ], BarSeries.prototype, \"xKey\", void 0);\n __decorate$1o([\n Validate(OPT_STRING)\n ], BarSeries.prototype, \"xName\", void 0);\n __decorate$1o([\n Validate(OPT_STRING)\n ], BarSeries.prototype, \"yKey\", void 0);\n __decorate$1o([\n Validate(OPT_STRING)\n ], BarSeries.prototype, \"yName\", void 0);\n __decorate$1o([\n Validate(OPT_STRING)\n ], BarSeries.prototype, \"stackGroup\", void 0);\n __decorate$1o([\n Validate(OPT_NUMBER())\n ], BarSeries.prototype, \"normalizedTo\", void 0);\n __decorate$1o([\n Validate(NUMBER(0))\n ], BarSeries.prototype, \"strokeWidth\", void 0);\n return BarSeries;\n}(CartesianSeries));\nvar ColumnSeries = /** @class */ (function (_super) {\n __extends$l(ColumnSeries, _super);\n function ColumnSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColumnSeries.prototype.getBarDirection = function () {\n return ChartAxisDirection.Y;\n };\n ColumnSeries.prototype.getCategoryDirection = function () {\n return ChartAxisDirection.X;\n };\n ColumnSeries.type = 'column';\n ColumnSeries.className = 'ColumnSeries';\n return ColumnSeries;\n}(BarSeries));\n\nvar __extends$k = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1n = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 __awaiter$4 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$4 = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read$7 = (undefined && undefined.__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 __spreadArray$4 = (undefined && undefined.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar HISTOGRAM_AGGREGATIONS = ['count', 'sum', 'mean'];\nvar HISTOGRAM_AGGREGATION = predicateWithMessage(function (v) { return HISTOGRAM_AGGREGATIONS.includes(v); }, \"expecting a histogram aggregation keyword such as 'count', 'sum' or 'mean\");\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$k(HistogramSeriesLabel, _super);\n function HistogramSeriesLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.formatter = undefined;\n return _this;\n }\n __decorate$1n([\n Validate(OPT_FUNCTION)\n ], HistogramSeriesLabel.prototype, \"formatter\", void 0);\n return HistogramSeriesLabel;\n}(Label$1));\nvar defaultBinCount = 10;\nvar HistogramSeriesTooltip = /** @class */ (function (_super) {\n __extends$k(HistogramSeriesTooltip, _super);\n function HistogramSeriesTooltip() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.renderer = undefined;\n return _this;\n }\n __decorate$1n([\n Validate(OPT_FUNCTION)\n ], HistogramSeriesTooltip.prototype, \"renderer\", void 0);\n return HistogramSeriesTooltip;\n}(SeriesTooltip));\nvar HistogramSeries = /** @class */ (function (_super) {\n __extends$k(HistogramSeries, _super);\n function HistogramSeries(moduleCtx) {\n var _this = _super.call(this, { moduleCtx: moduleCtx, pickModes: [SeriesNodePickMode.EXACT_SHAPE_MATCH] }) || this;\n _this.label = new HistogramSeriesLabel();\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.xKey = undefined;\n _this.areaPlot = false;\n _this.bins = undefined;\n _this.aggregation = 'count';\n _this.binCount = undefined;\n _this.xName = undefined;\n _this.yKey = undefined;\n _this.yName = undefined;\n _this.strokeWidth = 1;\n _this.shadow = undefined;\n _this.calculatedBins = [];\n _this.datumSelectionGarbageCollection = false;\n _this.label.enabled = false;\n return _this;\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 (xDomain) {\n if (this.binCount === undefined) {\n var binStarts = ticks(xDomain[0], xDomain[1], defaultBinCount);\n var binSize_1 = tickStep(xDomain[0], xDomain[1], defaultBinCount);\n var firstBinEnd = binStarts[0];\n var expandStartToBin = function (n) { return [n, n + binSize_1]; };\n return __spreadArray$4([[firstBinEnd - binSize_1, firstBinEnd]], __read$7(binStarts.map(expandStartToBin)));\n }\n else {\n return this.calculateNiceBins(xDomain, this.binCount);\n }\n };\n HistogramSeries.prototype.calculateNiceBins = function (domain, binCount) {\n var startGuess = Math.floor(domain[0]);\n var stop = domain[1];\n var segments = binCount || 1;\n var _a = this.calculateNiceStart(startGuess, stop, segments), start = _a.start, binSize = _a.binSize;\n return this.getBins(start, stop, binSize, segments);\n };\n HistogramSeries.prototype.getBins = function (start, stop, step, count) {\n var bins = [];\n for (var i = 0; i < count; i++) {\n var a = Math.round((start + i * step) * 10) / 10;\n var b = Math.round((start + (i + 1) * step) * 10) / 10;\n if (i === count - 1) {\n b = Math.max(b, stop);\n }\n bins[i] = [a, b];\n }\n return bins;\n };\n HistogramSeries.prototype.calculateNiceStart = function (a, b, segments) {\n var binSize = Math.abs(b - a) / segments;\n var order = Math.floor(Math.log10(binSize));\n var magnitude = Math.pow(10, order);\n var start = Math.floor(a / magnitude) * magnitude;\n return {\n start: start,\n binSize: binSize,\n };\n };\n HistogramSeries.prototype.processData = function (dataController) {\n var _a;\n return __awaiter$4(this, void 0, void 0, function () {\n var _b, xKey, yKey, data, areaPlot, aggregation, props, aggProp, aggProp, groupByFn, _c, dataModel, processedData;\n var _this = this;\n return __generator$4(this, function (_d) {\n switch (_d.label) {\n case 0:\n _b = this, xKey = _b.xKey, yKey = _b.yKey, data = _b.data, areaPlot = _b.areaPlot, aggregation = _b.aggregation;\n props = [keyProperty(this, xKey, true), SORT_DOMAIN_GROUPS];\n if (yKey) {\n aggProp = groupCount(this, 'groupCount');\n if (aggregation === 'count') ;\n else if (aggregation === 'sum') {\n aggProp = groupSum(this, 'groupAgg');\n }\n else if (aggregation === 'mean') {\n aggProp = groupAverage(this, 'groupAgg');\n }\n if (areaPlot) {\n aggProp = area(this, 'groupAgg', aggProp);\n }\n props.push(valueProperty(this, yKey, true, { invalidValue: undefined }), aggProp);\n }\n else {\n aggProp = groupCount(this, 'groupAgg');\n if (areaPlot) {\n aggProp = area(this, 'groupAgg', aggProp);\n }\n props.push(aggProp);\n }\n groupByFn = function (dataSet) {\n var _a;\n var xExtent = fixNumericExtent(dataSet.domain.keys[0]);\n if (xExtent.length === 0) {\n // No buckets can be calculated.\n dataSet.domain.groups = [];\n return function () { return []; };\n }\n var bins = (_a = _this.bins) !== null && _a !== void 0 ? _a : _this.deriveBins(xExtent);\n var binCount = bins.length;\n _this.calculatedBins = __spreadArray$4([], __read$7(bins));\n return function (item) {\n var xValue = item.keys[0];\n for (var i = 0; i < binCount; i++) {\n var nextBin = bins[i];\n if (xValue >= nextBin[0] && xValue < nextBin[1]) {\n return nextBin;\n }\n if (i === binCount - 1 && xValue <= nextBin[1]) {\n // Handle edge case of a value being at the maximum extent, and the\n // final bin aligning with it.\n return nextBin;\n }\n }\n return [];\n };\n };\n if (!((_a = this.ctx.animationManager) === null || _a === void 0 ? void 0 : _a.skipAnimations) && this.processedData) {\n props.push(diff(this.processedData, false));\n }\n return [4 /*yield*/, dataController.request(this.id, data !== null && data !== void 0 ? data : [], {\n props: props,\n dataVisible: this.visible,\n groupByFn: groupByFn,\n })];\n case 1:\n _c = _d.sent(), dataModel = _c.dataModel, processedData = _c.processedData;\n this.dataModel = dataModel;\n this.processedData = processedData;\n this.animationState.transition('updateData');\n return [2 /*return*/];\n }\n });\n });\n };\n HistogramSeries.prototype.getDomain = function (direction) {\n var _a, _b, _c, _d;\n var _e = this, processedData = _e.processedData, dataModel = _e.dataModel;\n if (!processedData || !dataModel)\n return [];\n var yDomain = dataModel.getDomain(this, \"groupAgg\", 'aggregate', processedData);\n var xDomainMin = (_a = this.calculatedBins) === null || _a === void 0 ? void 0 : _a[0][0];\n var xDomainMax = (_b = this.calculatedBins) === null || _b === void 0 ? void 0 : _b[((_d = (_c = this.calculatedBins) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0) - 1][1];\n if (direction === ChartAxisDirection.X) {\n return fixNumericExtent([xDomainMin, xDomainMax]);\n }\n return fixNumericExtent(yDomain);\n };\n HistogramSeries.prototype.getNodeClickEvent = function (event, datum) {\n var _a, _b;\n return new CartesianSeriesNodeClickEvent((_a = this.xKey) !== null && _a !== void 0 ? _a : '', (_b = this.yKey) !== null && _b !== void 0 ? _b : '', event, datum, this);\n };\n HistogramSeries.prototype.getNodeDoubleClickEvent = function (event, datum) {\n var _a, _b;\n return new CartesianSeriesNodeDoubleClickEvent((_a = this.xKey) !== null && _a !== void 0 ? _a : '', (_b = this.yKey) !== null && _b !== void 0 ? _b : '', event, datum, this);\n };\n HistogramSeries.prototype.createNodeData = function () {\n var _a;\n return __awaiter$4(this, void 0, void 0, function () {\n var _b, axes, processedData, callbackCache, xAxis, yAxis, xScale, yScale, _c, fill, stroke, strokeWidth, seriesId, _d, yKey, _e, xKey, nodeData, defaultLabelFormatter, _f, _g, labelFormatter, labelFontStyle, labelFontWeight, labelFontSize, labelFontFamily, labelColor;\n var _this = this;\n return __generator$4(this, function (_h) {\n _b = this, axes = _b.axes, processedData = _b.processedData, callbackCache = _b.ctx.callbackCache;\n xAxis = axes[ChartAxisDirection.X];\n yAxis = axes[ChartAxisDirection.Y];\n if (!this.visible || !xAxis || !yAxis || !processedData || processedData.type !== 'grouped') {\n return [2 /*return*/, []];\n }\n xScale = xAxis.scale;\n yScale = yAxis.scale;\n _c = this, fill = _c.fill, stroke = _c.stroke, strokeWidth = _c.strokeWidth, seriesId = _c.id, _d = _c.yKey, yKey = _d === void 0 ? '' : _d, _e = _c.xKey, xKey = _e === void 0 ? '' : _e;\n nodeData = [];\n defaultLabelFormatter = function (params) { return String(params.value); };\n _f = this.label, _g = _f.formatter, labelFormatter = _g === void 0 ? defaultLabelFormatter : _g, labelFontStyle = _f.fontStyle, labelFontWeight = _f.fontWeight, labelFontSize = _f.fontSize, labelFontFamily = _f.fontFamily, labelColor = _f.color;\n processedData.data.forEach(function (group) {\n var _a;\n var _b = group.aggValues, _c = _b === void 0 ? [[0, 0]] : _b, _d = __read$7(_c, 1), _e = __read$7(_d[0], 2), negativeAgg = _e[0], positiveAgg = _e[1], datum = group.datum, frequency = group.datum.length, domain = group.keys, _f = __read$7(group.keys, 2), xDomainMin = _f[0], xDomainMax = _f[1];\n var xMinPx = xScale.convert(xDomainMin);\n var xMaxPx = xScale.convert(xDomainMax);\n var total = negativeAgg + positiveAgg;\n var yZeroPx = yScale.convert(0);\n var yMaxPx = yScale.convert(total);\n var w = xMaxPx - xMinPx;\n var h = Math.abs(yMaxPx - yZeroPx);\n var selectionDatumLabel = total !== 0\n ? {\n text: (_a = callbackCache.call(labelFormatter, { value: total, seriesId: seriesId })) !== null && _a !== void 0 ? _a : String(total),\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 }\n : undefined;\n var nodeMidPoint = {\n x: xMinPx + w / 2,\n y: yMaxPx + h / 2,\n };\n nodeData.push({\n series: _this,\n datum: datum,\n // since each selection is an aggregation of multiple data.\n aggregatedValue: total,\n frequency: frequency,\n domain: domain,\n yKey: yKey,\n xKey: xKey,\n x: xMinPx,\n y: yMaxPx,\n xValue: xMinPx,\n yValue: yMaxPx,\n width: w,\n height: h,\n nodeMidPoint: nodeMidPoint,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n label: selectionDatumLabel,\n });\n });\n return [2 /*return*/, [{ itemId: (_a = this.yKey) !== null && _a !== void 0 ? _a : this.id, nodeData: nodeData, labelData: nodeData }]];\n });\n });\n };\n HistogramSeries.prototype.nodeFactory = function () {\n return new Rect();\n };\n HistogramSeries.prototype.updateDatumSelection = function (opts) {\n return __awaiter$4(this, void 0, void 0, function () {\n var nodeData, datumSelection;\n return __generator$4(this, function (_a) {\n nodeData = opts.nodeData, datumSelection = opts.datumSelection;\n return [2 /*return*/, datumSelection.update(nodeData, function (rect) {\n rect.tag = HistogramSeriesNodeTag.Bin;\n rect.crisp = true;\n }, function (datum) { return datum.domain.join('_'); })];\n });\n });\n };\n HistogramSeries.prototype.updateDatumNodes = function (opts) {\n return __awaiter$4(this, void 0, void 0, function () {\n var datumSelection, isDatumHighlighted, _a, seriesFillOpacity, strokeOpacity, shadow, _b, highlightedFill, _c, highlightFillOpacity, highlightedStroke, highlightedDatumStrokeWidth;\n var _this = this;\n return __generator$4(this, function (_d) {\n datumSelection = opts.datumSelection, isDatumHighlighted = opts.isHighlight;\n _a = this, seriesFillOpacity = _a.fillOpacity, strokeOpacity = _a.strokeOpacity, shadow = _a.shadow, _b = _a.highlightStyle.item, highlightedFill = _b.fill, _c = _b.fillOpacity, highlightFillOpacity = _c === void 0 ? seriesFillOpacity : _c, highlightedStroke = _b.stroke, highlightedDatumStrokeWidth = _b.strokeWidth;\n datumSelection.each(function (rect, datum, index) {\n var _a, _b;\n var strokeWidth = isDatumHighlighted && highlightedDatumStrokeWidth !== undefined\n ? highlightedDatumStrokeWidth\n : datum.strokeWidth;\n var fillOpacity = isDatumHighlighted ? highlightFillOpacity : seriesFillOpacity;\n rect.fill = (_a = (isDatumHighlighted ? highlightedFill : undefined)) !== null && _a !== void 0 ? _a : datum.fill;\n rect.stroke = (_b = (isDatumHighlighted ? highlightedStroke : undefined)) !== null && _b !== void 0 ? _b : 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 });\n return [2 /*return*/];\n });\n });\n };\n HistogramSeries.prototype.updateLabelSelection = function (opts) {\n return __awaiter$4(this, void 0, void 0, function () {\n var labelData, labelSelection;\n return __generator$4(this, function (_a) {\n labelData = opts.labelData, labelSelection = opts.labelSelection;\n return [2 /*return*/, labelSelection.update(labelData, function (text) {\n text.tag = HistogramSeriesNodeTag.Label;\n text.pointerEvents = PointerEvents.None;\n text.textAlign = 'center';\n text.textBaseline = 'middle';\n })];\n });\n });\n };\n HistogramSeries.prototype.updateLabelNodes = function (opts) {\n return __awaiter$4(this, void 0, void 0, function () {\n var labelSelection, labelEnabled;\n return __generator$4(this, function (_a) {\n labelSelection = opts.labelSelection;\n labelEnabled = this.label.enabled;\n labelSelection.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 return [2 /*return*/];\n });\n });\n };\n HistogramSeries.prototype.getTooltipHtml = function (nodeDatum) {\n var _a = this, xKey = _a.xKey, _b = _a.yKey, yKey = _b === void 0 ? '' : _b, axes = _a.axes;\n var xAxis = axes[ChartAxisDirection.X];\n var yAxis = axes[ChartAxisDirection.Y];\n if (!xKey || !xAxis || !yAxis) {\n return '';\n }\n var _c = this, xName = _c.xName, yName = _c.yName, color = _c.fill, tooltip = _c.tooltip, aggregation = _c.aggregation, seriesId = _c.id;\n var tooltipRenderer = tooltip.renderer;\n var aggregatedValue = nodeDatum.aggregatedValue, frequency = nodeDatum.frequency, domain = nodeDatum.domain, _d = __read$7(nodeDatum.domain, 2), rangeMin = _d[0], rangeMax = _d[1];\n var title = sanitizeHtml(xName !== null && xName !== void 0 ? xName : xKey) + \": \" + xAxis.formatDatum(rangeMin) + \" - \" + xAxis.formatDatum(rangeMax);\n var content = yKey\n ? \"\" + sanitizeHtml(yName !== null && yName !== void 0 ? 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$1(tooltipRenderer({\n datum: {\n data: nodeDatum.datum,\n aggregatedValue: nodeDatum.aggregatedValue,\n domain: nodeDatum.domain,\n frequency: nodeDatum.frequency,\n },\n xKey: xKey,\n xValue: domain,\n xName: xName,\n yKey: yKey,\n yValue: aggregatedValue,\n yName: yName,\n color: color,\n title: title,\n seriesId: seriesId,\n }), defaults);\n }\n return toTooltipHtml$1(defaults);\n };\n HistogramSeries.prototype.getLegendData = function () {\n var _a;\n var _b = this, id = _b.id, data = _b.data, xKey = _b.xKey, yName = _b.yName, visible = _b.visible, fill = _b.fill, stroke = _b.stroke, fillOpacity = _b.fillOpacity, strokeOpacity = _b.strokeOpacity;\n if (!data || data.length === 0) {\n return [];\n }\n var legendData = [\n {\n legendType: 'category',\n id: id,\n itemId: xKey,\n seriesId: id,\n enabled: visible,\n label: {\n text: (_a = yName !== null && yName !== void 0 ? yName : xKey) !== null && _a !== void 0 ? _a : 'Frequency',\n },\n marker: {\n fill: fill !== null && fill !== void 0 ? fill : 'rgba(0, 0, 0, 0)',\n stroke: stroke !== null && stroke !== void 0 ? stroke : 'rgba(0, 0, 0, 0)',\n fillOpacity: fillOpacity,\n strokeOpacity: strokeOpacity,\n },\n },\n ];\n return legendData;\n };\n HistogramSeries.prototype.animateEmptyUpdateReady = function (_a) {\n var _this = this;\n var _b, _c;\n var datumSelections = _a.datumSelections, labelSelections = _a.labelSelections;\n var duration = (_c = (_b = this.ctx.animationManager) === null || _b === void 0 ? void 0 : _b.defaultOptions.duration) !== null && _c !== void 0 ? _c : 1000;\n var labelDuration = 200;\n var startingY = 0;\n datumSelections.forEach(function (datumSelection) {\n return datumSelection.each(function (_, datum) {\n startingY = Math.max(startingY, datum.height + datum.y);\n });\n });\n datumSelections.forEach(function (datumSelection) {\n datumSelection.each(function (rect, datum) {\n var _a;\n (_a = _this.ctx.animationManager) === null || _a === void 0 ? void 0 : _a.animateMany(_this.id + \"_empty-update-ready_\" + rect.id, [\n { from: startingY, to: datum.y },\n { from: 0, to: datum.height },\n ], {\n duration: duration,\n ease: easeOut,\n onUpdate: function (_a) {\n var _b = __read$7(_a, 2), y = _b[0], height = _b[1];\n rect.y = y;\n rect.height = height;\n rect.x = datum.x;\n rect.width = datum.width;\n },\n });\n });\n });\n labelSelections.forEach(function (labelSelection) {\n labelSelection.each(function (label) {\n var _a;\n (_a = _this.ctx.animationManager) === null || _a === void 0 ? void 0 : _a.animate(_this.id + \"_empty-update-ready_\" + label.id, {\n from: 0,\n to: 1,\n delay: duration,\n duration: labelDuration,\n onUpdate: function (opacity) {\n label.opacity = opacity;\n },\n });\n });\n });\n };\n HistogramSeries.prototype.animateReadyUpdate = function (_a) {\n var _this = this;\n var datumSelections = _a.datumSelections;\n datumSelections.forEach(function (datumSelection) {\n _this.resetSelectionRects(datumSelection);\n });\n };\n HistogramSeries.prototype.animateReadyHighlight = function (highlightSelection) {\n this.resetSelectionRects(highlightSelection);\n };\n HistogramSeries.prototype.animateReadyResize = function (_a) {\n var _this = this;\n var _b;\n var datumSelections = _a.datumSelections;\n (_b = this.ctx.animationManager) === null || _b === void 0 ? void 0 : _b.reset();\n datumSelections.forEach(function (datumSelection) {\n _this.resetSelectionRects(datumSelection);\n });\n };\n HistogramSeries.prototype.animateWaitingUpdateReady = function (_a) {\n var _this = this;\n var _b, _c, _d;\n var datumSelections = _a.datumSelections, labelSelections = _a.labelSelections;\n var processedData = this.processedData;\n var diff = (_b = processedData === null || processedData === void 0 ? void 0 : processedData.reduced) === null || _b === void 0 ? void 0 : _b.diff;\n if (!(diff === null || diff === void 0 ? void 0 : diff.changed)) {\n datumSelections.forEach(function (datumSelection) {\n _this.resetSelectionRects(datumSelection);\n });\n return;\n }\n var totalDuration = (_d = (_c = this.ctx.animationManager) === null || _c === void 0 ? void 0 : _c.defaultOptions.duration) !== null && _d !== void 0 ? _d : 1000;\n var labelDuration = 200;\n var sectionDuration = totalDuration;\n if (diff.added.length > 0 && diff.removed.length > 0) {\n sectionDuration = Math.floor(totalDuration / 3);\n }\n else if (diff.added.length > 0 || diff.removed.length > 0) {\n sectionDuration = Math.floor(totalDuration / 2);\n }\n var startingY = 0;\n datumSelections.forEach(function (datumSelection) {\n return datumSelection.each(function (_, datum) {\n startingY = Math.max(startingY, datum.height + datum.y);\n });\n });\n var addedIds = {};\n diff.added.forEach(function (d) {\n addedIds[d.join('_')] = true;\n });\n var removedIds = {};\n diff.removed.forEach(function (d) {\n removedIds[d.join('_')] = true;\n });\n datumSelections.forEach(function (datumSelection) {\n datumSelection.each(function (rect, datum) {\n var _a;\n var props = [\n { from: rect.x, to: datum.x },\n { from: rect.width, to: datum.width },\n { from: rect.y, to: datum.y },\n { from: rect.height, to: datum.height },\n ];\n var delay = diff.removed.length > 0 ? sectionDuration : 0;\n var cleanup = false;\n var datumId = datum.domain.join('_');\n var contextY = startingY;\n var contextHeight = 0;\n if (datumId !== undefined && addedIds[datumId] !== undefined) {\n props = [\n { from: datum.x, to: datum.x },\n { from: datum.width, to: datum.width },\n { from: contextY, to: datum.y },\n { from: contextHeight, to: datum.height },\n ];\n delay += sectionDuration;\n }\n else if (datumId !== undefined && removedIds[datumId] !== undefined) {\n props = [\n { from: rect.x, to: datum.x },\n { from: rect.width, to: datum.width },\n { from: datum.y, to: contextY },\n { from: datum.height, to: contextHeight },\n ];\n delay = 0;\n cleanup = true;\n }\n (_a = _this.ctx.animationManager) === null || _a === void 0 ? void 0 : _a.animateMany(_this.id + \"_waiting-update-ready_\" + rect.id, props, {\n disableInteractions: true,\n delay: delay,\n duration: sectionDuration,\n ease: easeOut,\n repeat: 0,\n onUpdate: function (_a) {\n var _b = __read$7(_a, 4), x = _b[0], width = _b[1], y = _b[2], height = _b[3];\n rect.x = x;\n rect.width = width;\n rect.y = y;\n rect.height = height;\n },\n onComplete: function () {\n if (cleanup)\n datumSelection.cleanup();\n },\n });\n });\n });\n labelSelections.forEach(function (labelSelection) {\n labelSelection.each(function (label) {\n var _a;\n label.opacity = 0;\n (_a = _this.ctx.animationManager) === null || _a === void 0 ? void 0 : _a.animate(_this.id + \"_waiting-update-ready_\" + label.id, {\n from: 0,\n to: 1,\n delay: totalDuration,\n duration: labelDuration,\n ease: linear,\n repeat: 0,\n onUpdate: function (opacity) {\n label.opacity = opacity;\n },\n });\n });\n });\n };\n HistogramSeries.prototype.resetSelectionRects = function (selection) {\n selection.each(function (rect, datum) {\n rect.x = datum.x;\n rect.y = datum.y;\n rect.width = datum.width;\n rect.height = datum.height;\n });\n };\n HistogramSeries.prototype.isLabelEnabled = function () {\n return this.label.enabled;\n };\n HistogramSeries.className = 'HistogramSeries';\n HistogramSeries.type = 'histogram';\n __decorate$1n([\n Validate(OPT_COLOR_STRING)\n ], HistogramSeries.prototype, \"fill\", void 0);\n __decorate$1n([\n Validate(OPT_COLOR_STRING)\n ], HistogramSeries.prototype, \"stroke\", void 0);\n __decorate$1n([\n Validate(NUMBER(0, 1))\n ], HistogramSeries.prototype, \"fillOpacity\", void 0);\n __decorate$1n([\n Validate(NUMBER(0, 1))\n ], HistogramSeries.prototype, \"strokeOpacity\", void 0);\n __decorate$1n([\n Validate(OPT_LINE_DASH)\n ], HistogramSeries.prototype, \"lineDash\", void 0);\n __decorate$1n([\n Validate(NUMBER(0))\n ], HistogramSeries.prototype, \"lineDashOffset\", void 0);\n __decorate$1n([\n Validate(OPT_STRING)\n ], HistogramSeries.prototype, \"xKey\", void 0);\n __decorate$1n([\n Validate(BOOLEAN)\n ], HistogramSeries.prototype, \"areaPlot\", void 0);\n __decorate$1n([\n Validate(OPT_ARRAY())\n ], HistogramSeries.prototype, \"bins\", void 0);\n __decorate$1n([\n Validate(HISTOGRAM_AGGREGATION)\n ], HistogramSeries.prototype, \"aggregation\", void 0);\n __decorate$1n([\n Validate(OPT_NUMBER(0))\n ], HistogramSeries.prototype, \"binCount\", void 0);\n __decorate$1n([\n Validate(OPT_STRING)\n ], HistogramSeries.prototype, \"xName\", void 0);\n __decorate$1n([\n Validate(OPT_STRING)\n ], HistogramSeries.prototype, \"yKey\", void 0);\n __decorate$1n([\n Validate(OPT_STRING)\n ], HistogramSeries.prototype, \"yName\", void 0);\n __decorate$1n([\n Validate(NUMBER(0))\n ], HistogramSeries.prototype, \"strokeWidth\", void 0);\n return HistogramSeries;\n}(CartesianSeries));\n\nvar __extends$j = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$9 = (undefined && undefined.__assign) || function () {\n __assign$9 = 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$9.apply(this, arguments);\n};\nvar __decorate$1m = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 __awaiter$3 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$3 = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read$6 = (undefined && undefined.__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 LineSeriesLabel = /** @class */ (function (_super) {\n __extends$j(LineSeriesLabel, _super);\n function LineSeriesLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.formatter = undefined;\n return _this;\n }\n __decorate$1m([\n Validate(OPT_FUNCTION)\n ], LineSeriesLabel.prototype, \"formatter\", void 0);\n return LineSeriesLabel;\n}(Label$1));\nvar LineSeriesTooltip = /** @class */ (function (_super) {\n __extends$j(LineSeriesTooltip, _super);\n function LineSeriesTooltip() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.renderer = undefined;\n _this.format = undefined;\n return _this;\n }\n __decorate$1m([\n Validate(OPT_FUNCTION)\n ], LineSeriesTooltip.prototype, \"renderer\", void 0);\n __decorate$1m([\n Validate(OPT_STRING)\n ], LineSeriesTooltip.prototype, \"format\", void 0);\n return LineSeriesTooltip;\n}(SeriesTooltip));\nvar LineSeries = /** @class */ (function (_super) {\n __extends$j(LineSeries, _super);\n function LineSeries(moduleCtx) {\n var _this = _super.call(this, {\n moduleCtx: moduleCtx,\n hasMarkers: true,\n pickModes: [\n SeriesNodePickMode.NEAREST_BY_MAIN_CATEGORY_AXIS_FIRST,\n SeriesNodePickMode.NEAREST_NODE,\n SeriesNodePickMode.EXACT_SHAPE_MATCH,\n ],\n }) || this;\n _this.marker = new CartesianSeriesMarker();\n _this.label = new LineSeriesLabel();\n _this.title = undefined;\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 = undefined;\n _this.xName = undefined;\n _this.yKey = undefined;\n _this.yName = undefined;\n var _a = _this, marker = _a.marker, label = _a.label;\n marker.fill = '#c16068';\n marker.stroke = '#874349';\n label.enabled = false;\n return _this;\n }\n LineSeries.prototype.processData = function (dataController) {\n return __awaiter$3(this, void 0, void 0, function () {\n var _a, axes, _b, xKey, _c, yKey, data, xAxis, yAxis, isContinuousX, isContinuousY, _d, dataModel, processedData;\n return __generator$3(this, function (_e) {\n switch (_e.label) {\n case 0:\n _a = this, axes = _a.axes, _b = _a.xKey, xKey = _b === void 0 ? '' : _b, _c = _a.yKey, yKey = _c === void 0 ? '' : _c;\n data = xKey && yKey && this.data ? this.data : [];\n xAxis = axes[ChartAxisDirection.X];\n yAxis = axes[ChartAxisDirection.Y];\n isContinuousX = (xAxis === null || xAxis === void 0 ? void 0 : xAxis.scale) instanceof ContinuousScale;\n isContinuousY = (yAxis === null || yAxis === void 0 ? void 0 : yAxis.scale) instanceof ContinuousScale;\n return [4 /*yield*/, dataController.request(this.id, data !== null && data !== void 0 ? data : [], {\n props: [\n valueProperty(this, xKey, isContinuousX, { id: 'xValue' }),\n valueProperty(this, yKey, isContinuousY, { id: 'yValue', invalidValue: undefined }),\n ],\n dataVisible: this.visible,\n })];\n case 1:\n _d = _e.sent(), dataModel = _d.dataModel, processedData = _d.processedData;\n this.dataModel = dataModel;\n this.processedData = processedData;\n return [2 /*return*/];\n }\n });\n });\n };\n LineSeries.prototype.getDomain = function (direction) {\n var _a = this, axes = _a.axes, dataModel = _a.dataModel, processedData = _a.processedData;\n if (!processedData || !dataModel)\n return [];\n var xAxis = axes[ChartAxisDirection.X];\n var yAxis = axes[ChartAxisDirection.Y];\n var xDef = dataModel.resolveProcessedDataDefById(this, \"xValue\");\n if (direction === ChartAxisDirection.X) {\n var domain = dataModel.getDomain(this, \"xValue\", 'value', processedData);\n if ((xDef === null || xDef === void 0 ? void 0 : xDef.def.type) === 'value' && xDef.def.valueType === 'category') {\n return domain;\n }\n return this.fixNumericExtent(extent$4(domain), xAxis);\n }\n else {\n var domain = dataModel.getDomain(this, \"yValue\", 'value', processedData);\n return this.fixNumericExtent(domain, yAxis);\n }\n };\n LineSeries.prototype.createNodeData = function () {\n var _a, _b, _c, _d, _e;\n return __awaiter$3(this, void 0, void 0, function () {\n var _f, processedData, dataModel, axes, _g, markerEnabled, markerSize, strokeWidth, callbackCache, xAxis, yAxis, _h, label, _j, yKey, _k, xKey, seriesId, xScale, yScale, xOffset, yOffset, nodeData, size, xIdx, yIdx, moveTo, prevXInRange, nextPoint, actualLength, i, _l, datum, values, xDatum, yDatum, x, tolerance, nextXDatum, xInRange, nextXInRange, y, labelText;\n return __generator$3(this, function (_m) {\n _f = this, processedData = _f.processedData, dataModel = _f.dataModel, axes = _f.axes, _g = _f.marker, markerEnabled = _g.enabled, markerSize = _g.size, strokeWidth = _g.strokeWidth, callbackCache = _f.ctx.callbackCache;\n xAxis = axes[ChartAxisDirection.X];\n yAxis = axes[ChartAxisDirection.Y];\n if (!processedData || !dataModel || !xAxis || !yAxis) {\n return [2 /*return*/, []];\n }\n _h = this, label = _h.label, _j = _h.yKey, yKey = _j === void 0 ? '' : _j, _k = _h.xKey, xKey = _k === void 0 ? '' : _k, seriesId = _h.id;\n xScale = xAxis.scale;\n yScale = yAxis.scale;\n xOffset = ((_a = xScale.bandwidth) !== null && _a !== void 0 ? _a : 0) / 2;\n yOffset = ((_b = yScale.bandwidth) !== null && _b !== void 0 ? _b : 0) / 2;\n nodeData = new Array(processedData.data.length);\n size = markerEnabled ? markerSize : 0;\n xIdx = dataModel.resolveProcessedDataIndexById(this, \"xValue\").index;\n yIdx = dataModel.resolveProcessedDataIndexById(this, \"yValue\").index;\n moveTo = true;\n prevXInRange = undefined;\n nextPoint = undefined;\n actualLength = 0;\n for (i = 0; i < processedData.data.length; i++) {\n _l = nextPoint !== null && nextPoint !== void 0 ? nextPoint : processedData.data[i], datum = _l.datum, values = _l.values;\n xDatum = values[xIdx];\n yDatum = values[yIdx];\n if (yDatum === undefined) {\n prevXInRange = undefined;\n moveTo = true;\n }\n else {\n x = xScale.convert(xDatum) + xOffset;\n if (isNaN(x)) {\n prevXInRange = undefined;\n moveTo = true;\n nextPoint = undefined;\n continue;\n }\n tolerance = ((_c = xScale.bandwidth) !== null && _c !== void 0 ? _c : markerSize * 0.5 + (strokeWidth !== null && strokeWidth !== void 0 ? strokeWidth : 0)) + 1;\n nextPoint =\n ((_d = processedData.data[i + 1]) === null || _d === void 0 ? void 0 : _d.values[yIdx]) === undefined ? undefined : processedData.data[i + 1];\n nextXDatum = (_e = processedData.data[i + 1]) === null || _e === void 0 ? void 0 : _e.values[xIdx];\n xInRange = xAxis.inRangeEx(x, 0, tolerance);\n nextXInRange = nextPoint && xAxis.inRangeEx(xScale.convert(nextXDatum) + 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 y = yScale.convert(yDatum) + yOffset;\n labelText = void 0;\n if (label.formatter) {\n labelText = callbackCache.call(label.formatter, { value: yDatum, seriesId: seriesId });\n }\n if (labelText !== undefined) ;\n else if (typeof yDatum === 'number' && isFinite(yDatum)) {\n labelText = yDatum.toFixed(2);\n }\n else if (yDatum) {\n labelText = String(yDatum);\n }\n nodeData[actualLength++] = {\n series: this,\n datum: datum,\n yKey: yKey,\n xKey: xKey,\n point: { x: x, y: y, moveTo: moveTo, size: size },\n nodeMidPoint: { x: x, y: y },\n yValue: yDatum,\n xValue: xDatum,\n label: labelText\n ? {\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 }\n : undefined,\n };\n moveTo = false;\n }\n }\n nodeData.length = actualLength;\n return [2 /*return*/, [{ itemId: yKey, nodeData: nodeData, labelData: nodeData }]];\n });\n });\n };\n LineSeries.prototype.isPathOrSelectionDirty = function () {\n return this.marker.isDirty();\n };\n LineSeries.prototype.markerFactory = function () {\n var shape = this.marker.shape;\n var MarkerShape = getMarker$1(shape);\n return new MarkerShape();\n };\n LineSeries.prototype.updateMarkerSelection = function (opts) {\n return __awaiter$3(this, void 0, void 0, function () {\n var nodeData, markerSelection, _a, shape, enabled;\n return __generator$3(this, function (_b) {\n nodeData = opts.nodeData;\n markerSelection = opts.markerSelection;\n _a = this.marker, shape = _a.shape, enabled = _a.enabled;\n nodeData = shape && enabled ? nodeData : [];\n if (this.marker.isDirty()) {\n markerSelection.clear();\n }\n return [2 /*return*/, markerSelection.update(nodeData)];\n });\n });\n };\n LineSeries.prototype.updateMarkerNodes = function (opts) {\n var _a;\n return __awaiter$3(this, void 0, void 0, function () {\n var markerSelection, isDatumHighlighted, _b, marker, markerFillOpacity, _c, xKey, _d, yKey, lineStroke, strokeOpacity, _e, highlightedFill, _f, highlightFillOpacity, highlightedStroke, highlightedDatumStrokeWidth, seriesId, callbackCache, size, formatter, markerStrokeWidth, customMarker;\n return __generator$3(this, function (_g) {\n markerSelection = opts.markerSelection, isDatumHighlighted = opts.isHighlight;\n _b = this, marker = _b.marker, markerFillOpacity = _b.marker.fillOpacity, _c = _b.xKey, xKey = _c === void 0 ? '' : _c, _d = _b.yKey, yKey = _d === void 0 ? '' : _d, lineStroke = _b.stroke, strokeOpacity = _b.strokeOpacity, _e = _b.highlightStyle.item, highlightedFill = _e.fill, _f = _e.fillOpacity, highlightFillOpacity = _f === void 0 ? markerFillOpacity : _f, highlightedStroke = _e.stroke, highlightedDatumStrokeWidth = _e.strokeWidth, seriesId = _b.id, callbackCache = _b.ctx.callbackCache;\n size = marker.size, formatter = marker.formatter;\n markerStrokeWidth = (_a = marker.strokeWidth) !== null && _a !== void 0 ? _a : this.strokeWidth;\n customMarker = typeof marker.shape === 'function';\n markerSelection.each(function (node, datum) {\n var _a, _b, _c, _d, _e, _f, _g;\n var fill = isDatumHighlighted && highlightedFill !== undefined ? highlightedFill : marker.fill;\n var fillOpacity = isDatumHighlighted ? highlightFillOpacity : markerFillOpacity;\n var stroke = isDatumHighlighted && highlightedStroke !== undefined ? highlightedStroke : (_a = marker.stroke) !== null && _a !== void 0 ? _a : lineStroke;\n var strokeWidth = isDatumHighlighted && highlightedDatumStrokeWidth !== undefined\n ? highlightedDatumStrokeWidth\n : markerStrokeWidth;\n var format = undefined;\n if (formatter) {\n format = callbackCache.call(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 seriesId: seriesId,\n });\n }\n node.fill = (_b = format === null || format === void 0 ? void 0 : format.fill) !== null && _b !== void 0 ? _b : fill;\n node.stroke = (_c = format === null || format === void 0 ? void 0 : format.stroke) !== null && _c !== void 0 ? _c : stroke;\n node.strokeWidth = (_d = format === null || format === void 0 ? void 0 : format.strokeWidth) !== null && _d !== void 0 ? _d : strokeWidth;\n node.fillOpacity = fillOpacity !== null && fillOpacity !== void 0 ? fillOpacity : 1;\n node.strokeOpacity = (_f = (_e = marker.strokeOpacity) !== null && _e !== void 0 ? _e : strokeOpacity) !== null && _f !== void 0 ? _f : 1;\n node.size = (_g = format === null || format === void 0 ? void 0 : format.size) !== null && _g !== void 0 ? _g : size;\n node.translationX = datum.point.x;\n node.translationY = datum.point.y;\n node.visible = node.size > 0 && !isNaN(datum.point.x) && !isNaN(datum.point.y);\n if (!customMarker || node.dirtyPath) {\n return;\n }\n // Only for cutom marker shapes\n node.path.clear({ trackChanges: true });\n node.updatePath();\n node.checkPathDirty();\n });\n if (!isDatumHighlighted) {\n this.marker.markClean();\n }\n return [2 /*return*/];\n });\n });\n };\n LineSeries.prototype.updateLabelSelection = function (opts) {\n return __awaiter$3(this, void 0, void 0, function () {\n var labelData, labelSelection, _a, shape, enabled;\n return __generator$3(this, function (_b) {\n labelData = opts.labelData;\n labelSelection = opts.labelSelection;\n _a = this.marker, shape = _a.shape, enabled = _a.enabled;\n labelData = shape && enabled ? labelData : [];\n return [2 /*return*/, labelSelection.update(labelData)];\n });\n });\n };\n LineSeries.prototype.updateLabelNodes = function (opts) {\n return __awaiter$3(this, void 0, void 0, function () {\n var labelSelection, _a, labelEnabled, fontStyle, fontWeight, fontSize, fontFamily, color;\n return __generator$3(this, function (_b) {\n labelSelection = opts.labelSelection;\n _a = this.label, labelEnabled = _a.enabled, fontStyle = _a.fontStyle, fontWeight = _a.fontWeight, fontSize = _a.fontSize, fontFamily = _a.fontFamily, color = _a.color;\n labelSelection.each(function (text, datum) {\n var point = datum.point, label = datum.label;\n if (datum && 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 return [2 /*return*/];\n });\n });\n };\n LineSeries.prototype.getNodeClickEvent = function (event, datum) {\n var _a, _b;\n return new CartesianSeriesNodeClickEvent((_a = this.xKey) !== null && _a !== void 0 ? _a : '', (_b = this.yKey) !== null && _b !== void 0 ? _b : '', event, datum, this);\n };\n LineSeries.prototype.getNodeDoubleClickEvent = function (event, datum) {\n var _a, _b;\n return new CartesianSeriesNodeDoubleClickEvent((_a = this.xKey) !== null && _a !== void 0 ? _a : '', (_b = this.yKey) !== null && _b !== void 0 ? _b : '', event, datum, this);\n };\n LineSeries.prototype.getTooltipHtml = function (nodeDatum) {\n var _a, _b;\n var _c = this, xKey = _c.xKey, yKey = _c.yKey, axes = _c.axes;\n var xAxis = axes[ChartAxisDirection.X];\n var yAxis = axes[ChartAxisDirection.Y];\n if (!xKey || !yKey || !xAxis || !yAxis) {\n return '';\n }\n var _d = this, xName = _d.xName, yName = _d.yName, tooltip = _d.tooltip, marker = _d.marker, seriesId = _d.id;\n var tooltipRenderer = tooltip.renderer, tooltipFormat = tooltip.format;\n var datum = nodeDatum.datum, xValue = nodeDatum.xValue, yValue = nodeDatum.yValue;\n var xString = xAxis.formatDatum(xValue);\n var yString = yAxis.formatDatum(yValue);\n var title = sanitizeHtml((_a = this.title) !== null && _a !== void 0 ? _a : 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 !== null && markerStrokeWidth !== void 0 ? 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 seriesId: seriesId,\n });\n }\n var color = (_b = format === null || format === void 0 ? void 0 : format.fill) !== null && _b !== void 0 ? _b : 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 seriesId: seriesId,\n };\n if (tooltipFormat) {\n return toTooltipHtml$1({\n content: interpolate(tooltipFormat, params),\n }, defaults);\n }\n if (tooltipRenderer) {\n return toTooltipHtml$1(tooltipRenderer(params), defaults);\n }\n }\n return toTooltipHtml$1(defaults);\n };\n LineSeries.prototype.getLegendData = function () {\n var _a, _b, _c, _d, _e, _f, _g;\n var _h = this, id = _h.id, data = _h.data, xKey = _h.xKey, yKey = _h.yKey, yName = _h.yName, visible = _h.visible, title = _h.title, marker = _h.marker, stroke = _h.stroke, strokeOpacity = _h.strokeOpacity;\n if (!((data === null || data === void 0 ? void 0 : data.length) && xKey && yKey)) {\n return [];\n }\n var legendData = [\n {\n legendType: 'category',\n id: id,\n itemId: yKey,\n seriesId: id,\n enabled: visible,\n label: {\n text: (_a = title !== null && title !== void 0 ? title : yName) !== null && _a !== void 0 ? _a : yKey,\n },\n marker: {\n shape: marker.shape,\n fill: (_b = marker.fill) !== null && _b !== void 0 ? _b : 'rgba(0, 0, 0, 0)',\n stroke: (_d = (_c = marker.stroke) !== null && _c !== void 0 ? _c : stroke) !== null && _d !== void 0 ? _d : 'rgba(0, 0, 0, 0)',\n fillOpacity: (_e = marker.fillOpacity) !== null && _e !== void 0 ? _e : 1,\n strokeOpacity: (_g = (_f = marker.strokeOpacity) !== null && _f !== void 0 ? _f : strokeOpacity) !== null && _g !== void 0 ? _g : 1,\n },\n },\n ];\n return legendData;\n };\n LineSeries.prototype.animateEmptyUpdateReady = function (_a) {\n var _this = this;\n var markerSelections = _a.markerSelections, labelSelections = _a.labelSelections, contextData = _a.contextData, paths = _a.paths;\n contextData.forEach(function (_a, contextDataIndex) {\n var _b, _c, _d;\n var nodeData = _a.nodeData;\n var _e = __read$6(paths[contextDataIndex], 1), lineNode = _e[0];\n var linePath = lineNode.path;\n var nodeLengths = [0];\n var lineLength = nodeData.reduce(function (sum, datum, index) {\n if (index === 0)\n return sum;\n var prev = nodeData[index - 1];\n if (isNaN(datum.point.x) || isNaN(datum.point.y) || isNaN(prev.point.x) || isNaN(prev.point.y)) {\n nodeLengths.push(sum);\n return sum;\n }\n var length = Math.sqrt(Math.pow(datum.point.x - prev.point.x, 2) + Math.pow(datum.point.y - prev.point.y, 2));\n nodeLengths.push(sum + length);\n return sum + length;\n }, 0);\n lineNode.fill = undefined;\n lineNode.lineJoin = 'round';\n lineNode.pointerEvents = PointerEvents.None;\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 var duration = (_c = (_b = _this.ctx.animationManager) === null || _b === void 0 ? void 0 : _b.defaultOptions.duration) !== null && _c !== void 0 ? _c : 1000;\n var markerDuration = 200;\n var animationOptions = {\n from: 0,\n to: lineLength,\n };\n (_d = _this.ctx.animationManager) === null || _d === void 0 ? void 0 : _d.animate(_this.id + \"_empty-update-ready\", __assign$9(__assign$9({}, animationOptions), { duration: duration, onUpdate: function (length) {\n linePath.clear({ trackChanges: true });\n nodeData.forEach(function (datum, index) {\n if (nodeLengths[index] <= length) {\n // Draw/move the full segment if past the end of this segment\n if (datum.point.moveTo) {\n linePath.moveTo(datum.point.x, datum.point.y);\n }\n else {\n linePath.lineTo(datum.point.x, datum.point.y);\n }\n }\n else if (index > 0 && nodeLengths[index - 1] < length) {\n // Draw/move partial line if in between the start and end of this segment\n var start = nodeData[index - 1].point;\n var end = datum.point;\n var segmentLength = nodeLengths[index] - nodeLengths[index - 1];\n var remainingLength = nodeLengths[index] - length;\n var ratio = (segmentLength - remainingLength) / segmentLength;\n var x = (1 - ratio) * start.x + ratio * end.x;\n var y = (1 - ratio) * start.y + ratio * end.y;\n if (datum.point.moveTo) {\n linePath.moveTo(x, y);\n }\n else {\n linePath.lineTo(x, y);\n }\n }\n });\n lineNode.checkPathDirty();\n } }));\n markerSelections[contextDataIndex].each(function (marker, datum, index) {\n var _a, _b, _c, _d;\n var delay = lineLength > 0 ? (nodeLengths[index] / lineLength) * duration : 0;\n var format = _this.animateFormatter(datum);\n var size = (_b = (_a = datum.point) === null || _a === void 0 ? void 0 : _a.size) !== null && _b !== void 0 ? _b : 0;\n (_c = _this.ctx.animationManager) === null || _c === void 0 ? void 0 : _c.animate(_this.id + \"_empty-update-ready_\" + marker.id, __assign$9(__assign$9({}, animationOptions), { to: (_d = format === null || format === void 0 ? void 0 : format.size) !== null && _d !== void 0 ? _d : size, delay: delay, duration: markerDuration, onUpdate: function (size) {\n marker.size = size;\n } }));\n });\n labelSelections[contextDataIndex].each(function (label, _, index) {\n var _a;\n var delay = (nodeLengths[index] / lineLength) * duration;\n (_a = _this.ctx.animationManager) === null || _a === void 0 ? void 0 : _a.animate(_this.id + \"_empty-update-ready_\" + label.id, {\n from: 0,\n to: 1,\n delay: delay,\n duration: markerDuration,\n onUpdate: function (opacity) {\n label.opacity = opacity;\n },\n });\n });\n });\n };\n LineSeries.prototype.animateReadyUpdate = function (data) {\n this.resetMarkersAndPaths(data);\n };\n LineSeries.prototype.animateReadyResize = function (data) {\n var _a;\n (_a = this.ctx.animationManager) === null || _a === void 0 ? void 0 : _a.reset();\n this.resetMarkersAndPaths(data);\n };\n LineSeries.prototype.resetMarkersAndPaths = function (_a) {\n var _this = this;\n var markerSelections = _a.markerSelections, contextData = _a.contextData, paths = _a.paths;\n contextData.forEach(function (_a, contextDataIndex) {\n var nodeData = _a.nodeData;\n var _b = __read$6(paths[contextDataIndex], 1), lineNode = _b[0];\n var linePath = lineNode.path;\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 linePath.clear({ trackChanges: true });\n nodeData.forEach(function (datum) {\n if (datum.point.moveTo) {\n linePath.moveTo(datum.point.x, datum.point.y);\n }\n else {\n linePath.lineTo(datum.point.x, datum.point.y);\n }\n });\n lineNode.checkPathDirty();\n markerSelections[contextDataIndex].each(function (marker, datum) {\n var _a, _b, _c;\n var format = _this.animateFormatter(datum);\n var size = (_b = (_a = datum.point) === null || _a === void 0 ? void 0 : _a.size) !== null && _b !== void 0 ? _b : 0;\n marker.size = (_c = format === null || format === void 0 ? void 0 : format.size) !== null && _c !== void 0 ? _c : size;\n });\n });\n };\n LineSeries.prototype.animateFormatter = function (datum) {\n var _a, _b;\n var _c = this, marker = _c.marker, _d = _c.xKey, xKey = _d === void 0 ? '' : _d, _e = _c.yKey, yKey = _e === void 0 ? '' : _e, lineStroke = _c.stroke, seriesId = _c.id, callbackCache = _c.ctx.callbackCache;\n var size = marker.size, formatter = marker.formatter;\n var fill = marker.fill;\n var stroke = (_a = marker.stroke) !== null && _a !== void 0 ? _a : lineStroke;\n var strokeWidth = (_b = marker.strokeWidth) !== null && _b !== void 0 ? _b : this.strokeWidth;\n var format = undefined;\n if (formatter) {\n format = callbackCache.call(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: false,\n seriesId: seriesId,\n });\n }\n return format;\n };\n LineSeries.prototype.isLabelEnabled = function () {\n return this.label.enabled;\n };\n LineSeries.className = 'LineSeries';\n LineSeries.type = 'line';\n __decorate$1m([\n Validate(OPT_STRING)\n ], LineSeries.prototype, \"title\", void 0);\n __decorate$1m([\n Validate(OPT_COLOR_STRING)\n ], LineSeries.prototype, \"stroke\", void 0);\n __decorate$1m([\n Validate(OPT_LINE_DASH)\n ], LineSeries.prototype, \"lineDash\", void 0);\n __decorate$1m([\n Validate(NUMBER(0))\n ], LineSeries.prototype, \"lineDashOffset\", void 0);\n __decorate$1m([\n Validate(NUMBER(0))\n ], LineSeries.prototype, \"strokeWidth\", void 0);\n __decorate$1m([\n Validate(NUMBER(0, 1))\n ], LineSeries.prototype, \"strokeOpacity\", void 0);\n __decorate$1m([\n Validate(OPT_STRING)\n ], LineSeries.prototype, \"xKey\", void 0);\n __decorate$1m([\n Validate(OPT_STRING)\n ], LineSeries.prototype, \"xName\", void 0);\n __decorate$1m([\n Validate(OPT_STRING)\n ], LineSeries.prototype, \"yKey\", void 0);\n __decorate$1m([\n Validate(OPT_STRING)\n ], LineSeries.prototype, \"yName\", void 0);\n return LineSeries;\n}(CartesianSeries));\n\nvar ColorScale = /** @class */ (function () {\n function ColorScale() {\n this.domain = [0, 1];\n this.range = ['red', 'blue'];\n this.parsedRange = this.range.map(function (v) { return Color.fromString(v); });\n }\n ColorScale.prototype.update = function () {\n var _a = this, domain = _a.domain, range = _a.range;\n if (domain.length < 2) {\n Logger.warnOnce('`colorDomain` should have at least 2 values.');\n if (domain.length === 0) {\n domain.push(0, 1);\n }\n else if (domain.length === 1) {\n domain.push(domain[0] + 1);\n }\n }\n for (var i = 1; i < domain.length; i++) {\n var a = domain[i - 1];\n var b = domain[i];\n if (a >= b) {\n Logger.warnOnce('`colorDomain` values should be supplied in ascending order.');\n domain.sort(function (a, b) { return a - b; });\n break;\n }\n }\n var isSmallRange = range.length < domain.length;\n if (isSmallRange || (domain.length > 2 && range.length > domain.length)) {\n Logger.warnOnce('Number of elements in `colorRange` needs to match the number of elements in `colorDomain`.');\n if (isSmallRange) {\n for (var i = range.length; i < domain.length; i++) {\n range.push('black');\n }\n }\n else {\n range.splice(domain.length);\n }\n }\n this.parsedRange = this.range.map(function (v) { return Color.fromString(v); });\n };\n ColorScale.prototype.convert = function (x) {\n var _a = this, domain = _a.domain, range = _a.range, parsedRange = _a.parsedRange;\n var d0 = domain[0];\n var d1 = domain[domain.length - 1];\n var r0 = range[0];\n var r1 = range[range.length - 1];\n if (x <= d0) {\n return r0;\n }\n if (x >= d1) {\n return r1;\n }\n var index;\n var q;\n if (domain.length === 2) {\n var t = (x - d0) / (d1 - d0);\n var step = 1 / (range.length - 1);\n index = range.length <= 2 ? 0 : Math.min(Math.floor(t * (range.length - 1)), range.length - 2);\n q = (t - index * step) / step;\n }\n else {\n for (index = 0; index < domain.length - 2; index++) {\n if (x < domain[index + 1]) {\n break;\n }\n }\n var a = domain[index];\n var b = domain[index + 1];\n q = (x - a) / (b - a);\n }\n var c0 = parsedRange[index];\n var c1 = parsedRange[index + 1];\n return interpolateColor(c0, c1)(q);\n };\n return ColorScale;\n}());\n\nvar __extends$i = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$8 = (undefined && undefined.__assign) || function () {\n __assign$8 = 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$8.apply(this, arguments);\n};\nvar __decorate$1l = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 __awaiter$2 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$2 = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read$5 = (undefined && undefined.__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 __spreadArray$3 = (undefined && undefined.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar __values$7 = (undefined && undefined.__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 ScatterSeriesLabel = /** @class */ (function (_super) {\n __extends$i(ScatterSeriesLabel, _super);\n function ScatterSeriesLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.formatter = undefined;\n return _this;\n }\n __decorate$1l([\n Validate(OPT_FUNCTION)\n ], ScatterSeriesLabel.prototype, \"formatter\", void 0);\n return ScatterSeriesLabel;\n}(Label$1));\nvar ScatterSeriesNodeBaseClickEvent = /** @class */ (function (_super) {\n __extends$i(ScatterSeriesNodeBaseClickEvent, _super);\n function ScatterSeriesNodeBaseClickEvent(sizeKey, xKey, yKey, nativeEvent, datum, series) {\n var _this = _super.call(this, xKey, yKey, nativeEvent, datum, series) || this;\n _this.sizeKey = sizeKey;\n return _this;\n }\n return ScatterSeriesNodeBaseClickEvent;\n}(CartesianSeriesNodeBaseClickEvent));\nvar ScatterSeriesNodeClickEvent = /** @class */ (function (_super) {\n __extends$i(ScatterSeriesNodeClickEvent, _super);\n function ScatterSeriesNodeClickEvent() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'nodeClick';\n return _this;\n }\n return ScatterSeriesNodeClickEvent;\n}(ScatterSeriesNodeBaseClickEvent));\nvar ScatterSeriesNodeDoubleClickEvent = /** @class */ (function (_super) {\n __extends$i(ScatterSeriesNodeDoubleClickEvent, _super);\n function ScatterSeriesNodeDoubleClickEvent() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'nodeDoubleClick';\n return _this;\n }\n return ScatterSeriesNodeDoubleClickEvent;\n}(ScatterSeriesNodeBaseClickEvent));\nvar ScatterSeriesTooltip = /** @class */ (function (_super) {\n __extends$i(ScatterSeriesTooltip, _super);\n function ScatterSeriesTooltip() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.renderer = undefined;\n return _this;\n }\n __decorate$1l([\n Validate(OPT_FUNCTION)\n ], ScatterSeriesTooltip.prototype, \"renderer\", void 0);\n return ScatterSeriesTooltip;\n}(SeriesTooltip));\nvar ScatterSeries = /** @class */ (function (_super) {\n __extends$i(ScatterSeries, _super);\n function ScatterSeries(moduleCtx) {\n var _this = _super.call(this, {\n moduleCtx: moduleCtx,\n pickModes: [\n SeriesNodePickMode.NEAREST_BY_MAIN_CATEGORY_AXIS_FIRST,\n SeriesNodePickMode.NEAREST_NODE,\n SeriesNodePickMode.EXACT_SHAPE_MATCH,\n ],\n pathsPerSeries: 0,\n hasMarkers: true,\n }) || this;\n _this.sizeScale = new LinearScale$1();\n _this.marker = new CartesianSeriesMarker();\n _this.label = new ScatterSeriesLabel();\n _this.title = undefined;\n _this.labelKey = undefined;\n _this.xName = undefined;\n _this.yName = undefined;\n _this.sizeName = 'Size';\n _this.labelName = 'Label';\n _this.xKey = undefined;\n _this.yKey = undefined;\n _this.sizeKey = undefined;\n _this.colorKey = undefined;\n _this.colorName = 'Color';\n _this.colorDomain = undefined;\n _this.colorRange = ['#ffff00', '#00ff00', '#0000ff'];\n _this.colorScale = new ColorScale();\n _this.tooltip = new ScatterSeriesTooltip();\n var label = _this.label;\n label.enabled = false;\n return _this;\n }\n ScatterSeries.prototype.processData = function (dataController) {\n var _a, _b;\n return __awaiter$2(this, void 0, void 0, function () {\n var _c, _d, xKey, _e, yKey, sizeKey, labelKey, axes, marker, data, xAxis, yAxis, isContinuousX, isContinuousY, _f, colorScale, colorDomain, colorRange, colorKey, _g, dataModel, processedData, sizeKeyIdx, processedSize, colorKeyIdx;\n return __generator$2(this, function (_h) {\n switch (_h.label) {\n case 0:\n _c = this, _d = _c.xKey, xKey = _d === void 0 ? '' : _d, _e = _c.yKey, yKey = _e === void 0 ? '' : _e, sizeKey = _c.sizeKey, labelKey = _c.labelKey, axes = _c.axes, marker = _c.marker, data = _c.data;\n xAxis = axes[ChartAxisDirection.X];\n yAxis = axes[ChartAxisDirection.Y];\n isContinuousX = (xAxis === null || xAxis === void 0 ? void 0 : xAxis.scale) instanceof ContinuousScale;\n isContinuousY = (yAxis === null || yAxis === void 0 ? void 0 : yAxis.scale) instanceof ContinuousScale;\n _f = this, colorScale = _f.colorScale, colorDomain = _f.colorDomain, colorRange = _f.colorRange, colorKey = _f.colorKey;\n return [4 /*yield*/, dataController.request(this.id, data !== null && data !== void 0 ? data : [], {\n props: __spreadArray$3(__spreadArray$3(__spreadArray$3([\n valueProperty(this, xKey, isContinuousX, { id: \"xValue\" }),\n valueProperty(this, yKey, isContinuousY, { id: \"yValue\" })\n ], __read$5((sizeKey ? [valueProperty(this, sizeKey, true, { id: \"sizeValue\" })] : []))), __read$5((colorKey ? [valueProperty(this, colorKey, true, { id: \"colorValue\" })] : []))), __read$5((labelKey ? [valueProperty(this, labelKey, false, { id: \"labelValue\" })] : []))),\n dataVisible: this.visible,\n })];\n case 1:\n _g = _h.sent(), dataModel = _g.dataModel, processedData = _g.processedData;\n this.dataModel = dataModel;\n this.processedData = processedData;\n if (sizeKey) {\n sizeKeyIdx = dataModel.resolveProcessedDataIndexById(this, \"sizeValue\").index;\n processedSize = (_a = processedData.domain.values[sizeKeyIdx]) !== null && _a !== void 0 ? _a : [];\n this.sizeScale.domain = marker.domain ? marker.domain : processedSize;\n }\n if (colorKey) {\n colorKeyIdx = dataModel.resolveProcessedDataIndexById(this, \"colorValue\").index;\n colorScale.domain = (_b = colorDomain !== null && colorDomain !== void 0 ? colorDomain : processedData.domain.values[colorKeyIdx]) !== null && _b !== void 0 ? _b : [];\n colorScale.range = colorRange;\n colorScale.update();\n }\n return [2 /*return*/];\n }\n });\n });\n };\n ScatterSeries.prototype.getDomain = function (direction) {\n var _a = this, dataModel = _a.dataModel, processedData = _a.processedData;\n if (!processedData || !dataModel)\n return [];\n var id = direction === ChartAxisDirection.X ? \"xValue\" : \"yValue\";\n var dataDef = dataModel.resolveProcessedDataDefById(this, id, 'value');\n var domain = dataModel.getDomain(this, id, 'value', processedData);\n if ((dataDef === null || dataDef === void 0 ? void 0 : dataDef.def.type) === 'value' && (dataDef === null || dataDef === void 0 ? void 0 : dataDef.def.valueType) === 'category') {\n return domain;\n }\n var axis = this.axes[direction];\n return this.fixNumericExtent(extent$4(domain), axis);\n };\n ScatterSeries.prototype.getNodeClickEvent = function (event, datum) {\n var _a, _b;\n return new ScatterSeriesNodeClickEvent(this.sizeKey, (_a = this.xKey) !== null && _a !== void 0 ? _a : '', (_b = this.yKey) !== null && _b !== void 0 ? _b : '', event, datum, this);\n };\n ScatterSeries.prototype.getNodeDoubleClickEvent = function (event, datum) {\n var _a, _b;\n return new ScatterSeriesNodeDoubleClickEvent(this.sizeKey, (_a = this.xKey) !== null && _a !== void 0 ? _a : '', (_b = this.yKey) !== null && _b !== void 0 ? _b : '', event, datum, this);\n };\n ScatterSeries.prototype.createNodeData = function () {\n var _a, _b, _c, _d, _e, _f;\n return __awaiter$2(this, void 0, void 0, function () {\n var _g, visible, axes, _h, yKey, _j, xKey, label, labelKey, callbackCache, dataModel, processedData, xAxis, yAxis, xDataIdx, yDataIdx, sizeDataIdx, colorDataIdx, labelDataIdx, _k, colorScale, sizeKey, colorKey, seriesId, xScale, yScale, xOffset, yOffset, _l, sizeScale, marker, nodeData, font, actualLength, _m, _o, _p, values, datum, xDatum, yDatum, x, y, text, size, markerSize, fill;\n var e_1, _q;\n return __generator$2(this, function (_r) {\n _g = this, visible = _g.visible, axes = _g.axes, _h = _g.yKey, yKey = _h === void 0 ? '' : _h, _j = _g.xKey, xKey = _j === void 0 ? '' : _j, label = _g.label, labelKey = _g.labelKey, callbackCache = _g.ctx.callbackCache, dataModel = _g.dataModel, processedData = _g.processedData;\n xAxis = axes[ChartAxisDirection.X];\n yAxis = axes[ChartAxisDirection.Y];\n if (!(dataModel && processedData && visible && xAxis && yAxis))\n return [2 /*return*/, []];\n xDataIdx = dataModel.resolveProcessedDataIndexById(this, \"xValue\").index;\n yDataIdx = dataModel.resolveProcessedDataIndexById(this, \"yValue\").index;\n sizeDataIdx = this.sizeKey ? dataModel.resolveProcessedDataIndexById(this, \"sizeValue\").index : -1;\n colorDataIdx = this.colorKey ? dataModel.resolveProcessedDataIndexById(this, \"colorValue\").index : -1;\n labelDataIdx = this.labelKey ? dataModel.resolveProcessedDataIndexById(this, \"labelValue\").index : -1;\n _k = this, colorScale = _k.colorScale, sizeKey = _k.sizeKey, colorKey = _k.colorKey, seriesId = _k.id;\n xScale = xAxis.scale;\n yScale = yAxis.scale;\n xOffset = ((_a = xScale.bandwidth) !== null && _a !== void 0 ? _a : 0) / 2;\n yOffset = ((_b = yScale.bandwidth) !== null && _b !== void 0 ? _b : 0) / 2;\n _l = this, sizeScale = _l.sizeScale, marker = _l.marker;\n nodeData = new Array((_d = (_c = this.processedData) === null || _c === void 0 ? void 0 : _c.data.length) !== null && _d !== void 0 ? _d : 0);\n sizeScale.range = [marker.size, marker.maxSize];\n font = label.getFont();\n actualLength = 0;\n try {\n for (_m = __values$7((_e = processedData.data) !== null && _e !== void 0 ? _e : []), _o = _m.next(); !_o.done; _o = _m.next()) {\n _p = _o.value, values = _p.values, datum = _p.datum;\n xDatum = values[xDataIdx];\n yDatum = values[yDataIdx];\n x = xScale.convert(xDatum) + xOffset;\n y = yScale.convert(yDatum) + yOffset;\n if (!this.checkRangeXY(x, y, xAxis, yAxis)) {\n continue;\n }\n text = void 0;\n if (label.formatter) {\n text = callbackCache.call(label.formatter, { value: yDatum, seriesId: seriesId, datum: datum });\n }\n if (text === undefined) {\n text = labelKey ? String(values[labelDataIdx]) : '';\n }\n size = HdpiCanvas.getTextSize(text, font);\n markerSize = sizeKey ? sizeScale.convert(values[sizeDataIdx]) : marker.size;\n fill = colorKey ? colorScale.convert(values[colorDataIdx]) : undefined;\n nodeData[actualLength++] = {\n series: this,\n itemId: yKey,\n yKey: yKey,\n xKey: xKey,\n datum: datum,\n xValue: xDatum,\n yValue: yDatum,\n sizeValue: values[sizeDataIdx],\n point: { x: x, y: y, size: markerSize },\n nodeMidPoint: { x: x, y: y },\n fill: fill,\n label: __assign$8({ text: text }, size),\n };\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_o && !_o.done && (_q = _m.return)) _q.call(_m);\n }\n finally { if (e_1) throw e_1.error; }\n }\n nodeData.length = actualLength;\n return [2 /*return*/, [{ itemId: (_f = this.yKey) !== null && _f !== void 0 ? _f : this.id, nodeData: nodeData, labelData: nodeData }]];\n });\n });\n };\n ScatterSeries.prototype.isPathOrSelectionDirty = function () {\n return this.marker.isDirty();\n };\n ScatterSeries.prototype.getLabelData = function () {\n var _a;\n return (_a = this.contextNodeData) === null || _a === void 0 ? void 0 : _a.reduce(function (r, n) { return r.concat(n.labelData); }, []);\n };\n ScatterSeries.prototype.markerFactory = function () {\n var shape = this.marker.shape;\n var MarkerShape = getMarker$1(shape);\n return new MarkerShape();\n };\n ScatterSeries.prototype.updateMarkerSelection = function (opts) {\n return __awaiter$2(this, void 0, void 0, function () {\n var nodeData, markerSelection, enabled, data;\n return __generator$2(this, function (_a) {\n nodeData = opts.nodeData, markerSelection = opts.markerSelection;\n enabled = this.marker.enabled;\n if (this.marker.isDirty()) {\n markerSelection.clear();\n }\n data = enabled ? nodeData : [];\n return [2 /*return*/, markerSelection.update(data)];\n });\n });\n };\n ScatterSeries.prototype.updateMarkerNodes = function (opts) {\n return __awaiter$2(this, void 0, void 0, function () {\n var markerSelection, isDatumHighlighted, _a, marker, _b, xKey, _c, yKey, sizeScale, _d, markerFillOpacity, markerStrokeOpacity, markerStrokeWidth, _e, highlightedFill, _f, highlightFillOpacity, highlightedStroke, highlightedDatumStrokeWidth, seriesId, callbackCache, formatter, customMarker;\n return __generator$2(this, function (_g) {\n markerSelection = opts.markerSelection, isDatumHighlighted = opts.isHighlight;\n _a = this, marker = _a.marker, _b = _a.xKey, xKey = _b === void 0 ? '' : _b, _c = _a.yKey, yKey = _c === void 0 ? '' : _c, sizeScale = _a.sizeScale, _d = _a.marker, markerFillOpacity = _d.fillOpacity, markerStrokeOpacity = _d.strokeOpacity, markerStrokeWidth = _d.strokeWidth, _e = _a.highlightStyle.item, highlightedFill = _e.fill, _f = _e.fillOpacity, highlightFillOpacity = _f === void 0 ? markerFillOpacity : _f, highlightedStroke = _e.stroke, highlightedDatumStrokeWidth = _e.strokeWidth, seriesId = _a.id, callbackCache = _a.ctx.callbackCache;\n formatter = marker.formatter;\n sizeScale.range = [marker.size, marker.maxSize];\n customMarker = typeof marker.shape === 'function';\n markerSelection.each(function (node, datum) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n var fill = isDatumHighlighted && highlightedFill !== undefined ? highlightedFill : (_a = datum.fill) !== null && _a !== void 0 ? _a : marker.fill;\n var fillOpacity = isDatumHighlighted ? highlightFillOpacity : markerFillOpacity;\n var stroke = isDatumHighlighted && highlightedStroke !== undefined ? highlightedStroke : marker.stroke;\n var strokeOpacity = markerStrokeOpacity;\n var strokeWidth = isDatumHighlighted && highlightedDatumStrokeWidth !== undefined\n ? highlightedDatumStrokeWidth\n : markerStrokeWidth !== null && markerStrokeWidth !== void 0 ? markerStrokeWidth : 1;\n var size = (_c = (_b = datum.point) === null || _b === void 0 ? void 0 : _b.size) !== null && _c !== void 0 ? _c : 0;\n var format = undefined;\n if (formatter) {\n format = callbackCache.call(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 seriesId: seriesId,\n });\n }\n node.fill = (_d = format === null || format === void 0 ? void 0 : format.fill) !== null && _d !== void 0 ? _d : fill;\n node.stroke = (_e = format === null || format === void 0 ? void 0 : format.stroke) !== null && _e !== void 0 ? _e : stroke;\n node.strokeWidth = (_f = format === null || format === void 0 ? void 0 : format.strokeWidth) !== null && _f !== void 0 ? _f : strokeWidth;\n node.fillOpacity = fillOpacity !== null && fillOpacity !== void 0 ? fillOpacity : 1;\n node.strokeOpacity = strokeOpacity !== null && strokeOpacity !== void 0 ? strokeOpacity : 1;\n node.translationX = (_h = (_g = datum.point) === null || _g === void 0 ? void 0 : _g.x) !== null && _h !== void 0 ? _h : 0;\n node.translationY = (_k = (_j = datum.point) === null || _j === void 0 ? void 0 : _j.y) !== null && _k !== void 0 ? _k : 0;\n node.visible = node.size > 0;\n if (!customMarker || node.dirtyPath) {\n return;\n }\n // Only for custom marker shapes.\n node.path.clear({ trackChanges: true });\n node.updatePath();\n node.checkPathDirty();\n });\n if (!isDatumHighlighted) {\n this.marker.markClean();\n }\n return [2 /*return*/];\n });\n });\n };\n ScatterSeries.prototype.updateLabelSelection = function (opts) {\n var _a, _b;\n return __awaiter$2(this, void 0, void 0, function () {\n var labelSelection, enabled, placedLabels, placedNodeDatum;\n return __generator$2(this, function (_c) {\n labelSelection = opts.labelSelection;\n enabled = this.label.enabled;\n placedLabels = enabled ? (_b = (_a = this.chart) === null || _a === void 0 ? void 0 : _a.placeLabels().get(this)) !== null && _b !== void 0 ? _b : [] : [];\n placedNodeDatum = placedLabels.map(function (v) { return (__assign$8(__assign$8({}, v.datum), { point: {\n x: v.x,\n y: v.y,\n size: v.datum.point.size,\n } })); });\n return [2 /*return*/, labelSelection.update(placedNodeDatum)];\n });\n });\n };\n ScatterSeries.prototype.updateLabelNodes = function (opts) {\n return __awaiter$2(this, void 0, void 0, function () {\n var labelSelection, label;\n return __generator$2(this, function (_a) {\n labelSelection = opts.labelSelection;\n label = this.label;\n labelSelection.each(function (text, datum) {\n var _a, _b, _c, _d;\n text.text = datum.label.text;\n text.fill = label.color;\n text.x = (_b = (_a = datum.point) === null || _a === void 0 ? void 0 : _a.x) !== null && _b !== void 0 ? _b : 0;\n text.y = (_d = (_c = datum.point) === null || _c === void 0 ? void 0 : _c.y) !== null && _d !== void 0 ? _d : 0;\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 return [2 /*return*/];\n });\n });\n };\n ScatterSeries.prototype.getTooltipHtml = function (nodeDatum) {\n var _a, _b, _c, _d, _e, _f, _g;\n var _h = this, xKey = _h.xKey, yKey = _h.yKey, axes = _h.axes;\n var xAxis = axes[ChartAxisDirection.X];\n var yAxis = axes[ChartAxisDirection.Y];\n if (!xKey || !yKey || !xAxis || !yAxis) {\n return '';\n }\n var _j = this, marker = _j.marker, tooltip = _j.tooltip, xName = _j.xName, yName = _j.yName, sizeKey = _j.sizeKey, sizeName = _j.sizeName, labelKey = _j.labelKey, labelName = _j.labelName, seriesId = _j.id, callbackCache = _j.ctx.callbackCache;\n var stroke = marker.stroke;\n var fill = (_a = nodeDatum.fill) !== null && _a !== void 0 ? _a : marker.fill;\n var strokeWidth = this.getStrokeWidth((_b = marker.strokeWidth) !== null && _b !== void 0 ? _b : 1);\n var formatter = this.marker.formatter;\n var format = undefined;\n if (formatter) {\n format = callbackCache.call(formatter, {\n datum: nodeDatum,\n xKey: xKey,\n yKey: yKey,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n size: (_d = (_c = nodeDatum.point) === null || _c === void 0 ? void 0 : _c.size) !== null && _d !== void 0 ? _d : 0,\n highlighted: false,\n seriesId: seriesId,\n });\n }\n var color = (_f = (_e = format === null || format === void 0 ? void 0 : format.fill) !== null && _e !== void 0 ? _e : fill) !== null && _f !== void 0 ? _f : 'gray';\n var title = (_g = this.title) !== null && _g !== void 0 ? _g : yName;\n var datum = nodeDatum.datum, xValue = nodeDatum.xValue, yValue = nodeDatum.yValue, sizeValue = nodeDatum.sizeValue, labelText = nodeDatum.label.text;\n var xString = sanitizeHtml(xAxis.formatDatum(xValue));\n var yString = sanitizeHtml(yAxis.formatDatum(yValue));\n var content = \"\" + sanitizeHtml(xName !== null && xName !== void 0 ? xName : xKey) + \": \" + xString + \"
\" +\n (\"\" + sanitizeHtml(yName !== null && yName !== void 0 ? yName : yKey) + \": \" + yString);\n if (sizeKey) {\n content += \"
\" + sanitizeHtml(sizeName !== null && sizeName !== void 0 ? sizeName : sizeKey) + \": \" + sanitizeHtml(sizeValue);\n }\n if (labelKey) {\n content = \"\" + sanitizeHtml(labelName !== null && labelName !== void 0 ? labelName : labelKey) + \": \" + sanitizeHtml(labelText) + \"
\" + 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$1(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 seriesId: seriesId,\n }), defaults);\n }\n return toTooltipHtml$1(defaults);\n };\n ScatterSeries.prototype.getLegendData = function () {\n var _a, _b, _c, _d, _e;\n var _f = this, id = _f.id, data = _f.data, xKey = _f.xKey, yKey = _f.yKey, yName = _f.yName, title = _f.title, visible = _f.visible, marker = _f.marker;\n var fill = marker.fill, stroke = marker.stroke, fillOpacity = marker.fillOpacity, strokeOpacity = marker.strokeOpacity;\n if (!((data === null || data === void 0 ? void 0 : data.length) && xKey && yKey)) {\n return [];\n }\n var legendData = [\n {\n legendType: 'category',\n id: id,\n itemId: yKey,\n seriesId: id,\n enabled: visible,\n label: {\n text: (_a = title !== null && title !== void 0 ? title : yName) !== null && _a !== void 0 ? _a : yKey,\n },\n marker: {\n shape: marker.shape,\n fill: (_c = (_b = marker.fill) !== null && _b !== void 0 ? _b : fill) !== null && _c !== void 0 ? _c : 'rgba(0, 0, 0, 0)',\n stroke: (_e = (_d = marker.stroke) !== null && _d !== void 0 ? _d : stroke) !== null && _e !== void 0 ? _e : 'rgba(0, 0, 0, 0)',\n fillOpacity: fillOpacity !== null && fillOpacity !== void 0 ? fillOpacity : 1,\n strokeOpacity: strokeOpacity !== null && strokeOpacity !== void 0 ? strokeOpacity : 1,\n },\n },\n ];\n return legendData;\n };\n ScatterSeries.prototype.animateEmptyUpdateReady = function (_a) {\n var _this = this;\n var _b, _c;\n var markerSelections = _a.markerSelections, labelSelections = _a.labelSelections;\n var duration = (_c = (_b = this.ctx.animationManager) === null || _b === void 0 ? void 0 : _b.defaultOptions.duration) !== null && _c !== void 0 ? _c : 1000;\n var labelDuration = 200;\n markerSelections.forEach(function (markerSelection) {\n markerSelection.each(function (marker, datum) {\n var _a, _b, _c, _d;\n var format = _this.animateFormatter(marker, datum);\n var size = (_b = (_a = datum.point) === null || _a === void 0 ? void 0 : _a.size) !== null && _b !== void 0 ? _b : 0;\n var to = (_c = format === null || format === void 0 ? void 0 : format.size) !== null && _c !== void 0 ? _c : size;\n (_d = _this.ctx.animationManager) === null || _d === void 0 ? void 0 : _d.animate(_this.id + \"_empty-update-ready_\" + marker.id, {\n from: 0,\n to: to,\n duration: duration,\n onUpdate: function (size) {\n marker.size = size;\n },\n });\n });\n });\n labelSelections.forEach(function (labelSelection) {\n labelSelection.each(function (label) {\n var _a;\n (_a = _this.ctx.animationManager) === null || _a === void 0 ? void 0 : _a.animate(_this.id + \"_empty-update-ready_\" + label.id, {\n from: 0,\n to: 1,\n delay: duration,\n duration: labelDuration,\n onUpdate: function (opacity) {\n label.opacity = opacity;\n },\n });\n });\n });\n };\n ScatterSeries.prototype.animateReadyUpdate = function (_a) {\n var _this = this;\n var markerSelections = _a.markerSelections;\n markerSelections.forEach(function (markerSelection) {\n _this.resetMarkers(markerSelection);\n });\n };\n ScatterSeries.prototype.animateReadyHighlightMarkers = function (markerSelection) {\n this.resetMarkers(markerSelection);\n };\n ScatterSeries.prototype.resetMarkers = function (markerSelection) {\n var _this = this;\n markerSelection.each(function (marker, datum) {\n var _a, _b, _c;\n var format = _this.animateFormatter(marker, datum);\n var size = (_b = (_a = datum.point) === null || _a === void 0 ? void 0 : _a.size) !== null && _b !== void 0 ? _b : 0;\n marker.size = (_c = format === null || format === void 0 ? void 0 : format.size) !== null && _c !== void 0 ? _c : size;\n });\n };\n ScatterSeries.prototype.animateFormatter = function (marker, datum) {\n var _a, _b, _c;\n var _d = this, _e = _d.xKey, xKey = _e === void 0 ? '' : _e, _f = _d.yKey, yKey = _f === void 0 ? '' : _f, markerStrokeWidth = _d.marker.strokeWidth, seriesId = _d.id, callbackCache = _d.ctx.callbackCache;\n var formatter = this.marker.formatter;\n var fill = (_a = datum.fill) !== null && _a !== void 0 ? _a : marker.fill;\n var stroke = marker.stroke;\n var strokeWidth = markerStrokeWidth !== null && markerStrokeWidth !== void 0 ? markerStrokeWidth : 1;\n var size = (_c = (_b = datum.point) === null || _b === void 0 ? void 0 : _b.size) !== null && _c !== void 0 ? _c : 0;\n var format = undefined;\n if (formatter) {\n format = callbackCache.call(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: false,\n seriesId: seriesId,\n });\n }\n return format;\n };\n ScatterSeries.prototype.isLabelEnabled = function () {\n return this.label.enabled;\n };\n ScatterSeries.className = 'ScatterSeries';\n ScatterSeries.type = 'scatter';\n __decorate$1l([\n Validate(OPT_STRING)\n ], ScatterSeries.prototype, \"title\", void 0);\n __decorate$1l([\n Validate(OPT_STRING)\n ], ScatterSeries.prototype, \"labelKey\", void 0);\n __decorate$1l([\n Validate(OPT_STRING)\n ], ScatterSeries.prototype, \"xName\", void 0);\n __decorate$1l([\n Validate(OPT_STRING)\n ], ScatterSeries.prototype, \"yName\", void 0);\n __decorate$1l([\n Validate(OPT_STRING)\n ], ScatterSeries.prototype, \"sizeName\", void 0);\n __decorate$1l([\n Validate(OPT_STRING)\n ], ScatterSeries.prototype, \"labelName\", void 0);\n __decorate$1l([\n Validate(OPT_STRING)\n ], ScatterSeries.prototype, \"xKey\", void 0);\n __decorate$1l([\n Validate(OPT_STRING)\n ], ScatterSeries.prototype, \"yKey\", void 0);\n __decorate$1l([\n Validate(OPT_STRING)\n ], ScatterSeries.prototype, \"sizeKey\", void 0);\n __decorate$1l([\n Validate(OPT_STRING)\n ], ScatterSeries.prototype, \"colorKey\", void 0);\n __decorate$1l([\n Validate(OPT_STRING)\n ], ScatterSeries.prototype, \"colorName\", void 0);\n __decorate$1l([\n Validate(OPT_NUMBER_ARRAY)\n ], ScatterSeries.prototype, \"colorDomain\", void 0);\n __decorate$1l([\n Validate(COLOR_STRING_ARRAY)\n ], ScatterSeries.prototype, \"colorRange\", void 0);\n return ScatterSeries;\n}(CartesianSeries));\n\nvar __extends$h = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar HierarchySeries = /** @class */ (function (_super) {\n __extends$h(HierarchySeries, _super);\n function HierarchySeries(moduleCtx) {\n return _super.call(this, { moduleCtx: moduleCtx, pickModes: [SeriesNodePickMode.EXACT_SHAPE_MATCH] }) || this;\n }\n HierarchySeries.prototype.getLabelData = function () {\n return [];\n };\n return HierarchySeries;\n}(Series));\n\nvar __extends$g = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$7 = (undefined && undefined.__assign) || function () {\n __assign$7 = 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$7.apply(this, arguments);\n};\nvar __decorate$1k = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 __awaiter$1 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$1 = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __values$6 = (undefined && undefined.__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 TreemapSeriesTooltip = /** @class */ (function (_super) {\n __extends$g(TreemapSeriesTooltip, _super);\n function TreemapSeriesTooltip() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.renderer = undefined;\n return _this;\n }\n __decorate$1k([\n Validate(OPT_FUNCTION)\n ], TreemapSeriesTooltip.prototype, \"renderer\", void 0);\n return TreemapSeriesTooltip;\n}(SeriesTooltip));\nvar TreemapSeriesNodeBaseClickEvent = /** @class */ (function (_super) {\n __extends$g(TreemapSeriesNodeBaseClickEvent, _super);\n function TreemapSeriesNodeBaseClickEvent(labelKey, sizeKey, colorKey, nativeEvent, datum, series) {\n var _this = _super.call(this, nativeEvent, datum, series) || this;\n _this.labelKey = labelKey;\n _this.sizeKey = sizeKey;\n _this.colorKey = colorKey;\n return _this;\n }\n return TreemapSeriesNodeBaseClickEvent;\n}(SeriesNodeBaseClickEvent));\nvar TreemapSeriesNodeClickEvent = /** @class */ (function (_super) {\n __extends$g(TreemapSeriesNodeClickEvent, _super);\n function TreemapSeriesNodeClickEvent() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'nodeClick';\n return _this;\n }\n return TreemapSeriesNodeClickEvent;\n}(TreemapSeriesNodeBaseClickEvent));\nvar TreemapSeriesNodeDoubleClickEvent = /** @class */ (function (_super) {\n __extends$g(TreemapSeriesNodeDoubleClickEvent, _super);\n function TreemapSeriesNodeDoubleClickEvent() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'nodeDoubleClick';\n return _this;\n }\n return TreemapSeriesNodeDoubleClickEvent;\n}(TreemapSeriesNodeBaseClickEvent));\nvar TreemapSeriesLabel = /** @class */ (function (_super) {\n __extends$g(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$1k([\n Validate(NUMBER(0))\n ], TreemapSeriesLabel.prototype, \"padding\", void 0);\n return TreemapSeriesLabel;\n}(Label$1));\nvar TreemapSeriesTileLabel = /** @class */ (function (_super) {\n __extends$g(TreemapSeriesTileLabel, _super);\n function TreemapSeriesTileLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.wrapping = 'on-space';\n return _this;\n }\n __decorate$1k([\n Validate(TEXT_WRAP)\n ], TreemapSeriesTileLabel.prototype, \"wrapping\", void 0);\n return TreemapSeriesTileLabel;\n}(Label$1));\nvar TreemapValueLabel = /** @class */ (function () {\n function TreemapValueLabel() {\n this.style = (function () {\n var label = new Label$1();\n label.color = 'white';\n return label;\n })();\n }\n __decorate$1k([\n Validate(OPT_STRING)\n ], TreemapValueLabel.prototype, \"key\", void 0);\n __decorate$1k([\n Validate(OPT_STRING)\n ], TreemapValueLabel.prototype, \"name\", void 0);\n __decorate$1k([\n Validate(OPT_FUNCTION)\n ], TreemapValueLabel.prototype, \"formatter\", void 0);\n return TreemapValueLabel;\n}());\nvar TextNodeTag;\n(function (TextNodeTag) {\n TextNodeTag[TextNodeTag[\"Name\"] = 0] = \"Name\";\n TextNodeTag[TextNodeTag[\"Value\"] = 1] = \"Value\";\n})(TextNodeTag || (TextNodeTag = {}));\nvar tempText = new Text();\nfunction getTextSize(text, style) {\n var fontStyle = style.fontStyle, fontWeight = style.fontWeight, fontSize = style.fontSize, fontFamily = style.fontFamily;\n tempText.fontStyle = fontStyle;\n tempText.fontWeight = fontWeight;\n tempText.fontSize = fontSize;\n tempText.fontFamily = fontFamily;\n tempText.text = text;\n tempText.x = 0;\n tempText.y = 0;\n tempText.textAlign = 'left';\n tempText.textBaseline = 'top';\n var _a = tempText.computeBBox(), width = _a.width, height = _a.height;\n return { width: width, height: height };\n}\nfunction validateColor(color) {\n if (typeof color === 'string' && !Color.validColorString(color)) {\n var fallbackColor = 'black';\n Logger.warnOnce(\"invalid Treemap tile colour string \\\"\" + color + \"\\\". Affected treemap tiles will be coloured \" + fallbackColor + \".\");\n return 'black';\n }\n return color;\n}\nvar TreemapTextHighlightStyle = /** @class */ (function () {\n function TreemapTextHighlightStyle() {\n this.color = 'black';\n }\n __decorate$1k([\n Validate(OPT_COLOR_STRING)\n ], TreemapTextHighlightStyle.prototype, \"color\", void 0);\n return TreemapTextHighlightStyle;\n}());\nvar TreemapHighlightStyle = /** @class */ (function (_super) {\n __extends$g(TreemapHighlightStyle, _super);\n function TreemapHighlightStyle() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.text = new TreemapTextHighlightStyle();\n return _this;\n }\n return TreemapHighlightStyle;\n}(HighlightStyle));\nvar TreemapSeries = /** @class */ (function (_super) {\n __extends$g(TreemapSeries, _super);\n function TreemapSeries() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.groupSelection = Selection.select(_this.contentGroup, Group);\n _this.highlightSelection = Selection.select(_this.highlightGroup, Group);\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 TreemapSeriesTileLabel();\n label.color = 'white';\n label.fontWeight = 'bold';\n label.fontSize = 18;\n return label;\n })(),\n medium: (function () {\n var label = new TreemapSeriesTileLabel();\n label.color = 'white';\n label.fontWeight = 'bold';\n label.fontSize = 14;\n return label;\n })(),\n small: (function () {\n var label = new TreemapSeriesTileLabel();\n label.color = 'white';\n label.fontWeight = 'bold';\n label.fontSize = 10;\n return label;\n })(),\n formatter: undefined,\n value: new TreemapValueLabel(),\n };\n _this.nodePadding = 2;\n _this.nodeGap = 0;\n _this.labelKey = 'label';\n _this.sizeKey = 'size';\n _this.colorKey = 'color';\n _this.colorDomain = [-5, 5];\n _this.colorRange = ['#cb4b3f', '#6acb64'];\n _this.groupFill = '#272931';\n _this.groupStroke = 'black';\n _this.groupStrokeWidth = 1;\n _this.tileStroke = 'black';\n _this.tileStrokeWidth = 1;\n _this.gradient = true;\n _this.formatter = undefined;\n _this.colorName = 'Change';\n _this.rootName = 'Root';\n _this.highlightGroups = true;\n _this.tileShadow = new DropShadow();\n _this.labelShadow = new DropShadow();\n _this.tooltip = new TreemapSeriesTooltip();\n _this.highlightStyle = new TreemapHighlightStyle();\n return _this;\n }\n TreemapSeries.prototype.getNodePaddingTop = function (nodeDatum, bbox) {\n var _a;\n var _b = this, title = _b.title, subtitle = _b.subtitle, nodePadding = _b.nodePadding;\n var label = nodeDatum.label;\n if (nodeDatum.isLeaf || !label || nodeDatum.depth === 0) {\n return nodePadding;\n }\n var font = nodeDatum.depth > 1 ? subtitle : title;\n var textSize = getTextSize(label, font);\n var heightRatioThreshold = 3;\n if (font.fontSize > bbox.width / heightRatioThreshold || font.fontSize > bbox.height / heightRatioThreshold) {\n return nodePadding;\n }\n if (textSize.height >= bbox.height) {\n return nodePadding;\n }\n return textSize.height + nodePadding + ((_a = font.padding) !== null && _a !== void 0 ? _a : 0);\n };\n TreemapSeries.prototype.getNodePadding = function (nodeDatum, bbox) {\n var nodePadding = this.nodePadding;\n var top = this.getNodePaddingTop(nodeDatum, bbox);\n return {\n top: top,\n right: nodePadding,\n bottom: nodePadding,\n left: nodePadding,\n };\n };\n /**\n * Squarified Treemap algorithm\n * https://www.win.tue.nl/~vanwijk/stm.pdf\n */\n TreemapSeries.prototype.squarify = function (nodeDatum, bbox, outputNodesBoxes) {\n if (outputNodesBoxes === void 0) { outputNodesBoxes = new Map(); }\n if (bbox.width <= 0 || bbox.height <= 0) {\n return outputNodesBoxes;\n }\n outputNodesBoxes.set(nodeDatum, bbox);\n var targetTileAspectRatio = 1; // The width and height will tend to this ratio\n var padding = this.getNodePadding(nodeDatum, bbox);\n var width = bbox.width - padding.left - padding.right;\n var height = bbox.height - padding.top - padding.bottom;\n if (width <= 0 || height <= 0 || nodeDatum.value <= 0) {\n return outputNodesBoxes;\n }\n var stackSum = 0;\n var startIndex = 0;\n var minRatioDiff = Infinity;\n var partitionSum = nodeDatum.value;\n var children = nodeDatum.children;\n var innerBox = new BBox(bbox.x + padding.left, bbox.y + padding.top, width, height);\n var partition = innerBox.clone();\n for (var i = 0; i < children.length; i++) {\n var value = children[i].value;\n var firstValue = children[startIndex].value;\n var isVertical_1 = partition.width < partition.height;\n stackSum += value;\n var partThickness = isVertical_1 ? partition.height : partition.width;\n var partLength = isVertical_1 ? partition.width : partition.height;\n var firstTileLength = (partLength * firstValue) / stackSum;\n var stackThickness = (partThickness * stackSum) / partitionSum;\n var ratio = Math.max(firstTileLength, stackThickness) / Math.min(firstTileLength, stackThickness);\n var diff = Math.abs(targetTileAspectRatio - ratio);\n if (diff < minRatioDiff) {\n minRatioDiff = diff;\n continue;\n }\n // Go one step back and process the best match\n stackSum -= value;\n stackThickness = (partThickness * stackSum) / partitionSum;\n var start_1 = isVertical_1 ? partition.x : partition.y;\n for (var j = startIndex; j < i; j++) {\n var child = children[j];\n var x = isVertical_1 ? start_1 : partition.x;\n var y = isVertical_1 ? partition.y : start_1;\n var length_1 = (partLength * child.value) / stackSum;\n var width_1 = isVertical_1 ? length_1 : stackThickness;\n var height_1 = isVertical_1 ? stackThickness : length_1;\n var childBox = new BBox(x, y, width_1, height_1);\n this.applyGap(innerBox, childBox);\n this.squarify(child, childBox, outputNodesBoxes);\n partitionSum -= child.value;\n start_1 += length_1;\n }\n if (isVertical_1) {\n partition.y += stackThickness;\n partition.height -= stackThickness;\n }\n else {\n partition.x += stackThickness;\n partition.width -= stackThickness;\n }\n startIndex = i;\n stackSum = 0;\n minRatioDiff = Infinity;\n i--;\n }\n // Process remaining space\n var isVertical = partition.width < partition.height;\n var start = isVertical ? partition.x : partition.y;\n for (var i = startIndex; i < children.length; i++) {\n var x = isVertical ? start : partition.x;\n var y = isVertical ? partition.y : start;\n var part = children[i].value / partitionSum;\n var width_2 = partition.width * (isVertical ? part : 1);\n var height_2 = partition.height * (isVertical ? 1 : part);\n var childBox = new BBox(x, y, width_2, height_2);\n this.applyGap(innerBox, childBox);\n this.squarify(children[i], childBox, outputNodesBoxes);\n start += isVertical ? width_2 : height_2;\n }\n return outputNodesBoxes;\n };\n TreemapSeries.prototype.applyGap = function (innerBox, childBox) {\n var gap = this.nodeGap / 2;\n var getBounds = function (box) {\n return {\n left: box.x,\n top: box.y,\n right: box.x + box.width,\n bottom: box.y + box.height,\n };\n };\n var innerBounds = getBounds(innerBox);\n var childBounds = getBounds(childBox);\n var sides = Object.keys(innerBounds);\n sides.forEach(function (side) {\n if (!isEqual(innerBounds[side], childBounds[side])) {\n childBox.shrink(gap, side);\n }\n });\n };\n TreemapSeries.prototype.processData = function () {\n return __awaiter$1(this, void 0, void 0, function () {\n var _a, data, sizeKey, labelKey, colorKey, colorDomain, colorRange, groupFill, labelFormatter, colorScale, createTreeNodeDatum;\n var _this = this;\n return __generator$1(this, function (_b) {\n if (!this.data) {\n return [2 /*return*/];\n }\n _a = this, data = _a.data, sizeKey = _a.sizeKey, labelKey = _a.labelKey, colorKey = _a.colorKey, colorDomain = _a.colorDomain, colorRange = _a.colorRange, groupFill = _a.groupFill;\n labelFormatter = this.labels.formatter;\n colorScale = new ColorScale();\n colorScale.domain = colorDomain;\n colorScale.range = colorRange;\n colorScale.update();\n createTreeNodeDatum = function (datum, depth, parent) {\n var _a, _b, _c, _d;\n if (depth === void 0) { depth = 0; }\n var label;\n if (labelFormatter) {\n label = _this.ctx.callbackCache.call(labelFormatter, { datum: datum });\n }\n if (label !== undefined) ;\n else if (labelKey) {\n label = (_a = datum[labelKey]) !== null && _a !== void 0 ? _a : '';\n }\n else {\n label = '';\n }\n var colorScaleValue = colorKey ? (_b = datum[colorKey]) !== null && _b !== void 0 ? _b : depth : depth;\n colorScaleValue = validateColor(colorScaleValue);\n var isLeaf = !datum.children;\n var fill = groupFill;\n if (typeof colorScaleValue === 'string') {\n fill = colorScaleValue;\n }\n else if (isLeaf || !groupFill) {\n fill = colorScale.convert(colorScaleValue);\n }\n var nodeDatum = {\n datum: datum,\n depth: depth,\n parent: parent,\n value: 0,\n label: label,\n fill: fill,\n series: _this,\n isLeaf: isLeaf,\n children: [],\n };\n if (isLeaf) {\n nodeDatum.value = sizeKey ? (_c = datum[sizeKey]) !== null && _c !== void 0 ? _c : 1 : 1;\n }\n else {\n (_d = datum.children) === null || _d === void 0 ? void 0 : _d.forEach(function (child) {\n var childNodeDatum = createTreeNodeDatum(child, depth + 1, nodeDatum);\n var value = childNodeDatum.value;\n if (isNaN(value) || !isFinite(value) || value === 0) {\n return;\n }\n nodeDatum.value += value;\n nodeDatum.children.push(childNodeDatum);\n });\n nodeDatum.children.sort(function (a, b) {\n return b.value - a.value;\n });\n }\n return nodeDatum;\n };\n this.dataRoot = createTreeNodeDatum(data);\n return [2 /*return*/];\n });\n });\n };\n TreemapSeries.prototype.createNodeData = function () {\n return __awaiter$1(this, void 0, void 0, function () {\n return __generator$1(this, function (_a) {\n return [2 /*return*/, []];\n });\n });\n };\n TreemapSeries.prototype.update = function () {\n return __awaiter$1(this, void 0, void 0, function () {\n return __generator$1(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.updateSelections()];\n case 1:\n _a.sent();\n return [4 /*yield*/, this.updateNodes()];\n case 2:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n TreemapSeries.prototype.updateSelections = function () {\n return __awaiter$1(this, void 0, void 0, function () {\n var _a, chart, dataRoot, seriesRect, descendants, traverse, _b, groupSelection, highlightSelection, update;\n return __generator$1(this, function (_c) {\n if (!this.nodeDataRefresh) {\n return [2 /*return*/];\n }\n this.nodeDataRefresh = false;\n _a = this, chart = _a.chart, dataRoot = _a.dataRoot;\n if (!chart || !dataRoot) {\n return [2 /*return*/];\n }\n seriesRect = chart.getSeriesRect();\n if (!seriesRect) {\n return [2 /*return*/];\n }\n descendants = [];\n traverse = function (datum) {\n var _a;\n descendants.push(datum);\n (_a = datum.children) === null || _a === void 0 ? void 0 : _a.forEach(traverse);\n };\n traverse(dataRoot);\n _b = this, groupSelection = _b.groupSelection, highlightSelection = _b.highlightSelection;\n update = function (selection) {\n return selection.update(descendants, function (group) {\n var rect = new Rect();\n var nameLabel = new Text();\n nameLabel.tag = TextNodeTag.Name;\n var valueLabel = new Text();\n valueLabel.tag = TextNodeTag.Value;\n group.append([rect, nameLabel, valueLabel]);\n });\n };\n this.groupSelection = update(groupSelection);\n this.highlightSelection = update(highlightSelection);\n return [2 /*return*/];\n });\n });\n };\n TreemapSeries.prototype.isDatumHighlighted = function (datum) {\n var _a;\n var highlightedDatum = (_a = this.ctx.highlightManager) === null || _a === void 0 ? void 0 : _a.getActiveHighlight();\n return datum === highlightedDatum && (datum.isLeaf || this.highlightGroups);\n };\n TreemapSeries.prototype.getTileFormat = function (datum, isHighlighted) {\n var _a;\n var _b = this, formatter = _b.formatter, callbackCache = _b.ctx.callbackCache;\n if (!formatter) {\n return {};\n }\n var _c = this, gradient = _c.gradient, colorKey = _c.colorKey, labelKey = _c.labelKey, sizeKey = _c.sizeKey, tileStroke = _c.tileStroke, tileStrokeWidth = _c.tileStrokeWidth, groupStroke = _c.groupStroke, groupStrokeWidth = _c.groupStrokeWidth;\n var stroke = datum.isLeaf ? tileStroke : groupStroke;\n var strokeWidth = datum.isLeaf ? tileStrokeWidth : groupStrokeWidth;\n var result = callbackCache.call(formatter, {\n seriesId: this.id,\n datum: datum.datum,\n depth: datum.depth,\n parent: (_a = datum.parent) === null || _a === void 0 ? void 0 : _a.datum,\n colorKey: colorKey,\n sizeKey: sizeKey,\n labelKey: labelKey,\n fill: datum.fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n gradient: gradient,\n highlighted: isHighlighted,\n });\n return result !== null && result !== void 0 ? result : {};\n };\n TreemapSeries.prototype.updateNodes = function () {\n return __awaiter$1(this, void 0, void 0, function () {\n var _a, gradient, _b, _c, highlightedFill, highlightedFillOpacity, highlightedStroke, highlightedDatumStrokeWidth, highlightedTextColor, tileStroke, tileStrokeWidth, groupStroke, groupStrokeWidth, tileShadow, labelShadow, dataRoot, seriesRect, boxes, labelMeta, highlightedSubtree, updateRectFn, updateLabelFn;\n var _this = this;\n return __generator$1(this, function (_d) {\n if (!this.chart)\n return [2 /*return*/];\n _a = this, gradient = _a.gradient, _b = _a.highlightStyle, _c = _b.item, highlightedFill = _c.fill, highlightedFillOpacity = _c.fillOpacity, highlightedStroke = _c.stroke, highlightedDatumStrokeWidth = _c.strokeWidth, highlightedTextColor = _b.text.color, tileStroke = _a.tileStroke, tileStrokeWidth = _a.tileStrokeWidth, groupStroke = _a.groupStroke, groupStrokeWidth = _a.groupStrokeWidth, tileShadow = _a.tileShadow, labelShadow = _a.labelShadow, dataRoot = _a.dataRoot;\n if (!dataRoot)\n return [2 /*return*/];\n seriesRect = this.chart.getSeriesRect();\n boxes = this.squarify(dataRoot, new BBox(0, 0, seriesRect.width, seriesRect.height));\n labelMeta = this.buildLabelMeta(boxes);\n highlightedSubtree = this.getHighlightedSubtree(dataRoot);\n this.updateNodeMidPoint(boxes);\n updateRectFn = function (rect, datum, isDatumHighlighted) {\n var _a, _b, _c, _d, _e, _f;\n var box = boxes.get(datum);\n if (!box) {\n rect.visible = false;\n return;\n }\n var fill = isDatumHighlighted && highlightedFill !== undefined ? highlightedFill : datum.fill;\n var fillOpacity = (_a = (isDatumHighlighted ? highlightedFillOpacity : 1)) !== null && _a !== void 0 ? _a : 1;\n var stroke = groupStroke;\n if (isDatumHighlighted && highlightedStroke !== undefined) {\n stroke = highlightedStroke;\n }\n else if (datum.isLeaf) {\n stroke = tileStroke;\n }\n var strokeWidth = groupStrokeWidth;\n if (isDatumHighlighted && highlightedDatumStrokeWidth !== undefined) {\n strokeWidth = highlightedDatumStrokeWidth;\n }\n else if (datum.isLeaf) {\n strokeWidth = tileStrokeWidth;\n }\n var format = _this.getTileFormat(datum, isDatumHighlighted);\n var fillColor = validateColor((_b = format === null || format === void 0 ? void 0 : format.fill) !== null && _b !== void 0 ? _b : fill);\n if ((_c = format === null || format === void 0 ? void 0 : format.gradient) !== null && _c !== void 0 ? _c : gradient) {\n var start = Color.tryParseFromString(fill).brighter().toString();\n var end = Color.tryParseFromString(fill).darker().toString();\n rect.fill = \"linear-gradient(180deg, \" + start + \", \" + end + \")\";\n }\n else {\n rect.fill = fillColor;\n }\n rect.fillOpacity = (_d = format === null || format === void 0 ? void 0 : format.fillOpacity) !== null && _d !== void 0 ? _d : fillOpacity;\n rect.stroke = validateColor((_e = format === null || format === void 0 ? void 0 : format.stroke) !== null && _e !== void 0 ? _e : stroke);\n rect.strokeWidth = (_f = format === null || format === void 0 ? void 0 : format.strokeWidth) !== null && _f !== void 0 ? _f : strokeWidth;\n rect.fillShadow = tileShadow;\n rect.crisp = true;\n rect.x = box.x;\n rect.y = box.y;\n rect.width = box.width;\n rect.height = box.height;\n rect.visible = true;\n };\n this.groupSelection.selectByClass(Rect).forEach(function (rect) { return updateRectFn(rect, rect.datum, false); });\n this.highlightSelection.selectByClass(Rect).forEach(function (rect) {\n var isDatumHighlighted = _this.isDatumHighlighted(rect.datum);\n rect.visible = isDatumHighlighted || highlightedSubtree.has(rect.datum);\n if (rect.visible) {\n updateRectFn(rect, rect.datum, isDatumHighlighted);\n }\n });\n updateLabelFn = function (text, datum, highlighted, key) {\n var meta = labelMeta.get(datum);\n var label = meta === null || meta === void 0 ? void 0 : meta[key];\n if (!label) {\n text.visible = false;\n return;\n }\n text.text = label.text;\n text.fontFamily = label.style.fontFamily;\n text.fontSize = label.style.fontSize;\n text.fontWeight = label.style.fontWeight;\n text.fill = highlighted ? highlightedTextColor !== null && highlightedTextColor !== void 0 ? highlightedTextColor : label.style.color : label.style.color;\n text.fillShadow = highlighted ? undefined : labelShadow;\n text.textAlign = label.hAlign;\n text.textBaseline = label.vAlign;\n text.x = label.x;\n text.y = label.y;\n text.visible = true;\n };\n this.groupSelection\n .selectByTag(TextNodeTag.Name)\n .forEach(function (text) { return updateLabelFn(text, text.datum, false, 'label'); });\n this.highlightSelection.selectByTag(TextNodeTag.Name).forEach(function (text) {\n var isDatumHighlighted = _this.isDatumHighlighted(text.datum);\n text.visible = isDatumHighlighted || highlightedSubtree.has(text.datum);\n if (text.visible) {\n updateLabelFn(text, text.datum, isDatumHighlighted, 'label');\n }\n });\n this.groupSelection\n .selectByTag(TextNodeTag.Value)\n .forEach(function (text) { return updateLabelFn(text, text.datum, false, 'value'); });\n this.highlightSelection.selectByTag(TextNodeTag.Value).forEach(function (text) {\n var isDatumHighlighted = _this.isDatumHighlighted(text.datum);\n text.visible = isDatumHighlighted || highlightedSubtree.has(text.datum);\n if (text.visible) {\n updateLabelFn(text, text.datum, isDatumHighlighted, 'value');\n }\n });\n return [2 /*return*/];\n });\n });\n };\n TreemapSeries.prototype.updateNodeMidPoint = function (boxes) {\n boxes.forEach(function (box, treeNodeDatum) {\n treeNodeDatum.nodeMidPoint = {\n x: box.x + box.width / 2,\n y: box.y,\n };\n });\n };\n TreemapSeries.prototype.getHighlightedSubtree = function (dataRoot) {\n var _this = this;\n var items = new Set();\n var traverse = function (datum) {\n var _a;\n if (_this.isDatumHighlighted(datum) || (datum.parent && items.has(datum.parent))) {\n items.add(datum);\n }\n (_a = datum.children) === null || _a === void 0 ? void 0 : _a.forEach(traverse);\n };\n traverse(dataRoot);\n return items;\n };\n TreemapSeries.prototype.buildLabelMeta = function (boxes) {\n var _a = this, labels = _a.labels, title = _a.title, subtitle = _a.subtitle, nodePadding = _a.nodePadding, labelKey = _a.labelKey, callbackCache = _a.ctx.callbackCache;\n var wrappedRegExp = /-$/m;\n var labelMeta = new Map();\n boxes.forEach(function (box, datum) {\n var _a, _b, _c;\n if (!labelKey || datum.depth === 0) {\n return;\n }\n var availTextWidth = box.width - 2 * nodePadding;\n var availTextHeight = box.height - 2 * nodePadding;\n var isBoxTooSmall = function (labelStyle) {\n var minSizeRatio = 3;\n return (labelStyle.fontSize > box.width / minSizeRatio || labelStyle.fontSize > box.height / minSizeRatio);\n };\n var labelText = datum.isLeaf ? datum.label : datum.label.toUpperCase();\n var valueText = '';\n var valueConfig = labels.value;\n var valueStyle = valueConfig.style;\n var valueMargin = Math.ceil(valueStyle.fontSize * 2 * (Text.defaultLineHeightRatio - 1));\n if (datum.isLeaf) {\n if (valueConfig.formatter) {\n valueText = (_a = callbackCache.call(valueConfig.formatter, { datum: datum.datum })) !== null && _a !== void 0 ? _a : '';\n }\n else if (valueConfig.key) {\n valueText = datum.datum[valueConfig.key];\n }\n }\n var valueSize = getTextSize(valueText, valueStyle);\n if (valueText && valueSize.width > availTextWidth) {\n valueText = '';\n }\n var labelStyle;\n var wrappedText = '';\n if (datum.isLeaf) {\n var pickStyle = function () {\n var e_1, _a;\n var availHeight = availTextHeight - (valueText ? valueStyle.fontSize + valueMargin : 0);\n var labelStyles = [labels.large, labels.medium, labels.small];\n try {\n for (var labelStyles_1 = __values$6(labelStyles), labelStyles_1_1 = labelStyles_1.next(); !labelStyles_1_1.done; labelStyles_1_1 = labelStyles_1.next()) {\n var style = labelStyles_1_1.value;\n var _b = getTextSize(labelText, style), width = _b.width, height = _b.height;\n if (height > availHeight || isBoxTooSmall(style)) {\n continue;\n }\n if (width <= availTextWidth) {\n return { style: style, wrappedText: undefined };\n }\n // Avoid hyphens and ellipsis for large and medium label styles\n var wrapped = Text.wrap(labelText, availTextWidth, availHeight, style, style.wrapping);\n if (wrapped &&\n wrapped !== '\\u2026' &&\n (style === labels.small || !(wrappedRegExp.exec(wrapped) || wrapped.endsWith('\\u2026')))) {\n return { style: style, wrappedText: wrapped };\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (labelStyles_1_1 && !labelStyles_1_1.done && (_a = labelStyles_1.return)) _a.call(labelStyles_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n // Check if small font fits by height\n var smallSize = getTextSize(labelText, labels.small);\n if (smallSize.height <= availHeight && !isBoxTooSmall(labels.small)) {\n return { style: labels.small, wrappedText: undefined };\n }\n return { style: undefined, wrappedText: undefined };\n };\n var result = pickStyle();\n if (!result.style && valueText) {\n valueText = '';\n result = pickStyle();\n }\n labelStyle = (_b = result.style) !== null && _b !== void 0 ? _b : labels.small;\n wrappedText = (_c = result.wrappedText) !== null && _c !== void 0 ? _c : '';\n }\n else if (datum.depth === 1) {\n labelStyle = title;\n }\n else {\n labelStyle = subtitle;\n }\n var labelSize = getTextSize(wrappedText || labelText, labelStyle);\n if (isBoxTooSmall(labelStyle)) {\n // Avoid labels on too small tiles\n return;\n }\n // Crop text if not enough space\n if (labelSize.width > availTextWidth) {\n var textLength = Math.floor((labelText.length * availTextWidth) / labelSize.width) - 1;\n labelText = labelText.substring(0, textLength).trim() + \"\\u2026\";\n }\n valueSize = getTextSize(valueText, valueStyle);\n var hasValueText = valueText &&\n valueSize.width < availTextWidth &&\n valueSize.height + labelSize.height + valueMargin < availTextHeight;\n labelMeta.set(datum, {\n label: __assign$7({ text: wrappedText || labelText, style: labelStyle }, (datum.isLeaf\n ? {\n hAlign: 'center',\n vAlign: 'middle',\n x: box.x + box.width / 2,\n y: box.y + box.height / 2 - (hasValueText ? valueSize.height / 2 + valueMargin / 2 : 0),\n }\n : {\n hAlign: 'left',\n vAlign: 'top',\n x: box.x + nodePadding,\n y: box.y + nodePadding,\n })),\n value: hasValueText\n ? {\n text: valueText,\n style: valueStyle,\n hAlign: 'center',\n vAlign: 'middle',\n x: box.x + box.width / 2,\n y: box.y + box.height / 2 + labelSize.height / 2 + valueMargin / 2,\n }\n : undefined,\n });\n });\n return labelMeta;\n };\n TreemapSeries.prototype.getDomain = function (_direction) {\n return [0, 1];\n };\n TreemapSeries.prototype.getNodeClickEvent = function (event, datum) {\n return new TreemapSeriesNodeClickEvent(this.labelKey, this.sizeKey, this.colorKey, event, datum, this);\n };\n TreemapSeries.prototype.getNodeDoubleClickEvent = function (event, datum) {\n return new TreemapSeriesNodeDoubleClickEvent(this.labelKey, this.sizeKey, this.colorKey, event, datum, this);\n };\n TreemapSeries.prototype.getTooltipHtml = function (nodeDatum) {\n var _a, _b, _c, _d;\n if (!this.highlightGroups && !nodeDatum.isLeaf) {\n return '';\n }\n var _e = this, tooltip = _e.tooltip, sizeKey = _e.sizeKey, labelKey = _e.labelKey, colorKey = _e.colorKey, rootName = _e.rootName, seriesId = _e.id, labels = _e.labels, callbackCache = _e.ctx.callbackCache;\n var datum = nodeDatum.datum;\n var tooltipRenderer = tooltip.renderer;\n var title = nodeDatum.depth ? datum[labelKey] : (_a = datum[labelKey]) !== null && _a !== void 0 ? _a : rootName;\n var content = '';\n var format = this.getTileFormat(nodeDatum, false);\n var color = (_c = (_b = format === null || format === void 0 ? void 0 : format.fill) !== null && _b !== void 0 ? _b : nodeDatum.fill) !== null && _c !== void 0 ? _c : 'gray';\n var valueKey = labels.value.key;\n var valueFormatter = labels.value.formatter;\n if (valueKey || valueFormatter) {\n var valueText = '';\n if (valueFormatter) {\n valueText = callbackCache.call(valueFormatter, { datum: datum });\n }\n else if (valueKey != null) {\n var value = datum[valueKey];\n if (typeof value === 'number' && isFinite(value)) {\n valueText = toFixed(value);\n }\n }\n if (valueText) {\n if (labels.value.name) {\n content += \"\" + labels.value.name + \": \";\n }\n content += valueText;\n }\n }\n var defaults = {\n title: title,\n backgroundColor: color,\n content: content,\n };\n if (tooltipRenderer) {\n return toTooltipHtml$1(tooltipRenderer({\n datum: nodeDatum.datum,\n parent: (_d = nodeDatum.parent) === null || _d === void 0 ? void 0 : _d.datum,\n depth: nodeDatum.depth,\n sizeKey: sizeKey,\n labelKey: labelKey,\n colorKey: colorKey,\n title: title,\n color: color,\n seriesId: seriesId,\n }), defaults);\n }\n if (!title && !content) {\n return '';\n }\n return toTooltipHtml$1(defaults);\n };\n TreemapSeries.prototype.getLegendData = function () {\n // Override point for subclasses.\n return [];\n };\n TreemapSeries.className = 'TreemapSeries';\n TreemapSeries.type = 'treemap';\n __decorate$1k([\n Validate(NUMBER(0))\n ], TreemapSeries.prototype, \"nodePadding\", void 0);\n __decorate$1k([\n Validate(NUMBER(0))\n ], TreemapSeries.prototype, \"nodeGap\", void 0);\n __decorate$1k([\n Validate(STRING)\n ], TreemapSeries.prototype, \"labelKey\", void 0);\n __decorate$1k([\n Validate(OPT_STRING)\n ], TreemapSeries.prototype, \"sizeKey\", void 0);\n __decorate$1k([\n Validate(OPT_STRING)\n ], TreemapSeries.prototype, \"colorKey\", void 0);\n __decorate$1k([\n Validate(NUMBER_ARRAY)\n ], TreemapSeries.prototype, \"colorDomain\", void 0);\n __decorate$1k([\n Validate(COLOR_STRING_ARRAY)\n ], TreemapSeries.prototype, \"colorRange\", void 0);\n __decorate$1k([\n Validate(OPT_STRING)\n ], TreemapSeries.prototype, \"groupFill\", void 0);\n __decorate$1k([\n Validate(OPT_COLOR_STRING)\n ], TreemapSeries.prototype, \"groupStroke\", void 0);\n __decorate$1k([\n Validate(OPT_NUMBER(0))\n ], TreemapSeries.prototype, \"groupStrokeWidth\", void 0);\n __decorate$1k([\n Validate(OPT_COLOR_STRING)\n ], TreemapSeries.prototype, \"tileStroke\", void 0);\n __decorate$1k([\n Validate(OPT_NUMBER(0))\n ], TreemapSeries.prototype, \"tileStrokeWidth\", void 0);\n __decorate$1k([\n Validate(BOOLEAN)\n ], TreemapSeries.prototype, \"gradient\", void 0);\n __decorate$1k([\n Validate(OPT_FUNCTION)\n ], TreemapSeries.prototype, \"formatter\", void 0);\n __decorate$1k([\n Validate(STRING)\n ], TreemapSeries.prototype, \"colorName\", void 0);\n __decorate$1k([\n Validate(STRING)\n ], TreemapSeries.prototype, \"rootName\", void 0);\n __decorate$1k([\n Validate(OPT_BOOLEAN)\n ], TreemapSeries.prototype, \"highlightGroups\", void 0);\n return TreemapSeries;\n}(HierarchySeries));\n\nvar TYPES = {\n area: 'cartesian',\n bar: 'cartesian',\n column: 'cartesian',\n histogram: 'cartesian',\n line: 'cartesian',\n scatter: 'cartesian',\n treemap: 'hierarchy',\n pie: 'polar',\n};\nvar DEFAULTS = {};\nvar CHART_TYPES = {\n has: function (seriesType) {\n return Object.prototype.hasOwnProperty.call(TYPES, seriesType);\n },\n isCartesian: function (seriesType) {\n return TYPES[seriesType] === 'cartesian';\n },\n isPolar: function (seriesType) {\n return TYPES[seriesType] === 'polar';\n },\n isHierarchy: function (seriesType) {\n return TYPES[seriesType] === 'hierarchy';\n },\n get seriesTypes() {\n return Object.keys(TYPES);\n },\n get cartesianTypes() {\n var _this = this;\n return this.seriesTypes.filter(function (t) { return _this.isCartesian(t); });\n },\n get polarTypes() {\n var _this = this;\n return this.seriesTypes.filter(function (t) { return _this.isPolar(t); });\n },\n get hierarchyTypes() {\n var _this = this;\n return this.seriesTypes.filter(function (t) { return _this.isHierarchy(t); });\n },\n};\nfunction registerChartSeriesType(seriesType, chartType) {\n TYPES[seriesType] = chartType;\n}\nfunction registerChartDefaults(chartType, defaults) {\n var _a;\n DEFAULTS[chartType] = jsonMerge([(_a = DEFAULTS[chartType]) !== null && _a !== void 0 ? _a : {}, defaults]);\n}\nfunction getChartDefaults(chartType) {\n var _a;\n return (_a = DEFAULTS[chartType]) !== null && _a !== void 0 ? _a : {};\n}\n\nvar BUILT_IN_SERIES_FACTORIES = {\n area: AreaSeries,\n bar: BarSeries,\n column: ColumnSeries,\n histogram: HistogramSeries,\n line: LineSeries,\n pie: PieSeries,\n scatter: ScatterSeries,\n treemap: TreemapSeries,\n};\nvar SERIES_FACTORIES = {};\nvar SERIES_DEFAULTS = {};\nvar SERIES_THEME_TEMPLATES = {};\nvar SERIES_PALETTE_FACTORIES = {};\nfunction registerSeries(seriesType, chartType, cstr, defaults, theme, paletteFactory) {\n SERIES_FACTORIES[seriesType] = cstr;\n SERIES_DEFAULTS[seriesType] = defaults;\n SERIES_THEME_TEMPLATES[seriesType] = theme;\n if (paletteFactory) {\n addSeriesPaletteFactory(seriesType, paletteFactory);\n }\n registerChartSeriesType(seriesType, chartType);\n}\nfunction getSeries(chartType, moduleCtx) {\n var _a;\n var seriesConstructor = (_a = SERIES_FACTORIES[chartType]) !== null && _a !== void 0 ? _a : BUILT_IN_SERIES_FACTORIES[chartType];\n if (seriesConstructor) {\n return new seriesConstructor(moduleCtx);\n }\n throw new Error(\"AG Charts - unknown series type: \" + chartType);\n}\nfunction getSeriesDefaults(chartType) {\n return SERIES_DEFAULTS[chartType];\n}\nfunction getSeriesThemeTemplate(chartType) {\n return SERIES_THEME_TEMPLATES[chartType];\n}\nfunction addSeriesPaletteFactory(seriesType, factory) {\n SERIES_PALETTE_FACTORIES[seriesType] = factory;\n}\nfunction getSeriesPaletteFactory(seriesType) {\n return SERIES_PALETTE_FACTORIES[seriesType];\n}\n\nvar DEFAULT_CARTESIAN_CHART_OVERRIDES = {\n axes: [\n {\n type: NumberAxis.type,\n position: 'left',\n },\n {\n type: CategoryAxis.type,\n position: 'bottom',\n },\n ],\n};\nvar DEFAULT_BAR_CHART_OVERRIDES = {\n axes: [\n {\n type: 'number',\n position: 'bottom',\n },\n {\n type: 'category',\n position: 'left',\n },\n ],\n};\nvar DEFAULT_SCATTER_HISTOGRAM_CHART_OVERRIDES = {\n axes: [\n {\n type: 'number',\n position: 'bottom',\n },\n {\n type: 'number',\n position: 'left',\n },\n ],\n};\n\nfunction deepMerge$1(target, source) {\n if (isPlainObject(target) && isPlainObject(source)) {\n var result_1 = {};\n Object.keys(target).forEach(function (key) {\n if (key in source) {\n result_1[key] = deepMerge$1(target[key], source[key]);\n }\n else {\n result_1[key] = target[key];\n }\n });\n Object.keys(source).forEach(function (key) {\n if (!(key in target)) {\n result_1[key] = source[key];\n }\n });\n return result_1;\n }\n if ((Array.isArray(target) && !Array.isArray(source)) || (isObject(target) && !isObject(source))) {\n return target;\n }\n return source;\n}\nfunction isObject(value) {\n return value && typeof value === 'object';\n}\nfunction isPlainObject(x) {\n return isObject(x) && x.constructor === Object;\n}\n\nvar __assign$6 = (undefined && undefined.__assign) || function () {\n __assign$6 = 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$6.apply(this, arguments);\n};\nvar __read$4 = (undefined && undefined.__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 __values$5 = (undefined && undefined.__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 palette$8 = {\n fills: ['#f3622d', '#fba71b', '#57b757', '#41a9c9', '#4258c9', '#9a42c8', '#c84164', '#888888'],\n strokes: ['#aa4520', '#b07513', '#3d803d', '#2d768d', '#2e3e8d', '#6c2e8c', '#8c2d46', '#5f5f5f'],\n};\nvar EXTENDS_AXES_DEFAULTS = Symbol('extends-axes-defaults');\nvar EXTENDS_AXES_LABEL_DEFAULTS = Symbol('extends-axes-label-defaults');\nvar EXTENDS_AXES_LINE_DEFAULTS = Symbol('extends-axes-line-defaults');\nvar EXTENDS_SERIES_DEFAULTS = Symbol('extends-series-defaults');\nvar OVERRIDE_SERIES_LABEL_DEFAULTS = Symbol('override-series-label-defaults');\nvar DEFAULT_FONT_FAMILY = Symbol('default-font');\nvar BOLD = 'bold';\nvar INSIDE = 'inside';\nvar BOTTOM = 'bottom';\nvar ChartTheme = /** @class */ (function () {\n function ChartTheme(options) {\n options = deepMerge$1({}, options !== null && options !== void 0 ? options : {});\n var _a = options.overrides, overrides = _a === void 0 ? null : _a, _b = options.palette, palette = _b === void 0 ? null : _b;\n var defaults = this.createChartConfigPerChartType(this.getDefaults());\n if (overrides) {\n var common = overrides.common, cartesian = overrides.cartesian, polar = overrides.polar, hierarchy = overrides.hierarchy;\n var applyOverrides = function (type, seriesTypes, overrideOpts) {\n if (overrideOpts) {\n defaults[type] = deepMerge$1(defaults[type], overrideOpts);\n seriesTypes.forEach(function (s) {\n var seriesType = s;\n defaults[seriesType] = deepMerge$1(defaults[seriesType], overrideOpts);\n });\n }\n };\n applyOverrides('common', Object.keys(defaults), common);\n applyOverrides('cartesian', CHART_TYPES.cartesianTypes, cartesian);\n applyOverrides('polar', CHART_TYPES.polarTypes, polar);\n applyOverrides('hierarchy', CHART_TYPES.hierarchyTypes, hierarchy);\n CHART_TYPES.seriesTypes.forEach(function (s) {\n var _a;\n var seriesType = s;\n var chartConfig = overrides[seriesType];\n if (chartConfig) {\n if (chartConfig.series) {\n chartConfig.series = (_a = {}, _a[seriesType] = chartConfig.series, _a);\n }\n defaults[seriesType] = deepMerge$1(defaults[seriesType], chartConfig);\n }\n });\n }\n this.palette = palette !== null && palette !== void 0 ? palette : this.getPalette();\n this.config = Object.freeze(defaults);\n }\n ChartTheme.prototype.getPalette = function () {\n return palette$8;\n };\n ChartTheme.getAxisDefaults = function () {\n return {\n top: {},\n right: {},\n bottom: {},\n left: {},\n title: {\n enabled: false,\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: undefined,\n color: 'rgb(87, 87, 87)',\n formatter: undefined,\n autoRotate: false,\n avoidCollisions: true,\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 },\n gridStyle: [\n {\n stroke: 'rgb(219, 219, 219)',\n lineDash: [4, 2],\n },\n ],\n crossLines: {\n enabled: false,\n fill: 'rgb(187,221,232)',\n stroke: 'rgb(70,162,192)',\n strokeWidth: 1,\n label: {\n enabled: false,\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: this.fontFamily,\n padding: 5,\n color: 'rgb(87, 87, 87)',\n rotation: undefined,\n },\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 highlightStyle: {\n item: {\n fill: 'yellow',\n fillOpacity: 1,\n },\n series: {\n dimOpacity: 1,\n },\n text: {\n color: 'black',\n },\n },\n nodeClickRange: 'exact',\n };\n };\n ChartTheme.getBarSeriesDefaults = function () {\n return __assign$6(__assign$6({}, this.getSeriesDefaults()), { fillOpacity: 1, strokeOpacity: 1, 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.getLineSeriesDefaults = function () {\n var seriesDefaults = this.getSeriesDefaults();\n return __assign$6(__assign$6({}, seriesDefaults), { tooltip: __assign$6(__assign$6({}, seriesDefaults.tooltip), { format: undefined, position: {\n type: 'node',\n } }) });\n };\n ChartTheme.getAreaSeriesDefaults = function () {\n var seriesDefaults = this.getSeriesDefaults();\n return __assign$6(__assign$6({}, seriesDefaults), { nodeClickRange: 'nearest', tooltip: __assign$6(__assign$6({}, seriesDefaults.tooltip), { position: {\n type: 'node',\n } }) });\n };\n ChartTheme.getScatterSeriesDefaults = function () {\n var seriesDefaults = this.getSeriesDefaults();\n return __assign$6(__assign$6({}, seriesDefaults), { tooltip: __assign$6(__assign$6({}, seriesDefaults.tooltip), { position: {\n type: 'node',\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.getCaptionWrappingDefaults = function () {\n return 'hyphenate';\n };\n ChartTheme.getChartDefaults = function () {\n return {\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 text: 'Title',\n fontStyle: undefined,\n fontWeight: BOLD,\n fontSize: 16,\n fontFamily: this.fontFamily,\n color: 'rgb(70, 70, 70)',\n wrapping: ChartTheme.getCaptionWrappingDefaults(),\n },\n subtitle: {\n enabled: false,\n text: 'Subtitle',\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: this.fontFamily,\n color: 'rgb(140, 140, 140)',\n wrapping: ChartTheme.getCaptionWrappingDefaults(),\n },\n footnote: {\n enabled: false,\n text: 'Footnote',\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: this.fontFamily,\n color: 'rgb(140, 140, 140)',\n spacing: 30,\n wrapping: ChartTheme.getCaptionWrappingDefaults(),\n },\n legend: {\n position: BOTTOM,\n spacing: 20,\n listeners: {},\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 reverseOrder: false,\n pagination: {\n marker: {\n size: 12,\n },\n activeStyle: {\n fill: 'rgb(70, 70, 70)',\n },\n inactiveStyle: {\n fill: 'rgb(219, 219, 219)',\n },\n highlightStyle: {\n fill: 'rgb(70, 70, 70)',\n },\n label: {\n color: 'rgb(70, 70, 70)',\n },\n },\n },\n tooltip: {\n enabled: true,\n range: 'nearest',\n delay: 0,\n },\n listeners: {},\n };\n };\n ChartTheme.prototype.createChartConfigPerChartType = function (config) {\n var _this = this;\n var typeToAliases = {\n cartesian: CHART_TYPES.cartesianTypes,\n polar: CHART_TYPES.polarTypes,\n hierarchy: CHART_TYPES.hierarchyTypes,\n groupedCategory: [],\n };\n Object.entries(typeToAliases).forEach(function (_a) {\n var _b = __read$4(_a, 2), nextType = _b[0], aliases = _b[1];\n var type = nextType;\n var typeDefaults = _this.templateTheme(getChartDefaults(type));\n aliases.forEach(function (next) {\n var alias = next;\n if (!config[alias]) {\n config[alias] = deepMerge$1({}, config[type]);\n deepMerge$1(config[alias], typeDefaults);\n }\n });\n });\n return config;\n };\n ChartTheme.prototype.getDefaults = function () {\n var _this = this;\n var defaults = deepMerge$1({}, ChartTheme.defaults);\n var getOverridesByType = function (chartType, seriesTypes) {\n var result = _this.templateTheme(getChartDefaults(chartType));\n result.series = seriesTypes.reduce(function (obj, seriesType) {\n var template = getSeriesThemeTemplate(seriesType);\n if (template) {\n obj[seriesType] = _this.templateTheme(template);\n }\n return obj;\n }, {});\n if (chartType === 'cartesian' || chartType === 'polar') {\n result.axes = AXIS_TYPES.axesTypes.reduce(function (obj, axisType) {\n var template = getAxisThemeTemplate(axisType);\n if (template) {\n obj[axisType] = _this.templateTheme(template);\n }\n return obj;\n }, {});\n }\n return result;\n };\n var extension = {\n cartesian: getOverridesByType('cartesian', CHART_TYPES.cartesianTypes),\n groupedCategory: getOverridesByType('cartesian', CHART_TYPES.cartesianTypes),\n polar: getOverridesByType('polar', CHART_TYPES.polarTypes),\n hierarchy: getOverridesByType('hierarchy', CHART_TYPES.hierarchyTypes),\n };\n return deepMerge$1(defaults, extension);\n };\n ChartTheme.prototype.templateTheme = function (themeTemplate) {\n var themeInstance = jsonMerge([themeTemplate]);\n var _a = this.getTemplateParameters(), extensions = _a.extensions, properties = _a.properties;\n jsonWalk(themeInstance, function (_, node) {\n var e_1, _a;\n if (node['__extends__']) {\n var key = node['__extends__'];\n var source_1 = extensions.get(key);\n if (source_1 == null) {\n throw new Error('AG Charts - no template variable provided for: ' + key);\n }\n Object.keys(source_1).forEach(function (key) {\n if (!(key in node)) {\n node[key] = source_1[key];\n }\n });\n delete node['__extends__'];\n }\n if (node['__overrides__']) {\n var key = node['__overrides__'];\n var source = extensions.get(key);\n if (source == null) {\n throw new Error('AG Charts - no template variable provided for: ' + key);\n }\n Object.assign(node, source);\n delete node['__overrides__'];\n }\n try {\n for (var _b = __values$5(Object.entries(node)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var _d = __read$4(_c.value, 2), name_1 = _d[0], value = _d[1];\n if (properties.has(value)) {\n node[name_1] = properties.get(value);\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 }, {});\n return themeInstance;\n };\n ChartTheme.prototype.getTemplateParameters = function () {\n var extensions = new Map();\n extensions.set(EXTENDS_AXES_DEFAULTS, ChartTheme.getAxisDefaults());\n extensions.set(EXTENDS_AXES_LABEL_DEFAULTS, ChartTheme.getAxisDefaults().label);\n extensions.set(EXTENDS_AXES_LINE_DEFAULTS, ChartTheme.getAxisDefaults().line);\n extensions.set(EXTENDS_SERIES_DEFAULTS, ChartTheme.getSeriesDefaults());\n extensions.set(OVERRIDE_SERIES_LABEL_DEFAULTS, {});\n var properties = new Map();\n properties.set(DEFAULT_FONT_FAMILY, ChartTheme.fontFamily);\n return {\n extensions: extensions,\n properties: properties,\n };\n };\n ChartTheme.prototype.mergeWithParentDefaults = function (parentDefaults, defaults) {\n return deepMerge$1(parentDefaults, defaults);\n };\n ChartTheme.fontFamily = 'Verdana, sans-serif';\n ChartTheme.cartesianDefaults = __assign$6(__assign$6({}, ChartTheme.getChartDefaults()), { axes: {\n number: __assign$6({}, ChartTheme.getAxisDefaults()),\n log: __assign$6(__assign$6({}, ChartTheme.getAxisDefaults()), { base: 10 }),\n category: __assign$6(__assign$6({}, ChartTheme.getAxisDefaults()), { groupPaddingInner: 0.1, label: __assign$6(__assign$6({}, ChartTheme.getAxisDefaults().label), { autoRotate: true }) }),\n groupedCategory: __assign$6({}, ChartTheme.getAxisDefaults()),\n time: __assign$6({}, ChartTheme.getAxisDefaults()),\n }, series: {\n column: __assign$6({}, ChartTheme.getBarSeriesDefaults()),\n bar: __assign$6({}, ChartTheme.getBarSeriesDefaults()),\n line: __assign$6(__assign$6({}, ChartTheme.getLineSeriesDefaults()), { title: undefined, strokeWidth: 2, strokeOpacity: 1, lineDash: [0], lineDashOffset: 0, marker: __assign$6(__assign$6({}, ChartTheme.getCartesianSeriesMarkerDefaults()), { fillOpacity: 1, strokeOpacity: 1 }), 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$6(__assign$6({}, ChartTheme.getScatterSeriesDefaults()), { sizeName: 'Size', labelName: 'Label', marker: __assign$6({}, 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$6(__assign$6({}, ChartTheme.getAreaSeriesDefaults()), { 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$6(__assign$6({}, ChartTheme.getCartesianSeriesMarkerDefaults()), { fillOpacity: 1, strokeOpacity: 1, 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$6(__assign$6({}, ChartTheme.getSeriesDefaults()), { strokeWidth: 1, fillOpacity: 1, strokeOpacity: 1, lineDash: [0], lineDashOffset: 0, areaPlot: false, 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 }, shadow: {\n enabled: true,\n color: 'rgba(0, 0, 0, 0.5)',\n xOffset: 0,\n yOffset: 0,\n blur: 5,\n } }),\n } });\n ChartTheme.polarDefaults = __assign$6(__assign$6({}, ChartTheme.getChartDefaults()), { series: {\n pie: __assign$6(__assign$6({}, ChartTheme.getSeriesDefaults()), { title: {\n enabled: true,\n fontStyle: undefined,\n fontWeight: 'bold',\n fontSize: 14,\n fontFamily: ChartTheme.fontFamily,\n color: 'rgb(70, 70, 70)',\n spacing: 0,\n }, radiusKey: undefined, radiusName: undefined, calloutLabelKey: undefined, calloutLabelName: undefined, sectorLabelKey: undefined, sectorLabelName: undefined, calloutLabel: {\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: 0,\n }, sectorLabel: {\n enabled: true,\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: ChartTheme.fontFamily,\n color: 'rgb(70, 70, 70)',\n positionOffset: 0,\n positionRatio: 0.5,\n }, calloutLine: {\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 }, innerLabels: {\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: ChartTheme.fontFamily,\n color: 'rgb(70, 70, 70)',\n margin: 2,\n } }),\n } });\n ChartTheme.hierarchyDefaults = __assign$6(__assign$6({}, ChartTheme.getChartDefaults()), { series: {\n treemap: __assign$6(__assign$6({}, ChartTheme.getSeriesDefaults()), { showInLegend: false, labelKey: 'label', sizeKey: 'size', colorKey: 'color', colorDomain: [-5, 5], colorRange: ['#cb4b3f', '#6acb64'], groupFill: '#272931', groupStroke: 'black', groupStrokeWidth: 1, tileStroke: 'black', tileStrokeWidth: 1, gradient: true, tileShadow: {\n enabled: false,\n color: 'rgba(0, 0, 0, 0.5)',\n xOffset: 3,\n yOffset: 3,\n blur: 5,\n }, labelShadow: {\n enabled: true,\n color: 'rgba(0, 0, 0, 0.4)',\n xOffset: 1.5,\n yOffset: 1.5,\n blur: 5,\n }, highlightGroups: true, nodePadding: 2, nodeGap: 0, title: {\n enabled: true,\n color: 'white',\n fontStyle: undefined,\n fontWeight: 'bold',\n fontSize: 12,\n fontFamily: 'Verdana, sans-serif',\n padding: 2,\n }, subtitle: {\n enabled: true,\n color: 'white',\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 9,\n fontFamily: 'Verdana, sans-serif',\n padding: 2,\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 wrapping: 'on-space',\n },\n medium: {\n enabled: true,\n fontStyle: undefined,\n fontWeight: 'bold',\n fontSize: 14,\n fontFamily: 'Verdana, sans-serif',\n color: 'white',\n wrapping: 'on-space',\n },\n small: {\n enabled: true,\n fontStyle: undefined,\n fontWeight: 'bold',\n fontSize: 10,\n fontFamily: 'Verdana, sans-serif',\n color: 'white',\n wrapping: 'on-space',\n },\n value: {\n style: {\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.defaults = {\n cartesian: ChartTheme.cartesianDefaults,\n groupedCategory: ChartTheme.cartesianDefaults,\n polar: ChartTheme.polarDefaults,\n hierarchy: ChartTheme.hierarchyDefaults,\n };\n return ChartTheme;\n}());\n\nvar __extends$f = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$5 = (undefined && undefined.__assign) || function () {\n __assign$5 = 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$5.apply(this, arguments);\n};\nvar DarkTheme = /** @class */ (function (_super) {\n __extends$f(DarkTheme, _super);\n function DarkTheme(options) {\n return _super.call(this, options) || this;\n }\n DarkTheme.prototype.getDefaults = function () {\n var _this = this;\n var fontColor = DarkTheme.fontColor;\n var mutedFontColor = DarkTheme.mutedFontColor;\n var axisDefaults = {\n title: {\n color: fontColor,\n },\n label: {\n color: fontColor,\n },\n gridStyle: [\n {\n stroke: 'rgb(88, 88, 88)',\n lineDash: [4, 2],\n },\n ],\n };\n var seriesLabelDefaults = {\n label: {\n color: fontColor,\n },\n };\n var chartAxesDefaults = {\n axes: {\n number: __assign$5({}, axisDefaults),\n category: __assign$5({}, axisDefaults),\n time: __assign$5({}, axisDefaults),\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 legend: {\n item: {\n label: {\n color: fontColor,\n },\n },\n pagination: {\n activeStyle: {\n fill: fontColor,\n },\n inactiveStyle: {\n fill: mutedFontColor,\n },\n highlightStyle: {\n fill: fontColor,\n },\n label: {\n color: fontColor,\n },\n },\n },\n };\n var getOverridesByType = function (seriesTypes) {\n return seriesTypes.reduce(function (obj, seriesType) {\n var template = getSeriesThemeTemplate(seriesType);\n if (template) {\n obj[seriesType] = _this.templateTheme(template);\n }\n return obj;\n }, {});\n };\n return this.mergeWithParentDefaults(_super.prototype.getDefaults.call(this), {\n cartesian: __assign$5(__assign$5(__assign$5({}, chartDefaults), chartAxesDefaults), { series: __assign$5({ line: __assign$5({}, seriesLabelDefaults), bar: __assign$5({}, seriesLabelDefaults), column: __assign$5({}, seriesLabelDefaults), histogram: __assign$5({}, seriesLabelDefaults) }, getOverridesByType(CHART_TYPES.cartesianTypes)) }),\n groupedCategory: __assign$5(__assign$5(__assign$5({}, chartDefaults), chartAxesDefaults), { series: __assign$5({ bar: __assign$5({}, seriesLabelDefaults), column: __assign$5({}, seriesLabelDefaults), histogram: __assign$5({}, seriesLabelDefaults) }, getOverridesByType(CHART_TYPES.cartesianTypes)) }),\n polar: __assign$5(__assign$5({}, chartDefaults), { series: __assign$5({ pie: {\n calloutLabel: {\n color: fontColor,\n },\n sectorLabel: {\n color: fontColor,\n },\n title: {\n color: fontColor,\n },\n innerLabels: {\n color: fontColor,\n },\n } }, getOverridesByType(CHART_TYPES.polarTypes)) }),\n hierarchy: __assign$5(__assign$5({}, chartDefaults), { series: __assign$5({ treemap: {\n tileStroke: 'white',\n groupStroke: 'white',\n title: {\n color: fontColor,\n },\n subtitle: {\n color: mutedFontColor,\n },\n labels: {\n large: {\n color: fontColor,\n },\n medium: {\n color: fontColor,\n },\n small: {\n color: fontColor,\n },\n value: {\n style: {\n color: fontColor,\n },\n },\n },\n } }, getOverridesByType(CHART_TYPES.hierarchyTypes)) }),\n });\n };\n DarkTheme.prototype.getTemplateParameters = function () {\n var result = _super.prototype.getTemplateParameters.call(this);\n result.extensions.set(OVERRIDE_SERIES_LABEL_DEFAULTS, DarkTheme.seriesLabelDefaults.label);\n return result;\n };\n DarkTheme.fontColor = 'rgb(200, 200, 200)';\n DarkTheme.mutedFontColor = 'rgb(150, 150, 150)';\n DarkTheme.seriesLabelDefaults = {\n label: {\n color: DarkTheme.fontColor,\n },\n };\n return DarkTheme;\n}(ChartTheme));\n\nvar __extends$e = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar palette$7 = {\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$e(MaterialLight, _super);\n function MaterialLight() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MaterialLight.prototype.getPalette = function () {\n return palette$7;\n };\n return MaterialLight;\n}(ChartTheme));\n\nvar __extends$d = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar palette$6 = {\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$d(MaterialDark, _super);\n function MaterialDark() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MaterialDark.prototype.getPalette = function () {\n return palette$6;\n };\n return MaterialDark;\n}(DarkTheme));\n\nvar __extends$c = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar palette$5 = {\n fills: ['#c16068', '#a2bf8a', '#ebcc87', '#80a0c3', '#b58dae', '#85c0d1'],\n strokes: ['#874349', '#718661', '#a48f5f', '#5a7088', '#7f637a', '#5d8692'],\n};\nvar PastelLight = /** @class */ (function (_super) {\n __extends$c(PastelLight, _super);\n function PastelLight() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PastelLight.prototype.getPalette = function () {\n return palette$5;\n };\n return PastelLight;\n}(ChartTheme));\n\nvar __extends$b = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar palette$4 = {\n fills: ['#c16068', '#a2bf8a', '#ebcc87', '#80a0c3', '#b58dae', '#85c0d1'],\n strokes: ['#874349', '#718661', '#a48f5f', '#5a7088', '#7f637a', '#5d8692'],\n};\nvar PastelDark = /** @class */ (function (_super) {\n __extends$b(PastelDark, _super);\n function PastelDark() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PastelDark.prototype.getPalette = function () {\n return palette$4;\n };\n return PastelDark;\n}(DarkTheme));\n\nvar __extends$a = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar palette$3 = {\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$a(SolarLight, _super);\n function SolarLight() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SolarLight.prototype.getPalette = function () {\n return palette$3;\n };\n return SolarLight;\n}(ChartTheme));\n\nvar __extends$9 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar palette$2 = {\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$9(SolarDark, _super);\n function SolarDark() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SolarDark.prototype.getPalette = function () {\n return palette$2;\n };\n return SolarDark;\n}(DarkTheme));\n\nvar __extends$8 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar palette$1 = {\n fills: ['#5BC0EB', '#FDE74C', '#9BC53D', '#E55934', '#FA7921', '#fa3081'],\n strokes: ['#4086a4', '#b1a235', '#6c8a2b', '#a03e24', '#af5517', '#af225a'],\n};\nvar VividLight = /** @class */ (function (_super) {\n __extends$8(VividLight, _super);\n function VividLight() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n VividLight.prototype.getPalette = function () {\n return palette$1;\n };\n return VividLight;\n}(ChartTheme));\n\nvar __extends$7 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar palette = {\n fills: ['#5BC0EB', '#FDE74C', '#9BC53D', '#E55934', '#FA7921', '#fa3081'],\n strokes: ['#4086a4', '#b1a235', '#6c8a2b', '#a03e24', '#af5517', '#af225a'],\n};\nvar VividDark = /** @class */ (function (_super) {\n __extends$7(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));\n\nvar __assign$4 = (undefined && undefined.__assign) || function () {\n __assign$4 = 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$4.apply(this, arguments);\n};\nvar lightTheme = function () { return new ChartTheme(); };\nvar darkTheme = function () { return new DarkTheme(); };\nvar lightThemes = {\n undefined: lightTheme,\n null: lightTheme,\n 'ag-default': lightTheme,\n 'ag-material': function () { return new MaterialLight(); },\n 'ag-pastel': function () { return new PastelLight(); },\n 'ag-solar': function () { return new SolarLight(); },\n 'ag-vivid': function () { return new VividLight(); },\n};\nvar darkThemes = {\n undefined: darkTheme,\n null: darkTheme,\n 'ag-default-dark': darkTheme,\n 'ag-material-dark': function () { return new MaterialDark(); },\n 'ag-pastel-dark': function () { return new PastelDark(); },\n 'ag-solar-dark': function () { return new SolarDark(); },\n 'ag-vivid-dark': function () { return new VividDark(); },\n};\nvar themes$1 = __assign$4(__assign$4({}, darkThemes), lightThemes);\nfunction getChartTheme(value) {\n var _a;\n if (value instanceof ChartTheme) {\n return value;\n }\n var stockTheme = themes$1[value];\n if (stockTheme) {\n return stockTheme();\n }\n value = value;\n // Flatten recursive themes.\n var overrides = [];\n var palette;\n while (typeof value === 'object') {\n overrides.push((_a = value.overrides) !== null && _a !== void 0 ? _a : {});\n // Use first palette found, they can't be merged.\n if (value.palette && palette == null) {\n palette = value.palette;\n }\n value = value.baseTheme;\n }\n overrides.reverse();\n var flattenedTheme = __assign$4({ baseTheme: value, overrides: jsonMerge(overrides) }, (palette ? { palette: palette } : {}));\n if (flattenedTheme.baseTheme || flattenedTheme.overrides) {\n var baseTheme = getChartTheme(flattenedTheme.baseTheme);\n return new baseTheme.constructor(flattenedTheme);\n }\n return lightTheme();\n}\n\nvar __assign$3 = (undefined && undefined.__assign) || function () {\n __assign$3 = 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$3.apply(this, arguments);\n};\nvar __values$4 = (undefined && undefined.__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$3 = (undefined && undefined.__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 __spreadArray$2 = (undefined && undefined.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar STACKABLE_SERIES_TYPES = ['bar', 'column', 'area'];\nvar GROUPABLE_SERIES_TYPES = ['bar', 'column'];\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 */\nfunction groupSeriesByType(seriesOptions) {\n var e_1, _a, e_2, _b;\n var _c, _d, _e, _f, _g, _h;\n var groupMap = {};\n var stackMap = {};\n var anyStacked = {};\n var defaultUnstackedGroup = 'default-ag-charts-group';\n var result = [];\n try {\n for (var seriesOptions_1 = __values$4(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 var type = (_c = s.type) !== null && _c !== void 0 ? _c : 'line';\n var stackable = STACKABLE_SERIES_TYPES.includes(type);\n var groupable = GROUPABLE_SERIES_TYPES.includes(type);\n if (!stackable && !groupable) {\n // No need to use index for these cases.\n result.push({ type: 'ungrouped', opts: [s] });\n continue;\n }\n var _j = s, sStacked = _j.stacked, sStackGroup = _j.stackGroup, _k = _j.grouped, sGrouped = _k === void 0 ? undefined : _k, xKey = _j.xKey;\n var stacked = sStackGroup != null || sStacked === true;\n (_d = anyStacked[type]) !== null && _d !== void 0 ? _d : (anyStacked[type] = false);\n anyStacked[type] || (anyStacked[type] = stacked);\n var grouped = sGrouped === true;\n var groupingKey = [sStackGroup !== null && sStackGroup !== void 0 ? sStackGroup : (sStacked === true ? 'stacked' : undefined), grouped ? 'grouped' : undefined]\n .filter(function (v) { return v != null; })\n .join('-');\n if (!groupingKey) {\n groupingKey = defaultUnstackedGroup;\n }\n var indexKey = type + \"-\" + xKey + \"-\" + groupingKey;\n if (stacked && stackable) {\n var updated = ((_e = stackMap[indexKey]) !== null && _e !== void 0 ? _e : (stackMap[indexKey] = { type: 'stack', opts: [] }));\n if (updated.opts.length === 0)\n result.push(updated);\n updated.opts.push(s);\n }\n else if (grouped && groupable) {\n var updated = ((_f = groupMap[indexKey]) !== null && _f !== void 0 ? _f : (groupMap[indexKey] = { type: 'group', opts: [] }));\n if (updated.opts.length === 0)\n result.push(updated);\n updated.opts.push(s);\n }\n else {\n result.push({ type: 'ungrouped', opts: [s] });\n }\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 if (!Object.values(anyStacked).some(function (v) { return v; })) {\n return result;\n }\n try {\n for (var _l = __values$4(Object.entries(groupMap)), _m = _l.next(); !_m.done; _m = _l.next()) {\n var _o = __read$3(_m.value, 2), group = _o[1];\n var type = (_h = (_g = group.opts[0]) === null || _g === void 0 ? void 0 : _g.type) !== null && _h !== void 0 ? _h : 'line';\n if (anyStacked[type] !== true)\n continue;\n group.type = 'stack';\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_m && !_m.done && (_b = _l.return)) _b.call(_l);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return result;\n}\nvar DEBUG = function () { return [true, 'opts'].includes(windowValue('agChartsDebug')); };\n/**\n * Transforms provided series options array into an array containing series options which are compatible with standalone charts series options.\n */\nfunction processSeriesOptions(_opts, seriesOptions) {\n var e_3, _a;\n var result = [];\n var preprocessed = seriesOptions.map(function (series) {\n var _a;\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$3(__assign$3({}, series), { grouped: (_a = series.grouped) !== null && _a !== void 0 ? _a : true });\n }\n return series;\n });\n var grouped = groupSeriesByType(preprocessed);\n var groupCount = grouped.reduce(function (result, next) {\n var _a, _b;\n if (next.type === 'ungrouped')\n return result;\n var seriesType = (_a = next.opts[0].type) !== null && _a !== void 0 ? _a : 'line';\n (_b = result[seriesType]) !== null && _b !== void 0 ? _b : (result[seriesType] = 0);\n result[seriesType] += next.type === 'stack' ? 1 : next.opts.length;\n return result;\n }, {});\n var groupIdx = {};\n var addSeriesGroupingMeta = function (group) {\n var e_4, _a, e_5, _b, e_6, _c;\n var _d, _e;\n var stackIdx = 0;\n var seriesType = (_d = group.opts[0].type) !== null && _d !== void 0 ? _d : 'line';\n (_e = groupIdx[seriesType]) !== null && _e !== void 0 ? _e : (groupIdx[seriesType] = 0);\n if (group.type === 'stack') {\n try {\n for (var _f = __values$4(group.opts), _g = _f.next(); !_g.done; _g = _f.next()) {\n var opts = _g.value;\n opts.seriesGrouping = {\n groupIndex: groupIdx[seriesType],\n groupCount: groupCount[seriesType],\n stackIndex: stackIdx++,\n stackCount: group.opts.length,\n };\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (_g && !_g.done && (_a = _f.return)) _a.call(_f);\n }\n finally { if (e_4) throw e_4.error; }\n }\n groupIdx[seriesType]++;\n }\n else if (group.type === 'group') {\n try {\n for (var _h = __values$4(group.opts), _j = _h.next(); !_j.done; _j = _h.next()) {\n var opts = _j.value;\n opts.seriesGrouping = {\n groupIndex: groupIdx[seriesType],\n groupCount: groupCount[seriesType],\n stackIndex: 0,\n stackCount: 0,\n };\n groupIdx[seriesType]++;\n }\n }\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\n finally {\n try {\n if (_j && !_j.done && (_b = _h.return)) _b.call(_h);\n }\n finally { if (e_5) throw e_5.error; }\n }\n }\n else {\n try {\n for (var _k = __values$4(group.opts), _l = _k.next(); !_l.done; _l = _k.next()) {\n var opts = _l.value;\n opts.seriesGrouping = undefined;\n }\n }\n catch (e_6_1) { e_6 = { error: e_6_1 }; }\n finally {\n try {\n if (_l && !_l.done && (_c = _k.return)) _c.call(_k);\n }\n finally { if (e_6) throw e_6.error; }\n }\n }\n return group.opts;\n };\n if (DEBUG()) {\n Logger.debug('processSeriesOptions() - series grouping: ', grouped);\n }\n try {\n for (var grouped_1 = __values$4(grouped), grouped_1_1 = grouped_1.next(); !grouped_1_1.done; grouped_1_1 = grouped_1.next()) {\n var group = grouped_1_1.value;\n switch (group.opts[0].type) {\n case 'column':\n case 'bar':\n case 'area':\n result.push.apply(result, __spreadArray$2([], __read$3(addSeriesGroupingMeta(group))));\n break;\n case 'line':\n default:\n if (group.opts.length > 1) {\n Logger.warn('unexpected grouping of series type: ' + group.opts[0].type);\n }\n result.push.apply(result, __spreadArray$2([], __read$3(group.opts)));\n break;\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (grouped_1_1 && !grouped_1_1.done && (_a = grouped_1.return)) _a.call(grouped_1);\n }\n finally { if (e_3) throw e_3.error; }\n }\n return result;\n}\n\nvar __assign$2 = (undefined && undefined.__assign) || function () {\n __assign$2 = 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$2.apply(this, arguments);\n};\nvar __values$3 = (undefined && undefined.__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$2 = (undefined && undefined.__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 __spreadArray$1 = (undefined && undefined.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nfunction optionsType(input) {\n var _a, _b, _c, _d;\n return (_d = (_a = input.type) !== null && _a !== void 0 ? _a : (_c = (_b = input.series) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.type) !== null && _d !== void 0 ? _d : 'line';\n}\nfunction isAgCartesianChartOptions(input) {\n var specifiedType = optionsType(input);\n if (specifiedType == null) {\n return true;\n }\n if (specifiedType === 'cartesian') {\n Logger.warnOnce(\"type '\" + specifiedType + \"' is deprecated, use a series type instead\");\n return true;\n }\n return CHART_TYPES.isCartesian(specifiedType);\n}\nfunction isAgHierarchyChartOptions(input) {\n var specifiedType = optionsType(input);\n if (specifiedType == null) {\n return false;\n }\n if (specifiedType === 'hierarchy') {\n Logger.warnOnce(\"type '\" + specifiedType + \"' is deprecated, use a series type instead\");\n return true;\n }\n return CHART_TYPES.isHierarchy(specifiedType);\n}\nfunction isAgPolarChartOptions(input) {\n var specifiedType = optionsType(input);\n if (specifiedType == null) {\n return false;\n }\n if (specifiedType === 'polar') {\n Logger.warnOnce(\"type '\" + specifiedType + \"' is deprecated, use a series type instead\");\n return true;\n }\n return CHART_TYPES.isPolar(specifiedType);\n}\nfunction isSeriesOptionType(input) {\n if (input == null) {\n return false;\n }\n return CHART_TYPES.has(input);\n}\nfunction isAxisOptionType(input) {\n if (input == null) {\n return false;\n }\n return AXIS_TYPES.has(input);\n}\nfunction countArrayElements(input) {\n var e_1, _a;\n var count = 0;\n try {\n for (var input_1 = __values$3(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}\nvar noDataCloneMergeOptions = {\n avoidDeepClone: ['data'],\n};\nfunction prepareOptions(newOptions, fallbackOptions) {\n var e_2, _a, e_3, _b;\n var _c, _d, _e, _f, _g, _h;\n var options = jsonMerge([fallbackOptions, newOptions], noDataCloneMergeOptions);\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 var globalTooltipPositionOptions = (_d = (_c = options.tooltip) === null || _c === void 0 ? void 0 : _c.position) !== null && _d !== void 0 ? _d : {};\n var checkSeriesType = function (type) {\n if (type != null && !(isSeriesOptionType(type) || getSeriesDefaults(type))) {\n throw new Error(\"AG Charts - unknown series type: \" + type + \"; expected one of: \" + CHART_TYPES.seriesTypes);\n }\n };\n checkSeriesType(type);\n try {\n for (var _j = __values$3((_e = options.series) !== null && _e !== void 0 ? _e : []), _k = _j.next(); !_k.done; _k = _j.next()) {\n var seriesType = _k.value.type;\n if (seriesType == null)\n continue;\n checkSeriesType(seriesType);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_k && !_k.done && (_a = _j.return)) _a.call(_j);\n }\n finally { if (e_2) throw e_2.error; }\n }\n options = __assign$2(__assign$2({}, options), { type: type });\n var defaultSeriesType = 'line';\n if (isAgCartesianChartOptions(options)) {\n defaultSeriesType = 'line';\n }\n else if (isAgHierarchyChartOptions(options)) {\n defaultSeriesType = 'treemap';\n }\n else if (isAgPolarChartOptions(options)) {\n defaultSeriesType = 'pie';\n }\n var defaultOverrides = {};\n var seriesDefaults = getSeriesDefaults(type);\n if (seriesDefaults) {\n defaultOverrides = seriesDefaults;\n }\n else if (type === 'bar') {\n defaultOverrides = DEFAULT_BAR_CHART_OVERRIDES;\n }\n else if (type === 'scatter' || type === 'histogram') {\n defaultOverrides = DEFAULT_SCATTER_HISTOGRAM_CHART_OVERRIDES;\n }\n else if (isAgCartesianChartOptions(options)) {\n defaultOverrides = DEFAULT_CARTESIAN_CHART_OVERRIDES;\n }\n removeDisabledOptions(options);\n var _l = prepareMainOptions(defaultOverrides, options), context = _l.context, mergedOptions = _l.mergedOptions, axesThemes = _l.axesThemes, seriesThemes = _l.seriesThemes;\n // Special cases where we have arrays of elements which need their own defaults.\n // Apply series themes before calling processSeriesOptions() as it reduces and renames some\n // properties, and in that case then cannot correctly have themes applied.\n mergedOptions.series = processSeriesOptions(mergedOptions, ((_f = mergedOptions.series) !== null && _f !== void 0 ? _f : []).map(function (s) {\n var type = defaultSeriesType;\n if (s.type) {\n type = s.type;\n }\n else if (isSeriesOptionType(userSuppliedOptionsType)) {\n type = userSuppliedOptionsType;\n }\n var mergedSeries = mergeSeriesOptions(s, type, seriesThemes, globalTooltipPositionOptions);\n if (type === 'pie') {\n preparePieOptions(seriesThemes.pie, s, mergedSeries);\n }\n return mergedSeries;\n })).map(function (s) { return prepareSeries(context, s); });\n var checkAxisType = function (type) {\n var isAxisType = isAxisOptionType(type);\n if (!isAxisType) {\n Logger.warnOnce(\"AG Charts - unknown axis type: \" + type + \"; expected one of: \" + AXIS_TYPES.axesTypes + \", ignoring.\");\n }\n return isAxisType;\n };\n if ('axes' in mergedOptions) {\n var validAxesTypes = true;\n try {\n for (var _m = __values$3((_g = mergedOptions.axes) !== null && _g !== void 0 ? _g : []), _o = _m.next(); !_o.done; _o = _m.next()) {\n var axisType = _o.value.type;\n if (!checkAxisType(axisType)) {\n validAxesTypes = false;\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (_o && !_o.done && (_b = _m.return)) _b.call(_m);\n }\n finally { if (e_3) throw e_3.error; }\n }\n if (!validAxesTypes) {\n mergedOptions.axes = defaultOverrides.axes;\n }\n else {\n mergedOptions.axes = (_h = mergedOptions.axes) === null || _h === void 0 ? void 0 : _h.map(function (axis) {\n var _a, _b;\n var axisType = axis.type;\n var axesTheme = jsonMerge([\n axesThemes[axisType],\n (_b = axesThemes[axisType][(_a = axis.position) !== null && _a !== void 0 ? _a : 'unknown']) !== null && _b !== void 0 ? _b : {},\n ]);\n return prepareAxis(axis, axesTheme);\n });\n }\n prepareLegendEnabledOption(options, mergedOptions);\n }\n prepareEnabledOptions(options, mergedOptions);\n return mergedOptions;\n}\nfunction sanityCheckOptions(options) {\n var deprecatedArrayProps = {\n yKeys: 'yKey',\n yNames: 'yName',\n };\n Object.entries(deprecatedArrayProps).forEach(function (_a) {\n var _b;\n var _c = __read$2(_a, 2), oldProp = _c[0], newProp = _c[1];\n if ((_b = options.series) === null || _b === void 0 ? void 0 : _b.some(function (s) { return s[oldProp] != null; })) {\n Logger.warnOnce(\"property [series.\" + oldProp + \"] is deprecated, please use [series.\" + newProp + \"] and multiple series instead.\");\n }\n });\n}\nfunction mergeSeriesOptions(series, type, seriesThemes, globalTooltipPositionOptions) {\n var _a, _b;\n var mergedTooltipPosition = jsonMerge([__assign$2({}, globalTooltipPositionOptions), (_a = series.tooltip) === null || _a === void 0 ? void 0 : _a.position], noDataCloneMergeOptions);\n var mergedSeries = jsonMerge([\n (_b = seriesThemes[type]) !== null && _b !== void 0 ? _b : {},\n __assign$2(__assign$2({}, series), { type: type, tooltip: __assign$2(__assign$2({}, series.tooltip), { position: mergedTooltipPosition }) }),\n ], noDataCloneMergeOptions);\n return mergedSeries;\n}\nfunction prepareMainOptions(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([defaultOverrides, cleanedTheme, options], noDataCloneMergeOptions);\n return { context: context, mergedOptions: mergedOptions, axesThemes: axesThemes, seriesThemes: seriesThemes };\n}\nfunction prepareTheme(options) {\n var _a, _b;\n var theme = getChartTheme(options.theme);\n var themeConfig = theme.config[(_a = optionsType(options)) !== null && _a !== void 0 ? _a : 'cartesian'];\n var seriesThemes = Object.entries(theme.config).reduce(function (result, _a) {\n var _b = __read$2(_a, 2), seriesType = _b[0], series = _b[1].series;\n result[seriesType] = series === null || series === void 0 ? void 0 : series[seriesType];\n return result;\n }, {});\n return {\n theme: theme,\n axesThemes: (_b = themeConfig['axes']) !== null && _b !== void 0 ? _b : {},\n seriesThemes: seriesThemes,\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, grouped: DELETE };\n return jsonMerge(__spreadArray$1(__spreadArray$1([], __read$2(defaults)), [paletteOptions, input, removeOptions]), noDataCloneMergeOptions);\n}\naddSeriesPaletteFactory('pie', function (_a) {\n var takeColors = _a.takeColors, colorsCount = _a.colorsCount;\n return takeColors(colorsCount);\n});\nvar singleSeriesPaletteFactory = function (_a) {\n var takeColors = _a.takeColors;\n var _b = takeColors(1), _c = __read$2(_b.fills, 1), fill = _c[0], _d = __read$2(_b.strokes, 1), stroke = _d[0];\n return { fill: fill, stroke: stroke };\n};\naddSeriesPaletteFactory('area', singleSeriesPaletteFactory);\naddSeriesPaletteFactory('bar', singleSeriesPaletteFactory);\naddSeriesPaletteFactory('column', singleSeriesPaletteFactory);\naddSeriesPaletteFactory('histogram', singleSeriesPaletteFactory);\naddSeriesPaletteFactory('scatter', function (params) {\n var _a = singleSeriesPaletteFactory(params), fill = _a.fill, stroke = _a.stroke;\n return { marker: { fill: fill, stroke: stroke } };\n});\naddSeriesPaletteFactory('line', function (params) {\n var _a = singleSeriesPaletteFactory(params), fill = _a.fill, stroke = _a.stroke;\n return {\n stroke: fill,\n marker: { fill: fill, stroke: stroke },\n };\n});\nfunction calculateSeriesPalette(context, input) {\n var _a;\n var paletteFactory = getSeriesPaletteFactory(input.type);\n if (!paletteFactory) {\n return {};\n }\n var _b = context.palette, fills = _b.fills, strokes = _b.strokes;\n var inputAny = input;\n var seriesCount = countArrayElements((_a = inputAny['yKeys']) !== null && _a !== void 0 ? _a : []) || 1; // Defaults to 1 if no yKeys.\n var colorsCount = Math.max(fills.length, strokes.length);\n return paletteFactory({\n seriesCount: seriesCount,\n colorsCount: colorsCount,\n takeColors: function (count) {\n var colors = {\n fills: takeColours(context, fills, count),\n strokes: takeColours(context, strokes, count),\n };\n context.colourIndex += count;\n return colors;\n },\n });\n}\nfunction prepareAxis(axis, axisTheme) {\n // Remove redundant theme overload keys.\n var removeOptions = { top: DELETE, bottom: DELETE, left: DELETE, right: DELETE };\n // Special cross lines case where we have an array of cross line elements which need their own defaults.\n if (axis.crossLines) {\n if (!Array.isArray(axis.crossLines)) {\n Logger.warn('axis[].crossLines should be an array.');\n axis.crossLines = [];\n }\n var crossLinesTheme_1 = axisTheme.crossLines;\n axis.crossLines = axis.crossLines.map(function (crossLine) { return jsonMerge([crossLinesTheme_1, crossLine]); });\n }\n var cleanTheme = { crossLines: DELETE };\n return jsonMerge([axisTheme, cleanTheme, axis, removeOptions], noDataCloneMergeOptions);\n}\nfunction removeDisabledOptions(options) {\n // Remove configurations from all option objects with a `false` value for the `enabled` property.\n jsonWalk(options, function (_, visitingUserOpts) {\n if (!('enabled' in visitingUserOpts))\n return;\n if (visitingUserOpts.enabled === false) {\n Object.entries(visitingUserOpts).forEach(function (_a) {\n var _b = __read$2(_a, 1), key = _b[0];\n if (key === 'enabled')\n return;\n delete visitingUserOpts[key];\n });\n }\n }, { skip: ['data', 'theme'] });\n}\nfunction prepareLegendEnabledOption(options, mergedOptions) {\n var _a, _b, _c, _d;\n // Disable legend by default for single series cartesian charts\n if (((_a = options.legend) === null || _a === void 0 ? void 0 : _a.enabled) !== undefined || ((_b = mergedOptions.legend) === null || _b === void 0 ? void 0 : _b.enabled) !== undefined) {\n return;\n }\n (_c = mergedOptions.legend) !== null && _c !== void 0 ? _c : (mergedOptions.legend = {});\n if (((_d = options.series) !== null && _d !== void 0 ? _d : []).length > 1) {\n mergedOptions.legend.enabled = true;\n return;\n }\n mergedOptions.legend.enabled = false;\n}\nfunction prepareEnabledOptions(options, mergedOptions) {\n // Set `enabled: true` for all option objects where the user has provided values.\n jsonWalk(options, function (_, visitingUserOpts, visitingMergedOpts) {\n if (!visitingMergedOpts)\n return;\n var _enabledFromTheme = visitingMergedOpts._enabledFromTheme;\n if (_enabledFromTheme != null) {\n // Do not apply special handling, base enablement on theme.\n delete visitingMergedOpts._enabledFromTheme;\n }\n if (!('enabled' in visitingMergedOpts))\n return;\n if (_enabledFromTheme)\n return;\n if (visitingUserOpts.enabled == null) {\n visitingMergedOpts.enabled = true;\n }\n }, { skip: ['data', 'theme'] }, mergedOptions);\n // Cleanup any special properties.\n jsonWalk(mergedOptions, function (_, visitingMergedOpts) {\n if (visitingMergedOpts._enabledFromTheme != null) {\n // Do not apply special handling, base enablement on theme.\n delete visitingMergedOpts._enabledFromTheme;\n }\n }, { skip: ['data', 'theme'] });\n}\nfunction preparePieOptions(pieSeriesTheme, seriesOptions, mergedSeries) {\n if (Array.isArray(seriesOptions.innerLabels)) {\n mergedSeries.innerLabels = seriesOptions.innerLabels.map(function (ln) {\n return jsonMerge([pieSeriesTheme.innerLabels, ln]);\n });\n }\n else {\n mergedSeries.innerLabels = DELETE;\n }\n}\n\nvar __values$2 = (undefined && undefined.__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 BaseModuleInstance = /** @class */ (function () {\n function BaseModuleInstance() {\n this.destroyFns = [];\n }\n BaseModuleInstance.prototype.destroy = function () {\n var e_1, _a;\n try {\n for (var _b = __values$2(this.destroyFns), _c = _b.next(); !_c.done; _c = _b.next()) {\n var destroyFn = _c.value;\n destroyFn();\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 };\n return BaseModuleInstance;\n}());\nvar REGISTERED_MODULES = [];\nfunction registerModule(module) {\n var otherModule = REGISTERED_MODULES.find(function (other) {\n return (module.type === other.type &&\n module.optionsKey === other.optionsKey &&\n module.identifier === other.identifier);\n });\n if (otherModule) {\n if (module.packageType === 'enterprise' && otherModule.packageType === 'community') {\n // Replace the community module with an enterprise version\n var index = REGISTERED_MODULES.indexOf(otherModule);\n REGISTERED_MODULES.splice(index, 1, module);\n }\n }\n else {\n // Simply register the module\n REGISTERED_MODULES.push(module);\n }\n}\n\nvar __extends$6 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1j = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 RangeHandle$1 = /** @class */ (function (_super) {\n __extends$6(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: false,\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: false,\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: false,\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: false,\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: false,\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: false,\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 path.clear();\n var x = centerX - width / 2;\n var y = centerY - height / 2;\n var ax = this.align(x);\n var ay = this.align(y);\n var axw = ax + this.align(x, width);\n var ayh = ay + this.align(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(this.align(centerX - dx), this.align(centerY - dy));\n path.lineTo(this.align(centerX - dx), this.align(centerY + dy));\n path.moveTo(this.align(centerX + dx), this.align(centerY - dy));\n path.lineTo(this.align(centerX + dx), this.align(centerY + dy));\n };\n RangeHandle.className = 'RangeHandle';\n __decorate$1j([\n Validate(COLOR_STRING)\n ], RangeHandle.prototype, \"_fill\", void 0);\n __decorate$1j([\n Validate(COLOR_STRING)\n ], RangeHandle.prototype, \"_stroke\", void 0);\n __decorate$1j([\n Validate(NUMBER(0))\n ], RangeHandle.prototype, \"_strokeWidth\", void 0);\n __decorate$1j([\n Validate(LINE_CAP)\n ], RangeHandle.prototype, \"_lineCap\", void 0);\n __decorate$1j([\n Validate(NUMBER(0))\n ], RangeHandle.prototype, \"_width\", void 0);\n __decorate$1j([\n Validate(NUMBER(0))\n ], RangeHandle.prototype, \"_gripLineGap\", void 0);\n __decorate$1j([\n Validate(NUMBER(0))\n ], RangeHandle.prototype, \"_gripLineLength\", void 0);\n __decorate$1j([\n Validate(NUMBER(0))\n ], RangeHandle.prototype, \"_height\", void 0);\n return RangeHandle;\n}(Path));\n\nvar __extends$5 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1i = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 RangeMask = /** @class */ (function (_super) {\n __extends$5(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: false,\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: false,\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: false,\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: false,\n configurable: true\n });\n Object.defineProperty(RangeMask.prototype, \"min\", {\n get: function () {\n return this._min;\n },\n set: function (value) {\n var _a;\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 (_a = this.onRangeChange) === null || _a === void 0 ? void 0 : _a.call(this);\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RangeMask.prototype, \"max\", {\n get: function () {\n return this._max;\n },\n set: function (value) {\n var _a;\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 (_a = this.onRangeChange) === null || _a === void 0 ? void 0 : _a.call(this);\n }\n },\n enumerable: false,\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 path.clear();\n var ax = this.align(x);\n var ay = this.align(y);\n var axw = ax + this.align(x, width);\n var ayh = ay + this.align(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 = this.align(x + width * min);\n var maxX = this.align(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 __decorate$1i([\n Validate(COLOR_STRING)\n ], RangeMask.prototype, \"_stroke\", void 0);\n __decorate$1i([\n Validate(NUMBER(0))\n ], RangeMask.prototype, \"_strokeWidth\", void 0);\n __decorate$1i([\n Validate(COLOR_STRING)\n ], RangeMask.prototype, \"_fill\", void 0);\n __decorate$1i([\n Validate(NUMBER(0, 1))\n ], RangeMask.prototype, \"_fillOpacity\", void 0);\n __decorate$1i([\n Validate(LINE_CAP)\n ], RangeMask.prototype, \"_lineCap\", void 0);\n __decorate$1i([\n Validate(NUMBER(0))\n ], RangeMask.prototype, \"_width\", void 0);\n __decorate$1i([\n Validate(NUMBER(0))\n ], RangeMask.prototype, \"_height\", void 0);\n __decorate$1i([\n Validate(NUMBER())\n ], RangeMask.prototype, \"_min\", void 0);\n __decorate$1i([\n Validate(NUMBER())\n ], RangeMask.prototype, \"_max\", void 0);\n return RangeMask;\n}(Path));\n\nvar __extends$4 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign$1 = (undefined && undefined.__assign) || function () {\n __assign$1 = 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$1.apply(this, arguments);\n};\nvar RangeSelector = /** @class */ (function (_super) {\n __extends$4(RangeSelector, _super);\n function RangeSelector() {\n var _this = _super.call(this, { name: 'rangeSelectorGroup' }) || this;\n _this.minHandle = new RangeHandle$1();\n _this.maxHandle = new RangeHandle$1();\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 () {\n var _a;\n _this.updateHandles();\n (_a = _this.onRangeChange) === null || _a === void 0 ? void 0 : _a.call(_this);\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 _this.isContainerNode = true;\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: false,\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: false,\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: false,\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: false,\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: false,\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: false,\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 (renderCtx) {\n var ctx = renderCtx.ctx, forceRender = renderCtx.forceRender, stats = renderCtx.stats;\n if (this.dirty === RedrawType.NONE && !forceRender) {\n if (stats)\n stats.nodesSkipped++;\n return;\n }\n this.computeTransformMatrix();\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 if (child.visible && (forceRender || child.dirty > RedrawType.NONE)) {\n ctx.save();\n child.render(__assign$1(__assign$1({}, renderCtx), { ctx: ctx, forceRender: forceRender }));\n ctx.restore();\n }\n });\n this.markClean({ force: true });\n if (stats)\n stats.nodesRendered++;\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));\n\nvar 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: false,\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: false,\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: false,\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: false,\n configurable: true\n });\n return NavigatorMask;\n}());\n\nvar 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: false,\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: false,\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: false,\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: false,\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: false,\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: false,\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: false,\n configurable: true\n });\n return NavigatorHandle;\n}());\n\nvar __extends$3 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1h = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 Navigator = /** @class */ (function (_super) {\n __extends$3(Navigator, _super);\n function Navigator(ctx) {\n var _a;\n var _this = _super.call(this) || this;\n _this.ctx = ctx;\n _this.rs = new RangeSelector();\n // Wrappers to allow option application to the scene graph nodes.\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._enabled = false;\n _this.margin = 10;\n _this._visible = true;\n _this.rs.onRangeChange = function () {\n return _this.ctx.zoomManager.updateZoom('navigator', { x: { min: _this.rs.min, max: _this.rs.max } });\n };\n [\n ctx.interactionManager.addListener('drag-start', function (event) { return _this.onDragStart(event); }),\n ctx.interactionManager.addListener('drag', function (event) { return _this.onDrag(event); }),\n ctx.interactionManager.addListener('hover', function (event) { return _this.onDrag(event); }),\n ctx.interactionManager.addListener('drag-end', function () { return _this.onDragStop(); }),\n ].forEach(function (s) { return _this.destroyFns.push(function () { return ctx.interactionManager.removeListener(s); }); });\n [\n ctx.layoutService.addListener('before-series', function (event) { return _this.layout(event); }),\n ctx.layoutService.addListener('layout-complete', function (event) { return _this.layoutComplete(event); }),\n ].forEach(function (s) { return _this.destroyFns.push(function () { return ctx.layoutService.removeListener(s); }); });\n (_a = ctx.scene.root) === null || _a === void 0 ? void 0 : _a.appendChild(_this.rs);\n _this.destroyFns.push(function () { var _a; return (_a = ctx.scene.root) === null || _a === void 0 ? void 0 : _a.removeChild(_this.rs); });\n _this.destroyFns.push(function () { return _this.ctx.zoomManager.updateZoom('navigator'); });\n _this.updateGroupVisibility();\n return _this;\n }\n Object.defineProperty(Navigator.prototype, \"enabled\", {\n get: function () {\n return this._enabled;\n },\n set: function (value) {\n this._enabled = value;\n this.updateGroupVisibility();\n },\n enumerable: false,\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: false,\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 },\n enumerable: false,\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: false,\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: false,\n configurable: true\n });\n Object.defineProperty(Navigator.prototype, \"visible\", {\n get: function () {\n return this._visible;\n },\n set: function (value) {\n this._visible = value;\n this.updateGroupVisibility();\n },\n enumerable: false,\n configurable: true\n });\n Navigator.prototype.updateGroupVisibility = function () {\n var visible = this.enabled && this.visible;\n this.rs.visible = visible;\n if (visible) {\n this.ctx.zoomManager.updateZoom('navigator', { x: { min: this.rs.min, max: this.rs.max } });\n }\n else {\n this.ctx.zoomManager.updateZoom('navigator');\n }\n };\n Navigator.prototype.layout = function (_a) {\n var shrinkRect = _a.shrinkRect;\n if (this.enabled) {\n var navigatorTotalHeight = this.rs.height + this.margin;\n shrinkRect.shrink(navigatorTotalHeight, 'bottom');\n this.rs.y = shrinkRect.y + shrinkRect.height + this.margin;\n }\n return { shrinkRect: shrinkRect };\n };\n Navigator.prototype.layoutComplete = function (_a) {\n var _b = _a.series, rect = _b.rect, visible = _b.visible;\n if (this.enabled && visible) {\n this.rs.x = rect.x;\n this.rs.width = rect.width;\n }\n this.visible = visible;\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 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 var getRatio = function () { return Math.min(Math.max((offsetX - x) / width, 0), 1); };\n if (minHandle.containsPoint(offsetX, offsetY) || maxHandle.containsPoint(offsetX, offsetY)) {\n this.ctx.cursorManager.updateCursor('navigator', 'ew-resize');\n }\n else if (visibleRange.containsPoint(offsetX, offsetY)) {\n this.ctx.cursorManager.updateCursor('navigator', 'grab');\n }\n else {\n this.ctx.cursorManager.updateCursor('navigator');\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) {\n // pan left\n rs.min = min;\n rs.max = rs.min + span;\n }\n else {\n // 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 __decorate$1h([\n Validate(BOOLEAN)\n ], Navigator.prototype, \"_enabled\", void 0);\n __decorate$1h([\n Validate(NUMBER(0))\n ], Navigator.prototype, \"margin\", void 0);\n return Navigator;\n}(BaseModuleInstance));\n\nvar CHART_NAVIGATOR_MODULE = {\n type: 'root',\n optionsKey: 'navigator',\n packageType: 'community',\n chartTypes: ['cartesian'],\n instanceConstructor: Navigator,\n themeTemplate: {\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 },\n};\nregisterModule(CHART_NAVIGATOR_MODULE);\n\nvar __extends$2 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1g = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 Background = /** @class */ (function (_super) {\n __extends$2(Background, _super);\n function Background(ctx) {\n var _a;\n var _this = _super.call(this) || this;\n _this.onLayoutComplete = function (e) {\n var _a = e.chart, width = _a.width, height = _a.height;\n _this.rectNode.width = width;\n _this.rectNode.height = height;\n };\n _this.node = new Group({ name: 'background' });\n _this.node.zIndex = Layers.SERIES_BACKGROUND_ZINDEX;\n _this.rectNode = new Rect();\n _this.node.appendChild(_this.rectNode);\n _this.fill = 'white';\n _this.visible = true;\n (_a = ctx.scene.root) === null || _a === void 0 ? void 0 : _a.appendChild(_this.node);\n _this.destroyFns.push(function () { var _a; return (_a = ctx.scene.root) === null || _a === void 0 ? void 0 : _a.removeChild(_this.node); });\n var layoutHandle = ctx.layoutService.addListener('layout-complete', _this.onLayoutComplete);\n _this.destroyFns.push(function () { return ctx.layoutService.removeListener(layoutHandle); });\n return _this;\n }\n __decorate$1g([\n Validate(BOOLEAN),\n ProxyPropertyOnWrite('node', 'visible')\n ], Background.prototype, \"visible\", void 0);\n __decorate$1g([\n Validate(OPT_COLOR_STRING),\n ProxyPropertyOnWrite('rectNode', 'fill')\n ], Background.prototype, \"fill\", void 0);\n return Background;\n}(BaseModuleInstance));\n\nvar CHART_BACKGROUND_MODULE = {\n type: 'root',\n optionsKey: 'background',\n packageType: 'community',\n chartTypes: ['cartesian', 'polar', 'hierarchy'],\n instanceConstructor: Background,\n};\nregisterModule(CHART_BACKGROUND_MODULE);\n\nvar __values$1 = (undefined && undefined.__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};\nfunction setupModules() {\n var e_1, _a, e_2, _b, e_3, _c;\n try {\n for (var REGISTERED_MODULES_1 = __values$1(REGISTERED_MODULES), REGISTERED_MODULES_1_1 = REGISTERED_MODULES_1.next(); !REGISTERED_MODULES_1_1.done; REGISTERED_MODULES_1_1 = REGISTERED_MODULES_1.next()) {\n var m = REGISTERED_MODULES_1_1.value;\n if (JSON_APPLY_PLUGINS.constructors != null && m.optionConstructors != null) {\n Object.assign(JSON_APPLY_PLUGINS.constructors, m.optionConstructors);\n }\n if (m.type === 'root') {\n if (m.themeTemplate) {\n try {\n for (var _d = (e_2 = void 0, __values$1(m.chartTypes)), _e = _d.next(); !_e.done; _e = _d.next()) {\n var chartType = _e.value;\n registerChartDefaults(chartType, m.themeTemplate);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_e && !_e.done && (_b = _d.return)) _b.call(_d);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n }\n if (m.type === 'series') {\n if (m.chartTypes.length > 1)\n throw new Error('AG Charts - Module definition error: ' + m.identifier);\n registerSeries(m.identifier, m.chartTypes[0], m.instanceConstructor, m.seriesDefaults, m.themeTemplate, m.paletteFactory);\n }\n if (m.type === 'axis-option') {\n if (m.themeTemplate) {\n try {\n for (var _f = (e_3 = void 0, __values$1(m.axisTypes)), _g = _f.next(); !_g.done; _g = _f.next()) {\n var axisType = _g.value;\n registerAxisThemeTemplate(axisType, m.themeTemplate);\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (_g && !_g.done && (_c = _f.return)) _c.call(_f);\n }\n finally { if (e_3) throw e_3.error; }\n }\n }\n }\n if (m.type === 'axis') {\n registerAxis(m.identifier, m.instanceConstructor);\n if (m.themeTemplate) {\n registerAxisThemeTemplate(m.identifier, m.themeTemplate);\n }\n }\n if (m.type === 'legend') {\n registerLegend(m.identifier, m.instanceConstructor);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (REGISTERED_MODULES_1_1 && !REGISTERED_MODULES_1_1.done && (_a = REGISTERED_MODULES_1.return)) _a.call(REGISTERED_MODULES_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n}\n\nvar __assign = (undefined && undefined.__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 __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read$1 = (undefined && undefined.__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 __spreadArray = (undefined && undefined.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar __values = (undefined && undefined.__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};\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/**\n * Factory for creating and updating instances of AgChartInstance.\n *\n * @docsInterface\n */\nvar AgChart = /** @class */ (function () {\n function AgChart() {\n }\n /**\n * Create a new `AgChartInstance` based upon the given configuration options.\n */\n AgChart.create = function (options) {\n return AgChartInternal.createOrUpdate(options);\n };\n /**\n * Update an existing `AgChartInstance`. Options provided should be complete and not\n * partial.\n *
\n *
\n * **NOTE**: As each call could trigger a chart redraw, multiple calls to update options in\n * quick succession could result in undesirable flickering, so callers should batch up and/or\n * debounce changes to avoid unintended partial update renderings.\n */\n AgChart.update = function (chart, options) {\n if (!AgChartInstanceProxy.isInstance(chart)) {\n throw new Error('AG Charts - invalid chart reference passed');\n }\n AgChartInternal.createOrUpdate(options, chart);\n };\n /**\n * Update an existing `AgChartInstance` by applying a partial set of option changes.\n *
\n *
\n * **NOTE**: As each call could trigger a chart redraw, each individual delta options update\n * should leave the chart in a valid options state. Also, multiple calls to update options in\n * quick succession could result in undesirable flickering, so callers should batch up and/or\n * debounce changes to avoid unintended partial update renderings.\n */\n AgChart.updateDelta = function (chart, deltaOptions) {\n if (!AgChartInstanceProxy.isInstance(chart)) {\n throw new Error('AG Charts - invalid chart reference passed');\n }\n return AgChartInternal.updateUserDelta(chart, deltaOptions);\n };\n /**\n * Starts a browser-based image download for the given `AgChartInstance`.\n */\n AgChart.download = function (chart, options) {\n if (!(chart instanceof AgChartInstanceProxy)) {\n throw new Error('AG Charts - invalid chart reference passed');\n }\n return AgChartInternal.download(chart, options);\n };\n /**\n * Returns a base64-encoded image data URL for the given `AgChartInstance`.\n */\n AgChart.getImageDataURL = function (chart, options) {\n if (!(chart instanceof AgChartInstanceProxy)) {\n throw new Error('AG Charts - invalid chart reference passed');\n }\n return AgChartInternal.getImageDataURL(chart, options);\n };\n return AgChart;\n}());\n/**\n * Proxy class, to allow library users to keep a stable reference to their chart, even if we need\n * to switch concrete class (e.g. when switching between CartesianChart vs. PolarChart).\n */\nvar AgChartInstanceProxy = /** @class */ (function () {\n function AgChartInstanceProxy(chart) {\n this.chart = chart;\n }\n AgChartInstanceProxy.isInstance = function (x) {\n var _a, _b;\n if (x instanceof AgChartInstanceProxy) {\n // Simple case.\n return true;\n }\n if (((_a = x.constructor) === null || _a === void 0 ? void 0 : _a.name) === 'AgChartInstanceProxy' && x.chart != null) {\n // instanceof can fail if mixing bundles (e.g. grid all-modules vs. standalone).\n return true;\n }\n var signatureProps = Object.keys((_b = x.constructor) === null || _b === void 0 ? void 0 : _b.prototype);\n var heuristicTypeCheck = Object.keys(AgChartInstanceProxy.prototype).every(function (prop) {\n return signatureProps.includes(prop);\n });\n if (heuristicTypeCheck && x.chart != null) {\n // minimised code case - the constructor name is mangled but prototype names are not :P\n return true;\n }\n return false;\n };\n AgChartInstanceProxy.prototype.getOptions = function () {\n return this.chart.getOptions();\n };\n AgChartInstanceProxy.prototype.destroy = function () {\n this.chart.destroy();\n };\n return AgChartInstanceProxy;\n}());\nvar AgChartInternal = /** @class */ (function () {\n function AgChartInternal() {\n }\n AgChartInternal.initialiseModules = function () {\n if (AgChartInternal.initialised)\n return;\n setupModules();\n AgChartInternal.initialised = true;\n };\n AgChartInternal.createOrUpdate = function (userOptions, proxy) {\n var _this = this;\n AgChartInternal.initialiseModules();\n debug('>>> AgChartV2.createOrUpdate() user options', userOptions);\n var mixinOpts = {};\n if (AgChartInternal.DEBUG() === true) {\n mixinOpts['debug'] = true;\n }\n var overrideDevicePixelRatio = userOptions.overrideDevicePixelRatio;\n delete userOptions['overrideDevicePixelRatio'];\n var processedOptions = prepareOptions(userOptions, mixinOpts);\n var chart = proxy === null || proxy === void 0 ? void 0 : proxy.chart;\n if (chart == null || chartType(userOptions) !== chartType(chart.processedOptions)) {\n chart = AgChartInternal.createChartInstance(processedOptions, overrideDevicePixelRatio, chart);\n }\n if (proxy == null) {\n proxy = new AgChartInstanceProxy(chart);\n }\n else {\n proxy.chart = chart;\n }\n var chartToUpdate = chart;\n chartToUpdate.queuedUserOptions.push(userOptions);\n var dequeue = function () {\n // If there are a lot of update calls, `requestFactoryUpdate()` may skip callbacks,\n // so we need to remove all queue items up to the last successfully applied item.\n var queuedOptionsIdx = chartToUpdate.queuedUserOptions.indexOf(userOptions);\n chartToUpdate.queuedUserOptions.splice(0, queuedOptionsIdx);\n };\n chartToUpdate.requestFactoryUpdate(function () { return __awaiter(_this, void 0, void 0, function () {\n var deltaOptions;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n // Chart destroyed, skip processing.\n if (chartToUpdate.destroyed)\n return [2 /*return*/];\n deltaOptions = jsonDiff(chartToUpdate.processedOptions, processedOptions);\n if (deltaOptions == null) {\n dequeue();\n return [2 /*return*/];\n }\n return [4 /*yield*/, AgChartInternal.updateDelta(chartToUpdate, deltaOptions, userOptions)];\n case 1:\n _a.sent();\n dequeue();\n return [2 /*return*/];\n }\n });\n }); });\n return proxy;\n };\n AgChartInternal.updateUserDelta = function (proxy, deltaOptions) {\n var _a;\n var chart = proxy.chart, queuedUserOptions = proxy.chart.queuedUserOptions;\n var lastUpdateOptions = (_a = queuedUserOptions[queuedUserOptions.length - 1]) !== null && _a !== void 0 ? _a : chart.userOptions;\n var userOptions = jsonMerge([lastUpdateOptions, deltaOptions]);\n debug('>>> AgChartV2.updateUserDelta() user delta', deltaOptions);\n debug('AgChartV2.updateUserDelta() - base options', lastUpdateOptions);\n AgChartInternal.createOrUpdate(userOptions, proxy);\n };\n /**\n * Returns the content of the current canvas as an image.\n * @param opts The download options including `width` and `height` of the image as well as `fileName` and `fileFormat`.\n */\n AgChartInternal.download = function (proxy, opts) {\n var _this = this;\n var asyncDownload = function () { return __awaiter(_this, void 0, void 0, function () {\n var maybeClone, chart;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, AgChartInternal.prepareResizedChart(proxy, opts)];\n case 1:\n maybeClone = _a.sent();\n chart = maybeClone.chart;\n chart.scene.download(opts === null || opts === void 0 ? void 0 : opts.fileName, opts === null || opts === void 0 ? void 0 : opts.fileFormat);\n if (maybeClone !== proxy) {\n maybeClone.destroy();\n }\n return [2 /*return*/];\n }\n });\n }); };\n asyncDownload().catch(function (e) { return Logger.errorOnce(e); });\n };\n AgChartInternal.getImageDataURL = function (proxy, opts) {\n return __awaiter(this, void 0, void 0, function () {\n var maybeClone, chart, result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, AgChartInternal.prepareResizedChart(proxy, opts)];\n case 1:\n maybeClone = _a.sent();\n chart = maybeClone.chart;\n result = chart.scene.canvas.getDataURL(opts === null || opts === void 0 ? void 0 : opts.fileFormat);\n if (maybeClone !== proxy) {\n maybeClone.destroy();\n }\n return [2 /*return*/, result];\n }\n });\n });\n };\n AgChartInternal.prepareResizedChart = function (proxy, opts) {\n return __awaiter(this, void 0, void 0, function () {\n var chart, _a, width, height, currentWidth, currentHeight, unchanged, options, clonedChart;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n chart = proxy.chart;\n _a = opts !== null && opts !== void 0 ? opts : {}, width = _a.width, height = _a.height;\n currentWidth = chart.width;\n currentHeight = chart.height;\n unchanged = (width === undefined && height === undefined) ||\n (chart.scene.canvas.pixelRatio === 1 && currentWidth === width && currentHeight === height);\n if (unchanged) {\n return [2 /*return*/, proxy];\n }\n width = width !== null && width !== void 0 ? width : currentWidth;\n height = height !== null && height !== void 0 ? height : currentHeight;\n options = __assign(__assign({}, chart.userOptions), { container: document.createElement('div'), width: width, height: height, autoSize: false, overrideDevicePixelRatio: 1 });\n clonedChart = AgChartInternal.createOrUpdate(options);\n return [4 /*yield*/, clonedChart.chart.waitForUpdate()];\n case 1:\n _b.sent();\n return [2 /*return*/, clonedChart];\n }\n });\n });\n };\n AgChartInternal.createChartInstance = function (options, overrideDevicePixelRatio, oldChart) {\n var transferableResource = oldChart === null || oldChart === void 0 ? void 0 : oldChart.destroy({ keepTransferableResources: true });\n if (isAgCartesianChartOptions(options)) {\n return new CartesianChart(document, overrideDevicePixelRatio, transferableResource);\n }\n else if (isAgHierarchyChartOptions(options)) {\n return new HierarchyChart(document, overrideDevicePixelRatio, transferableResource);\n }\n else if (isAgPolarChartOptions(options)) {\n return new PolarChart(document, overrideDevicePixelRatio, transferableResource);\n }\n throw new Error(\"AG Charts - couldn't apply configuration, check type of options: \" + options['type']);\n };\n AgChartInternal.updateDelta = function (chart, processedOptions, userOptions) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (processedOptions.type == null) {\n processedOptions = __assign(__assign({}, processedOptions), { type: (_a = chart.processedOptions.type) !== null && _a !== void 0 ? _a : optionsType(processedOptions) });\n }\n return [4 /*yield*/, chart.awaitUpdateCompletion()];\n case 1:\n _b.sent();\n if (chart.destroyed)\n return [2 /*return*/];\n debug('AgChartV2.updateDelta() - applying delta', processedOptions);\n applyChartOptions(chart, processedOptions, userOptions);\n return [2 /*return*/];\n }\n });\n });\n };\n AgChartInternal.DEBUG = function () { var _a; return (_a = windowValue('agChartsDebug')) !== null && _a !== void 0 ? _a : false; };\n AgChartInternal.initialised = false;\n return AgChartInternal;\n}());\nfunction debug(message) {\n var optionalParams = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n optionalParams[_i - 1] = arguments[_i];\n }\n if ([true, 'opts'].includes(AgChartInternal.DEBUG())) {\n Logger.debug.apply(Logger, __spreadArray([message], __read$1(optionalParams)));\n }\n}\nfunction applyChartOptions(chart, processedOptions, userOptions) {\n var _a, _b, _c, _d;\n var completeOptions = jsonMerge([(_a = chart.processedOptions) !== null && _a !== void 0 ? _a : {}, processedOptions], noDataCloneMergeOptions);\n var modulesChanged = applyModules(chart, completeOptions);\n var skip = ['type', 'data', 'series', 'listeners', 'theme', 'legend'];\n if (isAgCartesianChartOptions(processedOptions) || isAgPolarChartOptions(processedOptions)) {\n // Append axes to defaults.\n skip.push('axes');\n }\n else if (isAgHierarchyChartOptions(processedOptions)) ;\n else {\n throw new Error(\"AG Charts - couldn't apply configuration, check type of options and chart: \" + processedOptions['type']);\n }\n // Needs to be done before applying the series to detect if a seriesNode[Double]Click listener has been added\n if (processedOptions.listeners) {\n registerListeners(chart, processedOptions.listeners);\n }\n applyOptionValues(chart, processedOptions, { skip: skip });\n var forceNodeDataRefresh = false;\n if (processedOptions.series && processedOptions.series.length > 0) {\n applySeries(chart, processedOptions);\n forceNodeDataRefresh = true;\n }\n if ('axes' in processedOptions && Array.isArray(processedOptions.axes)) {\n var axesPresent = applyAxes(chart, processedOptions);\n if (axesPresent) {\n forceNodeDataRefresh = true;\n }\n }\n applyLegend(chart, processedOptions);\n var seriesOpts = processedOptions.series;\n var seriesDataUpdate = !!processedOptions.data || (seriesOpts === null || seriesOpts === void 0 ? void 0 : seriesOpts.some(function (s) { return s.data != null; }));\n var otherRefreshUpdate = (_c = (_b = processedOptions.legend) !== null && _b !== void 0 ? _b : processedOptions.title) !== null && _c !== void 0 ? _c : processedOptions.subtitle;\n forceNodeDataRefresh = forceNodeDataRefresh || seriesDataUpdate || !!otherRefreshUpdate;\n if (processedOptions.data) {\n chart.data = processedOptions.data;\n }\n if (processedOptions.listeners) {\n chart.updateAllSeriesListeners();\n }\n chart.processedOptions = completeOptions;\n chart.userOptions = jsonMerge([(_d = chart.userOptions) !== null && _d !== void 0 ? _d : {}, userOptions], noDataCloneMergeOptions);\n var majorChange = forceNodeDataRefresh || modulesChanged;\n var updateType = majorChange ? ChartUpdateType.PROCESS_DATA : ChartUpdateType.PERFORM_LAYOUT;\n debug('AgChartV2.applyChartOptions() - update type', ChartUpdateType[updateType]);\n chart.update(updateType, { forceNodeDataRefresh: forceNodeDataRefresh });\n}\nfunction applyModules(chart, options) {\n var e_1, _a;\n var matchingChartType = function (module) {\n return ((chart instanceof CartesianChart && module.chartTypes.includes('cartesian')) ||\n (chart instanceof PolarChart && module.chartTypes.includes('polar')) ||\n (chart instanceof HierarchyChart && module.chartTypes.includes('hierarchy')));\n };\n var modulesChanged = false;\n var rootModules = REGISTERED_MODULES.filter(function (m) { return m.type === 'root'; });\n try {\n for (var rootModules_1 = __values(rootModules), rootModules_1_1 = rootModules_1.next(); !rootModules_1_1.done; rootModules_1_1 = rootModules_1.next()) {\n var next = rootModules_1_1.value;\n var shouldBeEnabled = matchingChartType(next) && options[next.optionsKey] != null;\n var isEnabled = chart.isModuleEnabled(next);\n if (shouldBeEnabled === isEnabled)\n continue;\n modulesChanged = true;\n if (shouldBeEnabled) {\n chart.addModule(next);\n }\n else {\n chart.removeModule(next);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (rootModules_1_1 && !rootModules_1_1.done && (_a = rootModules_1.return)) _a.call(rootModules_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return modulesChanged;\n}\nfunction applySeries(chart, options) {\n var optSeries = options.series;\n if (!optSeries) {\n return;\n }\n var matchingTypes = chart.series.length === optSeries.length && 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, _c, _d;\n var previousOpts = (_c = (_b = (_a = chart.processedOptions) === null || _a === void 0 ? void 0 : _a.series) === null || _b === void 0 ? void 0 : _b[i]) !== null && _c !== void 0 ? _c : {};\n var seriesDiff = jsonDiff(previousOpts, (_d = optSeries[i]) !== null && _d !== void 0 ? _d : {});\n if (!seriesDiff) {\n return;\n }\n debug(\"AgChartV2.applySeries() - applying series diff idx \" + i, seriesDiff);\n applySeriesValues(s, seriesDiff, { path: \"series[\" + i + \"]\", index: i });\n s.markNodeDataDirty();\n });\n return;\n }\n chart.series = createSeries(chart, 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 && 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.processedOptions;\n if (isAgCartesianChartOptions(oldOpts_1)) {\n chart.axes.forEach(function (a, i) {\n var _a, _b;\n var previousOpts = (_b = (_a = oldOpts_1.axes) === null || _a === void 0 ? void 0 : _a[i]) !== null && _b !== void 0 ? _b : {};\n var axisDiff = jsonDiff(previousOpts, optAxes[i]);\n debug(\"AgChartV2.applyAxes() - applying axis diff idx \" + i, axisDiff);\n var path = \"axes[\" + i + \"]\";\n var skip = ['axes[].type'];\n applyOptionValues(a, axisDiff, { path: path, skip: skip });\n });\n return true;\n }\n }\n chart.axes = createAxis(chart, optAxes);\n return true;\n}\nfunction applyLegend(chart, options) {\n var skip = ['listeners'];\n chart.setLegendInit(function (legend) {\n var _a, _b, _c, _d;\n applyOptionValues(legend, (_a = options.legend) !== null && _a !== void 0 ? _a : {}, { skip: skip });\n if ((_b = options.legend) === null || _b === void 0 ? void 0 : _b.listeners) {\n Object.assign((_c = chart.legend) === null || _c === void 0 ? void 0 : _c.listeners, (_d = options.legend.listeners) !== null && _d !== void 0 ? _d : {});\n }\n });\n}\nfunction createSeries(chart, options) {\n var e_2, _a;\n var _b;\n var series = [];\n var moduleContext = chart.getModuleContext();\n var index = 0;\n try {\n for (var _c = __values(options !== null && options !== void 0 ? options : []), _d = _c.next(); !_d.done; _d = _c.next()) {\n var seriesOptions = _d.value;\n var path = \"series[\" + index++ + \"]\";\n var seriesInstance = getSeries((_b = seriesOptions.type) !== null && _b !== void 0 ? _b : 'unknown', moduleContext);\n applySeriesValues(seriesInstance, seriesOptions, { path: path, index: index });\n series.push(seriesInstance);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return series;\n}\nfunction createAxis(chart, options) {\n var e_3, _a;\n var axes = [];\n var skip = ['axes[].type'];\n var moduleContext = chart.getModuleContext();\n var index = 0;\n try {\n for (var _b = __values(options !== null && options !== void 0 ? options : []), _c = _b.next(); !_c.done; _c = _b.next()) {\n var axisOptions = _c.value;\n var axis = getAxis(axisOptions.type, moduleContext);\n var path = \"axes[\" + index++ + \"]\";\n applyAxisModules(axis, axisOptions);\n applyOptionValues(axis, axisOptions, { path: path, skip: skip });\n axes.push(axis);\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 axes;\n}\nfunction applyAxisModules(axis, options) {\n var e_4, _a;\n var modulesChanged = false;\n var rootModules = REGISTERED_MODULES.filter(function (m) { return m.type === 'axis-option'; });\n try {\n for (var rootModules_2 = __values(rootModules), rootModules_2_1 = rootModules_2.next(); !rootModules_2_1.done; rootModules_2_1 = rootModules_2.next()) {\n var next = rootModules_2_1.value;\n var shouldBeEnabled = options[next.optionsKey] != null;\n var isEnabled = axis.isModuleEnabled(next);\n if (shouldBeEnabled === isEnabled)\n continue;\n modulesChanged = true;\n if (shouldBeEnabled) {\n axis.addModule(next);\n }\n else {\n axis.removeModule(next);\n }\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (rootModules_2_1 && !rootModules_2_1.done && (_a = rootModules_2.return)) _a.call(rootModules_2);\n }\n finally { if (e_4) throw e_4.error; }\n }\n return modulesChanged;\n}\nfunction registerListeners(source, listeners) {\n source.clearEventListeners();\n for (var property in listeners) {\n var listener = listeners[property];\n if (typeof listener !== 'function')\n continue;\n source.addEventListener(property, listener);\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({}, getJsonApplyOptions()), { skip: skip }), (path ? { path: path } : {}));\n return jsonApply(target, options, applyOpts);\n}\nfunction applySeriesValues(target, options, _a) {\n var _b, _c;\n var _d = _a === void 0 ? {} : _a, path = _d.path, index = _d.index;\n var skip = ['series[].listeners', 'series[].seriesGrouping'];\n var jsonApplyOptions = getJsonApplyOptions();\n var ctrs = (_b = jsonApplyOptions.constructors) !== null && _b !== void 0 ? _b : {};\n var seriesTypeOverrides = {\n constructors: __assign(__assign({}, ctrs), { title: target.type === 'pie' ? PieTitle : ctrs['title'] }),\n };\n var applyOpts = __assign(__assign(__assign(__assign(__assign({}, jsonApplyOptions), seriesTypeOverrides), { skip: __spreadArray(['series[].type'], __read$1((skip !== null && skip !== void 0 ? skip : []))) }), (path ? { path: path } : {})), { idx: index !== null && index !== void 0 ? index : -1 });\n var result = jsonApply(target, options, applyOpts);\n var listeners = options === null || options === void 0 ? void 0 : options.listeners;\n if (listeners != null) {\n registerListeners(target, listeners);\n }\n var seriesGrouping = options.seriesGrouping;\n if ('seriesGrouping' in (options !== null && options !== void 0 ? options : {})) {\n if (seriesGrouping) {\n var newSeriesGroup = Object.freeze(__assign(__assign({}, ((_c = target.seriesGrouping) !== null && _c !== void 0 ? _c : {})), seriesGrouping));\n target.seriesGrouping = newSeriesGroup;\n }\n else {\n target.seriesGrouping = seriesGrouping;\n }\n }\n return result;\n}\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nvar VERSION$b = '8.0.5';\n\nvar __extends$1 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1f = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 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$1(Arc, _super);\n function Arc() {\n var _this = _super.call(this) || this;\n _this.centerX = 0;\n _this.centerY = 0;\n _this.radius = 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, \"fullPie\", {\n get: function () {\n return isEqual(normalizeAngle360(this.startAngle), normalizeAngle360(this.endAngle));\n },\n enumerable: false,\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 path.arc(this.centerX, this.centerY, this.radius, this.startAngle, this.endAngle, this.counterClockwise);\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.radius, this.centerY - this.radius, this.radius * 2, this.radius * 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 = Object.assign({}, Shape.defaultStyles, {\n lineWidth: 1,\n fillStyle: null,\n });\n __decorate$1f([\n ScenePathChangeDetection()\n ], Arc.prototype, \"centerX\", void 0);\n __decorate$1f([\n ScenePathChangeDetection()\n ], Arc.prototype, \"centerY\", void 0);\n __decorate$1f([\n ScenePathChangeDetection()\n ], Arc.prototype, \"radius\", void 0);\n __decorate$1f([\n ScenePathChangeDetection()\n ], Arc.prototype, \"startAngle\", void 0);\n __decorate$1f([\n ScenePathChangeDetection()\n ], Arc.prototype, \"endAngle\", void 0);\n __decorate$1f([\n ScenePathChangeDetection()\n ], Arc.prototype, \"counterClockwise\", void 0);\n __decorate$1f([\n ScenePathChangeDetection()\n ], Arc.prototype, \"type\", void 0);\n return Arc;\n}(Path));\n\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1e = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/** @class */ ((function (_super) {\n __extends(Image, _super);\n function Image(sourceImage) {\n var _this = _super.call(this) || this;\n _this.x = 0;\n _this.y = 0;\n _this.width = 0;\n _this.height = 0;\n _this.opacity = 1;\n _this.sourceImage = sourceImage;\n return _this;\n }\n Image.prototype.render = function (renderCtx) {\n var ctx = renderCtx.ctx, forceRender = renderCtx.forceRender, stats = renderCtx.stats;\n if (this.dirty === RedrawType.NONE && !forceRender) {\n if (stats)\n stats.nodesSkipped++;\n return;\n }\n this.computeTransformMatrix();\n this.matrix.toContext(ctx);\n var image = this.sourceImage;\n ctx.globalAlpha = this.opacity;\n ctx.drawImage(image, 0, 0, image.width, image.height, this.x, this.y, this.width, this.height);\n _super.prototype.render.call(this, renderCtx);\n };\n __decorate$1e([\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], Image.prototype, \"x\", void 0);\n __decorate$1e([\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], Image.prototype, \"y\", void 0);\n __decorate$1e([\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], Image.prototype, \"width\", void 0);\n __decorate$1e([\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], Image.prototype, \"height\", void 0);\n __decorate$1e([\n SceneChangeDetection({ redraw: RedrawType.MAJOR })\n ], Image.prototype, \"opacity\", void 0);\n return Image;\n})(Node));\n\nvar __read = (undefined && undefined.__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 themes = Object.entries(themes$1).reduce(function (obj, _a) {\n var _b = __read(_a, 2), name = _b[0], factory = _b[1];\n obj[name] = factory();\n return obj;\n}, {});\n\nvar _Scale = /*#__PURE__*/Object.freeze({\n __proto__: null,\n TimeScale: TimeScale$1,\n BandScale: BandScale$5,\n ContinuousScale: ContinuousScale,\n ColorScale: ColorScale,\n LinearScale: LinearScale$1\n});\n\nvar _Util = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ticks: ticks,\n extent: extent$4,\n normalisedExtent: normalisedExtent,\n toFixed: toFixed,\n isNumberEqual: isEqual,\n tickFormat: tickFormat,\n interpolateString: interpolate,\n Color: Color,\n isString: isString$2,\n isStringObject: isStringObject$1,\n isDate: isDate$1,\n isDiscrete: isDiscrete,\n isContinuous: isContinuous,\n checkDatum: checkDatum,\n isNumber: isNumber$4,\n resetIds: resetIds,\n createId: createId$1,\n Padding: Padding$1,\n jsonDiff: jsonDiff,\n DELETE: DELETE,\n jsonMerge: jsonMerge,\n jsonApply: jsonApply,\n jsonWalk: jsonWalk,\n normalizeAngle360: normalizeAngle360,\n normalizeAngle360Inclusive: normalizeAngle360Inclusive,\n normalizeAngle180: normalizeAngle180,\n toRadians: toRadians$1,\n toDegrees: toDegrees,\n sanitizeHtml: sanitizeHtml,\n Logger: Logger\n});\n\nconst VALID_SERIES_TYPES = [\n 'area',\n 'bar',\n 'column',\n 'histogram',\n 'line',\n 'pie',\n 'scatter',\n];\nfunction 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\nconst ALL_AXIS_TYPES = ['number', 'category', 'groupedCategory', 'log', 'time'];\nfunction getLegacyAxisType(chartType) {\n switch (chartType) {\n case 'bar':\n case 'stackedBar':\n case 'normalizedBar':\n return ['number', 'category'];\n case 'groupedBar':\n return ['number', 'groupedCategory'];\n case 'column':\n case 'stackedColumn':\n case 'normalizedColumn':\n case 'line':\n case 'area':\n case 'stackedArea':\n case 'normalizedArea':\n case 'histogram':\n return ['category', 'number'];\n case 'groupedColumn':\n return ['groupedCategory', 'number'];\n case 'scatter':\n case 'bubble':\n return ['number', 'number'];\n default:\n return undefined;\n }\n}\n\nfunction createAgChartTheme(chartProxyParams, proxy) {\n var _a;\n const { chartOptionsToRestore, chartPaletteToRestore, chartThemeToRestore } = chartProxyParams;\n const themeName = getSelectedTheme(chartProxyParams);\n const stockTheme = isStockTheme(themeName);\n const rootTheme = stockTheme\n ? { baseTheme: themeName }\n : (_a = lookupCustomChartTheme(chartProxyParams, themeName)) !== null && _a !== void 0 ? _a : {};\n const gridOptionsThemeOverrides = chartProxyParams.getGridOptionsChartThemeOverrides();\n const apiThemeOverrides = chartProxyParams.apiChartThemeOverrides;\n const standaloneChartType = getSeriesType(chartProxyParams.chartType);\n const crossFilterThemeOverridePoint = standaloneChartType === 'pie' ? 'polar' : 'cartesian';\n const crossFilteringOverrides = chartProxyParams.crossFiltering\n ? createCrossFilterThemeOverrides(proxy, chartProxyParams, crossFilterThemeOverridePoint)\n : undefined;\n const formattingPanelOverrides = Object.assign({}, (chartOptionsToRestore !== null && chartOptionsToRestore !== void 0 ? chartOptionsToRestore : {}));\n const isTitleEnabled = () => {\n const isTitleEnabled = (obj) => {\n if (!obj) {\n return false;\n }\n return Object.keys(obj).some(key => _.get(obj[key], 'title.enabled', false));\n };\n return isTitleEnabled(gridOptionsThemeOverrides) || isTitleEnabled(apiThemeOverrides);\n };\n // Overrides in ascending precedence ordering.\n const overrides = [\n stockTheme ? inbuiltStockThemeOverrides(chartProxyParams, isTitleEnabled()) : undefined,\n crossFilteringOverrides,\n gridOptionsThemeOverrides,\n apiThemeOverrides,\n formattingPanelOverrides,\n ];\n // Recursively nest theme overrides so they are applied with correct precedence in\n // Standalone Charts - this is an undocumented feature.\n // Outermost theme overrides will be the formatting panel configured values, so they are\n // differentiated from grid-config and inbuilt overrides.\n const theme = overrides\n .filter((v) => !!v)\n .reduce((r, n) => ({\n baseTheme: r,\n overrides: n,\n }), rootTheme);\n // Avoid explicitly setting the `theme.palette` property unless we're using the restored theme\n // AND the palette is actually different.\n if (chartPaletteToRestore && themeName === chartThemeToRestore) {\n const rootThemePalette = getChartTheme(rootTheme).palette;\n if (!isIdenticalPalette(chartPaletteToRestore, rootThemePalette)) {\n theme.palette = chartPaletteToRestore;\n }\n }\n return theme;\n}\nfunction isIdenticalPalette(paletteA, paletteB) {\n const arrayCompare = (arrA, arrB) => {\n if (arrA.length !== arrB.length)\n return false;\n return arrA.every((v, i) => v === arrB[i]);\n };\n return arrayCompare(paletteA.fills, paletteB.fills) &&\n arrayCompare(paletteA.strokes, paletteB.strokes);\n}\nfunction isStockTheme(themeName) {\n return _.includes(Object.keys(themes), themeName);\n}\nfunction createCrossFilterThemeOverrides(proxy, chartProxyParams, overrideType) {\n const legend = {\n listeners: {\n legendItemClick: (e) => {\n const chart = proxy.getChart();\n chart.series.forEach((s) => {\n s.toggleSeriesItem(e.itemId, e.enabled);\n s.toggleSeriesItem(`${e.itemId}-filtered-out`, e.enabled);\n });\n },\n },\n };\n const series = {};\n if (overrideType === 'polar') {\n series.pie = {\n tooltip: {\n renderer: ({ angleName, datum, calloutLabelKey, radiusKey, angleValue, }) => {\n const title = angleName;\n const label = datum[calloutLabelKey];\n const ratio = datum[radiusKey];\n const totalValue = angleValue;\n return { title, content: `${label}: ${totalValue * ratio}` };\n },\n },\n };\n }\n return {\n [overrideType]: {\n tooltip: {\n delay: 500,\n },\n legend,\n listeners: {\n click: (e) => chartProxyParams.crossFilterCallback(e, true),\n },\n series,\n },\n };\n}\nconst STATIC_INBUILT_STOCK_THEME_AXES_OVERRIDES = ALL_AXIS_TYPES.reduce((r, n) => (Object.assign(Object.assign({}, r), { [n]: { title: { _enabledFromTheme: true } } })), {});\nfunction inbuiltStockThemeOverrides(params, titleEnabled) {\n const extraPadding = params.getExtraPaddingDirections();\n return {\n common: {\n axes: STATIC_INBUILT_STOCK_THEME_AXES_OVERRIDES,\n padding: {\n // don't add extra padding when a title is present!\n top: !titleEnabled && extraPadding.includes('top') ? 40 : 20,\n right: extraPadding.includes('right') ? 30 : 20,\n bottom: extraPadding.includes('bottom') ? 40 : 20,\n left: extraPadding.includes('left') ? 30 : 20,\n },\n },\n pie: {\n series: {\n title: { _enabledFromTheme: true },\n calloutLabel: { _enabledFromTheme: true },\n sectorLabel: {\n enabled: false,\n _enabledFromTheme: true,\n },\n },\n },\n };\n}\nfunction getSelectedTheme(chartProxyParams) {\n let chartThemeName = chartProxyParams.getChartThemeName();\n const availableThemes = chartProxyParams.getChartThemes();\n if (!_.includes(availableThemes, chartThemeName)) {\n chartThemeName = availableThemes[0];\n }\n return chartThemeName;\n}\nfunction lookupCustomChartTheme(chartProxyParams, name) {\n const { customChartThemes } = chartProxyParams;\n const 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\nconst validateIfDefined = (validationFn) => {\n return (value) => {\n if (value === undefined)\n return true;\n return validationFn(value);\n };\n};\nconst isString$1 = (value) => typeof value === 'string';\nconst isBoolean = (value) => typeof value === 'boolean';\nconst isValidSeriesChartType = (value) => typeof value === 'object';\nconst createWarnMessage = (property, expectedType) => (value) => `AG Grid - unable to update chart as invalid params supplied: \\`${property}: ${value}\\`, expected ${expectedType}.`;\nclass UpdateParamsValidator {\n static validateChartParams(params) {\n let paramsToValidate = params;\n switch (paramsToValidate.type) {\n case 'rangeChartUpdate':\n return UpdateParamsValidator.validateUpdateRangeChartParams(params);\n case 'pivotChartUpdate':\n return UpdateParamsValidator.validateUpdatePivotChartParams(params);\n case 'crossFilterChartUpdate':\n return UpdateParamsValidator.validateUpdateCrossFilterChartParams(params);\n default:\n console.warn(`AG Grid - Invalid value supplied for 'type': ${params.type}. It must be either 'rangeChartUpdate', 'pivotChartUpdate', or 'crossFilterChartUpdate'.`);\n return false;\n }\n }\n static validateUpdateRangeChartParams(params) {\n const validations = [\n ...UpdateParamsValidator.commonValidations,\n ...UpdateParamsValidator.cellRangeValidations,\n {\n property: 'seriesChartTypes',\n validationFn: (value) => value === undefined || (Array.isArray(value) && value.every(isValidSeriesChartType)),\n warnMessage: createWarnMessage('seriesChartTypes', 'Array of SeriesChartType'),\n },\n ];\n return UpdateParamsValidator.validateProperties(params, validations, ['type', 'chartId', 'chartType', 'chartThemeName', 'chartThemeOverrides', 'unlinkChart', 'cellRange', 'suppressChartRanges', 'aggFunc', 'seriesChartTypes'], 'UpdateRangeChartParams');\n }\n static validateUpdatePivotChartParams(params) {\n const validations = [\n ...UpdateParamsValidator.commonValidations,\n ];\n return UpdateParamsValidator.validateProperties(params, validations, ['type', 'chartId', 'chartType', 'chartThemeName', 'chartThemeOverrides', 'unlinkChart'], 'UpdatePivotChartParams');\n }\n static validateUpdateCrossFilterChartParams(params) {\n const validations = [\n ...UpdateParamsValidator.commonValidations,\n ...UpdateParamsValidator.cellRangeValidations,\n ];\n return UpdateParamsValidator.validateProperties(params, validations, ['type', 'chartId', 'chartType', 'chartThemeName', 'chartThemeOverrides', 'unlinkChart', 'cellRange', 'suppressChartRanges', 'aggFunc'], 'UpdateCrossFilterChartParams');\n }\n static validateProperties(params, validations, validPropertyNames, paramsType) {\n for (const validation of validations) {\n const { property, validationFn, warnMessage } = validation;\n if (property in params) {\n const value = params[property];\n if (!validationFn(value)) {\n console.warn(warnMessage(value));\n return false;\n }\n }\n }\n // Check for unexpected properties\n for (const property in params) {\n if (!validPropertyNames.includes(property)) {\n console.warn(`AG Grid - Unexpected property supplied. ${paramsType} does not contain: \\`${property}\\`.`);\n return false;\n }\n }\n return true;\n }\n}\nUpdateParamsValidator.validChartTypes = [\n 'column',\n 'groupedColumn',\n 'stackedColumn',\n 'normalizedColumn',\n 'bar',\n 'groupedBar',\n 'stackedBar',\n 'normalizedBar',\n 'line',\n 'scatter',\n 'bubble',\n 'pie',\n 'doughnut',\n 'area',\n 'stackedArea',\n 'normalizedArea',\n 'histogram',\n 'columnLineCombo',\n 'areaColumnCombo',\n 'customCombo'\n];\nUpdateParamsValidator.validateChartType = validateIfDefined((chartType) => {\n return UpdateParamsValidator.validChartTypes.includes(chartType);\n});\nUpdateParamsValidator.validateAgChartThemeOverrides = validateIfDefined((themeOverrides) => {\n // ensure supplied AgChartThemeOverrides is an object - can be improved if necessary?\n return typeof themeOverrides === 'object';\n});\nUpdateParamsValidator.validateChartParamsCellRange = validateIfDefined((cellRange) => {\n // ensure supplied ChartParamsCellRange is an object - can be improved if necessary?\n return typeof cellRange === 'object';\n});\nUpdateParamsValidator.validateAggFunc = validateIfDefined((aggFunc) => {\n // ensure supplied aggFunc is a `string` or `function` - can be improved if necessary?\n return typeof aggFunc === 'string' || typeof aggFunc === 'function';\n});\nUpdateParamsValidator.commonValidations = [\n { property: 'chartId', validationFn: isString$1, warnMessage: createWarnMessage('chartId', 'string') },\n {\n property: 'chartType',\n validationFn: UpdateParamsValidator.validateChartType,\n warnMessage: createWarnMessage('chartType', UpdateParamsValidator.validChartTypes.join(', '))\n },\n {\n property: 'chartThemeName',\n validationFn: isString$1,\n warnMessage: createWarnMessage('chartThemeName', 'string')\n },\n {\n property: 'chartThemeOverrides',\n validationFn: UpdateParamsValidator.validateAgChartThemeOverrides,\n warnMessage: createWarnMessage('chartThemeOverrides', 'AgChartThemeOverrides')\n },\n { property: 'unlinkChart', validationFn: isBoolean, warnMessage: createWarnMessage('unlinkChart', 'boolean') },\n];\nUpdateParamsValidator.cellRangeValidations = [\n {\n property: 'cellRange',\n validationFn: UpdateParamsValidator.validateChartParamsCellRange,\n warnMessage: createWarnMessage('cellRange', 'ChartParamsCellRange')\n },\n {\n property: 'suppressChartRanges',\n validationFn: isBoolean,\n warnMessage: createWarnMessage('suppressChartRanges', 'boolean')\n },\n {\n property: 'aggFunc',\n validationFn: UpdateParamsValidator.validateAggFunc,\n warnMessage: createWarnMessage('aggFunc', 'string or IAggFunc')\n },\n];\n\nvar __decorate$1d = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst DEFAULT_THEMES = ['ag-default', 'ag-material', 'ag-pastel', 'ag-vivid', 'ag-solar'];\nclass ChartController extends BeanStub {\n constructor(model) {\n super();\n this.model = model;\n }\n init() {\n this.setChartRange();\n this.addManagedListener(this.eventService, Events.EVENT_RANGE_SELECTION_CHANGED, 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 update(params) {\n var _a, _b, _c, _d, _e, _f, _g;\n if (!this.validUpdateType(params) || !UpdateParamsValidator.validateChartParams(params)) {\n return false;\n }\n const { chartId, chartType, chartThemeName, unlinkChart } = params;\n // create a common base for the chart model parameters (this covers pivot chart updates)\n const common = {\n chartId: chartId,\n pivotChart: this.model.pivotChart,\n chartType: chartType !== null && chartType !== void 0 ? chartType : this.model.chartType,\n chartThemeName: chartThemeName !== null && chartThemeName !== void 0 ? chartThemeName : this.model.chartThemeName,\n unlinkChart: unlinkChart !== null && unlinkChart !== void 0 ? unlinkChart : this.model.unlinked,\n cellRange: this.model.suppliedCellRange,\n aggFunc: this.model.aggFunc,\n seriesChartTypes: undefined,\n suppressChartRanges: false,\n crossFiltering: false\n };\n let chartModelParams = Object.assign({}, common);\n // modify the chart model properties based on the type of update\n switch (params.type) {\n case 'rangeChartUpdate':\n chartModelParams.cellRange = (_a = this.createCellRange(params)) !== null && _a !== void 0 ? _a : this.model.suppliedCellRange;\n chartModelParams.aggFunc = (_b = params.aggFunc) !== null && _b !== void 0 ? _b : this.model.aggFunc;\n chartModelParams.seriesChartTypes = params.seriesChartTypes;\n chartModelParams.suppressChartRanges = (_c = params.suppressChartRanges) !== null && _c !== void 0 ? _c : this.model.suppressChartRanges;\n break;\n case 'crossFilterChartUpdate':\n chartModelParams.cellRange = (_d = this.createCellRange(params)) !== null && _d !== void 0 ? _d : this.model.suppliedCellRange;\n chartModelParams.aggFunc = (_e = params.aggFunc) !== null && _e !== void 0 ? _e : this.model.aggFunc;\n chartModelParams.crossFiltering = true;\n chartModelParams.suppressChartRanges = (_f = params.suppressChartRanges) !== null && _f !== void 0 ? _f : this.model.suppressChartRanges;\n break;\n }\n this.model.updateModel(chartModelParams);\n // if the chart should be unlinked or chart ranges suppressed, remove all cell ranges; otherwise, set the chart range\n const removeChartCellRanges = chartModelParams.unlinkChart || chartModelParams.suppressChartRanges;\n removeChartCellRanges ? (_g = this.rangeService) === null || _g === void 0 ? void 0 : _g.setCellRanges([]) : this.setChartRange();\n return true;\n }\n updateForGridChange() {\n if (this.model.unlinked) {\n return;\n }\n this.model.updateCellRanges();\n this.model.updateData();\n this.setChartRange();\n }\n updateForDataChange() {\n if (this.model.unlinked) {\n return;\n }\n this.model.updateData();\n this.raiseChartModelUpdateEvent();\n }\n updateForRangeChange() {\n this.updateForGridChange();\n this.raiseChartRangeSelectionChangedEvent();\n }\n updateForPanelChange(updatedCol) {\n this.model.updateCellRanges(updatedCol);\n this.model.updateData();\n this.setChartRange();\n this.raiseChartRangeSelectionChangedEvent();\n }\n getChartUpdateParams(updatedOverrides) {\n const selectedCols = this.getSelectedValueColState();\n const fields = selectedCols.map(c => ({ colId: c.colId, displayName: c.displayName }));\n const data = this.getChartData();\n const selectedDimension = this.getSelectedDimension();\n return {\n data,\n grouping: this.isGrouping(),\n category: {\n id: selectedDimension.colId,\n name: selectedDimension.displayName,\n chartDataType: this.model.getChartDataType(selectedDimension.colId)\n },\n fields,\n chartId: this.getChartId(),\n getCrossFilteringContext: () => ({ lastSelectedChartId: 'xxx' }),\n seriesChartTypes: this.getSeriesChartTypes(),\n updatedOverrides: updatedOverrides\n };\n }\n getChartModel() {\n const modelType = this.model.pivotChart ? 'pivot' : 'range';\n const seriesChartTypes = this.isComboChart() ? this.model.comboChartModel.seriesChartTypes : undefined;\n return {\n modelType,\n chartId: this.model.chartId,\n chartType: this.model.chartType,\n chartThemeName: this.getChartThemeName(),\n chartOptions: this.chartProxy.getChartThemeOverrides(),\n chartPalette: this.chartProxy.getChartPalette(),\n cellRange: this.getCellRangeParams(),\n suppressChartRanges: this.model.suppressChartRanges,\n aggFunc: this.model.aggFunc,\n unlinkChart: this.model.unlinked,\n seriesChartTypes\n };\n }\n getChartId() {\n return this.model.chartId;\n }\n getChartData() {\n return this.model.chartData;\n }\n getChartType() {\n return this.model.chartType;\n }\n setChartType(chartType) {\n this.model.chartType = chartType;\n this.model.comboChartModel.updateSeriesChartTypes();\n this.raiseChartModelUpdateEvent();\n this.raiseChartOptionsChangedEvent();\n }\n setChartThemeName(chartThemeName) {\n this.model.chartThemeName = chartThemeName;\n this.raiseChartModelUpdateEvent();\n this.raiseChartOptionsChangedEvent();\n }\n getChartThemeName() {\n return this.model.chartThemeName;\n }\n isPivotChart() {\n return this.model.pivotChart;\n }\n isPivotMode() {\n return this.model.isPivotMode();\n }\n isGrouping() {\n return this.model.isGrouping();\n }\n isCrossFilterChart() {\n return this.model.crossFiltering;\n }\n getThemes() {\n return this.gridOptionsService.get('chartThemes') || DEFAULT_THEMES;\n }\n getPalettes() {\n const themeNames = this.getThemes();\n return themeNames.map(themeName => {\n const stockTheme = isStockTheme(themeName);\n const theme = stockTheme ? themeName : this.chartProxy.lookupCustomChartTheme(themeName);\n return getChartTheme(theme).palette;\n });\n }\n getValueColState() {\n return this.model.valueColState.map(this.displayNameMapper.bind(this));\n }\n getSelectedValueColState() {\n return this.getValueColState().filter(cs => cs.selected);\n }\n getSelectedDimension() {\n return this.model.getSelectedDimension();\n }\n displayNameMapper(col) {\n const columnNames = this.model.columnNames[col.colId];\n col.displayName = columnNames ? columnNames.join(' - ') : this.model.getColDisplayName(col.column);\n return col;\n }\n getColStateForMenu() {\n return { dimensionCols: this.model.dimensionColState, valueCols: this.getValueColState() };\n }\n setChartRange(silent = false) {\n if (this.rangeService && !this.model.suppressChartRanges && !this.model.unlinked) {\n this.rangeService.setCellRanges(this.getCellRanges());\n }\n if (!silent) {\n this.raiseChartModelUpdateEvent();\n }\n }\n detachChartRange() {\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 setChartProxy(chartProxy) {\n this.chartProxy = chartProxy;\n }\n getChartProxy() {\n return this.chartProxy;\n }\n isActiveXYChart() {\n return _.includes(['scatter', 'bubble'], this.getChartType());\n }\n isChartLinked() {\n return !this.model.unlinked;\n }\n customComboExists() {\n const savedCustomSeriesChartTypes = this.model.comboChartModel.savedCustomSeriesChartTypes;\n return savedCustomSeriesChartTypes && savedCustomSeriesChartTypes.length > 0;\n }\n getSeriesChartTypes() {\n return this.model.comboChartModel.seriesChartTypes;\n }\n isComboChart() {\n return this.model.isComboChart();\n }\n updateSeriesChartType(colId, chartType, secondaryAxis) {\n const seriesChartType = this.model.comboChartModel.seriesChartTypes.find(s => s.colId === colId);\n if (seriesChartType) {\n // once a combo chart has been modified it is now a 'customCombo' chart\n const updateChartType = this.model.chartType !== 'customCombo';\n if (updateChartType) {\n this.model.chartType = 'customCombo';\n }\n const 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.comboChartModel.savedCustomSeriesChartTypes = this.model.comboChartModel.seriesChartTypes;\n // series chart types can be modified, i.e. column chart types should be moved to primary axis\n this.model.comboChartModel.updateSeriesChartTypes();\n this.updateForDataChange();\n if (updateChartType) {\n // update the settings panel by raising an EVENT_CHART_TYPE_CHANGED event\n this.dispatchEvent({\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({\n type: ChartController.EVENT_CHART_SERIES_CHART_TYPE_CHANGED\n });\n }\n this.raiseChartOptionsChangedEvent();\n }\n }\n getActiveSeriesChartTypes() {\n const selectedColIds = this.getSelectedValueColState().map(c => c.colId);\n return this.getSeriesChartTypes().filter(s => selectedColIds.includes(s.colId));\n }\n getChartSeriesTypes() {\n const supportedComboSeriesTypes = ['line', 'column', 'area'];\n return this.isComboChart() ? supportedComboSeriesTypes : [getSeriesType(this.getChartType())];\n }\n getCellRanges() {\n return [this.model.dimensionCellRange, this.model.valueCellRange].filter(r => r);\n }\n createCellRange(params) {\n var _a;\n return params.cellRange && ((_a = this.rangeService) === null || _a === void 0 ? void 0 : _a.createCellRangeFromCellRangeParams(params.cellRange));\n }\n validUpdateType(params) {\n var _a;\n if (!params.type) {\n console.warn(`AG Grid - Unable to update chart as the 'type' is missing. It must be either 'rangeChartUpdate', 'pivotChartUpdate', or 'crossFilterChartUpdate'.`);\n return false;\n }\n const chartTypeMap = {\n 'Range Chart': () => !this.isPivotChart() && !this.isCrossFilterChart(),\n 'Pivot Chart': () => this.isPivotChart(),\n 'Cross Filter Chart': () => this.isCrossFilterChart()\n };\n const currentChartType = (_a = Object.keys(chartTypeMap).find(type => chartTypeMap[type]())) !== null && _a !== void 0 ? _a : 'Range Chart';\n const valid = params.type ===\n `${currentChartType[0].toLowerCase()}${currentChartType.slice(1).replace(/ /g, '')}Update`;\n if (!valid) {\n console.warn(`AG Grid - Unable to update chart as a '${params.type}' update type is not permitted on a ${currentChartType}.`);\n }\n return valid;\n }\n getCellRangeParams() {\n const cellRanges = this.getCellRanges();\n const firstCellRange = cellRanges[0];\n const startRow = (firstCellRange && firstCellRange.startRow) || null;\n const 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((columns, value) => columns.concat(value.columns.map(c => c.getId())), [])\n };\n }\n raiseChartModelUpdateEvent() {\n const event = {\n type: ChartController.EVENT_CHART_MODEL_UPDATE\n };\n this.dispatchEvent(event);\n }\n raiseChartUpdatedEvent() {\n const event = {\n type: ChartController.EVENT_CHART_UPDATED\n };\n this.dispatchEvent(event);\n }\n raiseChartApiUpdateEvent() {\n const event = {\n type: ChartController.EVENT_CHART_API_UPDATE\n };\n this.dispatchEvent(event);\n }\n raiseChartOptionsChangedEvent() {\n const { chartId, chartType } = this.getChartModel();\n const event = {\n type: Events.EVENT_CHART_OPTIONS_CHANGED,\n chartId,\n chartType,\n chartThemeName: this.getChartThemeName(),\n chartOptions: this.chartProxy.getChartThemeOverrides()\n };\n this.eventService.dispatchEvent(event);\n }\n raiseChartRangeSelectionChangedEvent() {\n const event = {\n type: Events.EVENT_CHART_RANGE_SELECTION_CHANGED,\n id: this.model.chartId,\n chartId: this.model.chartId,\n cellRange: this.getCellRangeParams()\n };\n this.eventService.dispatchEvent(event);\n }\n destroy() {\n super.destroy();\n if (this.rangeService) {\n this.rangeService.setCellRanges([]);\n }\n }\n}\nChartController.EVENT_CHART_UPDATED = 'chartUpdated';\nChartController.EVENT_CHART_API_UPDATE = 'chartApiUpdate';\nChartController.EVENT_CHART_MODEL_UPDATE = 'chartModelUpdate';\nChartController.EVENT_CHART_TYPE_CHANGED = 'chartTypeChanged';\nChartController.EVENT_CHART_SERIES_CHART_TYPE_CHANGED = 'chartSeriesChartTypeChanged';\n__decorate$1d([\n Autowired('rangeService')\n], ChartController.prototype, \"rangeService\", void 0);\n__decorate$1d([\n PostConstruct\n], ChartController.prototype, \"init\", null);\n\nvar __decorate$1c = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst DefaultDataPanelDef = {\n groups: [\n { type: 'categories', isOpen: true },\n { type: 'series', isOpen: true },\n { type: 'seriesChartType', isOpen: true }\n ]\n};\nclass ChartDataPanel extends Component {\n constructor(chartController, chartOptionsService) {\n super(ChartDataPanel.TEMPLATE);\n this.chartController = chartController;\n this.chartOptionsService = chartOptionsService;\n this.columnComps = new Map();\n }\n init() {\n this.updatePanels();\n this.addManagedListener(this.chartController, ChartController.EVENT_CHART_MODEL_UPDATE, this.updatePanels.bind(this));\n this.addManagedListener(this.chartController, ChartController.EVENT_CHART_API_UPDATE, this.updatePanels.bind(this));\n this.createAutoScrollService();\n }\n destroy() {\n this.clearComponents();\n super.destroy();\n }\n updatePanels() {\n var _a, _b;\n const currentChartType = this.chartType;\n const { dimensionCols, valueCols } = this.chartController.getColStateForMenu();\n const colIds = dimensionCols.map(c => c.colId).concat(valueCols.map(c => c.colId));\n this.chartType = this.chartController.getChartType();\n const groupExpandedState = this.getGroupExpandedState();\n if (_.areEqual(_.keys(this.columnComps), colIds) && this.chartType === currentChartType) {\n // if possible, we just update existing components\n [...dimensionCols, ...valueCols].forEach(col => {\n this.columnComps.get(col.colId).setValue(col.selected, true);\n });\n if (this.chartController.isActiveXYChart()) {\n const getSeriesLabel = this.generateGetSeriesLabel();\n valueCols.forEach(col => {\n this.columnComps.get(col.colId).setLabel(getSeriesLabel(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 const seriesChartTypeIndex = (_a = this.getDataPanelDef().groups) === null || _a === void 0 ? void 0 : _a.reduce((prevVal, { type }, index) => {\n if (type === 'seriesChartType') {\n return index;\n }\n return prevVal;\n }, -1);\n if (seriesChartTypeIndex !== -1) {\n this.createSeriesChartTypeGroup(valueCols, seriesChartTypeIndex);\n }\n }\n else {\n // otherwise, we re-create everything\n this.clearComponents();\n (_b = this.getDataPanelDef().groups) === null || _b === void 0 ? void 0 : _b.forEach(({ type }) => {\n if (type === 'categories') {\n this.createCategoriesGroup(dimensionCols);\n }\n else if (type === 'series') {\n this.createSeriesGroup(valueCols);\n }\n else if (type === 'seriesChartType') {\n this.createSeriesChartTypeGroup(valueCols);\n }\n else {\n console.warn(`AG Grid: invalid charts data panel group name supplied: '${type}'`);\n }\n });\n }\n this.restoreGroupExpandedState(groupExpandedState);\n }\n getGroupExpandedState() {\n const groups = [\n { groupType: 'categories', comp: this.categoriesGroupComp },\n { groupType: 'series', comp: this.seriesGroupComp },\n { groupType: 'seriesChartType', comp: this.seriesChartTypeGroupComp }\n ];\n return groups.map(({ groupType, comp }) => {\n var _a, _b;\n const defaultExpanded = Boolean((_b = (_a = this.getDataPanelDef().groups) === null || _a === void 0 ? void 0 : _a.find(({ type }) => type === groupType)) === null || _b === void 0 ? void 0 : _b.isOpen);\n return !comp ? defaultExpanded : comp.isExpanded();\n });\n }\n restoreGroupExpandedState(groupExpandedState) {\n [\n this.categoriesGroupComp,\n this.seriesGroupComp,\n this.seriesChartTypeGroupComp\n ].forEach((group, idx) => {\n if (!group) {\n return;\n }\n group.toggleGroupExpand(groupExpandedState[idx]);\n });\n }\n createAutoScrollService() {\n const eGui = this.getGui();\n this.autoScrollService = new AutoScrollService({\n scrollContainer: eGui,\n scrollAxis: 'y',\n getVerticalPosition: () => eGui.scrollTop,\n setVerticalPosition: (position) => eGui.scrollTop = position\n });\n }\n createComponent(component, id) {\n const eDiv = document.createElement('div');\n eDiv.id = id;\n eDiv.className = 'ag-chart-data-section';\n eDiv.appendChild(component.getGui());\n return eDiv;\n }\n addComponent(parent, component, id) {\n const eDiv = this.createComponent(component, id);\n parent.appendChild(eDiv);\n }\n addComponentAtIndex(parent, component, id, index) {\n const eDiv = this.createComponent(component, id);\n parent.insertBefore(eDiv, parent.children[index]);\n }\n addChangeListener(component, columnState) {\n this.addManagedListener(component, AgAbstractField.EVENT_CHANGED, () => {\n columnState.selected = component.getValue();\n this.chartController.updateForPanelChange(columnState);\n });\n }\n createCategoriesGroup(columns) {\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 const inputName = `chartDimension${this.getCompId()}`;\n columns.forEach(col => {\n const 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 createSeriesGroup(columns) {\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 const 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(newValue => {\n this.chartOptionsService.setPairedMode(!!newValue);\n this.chartController.updateForGridChange();\n });\n this.seriesGroupComp.addItem(pairedModeToggle);\n }\n const getSeriesLabel = this.generateGetSeriesLabel();\n columns.forEach(col => {\n const comp = this.seriesGroupComp.createManagedBean(new AgCheckbox());\n comp.addCssClass('ag-data-select-checkbox');\n const 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 const eGui = this.getGui();\n const seriesGroupGui = this.seriesGroupComp.getGui();\n this.addComponent(eGui, this.seriesGroupComp, 'seriesGroup');\n const dropTarget = {\n getIconName: () => DragAndDropService.ICON_MOVE,\n getContainer: () => seriesGroupGui,\n onDragging: (params) => this.onDragging(params),\n onDragLeave: () => this.onDragLeave(),\n isInterestedIn: this.isInterestedIn.bind(this),\n targetContainsSource: true\n };\n this.dragAndDropService.addDropTarget(dropTarget);\n this.addDestroyFunc(() => this.dragAndDropService.removeDropTarget(dropTarget));\n }\n createSeriesChartTypeGroup(columns, index) {\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 const seriesChartTypes = this.chartController.getSeriesChartTypes();\n columns.forEach(col => {\n if (!col.selected) {\n return;\n }\n const seriesChartType = seriesChartTypes.filter(s => s.colId === col.colId)[0];\n if (!seriesChartType) {\n return;\n }\n const 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 const 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((enabled) => this.chartController.updateSeriesChartType(col.colId, undefined, enabled));\n seriesItemGroup.addItem(secondaryAxisComp);\n const translate = (key, defaultText) => {\n return this.chartTranslationService.translate(key, defaultText);\n };\n const 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 const chartTypeComp = seriesItemGroup.createManagedBean(new AgSelect());\n chartTypeComp\n .setLabelAlignment('left')\n .setLabelWidth(\"flex\")\n .addOptions(availableChartTypes)\n .setValue(seriesChartType.chartType)\n .onValueChange((chartType) => this.chartController.updateSeriesChartType(col.colId, chartType));\n seriesItemGroup.addItem(chartTypeComp);\n this.seriesChartTypeGroupComp.addItem(seriesItemGroup);\n });\n if (index === undefined) {\n this.addComponent(this.getGui(), this.seriesChartTypeGroupComp, 'seriesChartTypeGroup');\n }\n else {\n this.addComponentAtIndex(this.getGui(), this.seriesChartTypeGroupComp, 'seriesChartTypeGroup', index);\n }\n }\n addDragHandle(comp, col) {\n const eDragHandle = _.createIconNoSpan('columnDrag', this.gridOptionsService);\n eDragHandle.classList.add('ag-drag-handle', 'ag-chart-data-column-drag-handle');\n comp.getGui().insertAdjacentElement('beforeend', eDragHandle);\n const dragSource = {\n type: DragSourceType.ChartPanel,\n eElement: eDragHandle,\n dragItemName: col.displayName,\n getDragItem: () => ({ columns: [col.column] }),\n onDragStopped: () => this.onDragStop()\n };\n this.dragAndDropService.addDragSource(dragSource, true);\n this.addDestroyFunc(() => this.dragAndDropService.removeDragSource(dragSource));\n }\n generateGetSeriesLabel() {\n if (!this.chartController.isActiveXYChart()) {\n return col => _.escapeString(col.displayName);\n }\n const isBubble = this.chartType === 'bubble';\n const isInPairedMode = this.isInPairedMode();\n let selectedValuesCount = 0;\n const indexToAxisLabel = new Map();\n indexToAxisLabel.set(0, 'X');\n indexToAxisLabel.set(1, 'Y');\n indexToAxisLabel.set(2, 'size');\n return (col) => {\n const escapedLabel = _.escapeString(col.displayName);\n if (!col.selected) {\n return escapedLabel;\n }\n let 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 getCategoryGroupTitle() {\n return this.chartTranslationService.translate(this.chartController.isActiveXYChart() ? 'labels' : 'categories');\n }\n getSeriesGroupTitle() {\n return this.chartTranslationService.translate(this.chartController.isActiveXYChart() ? 'xyValues' : 'series');\n }\n getDataPanelDef() {\n var _a;\n const userProvidedDataPanelDef = (_a = this.gridOptionsService.get('chartToolPanelsDef')) === null || _a === void 0 ? void 0 : _a.dataPanel;\n return userProvidedDataPanelDef ? userProvidedDataPanelDef : DefaultDataPanelDef;\n }\n isInPairedMode() {\n return this.chartController.isActiveXYChart() && this.chartOptionsService.getSeriesOption('paired', 'scatter');\n }\n clearComponents() {\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 onDragging(draggingEvent) {\n const itemHovered = this.checkHoveredItem(draggingEvent);\n if (!itemHovered) {\n return;\n }\n this.lastDraggedColumn = draggingEvent.dragItem.columns[0];\n const { comp, position } = itemHovered;\n const { comp: lastHoveredComp, position: lastHoveredPosition } = this.lastHoveredItem || {};\n if (comp === lastHoveredComp && position === lastHoveredPosition) {\n return;\n }\n this.autoScrollService.check(draggingEvent.event);\n this.clearHoveredItems();\n this.lastHoveredItem = { comp, position };\n const eGui = comp.getGui();\n eGui.classList.add('ag-list-item-hovered', `ag-item-highlight-${position}`);\n }\n checkHoveredItem(draggingEvent) {\n if (_.missing(draggingEvent.vDirection)) {\n return null;\n }\n const mouseEvent = draggingEvent.event;\n for (const comp of this.columnComps.values()) {\n const eGui = comp.getGui();\n if (!eGui.querySelector('.ag-chart-data-column-drag-handle')) {\n continue;\n }\n const rect = eGui.getBoundingClientRect();\n const isOverComp = mouseEvent.clientY >= rect.top && mouseEvent.clientY <= rect.bottom;\n if (isOverComp) {\n const height = eGui.clientHeight;\n const position = mouseEvent.clientY > rect.top + (height / 2) ? 'bottom' : 'top';\n return { comp, position };\n }\n }\n return null;\n }\n onDragLeave() {\n this.clearHoveredItems();\n }\n onDragStop() {\n if (this.lastHoveredItem) {\n const { dimensionCols, valueCols } = this.chartController.getColStateForMenu();\n const draggedColumnState = [...dimensionCols, ...valueCols]\n .find(state => state.column === this.lastDraggedColumn);\n if (draggedColumnState) {\n let 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 clearHoveredItems() {\n this.columnComps.forEach(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 isInterestedIn(type) {\n return type === DragSourceType.ChartPanel;\n }\n}\nChartDataPanel.TEMPLATE = `
`;\n__decorate$1c([\n Autowired('dragAndDropService')\n], ChartDataPanel.prototype, \"dragAndDropService\", void 0);\n__decorate$1c([\n Autowired('chartTranslationService')\n], ChartDataPanel.prototype, \"chartTranslationService\", void 0);\n__decorate$1c([\n PostConstruct\n], ChartDataPanel.prototype, \"init\", null);\n\nvar __decorate$1b = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass FontPanel extends Component {\n constructor(params) {\n super();\n this.activeComps = [];\n this.params = params;\n }\n init() {\n const 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 addCompToPanel(comp) {\n this.fontGroup.addItem(comp);\n this.activeComps.push(comp);\n }\n setEnabled(enabled) {\n this.fontGroup.setEnabled(enabled);\n }\n initGroup() {\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(enabled => {\n if (this.params.setEnabled) {\n this.params.setEnabled(enabled);\n }\n });\n }\n initFontFamilySelect() {\n const 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 const { family } = this.params.initialFont;\n let initialValue = families[0];\n if (family) {\n // check for known values using lowercase\n const lowerCaseValues = families.map(f => f.toLowerCase());\n const valueIndex = lowerCaseValues.indexOf(family.toLowerCase());\n if (valueIndex >= 0) {\n initialValue = families[valueIndex];\n }\n else {\n // add user provided value to list\n const capitalisedFontValue = _.capitalise(family);\n families.push(capitalisedFontValue);\n initialValue = capitalisedFontValue;\n }\n }\n const options = families.sort().map(value => ({ value, text: value }));\n this.familySelect.addOptions(options)\n .setInputWidth('flex')\n .setValue(`${initialValue}`)\n .onValueChange(newValue => this.params.setFont({ family: newValue }));\n }\n initFontSizeSelect() {\n const sizes = [8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36];\n const { size } = this.params.initialFont;\n if (!_.includes(sizes, size)) {\n sizes.push(size);\n }\n const options = sizes.sort((a, b) => a - b).map(value => ({ value: `${value}`, text: `${value}` }));\n this.sizeSelect.addOptions(options)\n .setInputWidth('flex')\n .setValue(`${size}`)\n .onValueChange(newValue => this.params.setFont({ size: parseInt(newValue, 10) }));\n this.sizeSelect.setLabel(this.chartTranslationService.translate('size'));\n }\n initFontWeightStyleSelect() {\n const { weight = 'normal', style = 'normal' } = this.params.initialFont;\n const 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 let selectedOption = weightStyles.find(x => x.weight === weight && x.style === style);\n if (!selectedOption) {\n selectedOption = { name: 'predefined', weight, style };\n weightStyles.unshift(selectedOption);\n }\n const options = weightStyles.map(ws => ({\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(newValue => {\n const selectedWeightStyle = weightStyles.find(x => x.name === newValue);\n this.params.setFont({ weight: selectedWeightStyle.weight, style: selectedWeightStyle.style });\n });\n }\n initFontColorPicker() {\n this.colorPicker\n .setLabel(this.chartTranslationService.translate('color'))\n .setInputWidth(45)\n .setValue(`${this.params.initialFont.color}`)\n .onValueChange(newColor => this.params.setFont({ color: newColor }));\n }\n addItemToPanel(item) {\n this.fontGroup.addItem(item);\n this.activeComps.push(item);\n }\n destroyActiveComps() {\n this.activeComps.forEach(comp => {\n _.removeFromParent(comp.getGui());\n this.destroyBean(comp);\n });\n }\n destroy() {\n this.destroyActiveComps();\n super.destroy();\n }\n}\nFontPanel.TEMPLATE = `
\n \n \n \n
\n \n \n
\n
\n
`;\n__decorate$1b([\n RefSelector('fontGroup')\n], FontPanel.prototype, \"fontGroup\", void 0);\n__decorate$1b([\n RefSelector('familySelect')\n], FontPanel.prototype, \"familySelect\", void 0);\n__decorate$1b([\n RefSelector('weightStyleSelect')\n], FontPanel.prototype, \"weightStyleSelect\", void 0);\n__decorate$1b([\n RefSelector('sizeSelect')\n], FontPanel.prototype, \"sizeSelect\", void 0);\n__decorate$1b([\n RefSelector('colorPicker')\n], FontPanel.prototype, \"colorPicker\", void 0);\n__decorate$1b([\n Autowired('chartTranslationService')\n], FontPanel.prototype, \"chartTranslationService\", void 0);\n__decorate$1b([\n PostConstruct\n], FontPanel.prototype, \"init\", null);\n\nvar __decorate$1a = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass LegendPanel extends Component {\n constructor({ chartOptionsService, isExpandedOnInit = false }) {\n super();\n this.activePanels = [];\n this.chartOptionsService = chartOptionsService;\n this.isExpandedOnInit = isExpandedOnInit;\n }\n init() {\n const 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 initLegendGroup() {\n this.legendGroup\n .setTitle(this.chartTranslationService.translate(\"legend\"))\n .hideEnabledCheckbox(false)\n .setEnabled(this.chartOptionsService.getChartOption(\"legend.enabled\") || false)\n .toggleGroupExpand(this.isExpandedOnInit)\n .onEnableChange(enabled => {\n this.chartOptionsService.setChartOption(\"legend.enabled\", enabled);\n this.legendGroup.toggleGroupExpand(true);\n });\n }\n initLegendPosition() {\n const positions = ['top', 'right', 'bottom', 'left'];\n this.legendPositionSelect\n .setLabel(this.chartTranslationService.translate(\"position\"))\n .setLabelWidth(\"flex\")\n .setInputWidth(80)\n .addOptions(positions.map(position => ({\n value: position,\n text: this.chartTranslationService.translate(position)\n })))\n .setValue(this.chartOptionsService.getChartOption(\"legend.position\"))\n .onValueChange(newValue => this.chartOptionsService.setChartOption(\"legend.position\", newValue));\n }\n initLegendPadding() {\n const 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(newValue => this.chartOptionsService.setChartOption(\"legend.spacing\", newValue));\n }\n initLegendItems() {\n const initSlider = (expression, labelKey, input, defaultMaxValue) => {\n const 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(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 initLabelPanel() {\n const chartProxy = this.chartOptionsService;\n const 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 const setFont = (font) => {\n const 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 const params = {\n enabled: true,\n suppressEnabledCheckbox: true,\n initialFont: initialFont,\n setFont: setFont\n };\n const fontPanelComp = this.createBean(new FontPanel(params));\n this.legendGroup.addItem(fontPanelComp);\n this.activePanels.push(fontPanelComp);\n }\n destroyActivePanels() {\n this.activePanels.forEach(panel => {\n _.removeFromParent(panel.getGui());\n this.destroyBean(panel);\n });\n }\n destroy() {\n this.destroyActivePanels();\n super.destroy();\n }\n}\nLegendPanel.TEMPLATE = `
\n \n \n \n \n \n \n \n \n \n
`;\n__decorate$1a([\n RefSelector('legendGroup')\n], LegendPanel.prototype, \"legendGroup\", void 0);\n__decorate$1a([\n RefSelector('legendPositionSelect')\n], LegendPanel.prototype, \"legendPositionSelect\", void 0);\n__decorate$1a([\n RefSelector('legendPaddingSlider')\n], LegendPanel.prototype, \"legendPaddingSlider\", void 0);\n__decorate$1a([\n RefSelector('markerSizeSlider')\n], LegendPanel.prototype, \"markerSizeSlider\", void 0);\n__decorate$1a([\n RefSelector('markerStrokeSlider')\n], LegendPanel.prototype, \"markerStrokeSlider\", void 0);\n__decorate$1a([\n RefSelector('markerPaddingSlider')\n], LegendPanel.prototype, \"markerPaddingSlider\", void 0);\n__decorate$1a([\n RefSelector('itemPaddingXSlider')\n], LegendPanel.prototype, \"itemPaddingXSlider\", void 0);\n__decorate$1a([\n RefSelector('itemPaddingYSlider')\n], LegendPanel.prototype, \"itemPaddingYSlider\", void 0);\n__decorate$1a([\n Autowired('chartTranslationService')\n], LegendPanel.prototype, \"chartTranslationService\", void 0);\n__decorate$1a([\n PostConstruct\n], LegendPanel.prototype, \"init\", null);\n\nvar __decorate$19 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass AxisTicksPanel extends Component {\n constructor(chartOptionsService) {\n super();\n this.chartOptionsService = chartOptionsService;\n }\n init() {\n const 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 initAxisTicks() {\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(newColor => this.chartOptionsService.setAxisProperty(\"tick.color\", newColor));\n const initInput = (expression, input, label, defaultMaxValue) => {\n const currentValue = this.chartOptionsService.getAxisProperty(expression);\n input.setLabel(label)\n .setMaxValue(getMaxValue(currentValue, defaultMaxValue))\n .setValue(`${currentValue}`)\n .setTextFieldWidth(45)\n .onValueChange(newValue => 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}\nAxisTicksPanel.TEMPLATE = `
\n \n \n \n \n \n
`;\n__decorate$19([\n RefSelector('axisTicksGroup')\n], AxisTicksPanel.prototype, \"axisTicksGroup\", void 0);\n__decorate$19([\n RefSelector('axisTicksColorPicker')\n], AxisTicksPanel.prototype, \"axisTicksColorPicker\", void 0);\n__decorate$19([\n RefSelector('axisTicksWidthSlider')\n], AxisTicksPanel.prototype, \"axisTicksWidthSlider\", void 0);\n__decorate$19([\n RefSelector('axisTicksSizeSlider')\n], AxisTicksPanel.prototype, \"axisTicksSizeSlider\", void 0);\n__decorate$19([\n Autowired('chartTranslationService')\n], AxisTicksPanel.prototype, \"chartTranslationService\", void 0);\n__decorate$19([\n PostConstruct\n], AxisTicksPanel.prototype, \"init\", null);\n\nvar __decorate$18 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass AgAngleSelect extends AgAbstractLabel {\n constructor(config) {\n super(config, AgAngleSelect.TEMPLATE);\n this.radius = 0;\n this.offsetX = 0;\n this.offsetY = 0;\n }\n postConstruct() {\n super.postConstruct();\n this.dragListener = {\n eElement: this.eParentCircle,\n dragStartPixels: 0,\n onDragStart: (e) => {\n this.parentCircleRect = this.eParentCircle.getBoundingClientRect();\n },\n onDragging: (e) => this.calculateAngleDrag(e),\n onDragStop: () => { }\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((value) => {\n if (value == null || value === '') {\n value = '0';\n }\n value = this.eAngleValue.normalizeValue(value);\n let 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, () => {\n const eDocument = this.gridOptionsService.getDocument();\n if (this.eAngleValue.getInputElement().contains(eDocument.activeElement)) {\n return;\n }\n this.updateNumberInput();\n });\n }\n updateNumberInput() {\n const normalizedValue = this.normalizeNegativeValue(this.getValue());\n this.eAngleValue.setValue(normalizedValue.toString());\n }\n positionChildCircle(radians) {\n const rect = this.parentCircleRect || { width: 24, height: 24 };\n const eChildCircle = this.eChildCircle;\n const centerX = rect.width / 2;\n const 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 calculatePolar() {\n const x = this.offsetX;\n const y = this.offsetY;\n const 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 calculateCartesian() {\n const radians = this.toRadians(this.getValue());\n const radius = this.getRadius();\n this\n .setOffsetX(Math.cos(radians) * radius)\n .setOffsetY(Math.sin(radians) * radius);\n }\n setOffsetX(offset) {\n if (this.offsetX !== offset) {\n this.offsetX = offset;\n this.calculatePolar();\n }\n return this;\n }\n setOffsetY(offset) {\n if (this.offsetY !== offset) {\n this.offsetY = offset;\n this.calculatePolar();\n }\n return this;\n }\n calculateAngleDrag(e) {\n const rect = this.parentCircleRect;\n const centerX = rect.width / 2;\n const centerY = rect.height / 2;\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n const dx = x - centerX;\n const dy = y - centerY;\n const radians = Math.atan2(dy, dx);\n this.setValue(radians, true);\n }\n toDegrees(radians) {\n return radians / Math.PI * 180;\n }\n toRadians(degrees) {\n return degrees / 180 * Math.PI;\n }\n normalizeNegativeValue(degrees) {\n return degrees < 0 ? 360 + degrees : degrees;\n }\n normalizeAngle180(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 getRadius() {\n return this.radius;\n }\n setRadius(r) {\n if (this.radius === r) {\n return this;\n }\n this.radius = r;\n this.calculateCartesian();\n return this;\n }\n onValueChange(callbackFn) {\n this.addManagedListener(this, AgAbstractField.EVENT_CHANGED, () => {\n callbackFn(this.degrees);\n });\n return this;\n }\n getValue(radians) {\n return radians ? this.toRadians(this.degrees) : this.degrees;\n }\n setValue(degrees, radians) {\n let 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 setWidth(width) {\n _.setFixedWidth(this.getGui(), width);\n return this;\n }\n setDisabled(disabled) {\n super.setDisabled(disabled);\n this.eAngleValue.setDisabled(disabled);\n return this;\n }\n destroy() {\n this.dragService.removeDragSource(this.dragListener);\n super.destroy();\n }\n}\nAgAngleSelect.TEMPLATE = `
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
`;\n__decorate$18([\n RefSelector('eLabel')\n], AgAngleSelect.prototype, \"eLabel\", void 0);\n__decorate$18([\n RefSelector('eParentCircle')\n], AgAngleSelect.prototype, \"eParentCircle\", void 0);\n__decorate$18([\n RefSelector('eChildCircle')\n], AgAngleSelect.prototype, \"eChildCircle\", void 0);\n__decorate$18([\n RefSelector('eAngleValue')\n], AgAngleSelect.prototype, \"eAngleValue\", void 0);\n__decorate$18([\n Autowired('dragService')\n], AgAngleSelect.prototype, \"dragService\", void 0);\n\nvar __decorate$17 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass AxisPanel extends Component {\n constructor({ chartController, chartOptionsService, isExpandedOnInit = false }) {\n super();\n this.activePanels = [];\n this.axisLabelUpdateFuncs = [];\n this.prevXRotation = 0;\n this.prevYRotation = 0;\n this.chartController = chartController;\n this.chartOptionsService = chartOptionsService;\n this.isExpandedOnInit = isExpandedOnInit;\n }\n init() {\n const 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 const updateAxisLabelRotations = () => this.axisLabelUpdateFuncs.forEach(func => func());\n this.addManagedListener(this.chartController, ChartController.EVENT_CHART_UPDATED, updateAxisLabelRotations);\n }\n initAxis() {\n this.axisGroup\n .setTitle(this.translate(\"axis\"))\n .toggleGroupExpand(this.isExpandedOnInit)\n .hideEnabledCheckbox(true);\n this.axisColorInput\n .setLabel(this.translate(\"color\"))\n .setLabelWidth(\"flex\")\n .setInputWidth(45)\n .setValue(this.chartOptionsService.getAxisProperty(\"line.color\"))\n .onValueChange(newColor => this.chartOptionsService.setAxisProperty(\"line.color\", newColor));\n const currentValue = this.chartOptionsService.getAxisProperty(\"line.width\");\n this.axisLineWidthSlider\n .setMaxValue(getMaxValue(currentValue, 10))\n .setLabel(this.translate(\"thickness\"))\n .setTextFieldWidth(45)\n .setValue(`${currentValue}`)\n .onValueChange(newValue => this.chartOptionsService.setAxisProperty(\"line.width\", newValue));\n }\n initAxisTicks() {\n const axisTicksComp = this.createBean(new AxisTicksPanel(this.chartOptionsService));\n this.axisGroup.addItem(axisTicksComp);\n this.activePanels.push(axisTicksComp);\n }\n initAxisLabels() {\n const 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 const setFont = (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 };\n const params = {\n name: this.translate(\"labels\"),\n enabled: true,\n suppressEnabledCheckbox: true,\n initialFont,\n setFont\n };\n const labelPanelComp = this.createBean(new FontPanel(params));\n this.axisGroup.addItem(labelPanelComp);\n this.activePanels.push(labelPanelComp);\n this.addAdditionalLabelComps(labelPanelComp);\n }\n addAdditionalLabelComps(labelPanelComp) {\n this.addLabelPadding(labelPanelComp);\n const { xRotationComp, yRotationComp } = this.createRotationWidgets();\n const autoRotateCb = this.initLabelRotations(xRotationComp, yRotationComp);\n labelPanelComp.addCompToPanel(autoRotateCb);\n labelPanelComp.addCompToPanel(xRotationComp);\n labelPanelComp.addCompToPanel(yRotationComp);\n }\n initLabelRotations(xRotationComp, yRotationComp) {\n const getLabelRotation = (axisType) => {\n return this.chartOptionsService.getLabelRotation(axisType);\n };\n const setLabelRotation = (axisType, value) => {\n this.chartOptionsService.setLabelRotation(axisType, value);\n };\n const updateAutoRotate = (autoRotate) => {\n this.chartOptionsService.setAxisProperty(\"label.autoRotate\", autoRotate);\n if (autoRotate) {\n // store prev rotations before we remove them from the options\n this.prevXRotation = getLabelRotation(\"xAxis\");\n this.prevYRotation = getLabelRotation(\"yAxis\");\n // `autoRotate` is only\n setLabelRotation(\"xAxis\", undefined);\n setLabelRotation(\"yAxis\", undefined);\n }\n else {\n // reinstate prev rotations\n setLabelRotation(\"xAxis\", this.prevXRotation);\n setLabelRotation(\"yAxis\", this.prevYRotation);\n }\n xRotationComp.setDisabled(autoRotate);\n yRotationComp.setDisabled(autoRotate);\n };\n const getAutoRotateValue = () => {\n const xRotation = getLabelRotation(\"xAxis\");\n const yRotation = getLabelRotation(\"yAxis\");\n if (xRotation == undefined && yRotation == undefined) {\n return this.chartOptionsService.getAxisProperty(\"label.autoRotate\");\n }\n return false;\n };\n const autoRotate = getAutoRotateValue();\n const autoRotateCheckbox = this.createBean(new AgCheckbox())\n .setLabel(this.translate('autoRotate'))\n .setValue(autoRotate)\n .onValueChange(updateAutoRotate);\n // init rotation comp state\n xRotationComp.setDisabled(autoRotate);\n yRotationComp.setDisabled(autoRotate);\n return autoRotateCheckbox;\n }\n createRotationWidgets() {\n const degreesSymbol = String.fromCharCode(176);\n const createRotationComp = (labelKey, axisType) => {\n const label = `${this.chartTranslationService.translate(labelKey)} ${degreesSymbol}`;\n const value = this.chartOptionsService.getLabelRotation(axisType);\n const angleSelect = new AgAngleSelect()\n .setLabel(label)\n .setLabelWidth(\"flex\")\n .setValue(value || 0)\n .onValueChange(newValue => 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(() => {\n const value = this.chartOptionsService.getLabelRotation(axisType);\n angleSelect.setValue(value || 0);\n });\n return this.createBean(angleSelect);\n };\n return {\n xRotationComp: createRotationComp(\"xRotation\", \"xAxis\"),\n yRotationComp: createRotationComp(\"yRotation\", \"yAxis\")\n };\n }\n addLabelPadding(labelPanelComp) {\n const labelPaddingSlider = this.createBean(new AgSlider());\n const 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(newValue => this.chartOptionsService.setAxisProperty(\"label.padding\", newValue));\n labelPanelComp.addCompToPanel(labelPaddingSlider);\n }\n translate(key, defaultText) {\n return this.chartTranslationService.translate(key, defaultText);\n }\n destroyActivePanels() {\n this.activePanels.forEach(panel => {\n _.removeFromParent(panel.getGui());\n this.destroyBean(panel);\n });\n }\n destroy() {\n this.destroyActivePanels();\n super.destroy();\n }\n}\nAxisPanel.TEMPLATE = `
\n \n \n \n \n
`;\n__decorate$17([\n RefSelector('axisGroup')\n], AxisPanel.prototype, \"axisGroup\", void 0);\n__decorate$17([\n RefSelector('axisColorInput')\n], AxisPanel.prototype, \"axisColorInput\", void 0);\n__decorate$17([\n RefSelector('axisLineWidthSlider')\n], AxisPanel.prototype, \"axisLineWidthSlider\", void 0);\n__decorate$17([\n Autowired('chartTranslationService')\n], AxisPanel.prototype, \"chartTranslationService\", void 0);\n__decorate$17([\n PostConstruct\n], AxisPanel.prototype, \"init\", null);\n\nvar __decorate$16 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass NavigatorPanel extends Component {\n constructor({ chartOptionsService, isExpandedOnInit = false }) {\n super();\n this.chartOptionsService = chartOptionsService;\n this.isExpandedOnInit = isExpandedOnInit;\n }\n init() {\n const groupParams = {\n cssIdentifier: 'charts-format-top-level',\n direction: 'vertical'\n };\n this.setTemplate(NavigatorPanel.TEMPLATE, { navigatorGroup: groupParams });\n this.initNavigator();\n }\n initNavigator() {\n const { chartTranslationService } = this;\n this.navigatorGroup\n .setTitle(chartTranslationService.translate(\"navigator\"))\n .hideEnabledCheckbox(false)\n .setEnabled(this.chartOptionsService.getChartOption(\"navigator.enabled\") || false)\n .onEnableChange(enabled => {\n this.chartOptionsService.setChartOption(\"navigator.enabled\", enabled);\n this.navigatorGroup.toggleGroupExpand(true);\n })\n .toggleGroupExpand(this.isExpandedOnInit);\n const 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(height => this.chartOptionsService.setChartOption(\"navigator.height\", height));\n }\n destroy() {\n super.destroy();\n }\n}\nNavigatorPanel.TEMPLATE = `
\n \n \n \n
`;\n__decorate$16([\n RefSelector('navigatorGroup')\n], NavigatorPanel.prototype, \"navigatorGroup\", void 0);\n__decorate$16([\n RefSelector('navigatorHeightSlider')\n], NavigatorPanel.prototype, \"navigatorHeightSlider\", void 0);\n__decorate$16([\n Autowired('chartTranslationService')\n], NavigatorPanel.prototype, \"chartTranslationService\", void 0);\n__decorate$16([\n PostConstruct\n], NavigatorPanel.prototype, \"init\", null);\n\nvar __decorate$15 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass PaddingPanel extends Component {\n constructor(chartOptionsService, chartController) {\n super();\n this.chartOptionsService = chartOptionsService;\n this.chartController = chartController;\n }\n init() {\n const groupParams = {\n cssIdentifier: 'charts-format-sub-level',\n direction: 'vertical',\n suppressOpenCloseIcons: true\n };\n this.setTemplate(PaddingPanel.TEMPLATE, { chartPaddingGroup: groupParams });\n this.addManagedListener(this.eventService, Events.EVENT_CHART_OPTIONS_CHANGED, (e) => {\n this.updateTopPadding(e.chartOptions);\n });\n this.initGroup();\n this.initChartPaddingItems();\n }\n initGroup() {\n this.chartPaddingGroup\n .setTitle(this.chartTranslationService.translate(\"padding\"))\n .hideOpenCloseIcons(true)\n .hideEnabledCheckbox(true);\n }\n initChartPaddingItems() {\n const initInput = (property, input) => {\n const 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(newValue => 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 updateTopPadding(chartOptions) {\n var _a, _b;\n // keep 'top' padding in sync with chart as toggling chart title on / off change the 'top' padding\n const seriesType = this.chartController.getChartSeriesTypes()[0];\n const topPadding = (_b = (_a = chartOptions[seriesType]) === null || _a === void 0 ? void 0 : _a.padding) === null || _b === void 0 ? void 0 : _b.top;\n if (topPadding != null) {\n this.paddingTopSlider.setValue(topPadding);\n }\n }\n}\nPaddingPanel.TEMPLATE = `
\n \n \n \n \n \n \n
`;\n__decorate$15([\n RefSelector('chartPaddingGroup')\n], PaddingPanel.prototype, \"chartPaddingGroup\", void 0);\n__decorate$15([\n RefSelector('paddingTopSlider')\n], PaddingPanel.prototype, \"paddingTopSlider\", void 0);\n__decorate$15([\n RefSelector('paddingRightSlider')\n], PaddingPanel.prototype, \"paddingRightSlider\", void 0);\n__decorate$15([\n RefSelector('paddingBottomSlider')\n], PaddingPanel.prototype, \"paddingBottomSlider\", void 0);\n__decorate$15([\n RefSelector('paddingLeftSlider')\n], PaddingPanel.prototype, \"paddingLeftSlider\", void 0);\n__decorate$15([\n Autowired('chartTranslationService')\n], PaddingPanel.prototype, \"chartTranslationService\", void 0);\n__decorate$15([\n PostConstruct\n], PaddingPanel.prototype, \"init\", null);\n\nvar __decorate$14 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass BackgroundPanel extends Component {\n constructor(chartOptionsService) {\n super();\n this.chartOptionsService = chartOptionsService;\n }\n init() {\n const 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 initGroup() {\n this.group\n .setTitle(this.chartTranslationService.translate('background'))\n .setEnabled(this.chartOptionsService.getChartOption('background.visible'))\n .hideOpenCloseIcons(true)\n .hideEnabledCheckbox(false)\n .onEnableChange(enabled => this.chartOptionsService.setChartOption('background.visible', enabled));\n }\n initColorPicker() {\n this.colorPicker\n .setLabel(this.chartTranslationService.translate('color'))\n .setLabelWidth('flex')\n .setInputWidth(45)\n .setValue(this.chartOptionsService.getChartOption('background.fill'))\n .onValueChange(newColor => this.chartOptionsService.setChartOption('background.fill', newColor));\n }\n}\nBackgroundPanel.TEMPLATE = `
\n \n \n \n
`;\n__decorate$14([\n RefSelector('chartBackgroundGroup')\n], BackgroundPanel.prototype, \"group\", void 0);\n__decorate$14([\n RefSelector('colorPicker')\n], BackgroundPanel.prototype, \"colorPicker\", void 0);\n__decorate$14([\n Autowired('chartTranslationService')\n], BackgroundPanel.prototype, \"chartTranslationService\", void 0);\n__decorate$14([\n PostConstruct\n], BackgroundPanel.prototype, \"init\", null);\n\nvar __decorate$13 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass TitlePanel extends Component {\n constructor(chartOptionsService) {\n super(TitlePanel.TEMPLATE);\n this.chartOptionsService = chartOptionsService;\n this.activePanels = [];\n }\n init() {\n this.initFontPanel();\n this.titlePlaceholder = this.chartTranslationService.translate('titlePlaceholder');\n }\n hasTitle() {\n const title = this.getOption('title');\n return title && title.enabled && title.text && title.text.length > 0;\n }\n initFontPanel() {\n const hasTitle = this.hasTitle();\n const setFont = (font, isSilent) => {\n if (font.family) {\n this.setOption('title.fontFamily', font.family, isSilent);\n }\n if (font.weight) {\n this.setOption('title.fontWeight', font.weight, isSilent);\n }\n if (font.style) {\n this.setOption('title.fontStyle', font.style, isSilent);\n }\n if (font.size) {\n this.setOption('title.fontSize', font.size, isSilent);\n }\n if (font.color) {\n this.setOption('title.color', font.color, isSilent);\n }\n };\n const 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, true);\n }\n const fontPanelParams = {\n name: this.chartTranslationService.translate('title'),\n enabled: hasTitle,\n suppressEnabledCheckbox: false,\n initialFont,\n setFont,\n setEnabled: (enabled) => {\n if (this.toolbarExists()) {\n // extra padding is only included when the toolbar is present\n const topPadding = this.getOption('padding.top');\n this.setOption('padding.top', enabled ? topPadding - 20 : topPadding + 20);\n }\n this.setOption('title.enabled', enabled);\n const currentTitleText = this.getOption('title.text');\n const replaceableTitleText = currentTitleText === 'Title' || (currentTitleText === null || currentTitleText === void 0 ? void 0 : currentTitleText.trim().length) === 0;\n if (enabled && replaceableTitleText) {\n this.setOption('title.text', this.titlePlaceholder);\n }\n }\n };\n const fontPanelComp = this.createBean(new FontPanel(fontPanelParams));\n // add the title spacing slider to font panel\n fontPanelComp.addItemToPanel(this.createSpacingSlicer());\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', () => {\n fontPanelComp.setEnabled(this.hasTitle());\n });\n }\n createSpacingSlicer() {\n const spacingSlider = this.createBean(new AgSlider());\n const currentValue = this.chartOptionsService.getChartOption('title.spacing');\n spacingSlider.setLabel(this.chartTranslationService.translate('spacing'))\n .setMaxValue(Math.max(currentValue, 100))\n .setValue(`${currentValue}`)\n .setTextFieldWidth(45)\n .onValueChange(newValue => this.chartOptionsService.setChartOption('title.spacing', newValue));\n return spacingSlider;\n }\n toolbarExists() {\n const toolbarItemsFunc = this.gridOptionsService.getCallback('getChartToolbarItems');\n if (!toolbarItemsFunc) {\n return true;\n }\n const params = {\n defaultItems: ['chartUnlink', 'chartDownload']\n };\n const topItems = ['chartLink', 'chartUnlink', 'chartDownload'];\n return topItems.some(v => { var _a; return (_a = (toolbarItemsFunc && toolbarItemsFunc(params))) === null || _a === void 0 ? void 0 : _a.includes(v); });\n }\n getOption(expression) {\n return this.chartOptionsService.getChartOption(expression);\n }\n setOption(property, value, isSilent) {\n this.chartOptionsService.setChartOption(property, value, isSilent);\n }\n destroyActivePanels() {\n this.activePanels.forEach(panel => {\n _.removeFromParent(panel.getGui());\n this.destroyBean(panel);\n });\n }\n destroy() {\n this.destroyActivePanels();\n super.destroy();\n }\n}\nTitlePanel.TEMPLATE = `
`;\n__decorate$13([\n Autowired('chartTranslationService')\n], TitlePanel.prototype, \"chartTranslationService\", void 0);\n__decorate$13([\n PostConstruct\n], TitlePanel.prototype, \"init\", null);\n\nvar __decorate$12 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass ChartPanel extends Component {\n constructor({ chartController, chartOptionsService, isExpandedOnInit = false }) {\n super();\n this.activePanels = [];\n this.chartController = chartController;\n this.chartOptionsService = chartOptionsService;\n this.isExpandedOnInit = isExpandedOnInit;\n }\n init() {\n const 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 initGroup() {\n this.chartGroup\n .setTitle(this.chartTranslationService.translate('chart'))\n .toggleGroupExpand(this.isExpandedOnInit)\n .hideEnabledCheckbox(true);\n }\n initTitles() {\n const titlePanelComp = this.createBean(new TitlePanel(this.chartOptionsService));\n this.chartGroup.addItem(titlePanelComp);\n this.activePanels.push(titlePanelComp);\n }\n initPaddingPanel() {\n const paddingPanelComp = this.createBean(new PaddingPanel(this.chartOptionsService, this.chartController));\n this.chartGroup.addItem(paddingPanelComp);\n this.activePanels.push(paddingPanelComp);\n }\n initBackgroundPanel() {\n const backgroundPanelComp = this.createBean(new BackgroundPanel(this.chartOptionsService));\n this.chartGroup.addItem(backgroundPanelComp);\n this.activePanels.push(backgroundPanelComp);\n }\n destroyActivePanels() {\n this.activePanels.forEach(panel => {\n _.removeFromParent(panel.getGui());\n this.destroyBean(panel);\n });\n }\n destroy() {\n this.destroyActivePanels();\n super.destroy();\n }\n}\nChartPanel.TEMPLATE = `
\n \n
`;\n__decorate$12([\n RefSelector('chartGroup')\n], ChartPanel.prototype, \"chartGroup\", void 0);\n__decorate$12([\n Autowired('chartTranslationService')\n], ChartPanel.prototype, \"chartTranslationService\", void 0);\n__decorate$12([\n PostConstruct\n], ChartPanel.prototype, \"init\", null);\n\nvar __decorate$11 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass ShadowPanel extends Component {\n constructor(chartOptionsService, getSelectedSeries) {\n super();\n this.chartOptionsService = chartOptionsService;\n this.getSelectedSeries = getSelectedSeries;\n }\n init() {\n const 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 initSeriesShadow() {\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(newValue => 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(newValue => this.chartOptionsService.setSeriesOption(\"shadow.color\", newValue, this.getSelectedSeries()));\n const initInput = (input, property, minValue, defaultMaxValue) => {\n const 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(newValue => 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}\nShadowPanel.TEMPLATE = `
\n \n \n \n \n \n \n
`;\n__decorate$11([\n RefSelector('shadowGroup')\n], ShadowPanel.prototype, \"shadowGroup\", void 0);\n__decorate$11([\n RefSelector('shadowColorPicker')\n], ShadowPanel.prototype, \"shadowColorPicker\", void 0);\n__decorate$11([\n RefSelector('shadowBlurSlider')\n], ShadowPanel.prototype, \"shadowBlurSlider\", void 0);\n__decorate$11([\n RefSelector('shadowXOffsetSlider')\n], ShadowPanel.prototype, \"shadowXOffsetSlider\", void 0);\n__decorate$11([\n RefSelector('shadowYOffsetSlider')\n], ShadowPanel.prototype, \"shadowYOffsetSlider\", void 0);\n__decorate$11([\n Autowired('chartTranslationService')\n], ShadowPanel.prototype, \"chartTranslationService\", void 0);\n__decorate$11([\n PostConstruct\n], ShadowPanel.prototype, \"init\", null);\n\nfunction initFontPanelParams({ labelName, chartOptionsService, getSelectedSeries, seriesOptionLabelProperty }) {\n const getFontOptionExpression = (fontOption) => {\n return `${seriesOptionLabelProperty}.${fontOption}`;\n };\n const getFontOption = (fontOption) => {\n const expression = getFontOptionExpression(fontOption);\n return chartOptionsService.getSeriesOption(expression, getSelectedSeries());\n };\n const setFontOption = (fontOption, value) => {\n const expression = getFontOptionExpression(fontOption);\n chartOptionsService.setSeriesOption(expression, value, getSelectedSeries());\n };\n const initialFont = {\n family: getFontOption('fontFamily'),\n style: getFontOption('fontStyle'),\n weight: getFontOption('fontWeight'),\n size: getFontOption('fontSize'),\n color: getFontOption('color'),\n };\n const setFont = (font) => {\n if (font.family) {\n setFontOption('fontFamily', font.family);\n }\n if (font.weight) {\n setFontOption('fontWeight', font.weight);\n }\n if (font.style) {\n setFontOption('fontStyle', font.style);\n }\n if (font.size) {\n setFontOption('fontSize', font.size);\n }\n if (font.color) {\n setFontOption('color', font.color);\n }\n };\n const params = {\n name: labelName,\n enabled: getFontOption('enabled') || false,\n setEnabled: (enabled) => setFontOption('enabled', enabled),\n suppressEnabledCheckbox: false,\n initialFont: initialFont,\n setFont: setFont\n };\n return params;\n}\n\nvar __decorate$10 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass MarkersPanel extends Component {\n constructor(chartOptionsService, getSelectedSeries) {\n super();\n this.chartOptionsService = chartOptionsService;\n this.getSelectedSeries = getSelectedSeries;\n }\n init() {\n const groupParams = {\n cssIdentifier: 'charts-format-sub-level',\n direction: 'vertical'\n };\n this.setTemplate(MarkersPanel.TEMPLATE, { seriesMarkersGroup: groupParams });\n this.initMarkers();\n }\n initMarkers() {\n const 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(value => this.setSeriesOption(\"marker.shape\", value));\n // scatter charts should always show markers\n const chartType = this.chartOptionsService.getChartType();\n const 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(newValue => this.setSeriesOption(\"marker.enabled\", newValue));\n const initInput = (expression, input, labelKey, defaultMaxValue) => {\n const currentValue = this.getSeriesOption(expression);\n input.setLabel(this.chartTranslationService.translate(labelKey))\n .setMaxValue(getMaxValue(currentValue, defaultMaxValue))\n .setValue(`${currentValue}`)\n .setTextFieldWidth(45)\n .onValueChange(newValue => 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 getSeriesOption(expression) {\n return this.chartOptionsService.getSeriesOption(expression, this.getSelectedSeries());\n }\n setSeriesOption(expression, newValue) {\n this.chartOptionsService.setSeriesOption(expression, newValue, this.getSelectedSeries());\n }\n}\nMarkersPanel.TEMPLATE = `
\n \n \n \n \n \n \n
`;\n__decorate$10([\n RefSelector('seriesMarkersGroup')\n], MarkersPanel.prototype, \"seriesMarkersGroup\", void 0);\n__decorate$10([\n RefSelector('seriesMarkerShapeSelect')\n], MarkersPanel.prototype, \"seriesMarkerShapeSelect\", void 0);\n__decorate$10([\n RefSelector('seriesMarkerSizeSlider')\n], MarkersPanel.prototype, \"seriesMarkerSizeSlider\", void 0);\n__decorate$10([\n RefSelector('seriesMarkerMinSizeSlider')\n], MarkersPanel.prototype, \"seriesMarkerMinSizeSlider\", void 0);\n__decorate$10([\n RefSelector('seriesMarkerStrokeWidthSlider')\n], MarkersPanel.prototype, \"seriesMarkerStrokeWidthSlider\", void 0);\n__decorate$10([\n Autowired('chartTranslationService')\n], MarkersPanel.prototype, \"chartTranslationService\", void 0);\n__decorate$10([\n PostConstruct\n], MarkersPanel.prototype, \"init\", null);\n\nvar __decorate$$ = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass CalloutPanel extends Component {\n constructor(chartOptionsService, getSelectedSeries) {\n super();\n this.chartOptionsService = chartOptionsService;\n this.getSelectedSeries = getSelectedSeries;\n }\n init() {\n const groupParams = {\n cssIdentifier: 'charts-format-sub-level',\n direction: 'vertical'\n };\n this.setTemplate(CalloutPanel.TEMPLATE, { calloutGroup: groupParams });\n this.initCalloutOptions();\n }\n initCalloutOptions() {\n this.calloutGroup\n .setTitle(this.chartTranslationService.translate(\"callout\"))\n .setEnabled(true)\n .hideOpenCloseIcons(true)\n .hideEnabledCheckbox(true);\n const initInput = (expression, input, labelKey, defaultMaxValue) => {\n const 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(newValue => this.chartOptionsService.setSeriesOption(expression, newValue, this.getSelectedSeries()));\n };\n initInput('calloutLine.length', this.calloutLengthSlider, 'length', 40);\n initInput('calloutLine.strokeWidth', this.calloutStrokeWidthSlider, 'strokeWidth', 10);\n initInput('calloutLabel.offset', this.labelOffsetSlider, 'offset', 30);\n }\n}\nCalloutPanel.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\nvar __decorate$_ = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass SeriesPanel extends Component {\n constructor({ chartController, chartOptionsService, seriesType, isExpandedOnInit = false }) {\n super();\n this.activePanels = [];\n this.widgetFuncs = {\n 'lineWidth': () => this.initLineWidth(),\n 'strokeWidth': () => this.initStrokeWidth(),\n 'lineDash': () => this.initLineDash(),\n 'lineOpacity': () => this.initLineOpacity(),\n 'fillOpacity': () => this.initFillOpacity(),\n 'markers': () => this.initMarkers(),\n 'labels': () => this.initLabels(),\n 'shadow': () => this.initShadow(),\n 'tooltips': () => this.initTooltips(),\n 'bins': () => 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.chartController = chartController;\n this.chartOptionsService = chartOptionsService;\n this.seriesType = seriesType || this.getChartSeriesType();\n this.isExpandedOnInit = isExpandedOnInit;\n }\n init() {\n const 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(this.isExpandedOnInit)\n .hideEnabledCheckbox(true);\n this.addManagedListener(this.chartController, ChartController.EVENT_CHART_SERIES_CHART_TYPE_CHANGED, this.refreshWidgets.bind(this));\n this.refreshWidgets();\n }\n refreshWidgets() {\n this.destroyActivePanels();\n const chart = this.chartController.getChartProxy().getChart();\n chart.waitForUpdate().then(() => {\n if (this.chartController.isComboChart()) {\n this.updateSeriesType();\n this.initSeriesSelect();\n }\n this.seriesWidgetMappings[this.seriesType].forEach((w) => this.widgetFuncs[w]());\n })\n .catch(e => console.error(`AG Grid - chart rendering failed`, e));\n }\n initSeriesSelect() {\n const 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((newValue) => {\n this.seriesType = newValue;\n this.refreshWidgets();\n });\n this.seriesGroup.addItem(seriesSelect);\n this.activePanels.push(seriesSelect);\n }\n initTooltips() {\n const 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(newValue => this.setSeriesOption(\"tooltip.enabled\", newValue));\n this.addWidget(seriesTooltipsToggle);\n }\n initStrokeWidth() {\n const currentValue = this.getSeriesOption(\"strokeWidth\");\n const 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(newValue => this.setSeriesOption(\"strokeWidth\", newValue));\n this.addWidget(seriesStrokeWidthSlider);\n }\n initLineWidth() {\n const currentValue = this.getSeriesOption(\"strokeWidth\");\n const 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(newValue => this.setSeriesOption(\"strokeWidth\", newValue));\n this.addWidget(seriesLineWidthSlider);\n }\n initLineDash() {\n const lineDash = this.getSeriesOption(\"lineDash\");\n const currentValue = lineDash ? lineDash[0] : 0;\n const 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(newValue => this.setSeriesOption(\"lineDash\", [newValue]));\n this.addWidget(seriesLineDashSlider);\n }\n initLineOpacity() {\n const currentValue = this.getSeriesOption(\"strokeOpacity\");\n const 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(newValue => this.setSeriesOption(\"strokeOpacity\", newValue));\n this.addWidget(seriesLineOpacitySlider);\n }\n initFillOpacity() {\n const currentValue = this.getSeriesOption(\"fillOpacity\");\n const 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(newValue => this.setSeriesOption(\"fillOpacity\", newValue));\n this.addWidget(seriesFillOpacitySlider);\n }\n initLabels() {\n const seriesOptionLabelProperty = this.seriesType === 'pie' ? 'calloutLabel' : 'label';\n const labelName = this.seriesType === 'pie'\n ? this.chartTranslationService.translate('calloutLabels')\n : this.chartTranslationService.translate('labels');\n const labelParams = initFontPanelParams({\n labelName,\n chartOptionsService: this.chartOptionsService,\n getSelectedSeries: () => this.seriesType,\n seriesOptionLabelProperty\n });\n const labelPanelComp = this.createBean(new FontPanel(labelParams));\n if (this.seriesType === 'pie') {\n const calloutPanelComp = this.createBean(new CalloutPanel(this.chartOptionsService, () => this.seriesType));\n labelPanelComp.addCompToPanel(calloutPanelComp);\n this.activePanels.push(calloutPanelComp);\n }\n this.addWidget(labelPanelComp);\n if (this.seriesType === 'pie') {\n const sectorParams = initFontPanelParams({\n labelName: this.chartTranslationService.translate('sectorLabels'),\n chartOptionsService: this.chartOptionsService,\n getSelectedSeries: () => this.seriesType,\n seriesOptionLabelProperty: 'sectorLabel'\n });\n const sectorPanelComp = this.createBean(new FontPanel(sectorParams));\n const positionRatioComp = this.getSectorLabelPositionRatio();\n sectorPanelComp.addCompToPanel(positionRatioComp);\n this.addWidget(sectorPanelComp);\n }\n }\n getSectorLabelPositionRatio() {\n const expression = 'sectorLabel.positionRatio';\n const currentValue = this.chartOptionsService.getSeriesOption(expression, this.seriesType);\n const sectorLabelPositionRatioSlider = this.createBean(new AgSlider());\n return sectorLabelPositionRatioSlider\n .setLabel(this.translate(\"positionRatio\"))\n .setStep(0.05)\n .setMaxValue(getMaxValue(currentValue, 1))\n .setTextFieldWidth(45)\n .setValue(`${currentValue}`)\n .onValueChange(newValue => this.chartOptionsService.setSeriesOption(expression, newValue, this.seriesType));\n }\n initShadow() {\n const shadowPanelComp = this.createBean(new ShadowPanel(this.chartOptionsService, () => this.seriesType));\n this.addWidget(shadowPanelComp);\n }\n initMarkers() {\n const markersPanelComp = this.createBean(new MarkersPanel(this.chartOptionsService, () => this.seriesType));\n this.addWidget(markersPanelComp);\n }\n initBins() {\n var _a;\n const currentValue = ((_a = this.getSeriesOption(\"bins\")) !== null && _a !== void 0 ? _a : this.getSeriesOption(\"calculatedBins\")).length;\n const seriesBinCountSlider = this.createBean(new AgSlider());\n seriesBinCountSlider\n .setLabel(this.translate(\"histogramBinCount\"))\n .setMinValue(0)\n .setMaxValue(getMaxValue(currentValue, 20))\n .setTextFieldWidth(45)\n .setValue(`${currentValue}`)\n .onValueChange(newValue => this.setSeriesOption(\"binCount\", newValue));\n this.addWidget(seriesBinCountSlider);\n }\n addWidget(widget) {\n this.seriesGroup.addItem(widget);\n this.activePanels.push(widget);\n }\n getSeriesOption(expression) {\n return this.chartOptionsService.getSeriesOption(expression, this.seriesType);\n }\n setSeriesOption(expression, newValue) {\n this.chartOptionsService.setSeriesOption(expression, newValue, this.seriesType);\n }\n getChartSeriesType() {\n if (this.chartController.getSeriesChartTypes().length === 0)\n return 'column';\n const ct = this.chartController.getSeriesChartTypes()[0].chartType;\n if (ct === 'columnLineCombo')\n return 'column';\n if (ct === 'areaColumnCombo')\n return 'area';\n return getSeriesType(ct);\n }\n getSeriesSelectOptions() {\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 const seriesSelectOptions = new Set();\n this.chartController.getActiveSeriesChartTypes().forEach(s => {\n const chartType = getSeriesType(s.chartType);\n seriesSelectOptions.add(this.seriesSelectOptions.get(chartType));\n });\n return Array.from(seriesSelectOptions);\n }\n updateSeriesType() {\n const activeChartTypes = this.chartController.getActiveSeriesChartTypes().map(s => getSeriesType(s.chartType));\n const 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 translate(key, defaultText) {\n return this.chartTranslationService.translate(key, defaultText);\n }\n destroyActivePanels() {\n this.activePanels.forEach(panel => {\n _.removeFromParent(panel.getGui());\n this.destroyBean(panel);\n });\n }\n destroy() {\n this.destroyActivePanels();\n super.destroy();\n }\n}\nSeriesPanel.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\nvar __decorate$Z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nfunction getMaxValue(currentValue, defaultMaxValue) {\n return Math.max(currentValue, defaultMaxValue);\n}\nconst DefaultFormatPanelDef = {\n groups: [\n { type: 'chart' },\n { type: 'legend' },\n { type: 'series' },\n { type: 'axis' },\n { type: 'navigator' },\n ]\n};\nclass FormatPanel extends Component {\n constructor(chartController, chartOptionsService) {\n super(FormatPanel.TEMPLATE);\n this.chartController = chartController;\n this.chartOptionsService = chartOptionsService;\n this.panels = [];\n this.isGroupPanelShownInSeries = (group, seriesType) => {\n const commonGroupPanels = ['chart', 'legend', 'series'];\n if (commonGroupPanels.includes(group)) {\n return true;\n }\n const cartesianOnlyGroupPanels = ['axis', 'navigator'];\n const cartesianSeries = ['bar', 'column', 'line', 'area', 'scatter', 'histogram', 'cartesian'];\n return !!(cartesianOnlyGroupPanels.includes(group) && cartesianSeries.includes(seriesType));\n };\n }\n init() {\n this.createPanels();\n this.addManagedListener(this.chartController, ChartController.EVENT_CHART_UPDATED, () => this.createPanels(true));\n this.addManagedListener(this.chartController, ChartController.EVENT_CHART_API_UPDATE, () => this.createPanels(false));\n }\n createPanels(reuse) {\n var _a;\n const chartType = this.chartController.getChartType();\n const isGrouping = this.chartController.isGrouping();\n const seriesType = getSeriesType(chartType);\n if (reuse && chartType === this.chartType && isGrouping === this.isGrouping) {\n // existing panels can be re-used\n return;\n }\n this.destroyPanels();\n (_a = this.getFormatPanelDef().groups) === null || _a === void 0 ? void 0 : _a.forEach((groupDef) => {\n const group = groupDef.type;\n // ensure the group should be displayed for the current series type\n if (!this.isGroupPanelShownInSeries(group, seriesType)) {\n return;\n }\n const opts = {\n chartController: this.chartController,\n chartOptionsService: this.chartOptionsService,\n isExpandedOnInit: groupDef.isOpen,\n seriesType\n };\n if (group === 'chart') {\n this.addComponent(new ChartPanel(opts));\n }\n else if (group === 'legend') {\n this.addComponent(new LegendPanel(opts));\n }\n else if (group === 'axis') {\n this.addComponent(new AxisPanel(opts));\n }\n else if (group === 'series') {\n this.addComponent(new SeriesPanel(opts));\n }\n else if (group === 'navigator') {\n this.addComponent(new NavigatorPanel(opts));\n }\n else {\n console.warn(`AG Grid: invalid charts format panel group name supplied: '${groupDef.type}'`);\n }\n });\n this.chartType = chartType;\n this.isGrouping = isGrouping;\n }\n getFormatPanelDef() {\n var _a;\n const userProvidedFormatPanelDef = (_a = this.gridOptionsService.get('chartToolPanelsDef')) === null || _a === void 0 ? void 0 : _a.formatPanel;\n return userProvidedFormatPanelDef ? userProvidedFormatPanelDef : DefaultFormatPanelDef;\n }\n addComponent(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 destroyPanels() {\n this.panels.forEach(panel => {\n _.removeFromParent(panel.getGui());\n this.destroyBean(panel);\n });\n }\n destroy() {\n this.destroyPanels();\n super.destroy();\n }\n}\nFormatPanel.TEMPLATE = `
`;\n__decorate$Z([\n PostConstruct\n], FormatPanel.prototype, \"init\", null);\n\nvar __decorate$Y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass MiniChart extends Component {\n constructor(container, tooltipName) {\n super();\n this.size = 58;\n this.padding = 5;\n this.root = new Group();\n const scene = new Scene({ document: window.document, width: this.size, height: 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 }\n init() {\n this.scene.canvas.element.title = this.chartTranslationService.translate(this.tooltipName);\n // necessary to force scene graph render as we are not using the standalone factory!\n this.scene.render()\n .catch((e) => console.error(`AG Grid - chart update failed`, e));\n }\n}\n__decorate$Y([\n Autowired('chartTranslationService')\n], MiniChart.prototype, \"chartTranslationService\", void 0);\n__decorate$Y([\n PostConstruct\n], MiniChart.prototype, \"init\", null);\n\nvar __decorate$X = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass MiniChartWithAxes extends MiniChart {\n constructor(container, tooltipName) {\n super(container, tooltipName);\n this.stroke = 'gray';\n this.axisOvershoot = 3;\n }\n addAxes() {\n const size = this.size;\n const padding = this.padding;\n const 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 const 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 const root = this.root;\n root.append(leftAxis);\n root.append(bottomAxis);\n }\n}\n__decorate$X([\n PostConstruct\n], MiniChartWithAxes.prototype, \"addAxes\", null);\n\nfunction createColumnRects(params) {\n const { stacked, size, padding, xScalePadding, xScaleDomain, yScaleDomain } = params;\n const xScale = new BandScale$5();\n xScale.domain = xScaleDomain;\n xScale.range = [padding, size - padding];\n xScale.paddingInner = xScalePadding;\n xScale.paddingOuter = xScalePadding;\n const yScale = new LinearScale$1();\n yScale.domain = yScaleDomain;\n yScale.range = [size - padding, padding];\n const createBars = (series, xScale, yScale) => {\n return series.map((datum, i) => {\n const top = yScale.convert(datum);\n const 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((d) => createBars(d, xScale, yScale));\n }\n return createBars(params.data, xScale, yScale);\n}\nfunction createLinePaths(root, data, size, padding) {\n const xScale = new LinearScale$1();\n xScale.domain = [0, 4];\n xScale.range = [padding, size - padding];\n const yScale = new LinearScale$1();\n yScale.domain = [0, 10];\n yScale.range = [size - padding, padding];\n const lines = data.map((series) => {\n const line = new Path();\n line.strokeWidth = 3;\n line.lineCap = 'round';\n line.fill = undefined;\n series.forEach((datum, i) => {\n line.path[i > 0 ? 'lineTo' : 'moveTo'](xScale.convert(i), yScale.convert(datum));\n });\n return line;\n });\n const linesGroup = new Group();\n linesGroup.setClipRectInGroupCoordinateSpace(new BBox(padding, padding, size - padding * 2, size - padding * 2));\n linesGroup.append(lines);\n root.append(linesGroup);\n return lines;\n}\n\nclass MiniColumn extends MiniChartWithAxes {\n constructor(container, fills, strokes) {\n super(container, \"groupedColumnTooltip\");\n this.columnData = [2, 3, 4];\n const { root, columnData, size, padding } = this;\n this.columns = createColumnRects({\n stacked: false,\n root,\n data: columnData,\n size,\n 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 }\n updateColors(fills, strokes) {\n this.columns.forEach((column, i) => {\n column.fill = fills[i];\n column.stroke = strokes[i];\n });\n }\n}\nMiniColumn.chartType = 'groupedColumn';\n\nclass MiniStackedColumn extends MiniChartWithAxes {\n constructor(container, fills, strokes, data = MiniStackedColumn.data, yScaleDomain = [0, 16], tooltipName = \"stackedColumnTooltip\") {\n super(container, tooltipName);\n const { root, size, padding } = this;\n this.stackedColumns = createColumnRects({\n stacked: true,\n root,\n data,\n size,\n padding,\n xScaleDomain: [0, 1, 2],\n yScaleDomain,\n xScalePadding: 0.3,\n });\n root.append([].concat.apply([], this.stackedColumns));\n this.updateColors(fills, strokes);\n }\n updateColors(fills, strokes) {\n this.stackedColumns.forEach((series, i) => series.forEach(column => {\n column.fill = fills[i];\n column.stroke = strokes[i];\n }));\n }\n}\nMiniStackedColumn.chartType = 'stackedColumn';\nMiniStackedColumn.data = [\n [8, 12, 16],\n [6, 9, 12],\n [2, 3, 4]\n];\n\nclass MiniNormalizedColumn extends MiniStackedColumn {\n constructor(container, fills, strokes) {\n super(container, fills, strokes, MiniNormalizedColumn.data, [0, 10], \"normalizedColumnTooltip\");\n }\n}\nMiniNormalizedColumn.chartType = 'normalizedColumn';\nMiniNormalizedColumn.data = [\n [10, 10, 10],\n [6, 7, 8],\n [2, 4, 6]\n];\n\nclass MiniBar extends MiniChartWithAxes {\n constructor(container, fills, strokes) {\n super(container, \"groupedBarTooltip\");\n const padding = this.padding;\n const size = this.size;\n const data = [2, 3, 4];\n const yScale = new BandScale$5();\n yScale.domain = [0, 1, 2];\n yScale.range = [padding, size - padding];\n yScale.paddingInner = 0.3;\n yScale.paddingOuter = 0.3;\n const xScale = new LinearScale$1();\n xScale.domain = [0, 4];\n xScale.range = [size - padding, padding];\n const bottom = xScale.convert(0);\n const height = yScale.bandwidth;\n this.bars = data.map((datum, i) => {\n const 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 }\n updateColors(fills, strokes) {\n this.bars.forEach((bar, i) => {\n bar.fill = fills[i];\n bar.stroke = strokes[i];\n });\n }\n}\nMiniBar.chartType = 'groupedBar';\n\nclass MiniStackedBar extends MiniChartWithAxes {\n constructor(container, fills, strokes, data = MiniStackedBar.data, xScaleDomain = [0, 16], tooltipName = \"stackedBarTooltip\") {\n super(container, tooltipName);\n const size = this.size;\n const padding = this.padding;\n const yScale = new BandScale$5();\n yScale.domain = [0, 1, 2];\n yScale.range = [padding, size - padding];\n yScale.paddingInner = 0.3;\n yScale.paddingOuter = 0.3;\n const xScale = new LinearScale$1();\n xScale.domain = xScaleDomain;\n xScale.range = [size - padding, padding];\n const bottom = xScale.convert(0);\n const height = yScale.bandwidth;\n this.bars = data.map(series => series.map((datum, i) => {\n const 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([].concat.apply([], this.bars));\n }\n updateColors(fills, strokes) {\n this.bars.forEach((series, i) => series.forEach(bar => {\n bar.fill = fills[i];\n bar.stroke = strokes[i];\n }));\n }\n}\nMiniStackedBar.chartType = 'stackedBar';\nMiniStackedBar.data = [\n [8, 12, 16],\n [6, 9, 12],\n [2, 3, 4]\n];\n\nclass MiniNormalizedBar extends MiniStackedBar {\n constructor(container, fills, strokes) {\n super(container, fills, strokes, MiniNormalizedBar.data, [0, 10], \"normalizedBarTooltip\");\n }\n}\nMiniNormalizedBar.chartType = 'normalizedBar';\nMiniNormalizedBar.data = [\n [10, 10, 10],\n [6, 7, 8],\n [2, 4, 6]\n];\n\nconst toRadians = toRadians$1;\nclass MiniDoughnut extends MiniChart {\n constructor(container, fills, strokes, centerRadiusScaler = 0.6, tooltipName = \"doughnutTooltip\") {\n super(container, tooltipName);\n const radius = (this.size - this.padding * 2) / 2;\n const center = radius + this.padding;\n const 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(([startAngle, endAngle]) => {\n const 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 }\n updateColors(fills, strokes) {\n this.sectors.forEach((sector, i) => {\n sector.fill = fills[i % fills.length];\n sector.stroke = strokes[i % strokes.length];\n });\n }\n}\nMiniDoughnut.chartType = 'doughnut';\n\nclass MiniPie extends MiniDoughnut {\n constructor(container, fills, strokes) {\n super(container, fills, strokes, 0, \"pieTooltip\");\n }\n}\nMiniPie.chartType = 'pie';\n\nclass MiniLine extends MiniChartWithAxes {\n constructor(container, fills, strokes) {\n super(container, \"lineTooltip\");\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 }\n updateColors(fills, strokes) {\n this.lines.forEach((line, i) => {\n line.stroke = fills[i];\n });\n }\n}\nMiniLine.chartType = 'line';\n\nclass MiniScatter extends MiniChartWithAxes {\n constructor(container, fills, strokes) {\n super(container, \"scatterTooltip\");\n const size = this.size;\n const padding = this.padding;\n // [x, y] pairs\n const 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 const xScale = new LinearScale$1();\n xScale.domain = [-0.5, 4];\n xScale.range = [padding * 2, size - padding];\n const yScale = new LinearScale$1();\n yScale.domain = [-0.5, 3.5];\n yScale.range = [size - padding, padding];\n const points = [];\n data.forEach(series => {\n series.forEach(([x, y]) => {\n const arc = new Arc();\n arc.strokeWidth = 1;\n arc.centerX = xScale.convert(x);\n arc.centerY = yScale.convert(y);\n arc.radius = 2.5;\n points.push(arc);\n });\n });\n this.points = points;\n this.updateColors(fills, strokes);\n const pointsGroup = new Group();\n pointsGroup.setClipRectInGroupCoordinateSpace(new BBox(padding, padding, size - padding * 2, size - padding * 2));\n pointsGroup.append(this.points);\n this.root.append(pointsGroup);\n }\n updateColors(fills, strokes) {\n this.points.forEach((line, i) => {\n line.stroke = strokes[i % strokes.length];\n line.fill = fills[i % fills.length];\n });\n }\n}\nMiniScatter.chartType = 'scatter';\n\nclass MiniBubble extends MiniChartWithAxes {\n constructor(container, fills, strokes) {\n super(container, \"bubbleTooltip\");\n const size = this.size;\n const padding = this.padding;\n // [x, y, radius] triples\n const 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 const xScale = new LinearScale$1();\n xScale.domain = [0, 1];\n xScale.range = [padding * 2, size - padding];\n const yScale = new LinearScale$1();\n yScale.domain = [0, 1];\n yScale.range = [size - padding, padding];\n const points = [];\n data.forEach(series => {\n series.forEach(([x, y, radius]) => {\n const arc = new Arc();\n arc.strokeWidth = 1;\n arc.centerX = xScale.convert(x);\n arc.centerY = yScale.convert(y);\n arc.radius = radius;\n arc.fillOpacity = 0.7;\n points.push(arc);\n });\n });\n this.points = points;\n this.updateColors(fills, strokes);\n const pointsGroup = new Group();\n pointsGroup.setClipRectInGroupCoordinateSpace(new BBox(padding, padding, size - padding * 2, size - padding * 2));\n pointsGroup.append(this.points);\n this.root.append(pointsGroup);\n }\n updateColors(fills, strokes) {\n this.points.forEach((line, i) => {\n line.stroke = strokes[i % strokes.length];\n line.fill = fills[i % fills.length];\n });\n }\n}\nMiniBubble.chartType = 'bubble';\n\nclass MiniArea extends MiniChartWithAxes {\n constructor(container, fills, strokes, data = MiniArea.data) {\n super(container, \"groupedAreaTooltip\");\n const size = this.size;\n const padding = this.padding;\n const xScale = new BandScale$5();\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 const yScale = new LinearScale$1();\n yScale.domain = [0, 6];\n yScale.range = [size - padding + 0.5, padding];\n const xCount = data.length;\n const last = xCount * 2 - 1;\n const pathData = [];\n const bottomY = yScale.convert(0);\n data.forEach((datum, i) => {\n const x = xScale.convert(i);\n datum.forEach((yDatum, j) => {\n const y = yScale.convert(yDatum);\n const points = pathData[j] || (pathData[j] = []);\n points[i] = {\n x,\n y\n };\n points[last - i] = {\n x,\n y: bottomY\n };\n });\n });\n this.areas = pathData.reverse().map(points => {\n const area = new Path();\n area.strokeWidth = 1;\n area.fillOpacity = 0.7;\n const path = area.path;\n path.clear();\n points.forEach((point, i) => 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 }\n updateColors(fills, strokes) {\n this.areas.forEach((area, i) => {\n area.fill = fills[i];\n area.stroke = strokes[i];\n });\n }\n}\nMiniArea.chartType = 'area';\nMiniArea.data = [\n [1, 3, 5],\n [2, 6, 4],\n [5, 3, 1]\n];\n\nclass MiniStackedArea extends MiniChartWithAxes {\n constructor(container, fills, strokes, data = MiniStackedArea.data, tooltipName = \"stackedAreaTooltip\") {\n super(container, tooltipName);\n const size = this.size;\n const padding = this.padding;\n const xScale = new BandScale$5();\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 const yScale = new LinearScale$1();\n yScale.domain = [0, 16];\n yScale.range = [size - padding + 0.5, padding + 0.5];\n const xCount = data.length;\n const last = xCount * 2 - 1;\n const pathData = [];\n data.forEach((datum, i) => {\n const x = xScale.convert(i);\n let total = 0;\n datum.forEach((yDatum, j) => {\n const y = yScale.convert(total + yDatum);\n const points = pathData[j] || (pathData[j] = []);\n points[i] = {\n x,\n y\n };\n points[last - i] = {\n x,\n y: yScale.convert(total) // bottom y\n };\n total += yDatum;\n });\n });\n this.areas = pathData.map(points => {\n const area = new Path();\n area.strokeWidth = 1;\n const path = area.path;\n path.clear();\n points.forEach((point, i) => 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 }\n updateColors(fills, strokes) {\n this.areas.forEach((area, i) => {\n area.fill = fills[i];\n area.stroke = strokes[i];\n });\n }\n}\nMiniStackedArea.chartType = 'stackedArea';\nMiniStackedArea.data = [\n [2, 3, 2],\n [3, 6, 5],\n [6, 2, 2]\n];\n\nclass MiniNormalizedArea extends MiniStackedArea {\n constructor(container, fills, strokes, data = MiniNormalizedArea.data) {\n super(container, fills, strokes, data, \"normalizedAreaTooltip\");\n }\n}\nMiniNormalizedArea.chartType = 'normalizedArea';\nMiniNormalizedArea.data = MiniStackedArea.data.map(stack => {\n const sum = stack.reduce((p, c) => p + c, 0);\n return stack.map(v => v / sum * 16);\n});\n\nclass MiniHistogram extends MiniChartWithAxes {\n constructor(container, fills, strokes) {\n super(container, \"histogramTooltip\");\n const padding = this.padding;\n const size = this.size;\n // approx normal curve\n const data = [2, 5, 11, 13, 10, 6, 1];\n const xScale = new LinearScale$1();\n xScale.domain = [0, data.length];\n xScale.range = [padding, size - padding];\n const yScale = new LinearScale$1();\n yScale.domain = [0, data.reduce((a, b) => Math.max(a, b), 0)];\n yScale.range = [size - padding, padding];\n const bottom = yScale.convert(0);\n this.bars = data.map((datum, i) => {\n const top = yScale.convert(datum);\n const left = xScale.convert(i);\n const right = xScale.convert(i + 1);\n const 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 }\n updateColors([fill], [stroke]) {\n this.bars.forEach(bar => {\n bar.fill = fill;\n bar.stroke = stroke;\n });\n }\n}\nMiniHistogram.chartType = 'histogram';\n\nclass MiniColumnLineCombo extends MiniChartWithAxes {\n constructor(container, fills, strokes) {\n super(container, \"columnLineComboTooltip\");\n this.columnData = [3, 4];\n this.lineData = [\n [5, 4, 6, 5, 4]\n ];\n const { root, columnData, lineData, size, padding } = this;\n this.columns = createColumnRects({\n stacked: false,\n root,\n data: columnData,\n size,\n 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 }\n updateColors(fills, strokes) {\n this.columns.forEach((bar, i) => {\n bar.fill = fills[i];\n bar.stroke = strokes[i];\n });\n this.lines.forEach((line, i) => {\n line.stroke = fills[i + 2];\n });\n }\n}\nMiniColumnLineCombo.chartType = 'columnLineCombo';\n\nclass MiniAreaColumnCombo extends MiniChartWithAxes {\n constructor(container, fills, strokes) {\n super(container, \"areaColumnComboTooltip\");\n this.columnData = [3, 4.5];\n this.areaData = [\n [5, 4, 6, 5, 4],\n ];\n const { root, columnData, areaData, size, padding } = this;\n this.columns = createColumnRects({\n stacked: false,\n root,\n data: columnData,\n size,\n padding,\n xScaleDomain: [0, 1],\n yScaleDomain: [0, 6],\n xScalePadding: 0.5,\n });\n // scale for area series\n const xScale = new BandScale$5();\n xScale.range = [padding, size - padding];\n xScale.domain = [0, 1, 2, 3, 4];\n xScale.paddingInner = 1;\n xScale.paddingOuter = 0;\n const yScale = new LinearScale$1();\n yScale.range = [size - padding, padding];\n yScale.domain = [0, 6];\n const pathData = [];\n const yZero = yScale.convert(0);\n const firstX = xScale.convert(0);\n areaData.forEach((series, i) => {\n const points = pathData[i] || (pathData[i] = []);\n series.forEach((data, j) => {\n const yDatum = data;\n const xDatum = j;\n const x = xScale.convert(xDatum);\n const y = yScale.convert(yDatum);\n points[j] = { x, y };\n });\n const 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((points) => {\n const area = new Path();\n area.strokeWidth = 1;\n area.fillOpacity = 0.8;\n const path = area.path;\n points.forEach((point, i) => 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 }\n updateColors(fills, strokes) {\n this.areas.forEach((area, i) => {\n area.fill = fills[i];\n area.stroke = strokes[i];\n });\n this.columns.forEach((bar, i) => {\n bar.fill = fills[i + 1];\n bar.stroke = strokes[i + 1];\n });\n }\n}\nMiniAreaColumnCombo.chartType = 'areaColumnCombo';\n\nclass MiniCustomCombo extends MiniChart {\n constructor(container, fills, strokes) {\n super(container, 'customComboTooltip');\n this.columnData = [3, 4];\n this.lineData = [[5, 4, 6, 5, 4]];\n const { root, columnData, lineData, size, padding } = this;\n this.columns = createColumnRects({\n stacked: false,\n root,\n data: columnData,\n size,\n 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 const axisStroke = 'grey';\n const axisOvershoot = 3;\n const 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 const 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 const penIcon = new Path();\n this.buildPenIconPath(penIcon);\n penIcon.fill = 'whitesmoke';\n penIcon.stroke = 'darkslategrey';\n penIcon.strokeWidth = 1;\n root.append([bottomAxis, leftAxis, penIcon]);\n this.updateColors(fills, strokes);\n }\n updateColors(fills, strokes) {\n this.columns.forEach((bar, i) => {\n bar.fill = fills[i];\n bar.stroke = strokes[i];\n });\n this.lines.forEach((line, i) => {\n line.stroke = fills[i + 2];\n });\n }\n buildPenIconPath(penIcon) {\n const { path } = penIcon;\n path.moveTo(25.76, 43.46);\n path.lineTo(31.27, 48.53);\n path.moveTo(49.86, 22);\n path.lineTo(49.86, 22);\n path.cubicCurveTo(49.01994659053345, 21.317514933510974, 47.89593834348529, 21.09645997825817, 46.86, 21.41);\n path.lineTo(46.86, 21.41);\n path.cubicCurveTo(45.55460035985361, 21.77260167850787, 44.38777081121966, 22.517979360321792, 43.51, 23.55);\n path.lineTo(25.51, 43.8);\n path.lineTo(25.43, 43.89);\n path.lineTo(23.01, 51.89);\n path.lineTo(22.83, 52.46);\n path.lineTo(31.02, 48.86);\n path.lineTo(49.02, 28.52);\n path.lineTo(49.02, 28.52);\n path.cubicCurveTo(49.940716461596224, 27.521914221246085, 50.54302631059587, 26.2720342455763, 50.75, 24.93);\n path.lineTo(50.75, 24.93);\n path.cubicCurveTo(50.95363374988308, 23.866379846512814, 50.62080640232334, 22.77066734274871, 49.86, 22.0);\n path.closePath();\n path.moveTo(41.76, 25.5);\n path.lineTo(47.34, 30.5);\n path.moveTo(40.74, 26.65);\n path.lineTo(46.25, 31.71);\n }\n}\nMiniCustomCombo.chartType = 'customCombo';\n\nvar __decorate$W = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst miniChartMapping = {\n columnGroup: {\n column: MiniColumn,\n stackedColumn: MiniStackedColumn,\n normalizedColumn: MiniNormalizedColumn\n },\n barGroup: {\n bar: MiniBar,\n stackedBar: MiniStackedBar,\n normalizedBar: MiniNormalizedBar\n },\n pieGroup: {\n pie: MiniPie,\n doughnut: MiniDoughnut\n },\n lineGroup: {\n line: MiniLine\n },\n scatterGroup: {\n scatter: MiniScatter,\n bubble: MiniBubble\n },\n areaGroup: {\n area: MiniArea,\n stackedArea: MiniStackedArea,\n normalizedArea: MiniNormalizedArea\n },\n histogramGroup: {\n histogram: MiniHistogram\n },\n combinationGroup: {\n columnLineCombo: MiniColumnLineCombo,\n areaColumnCombo: MiniAreaColumnCombo,\n customCombo: MiniCustomCombo\n }\n};\nclass MiniChartsContainer extends Component {\n constructor(chartController, fills, strokes, chartGroups = DEFAULT_CHART_GROUPS) {\n super(MiniChartsContainer.TEMPLATE);\n this.wrappers = {};\n this.chartController = chartController;\n this.fills = fills;\n this.strokes = strokes;\n this.chartGroups = Object.assign({}, chartGroups);\n }\n init() {\n // hide MiniCustomCombo if no custom combo exists\n if (!this.chartController.customComboExists() && this.chartGroups.combinationGroup) {\n this.chartGroups.combinationGroup = this.chartGroups.combinationGroup.filter(chartType => chartType !== 'customCombo');\n }\n const eGui = this.getGui();\n Object.keys(this.chartGroups).forEach((group) => {\n const chartGroupValues = this.chartGroups[group];\n const 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 chartGroupValues.forEach((chartType) => {\n var _a;\n const MiniClass = (_a = miniChartMapping[group]) === null || _a === void 0 ? void 0 : _a[chartType];\n if (!MiniClass) {\n if (miniChartMapping[group]) {\n _.doOnce(() => console.warn(`AG Grid - invalid chartGroupsDef config '${group}.${chartType}'`), `invalid_chartGroupsDef${chartType}_${group}`);\n }\n else {\n _.doOnce(() => console.warn(`AG Grid - invalid chartGroupsDef config '${group}'`), `invalid_chartGroupsDef${group}`);\n }\n return;\n }\n const miniWrapper = document.createElement('div');\n miniWrapper.classList.add('ag-chart-mini-thumbnail');\n const miniClassChartType = MiniClass.chartType;\n this.addManagedListener(miniWrapper, 'click', () => {\n this.chartController.setChartType(miniClassChartType);\n this.updateSelectedMiniChart();\n });\n this.wrappers[miniClassChartType] = 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 updateSelectedMiniChart() {\n const selectedChartType = this.chartController.getChartType();\n for (const miniChartType in this.wrappers) {\n const miniChart = this.wrappers[miniChartType];\n const selected = miniChartType === selectedChartType;\n miniChart.classList.toggle('ag-selected', selected);\n }\n }\n}\nMiniChartsContainer.TEMPLATE = `
`;\n__decorate$W([\n Autowired('chartTranslationService')\n], MiniChartsContainer.prototype, \"chartTranslationService\", void 0);\n__decorate$W([\n PostConstruct\n], MiniChartsContainer.prototype, \"init\", null);\n\nvar __decorate$V = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass ChartSettingsPanel extends Component {\n constructor(chartController) {\n super(ChartSettingsPanel.TEMPLATE);\n this.miniChartsContainers = [];\n this.cardItems = [];\n this.activePaletteIndex = 0;\n this.palettes = [];\n this.themes = [];\n this.chartController = chartController;\n }\n postConstruct() {\n this.resetPalettes();\n this.ePrevBtn.insertAdjacentElement('afterbegin', _.createIconNoSpan('previous', this.gridOptionsService));\n this.eNextBtn.insertAdjacentElement('afterbegin', _.createIconNoSpan('next', this.gridOptionsService));\n this.addManagedListener(this.ePrevBtn, 'click', () => this.setActivePalette(this.getPrev(), 'left'));\n this.addManagedListener(this.eNextBtn, 'click', () => 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, () => this.resetPalettes(true));\n this.addManagedListener(this.chartController, ChartController.EVENT_CHART_API_UPDATE, () => this.resetPalettes(true));\n this.scrollSelectedIntoView();\n }\n scrollSelectedIntoView() {\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(() => {\n const isMiniChartsContainerVisible = (miniChartsContainers) => {\n return !miniChartsContainers.getGui().classList.contains('ag-hidden');\n };\n const currentMiniChartContainer = this.miniChartsContainers.find(isMiniChartsContainerVisible);\n const currentChart = currentMiniChartContainer.getGui().querySelector('.ag-selected');\n if (currentChart) {\n const parent = currentChart.offsetParent;\n if (parent) {\n this.eMiniChartsContainer.scrollTo(0, parent.offsetTop);\n }\n }\n }, 250);\n }\n resetPalettes(forceReset) {\n var _a, _b;\n const palettes = this.chartController.getPalettes();\n const chartGroups = (_b = (_a = this.gridOptionsService.get('chartToolPanelsDef')) === null || _a === void 0 ? void 0 : _a.settingsPanel) === null || _b === void 0 ? void 0 : _b.chartGroupsDef;\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(name => name === this.chartController.getChartThemeName());\n this.cardItems = [];\n _.clearElement(this.eCardSelector);\n this.destroyMiniCharts();\n this.palettes.forEach((palette, index) => {\n const isActivePalette = this.activePaletteIndex === index;\n const { fills, strokes } = palette;\n const miniChartsContainer = this.createBean(new MiniChartsContainer(this.chartController, fills, strokes, chartGroups));\n this.miniChartsContainers.push(miniChartsContainer);\n this.eMiniChartsContainer.appendChild(miniChartsContainer.getGui());\n this.addCardLink(index);\n if (isActivePalette) {\n miniChartsContainer.updateSelectedMiniChart();\n }\n else {\n miniChartsContainer.setDisplayed(false);\n }\n });\n _.setDisplayed(this.eNavBar, this.palettes.length > 1);\n _.radioCssClass(this.cardItems[this.activePaletteIndex], 'ag-selected', 'ag-not-selected');\n }\n addCardLink(index) {\n const link = document.createElement('div');\n link.classList.add('ag-chart-settings-card-item');\n this.addManagedListener(link, 'click', () => {\n this.setActivePalette(index, index < this.activePaletteIndex ? 'left' : 'right');\n });\n this.eCardSelector.appendChild(link);\n this.cardItems.push(link);\n }\n getPrev() {\n let prev = this.activePaletteIndex - 1;\n if (prev < 0) {\n prev = this.palettes.length - 1;\n }\n return prev;\n }\n getNext() {\n let next = this.activePaletteIndex + 1;\n if (next >= this.palettes.length) {\n next = 0;\n }\n return next;\n }\n setActivePalette(index, animationDirection) {\n if (this.isAnimating || this.activePaletteIndex === index) {\n return;\n }\n _.radioCssClass(this.cardItems[index], 'ag-selected', 'ag-not-selected');\n const currentPalette = this.miniChartsContainers[this.activePaletteIndex];\n const currentGui = currentPalette.getGui();\n const futurePalette = this.miniChartsContainers[index];\n const nextGui = futurePalette.getGui();\n currentPalette.updateSelectedMiniChart();\n futurePalette.updateSelectedMiniChart();\n const multiplier = animationDirection === 'left' ? -1 : 1;\n const final = nextGui.style.left = `${(_.getAbsoluteWidth(this.getGui()) * multiplier)}px`;\n this.activePaletteIndex = index;\n this.isAnimating = true;\n const animatingClass = 'ag-animating';\n futurePalette.setDisplayed(true);\n currentPalette.addCssClass(animatingClass);\n futurePalette.addCssClass(animatingClass);\n this.chartController.setChartThemeName(this.themes[index]);\n window.setTimeout(() => {\n currentGui.style.left = `${-parseFloat(final)}px`;\n nextGui.style.left = '0px';\n }, 0);\n window.setTimeout(() => {\n this.isAnimating = false;\n currentPalette.removeCssClass(animatingClass);\n futurePalette.removeCssClass(animatingClass);\n currentPalette.setDisplayed(false);\n }, 300);\n }\n destroyMiniCharts() {\n _.clearElement(this.eMiniChartsContainer);\n this.miniChartsContainers = this.destroyBeans(this.miniChartsContainers);\n }\n destroy() {\n this.destroyMiniCharts();\n super.destroy();\n }\n}\nChartSettingsPanel.TEMPLATE = `
\n
\n
\n
\n \n
\n
\n
\n \n
\n
\n
`;\n__decorate$V([\n Autowired('resizeObserverService')\n], ChartSettingsPanel.prototype, \"resizeObserverService\", void 0);\n__decorate$V([\n RefSelector('eMiniChartsContainer')\n], ChartSettingsPanel.prototype, \"eMiniChartsContainer\", void 0);\n__decorate$V([\n RefSelector('eNavBar')\n], ChartSettingsPanel.prototype, \"eNavBar\", void 0);\n__decorate$V([\n RefSelector('eCardSelector')\n], ChartSettingsPanel.prototype, \"eCardSelector\", void 0);\n__decorate$V([\n RefSelector('ePrevBtn')\n], ChartSettingsPanel.prototype, \"ePrevBtn\", void 0);\n__decorate$V([\n RefSelector('eNextBtn')\n], ChartSettingsPanel.prototype, \"eNextBtn\", void 0);\n__decorate$V([\n PostConstruct\n], ChartSettingsPanel.prototype, \"postConstruct\", null);\n\nvar __decorate$U = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass TabbedChartMenu extends Component {\n constructor(params) {\n super();\n this.tabs = [];\n const { controller, panels, chartOptionsService } = params;\n this.chartController = controller;\n this.chartOptionsService = chartOptionsService;\n this.panels = panels;\n }\n init() {\n this.panels.forEach(panel => {\n const panelType = panel.replace('chart', '').toLowerCase();\n const { comp, tab } = this.createTab(panel, panelType, this.getPanelClass(panelType));\n this.tabs.push(tab);\n this.addDestroyFunc(() => 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 createTab(name, title, TabPanelClass) {\n const eWrapperDiv = document.createElement('div');\n eWrapperDiv.classList.add('ag-chart-tab', `ag-chart-${title}`);\n const comp = new TabPanelClass(this.chartController, this.chartOptionsService);\n this.getContext().createBean(comp);\n eWrapperDiv.appendChild(comp.getGui());\n const titleEl = document.createElement('div');\n const translatedTitle = this.chartTranslationService.translate(title);\n titleEl.innerText = translatedTitle;\n return {\n comp,\n tab: {\n title: titleEl,\n titleLabel: translatedTitle,\n bodyPromise: AgPromise.resolve(eWrapperDiv),\n getScrollableContainer: () => {\n const scrollableContainer = eWrapperDiv.querySelector('.ag-scrollable-container');\n return (scrollableContainer || eWrapperDiv);\n },\n name\n }\n };\n }\n showTab(tab) {\n const tabItem = this.tabs[tab];\n this.tabbedLayout.showItem(tabItem);\n }\n getGui() {\n return this.tabbedLayout && this.tabbedLayout.getGui();\n }\n destroy() {\n if (this.parentComponent && this.parentComponent.isAlive()) {\n this.destroyBean(this.parentComponent);\n }\n super.destroy();\n }\n getPanelClass(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}\nTabbedChartMenu.TAB_DATA = 'data';\nTabbedChartMenu.TAB_FORMAT = 'format';\n__decorate$U([\n Autowired('chartTranslationService')\n], TabbedChartMenu.prototype, \"chartTranslationService\", void 0);\n__decorate$U([\n PostConstruct\n], TabbedChartMenu.prototype, \"init\", null);\n\nvar __decorate$T = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass ChartMenu extends Component {\n constructor(eChartContainer, eMenuPanelContainer, chartController, chartOptionsService) {\n super(ChartMenu.TEMPLATE);\n this.eChartContainer = eChartContainer;\n this.eMenuPanelContainer = eMenuPanelContainer;\n this.chartController = chartController;\n this.chartOptionsService = chartOptionsService;\n this.buttons = {\n chartSettings: ['menu', () => this.showMenu(this.defaultPanel)],\n chartData: ['menu', () => this.showMenu(\"chartData\")],\n chartFormat: ['menu', () => this.showMenu(\"chartFormat\")],\n chartLink: ['linked', e => this.toggleDetached(e)],\n chartUnlink: ['unlinked', e => this.toggleDetached(e)],\n chartDownload: ['save', () => this.saveChart()]\n };\n this.panels = [];\n this.buttonListenersDestroyFuncs = [];\n this.menuVisible = false;\n }\n postConstruct() {\n this.createButtons();\n this.addManagedListener(this.eventService, Events.EVENT_CHART_CREATED, (e) => {\n var _a;\n if (e.chartId === this.chartController.getChartId()) {\n const showDefaultToolPanel = Boolean((_a = this.gridOptionsService.get('chartToolPanelsDef')) === null || _a === void 0 ? void 0 : _a.defaultToolPanel);\n if (showDefaultToolPanel) {\n this.showMenu(this.defaultPanel, false);\n }\n }\n });\n this.refreshMenuClasses();\n if (!this.gridOptionsService.is('suppressChartToolPanelsButton') && this.panels.length > 0) {\n this.getGui().classList.add('ag-chart-tool-panel-button-enable');\n this.addManagedListener(this.eHideButton, 'click', this.toggleMenu.bind(this));\n }\n this.addManagedListener(this.chartController, ChartController.EVENT_CHART_API_UPDATE, this.createButtons.bind(this));\n }\n isVisible() {\n return this.menuVisible;\n }\n getExtraPaddingDirections() {\n const topItems = ['chartLink', 'chartUnlink', 'chartDownload'];\n const rightItems = ['chartSettings', 'chartData', 'chartFormat'];\n const result = [];\n if (topItems.some(v => this.chartToolbarOptions.includes(v))) {\n result.push('top');\n }\n if (rightItems.some(v => this.chartToolbarOptions.includes(v))) {\n result.push(this.gridOptionsService.is('enableRtl') ? 'left' : 'right');\n }\n return result;\n }\n getToolbarOptions() {\n var _a, _b, _c;\n const useChartToolPanelCustomisation = Boolean(this.gridOptionsService.get('chartToolPanelsDef'));\n if (useChartToolPanelCustomisation) {\n const defaultChartToolbarOptions = [\n this.chartController.isChartLinked() ? 'chartLink' : 'chartUnlink',\n 'chartDownload'\n ];\n const toolbarItemsFunc = this.gridOptionsService.getCallback('getChartToolbarItems');\n const params = {\n defaultItems: defaultChartToolbarOptions\n };\n let chartToolbarOptions = toolbarItemsFunc\n ? toolbarItemsFunc(params).filter(option => {\n if (!CHART_TOOLBAR_ALLOW_LIST.includes(option)) {\n const msg = CHART_TOOL_PANEL_ALLOW_LIST.includes(option)\n ? `AG Grid: '${option}' is a Chart Tool Panel option and will be ignored since 'chartToolPanelsDef' is used. Please use 'chartToolPanelsDef.panels' grid option instead`\n : `AG Grid: '${option}' is not a valid Chart Toolbar Option`;\n console.warn(msg);\n return false;\n }\n return true;\n })\n : defaultChartToolbarOptions;\n const panelsOverride = (_b = (_a = this.gridOptionsService.get('chartToolPanelsDef')) === null || _a === void 0 ? void 0 : _a.panels) === null || _b === void 0 ? void 0 : _b.map(panel => {\n const menuOption = CHART_TOOL_PANEL_MENU_OPTIONS[panel];\n if (!menuOption) {\n console.warn(`AG Grid - invalid panel in chartToolPanelsDef.panels: '${panel}'`);\n }\n return menuOption;\n }).filter(panel => Boolean(panel));\n this.panels = panelsOverride\n ? panelsOverride\n : Object.values(CHART_TOOL_PANEL_MENU_OPTIONS);\n // pivot charts use the column tool panel instead of the data panel\n if (this.chartController.isPivotChart()) {\n this.panels = this.panels.filter(panel => panel !== 'chartData');\n }\n const defaultToolPanel = (_c = this.gridOptionsService.get('chartToolPanelsDef')) === null || _c === void 0 ? void 0 : _c.defaultToolPanel;\n this.defaultPanel = (defaultToolPanel && CHART_TOOL_PANEL_MENU_OPTIONS[defaultToolPanel]) || this.panels[0];\n return this.panels.length > 0\n // Only one panel is required to display menu icon in toolbar\n ? [this.panels[0], ...chartToolbarOptions]\n : chartToolbarOptions;\n }\n else { // To be deprecated in future. Toolbar options will be different to chart tool panels.\n let tabOptions = [\n 'chartSettings',\n 'chartData',\n 'chartFormat',\n this.chartController.isChartLinked() ? 'chartLink' : 'chartUnlink',\n 'chartDownload'\n ];\n const toolbarItemsFunc = this.gridOptionsService.getCallback('getChartToolbarItems');\n if (toolbarItemsFunc) {\n const isLegacyToolbar = this.gridOptionsService.is('suppressChartToolPanelsButton');\n const params = {\n defaultItems: isLegacyToolbar ? tabOptions : CHART_TOOLBAR_ALLOW_LIST\n };\n tabOptions = toolbarItemsFunc(params).filter(option => {\n if (!this.buttons[option]) {\n console.warn(`AG Grid: '${option}' is not a valid Chart Toolbar Option`);\n return false;\n }\n // If not legacy, remove chart tool panel options here,\n // and add them all in one go below\n else if (!isLegacyToolbar && CHART_TOOL_PANEL_ALLOW_LIST.includes(option)) {\n const msg = `AG Grid: '${option}' is a Chart Tool Panel option and will be ignored. Please use 'chartToolPanelsDef.panels' grid option instead`;\n console.warn(msg);\n return false;\n }\n return true;\n });\n if (!isLegacyToolbar) {\n // Add all the chart tool panels, as `chartToolPanelsDef.panels`\n // should be used for configuration\n tabOptions = tabOptions.concat(CHART_TOOL_PANEL_ALLOW_LIST);\n }\n }\n // pivot charts use the column tool panel instead of the data panel\n if (this.chartController.isPivotChart()) {\n tabOptions = tabOptions.filter(option => option !== 'chartData');\n }\n const ignoreOptions = ['chartUnlink', 'chartLink', 'chartDownload'];\n this.panels = tabOptions.filter(option => ignoreOptions.indexOf(option) === -1);\n this.defaultPanel = this.panels[0];\n return tabOptions.filter(value => ignoreOptions.indexOf(value) !== -1 ||\n (this.panels.length && value === this.panels[0]));\n }\n }\n toggleDetached(e) {\n const target = e.target;\n const active = target.classList.contains('ag-icon-linked');\n target.classList.toggle('ag-icon-linked', !active);\n target.classList.toggle('ag-icon-unlinked', active);\n const tooltipKey = active ? 'chartUnlinkToolbarTooltip' : 'chartLinkToolbarTooltip';\n const tooltipTitle = this.chartTranslationService.translate(tooltipKey);\n if (tooltipTitle) {\n target.title = tooltipTitle;\n }\n this.chartController.detachChartRange();\n }\n createButtons() {\n this.buttonListenersDestroyFuncs.forEach(func => func());\n this.buttonListenersDestroyFuncs = [];\n this.chartToolbarOptions = this.getToolbarOptions();\n const menuEl = this.eMenu;\n _.clearElement(menuEl);\n this.chartToolbarOptions.forEach(button => {\n const buttonConfig = this.buttons[button];\n const [iconName, callback] = buttonConfig;\n const buttonEl = _.createIconNoSpan(iconName, this.gridOptionsService, undefined, true);\n buttonEl.classList.add('ag-chart-menu-icon');\n const tooltipTitle = this.chartTranslationService.translate(button + 'ToolbarTooltip');\n if (tooltipTitle && buttonEl instanceof HTMLElement) {\n buttonEl.title = tooltipTitle;\n }\n this.buttonListenersDestroyFuncs.push(this.addManagedListener(buttonEl, 'click', callback));\n menuEl.appendChild(buttonEl);\n });\n }\n saveChart() {\n const event = { type: ChartMenu.EVENT_DOWNLOAD_CHART };\n this.dispatchEvent(event);\n }\n createMenuPanel(defaultTab) {\n const width = this.environment.chartMenuPanelWidth();\n const menuPanel = this.menuPanel = this.createBean(new AgPanel({\n minWidth: width,\n 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.panels,\n chartOptionsService: this.chartOptionsService\n }));\n this.addManagedListener(menuPanel, Component.EVENT_DESTROYED, () => this.destroyBean(this.tabbedMenu));\n return new AgPromise((res) => {\n window.setTimeout(() => {\n menuPanel.setBodyComponent(this.tabbedMenu);\n this.tabbedMenu.showTab(defaultTab);\n res(menuPanel);\n this.addManagedListener(this.eChartContainer, 'click', (event) => {\n if (this.getGui().contains(event.target)) {\n return;\n }\n if (this.menuVisible) {\n this.hideMenu();\n }\n });\n }, 100);\n });\n }\n showContainer() {\n if (!this.menuPanel) {\n return;\n }\n this.menuVisible = true;\n this.showParent(this.menuPanel.getWidth());\n this.refreshMenuClasses();\n }\n toggleMenu() {\n this.menuVisible ? this.hideMenu() : this.showMenu();\n }\n showMenu(\n /**\n * Menu panel to show. If empty, shows the existing menu, or creates the default menu if menu panel has not been created\n */\n panel, \n /**\n * Whether to animate the menu opening\n */\n animate = true) {\n if (!animate) {\n this.eMenuPanelContainer.classList.add('ag-no-transition');\n }\n if (this.menuPanel && !panel) {\n this.showContainer();\n }\n else {\n const menuPanel = panel || this.defaultPanel;\n let tab = this.panels.indexOf(menuPanel);\n if (tab < 0) {\n console.warn(`AG Grid: '${panel}' is not a valid Chart Tool Panel name`);\n tab = this.panels.indexOf(this.defaultPanel);\n }\n if (this.menuPanel) {\n this.tabbedMenu.showTab(tab);\n this.showContainer();\n }\n else {\n this.createMenuPanel(tab).then(this.showContainer.bind(this));\n }\n }\n if (!animate) {\n // Wait for menu to render\n setTimeout(() => {\n if (!this.isAlive()) {\n return;\n }\n this.eMenuPanelContainer.classList.remove('ag-no-transition');\n }, 500);\n }\n }\n hideMenu() {\n this.hideParent();\n window.setTimeout(() => {\n this.menuVisible = false;\n this.refreshMenuClasses();\n }, 500);\n }\n refreshMenuClasses() {\n this.eChartContainer.classList.toggle('ag-chart-menu-visible', this.menuVisible);\n this.eChartContainer.classList.toggle('ag-chart-menu-hidden', !this.menuVisible);\n if (!this.gridOptionsService.is('suppressChartToolPanelsButton')) {\n this.eHideButtonIcon.classList.toggle('ag-icon-contracted', this.menuVisible);\n this.eHideButtonIcon.classList.toggle('ag-icon-expanded', !this.menuVisible);\n }\n }\n showParent(width) {\n this.eMenuPanelContainer.style.minWidth = `${width}px`;\n }\n hideParent() {\n this.eMenuPanelContainer.style.minWidth = '0';\n }\n destroy() {\n super.destroy();\n if (this.menuPanel && this.menuPanel.isAlive()) {\n this.destroyBean(this.menuPanel);\n }\n if (this.tabbedMenu && this.tabbedMenu.isAlive()) {\n this.destroyBean(this.tabbedMenu);\n }\n }\n}\nChartMenu.EVENT_DOWNLOAD_CHART = \"downloadChart\";\nChartMenu.TEMPLATE = `
\n
\n \n
`;\n__decorate$T([\n Autowired('chartTranslationService')\n], ChartMenu.prototype, \"chartTranslationService\", void 0);\n__decorate$T([\n RefSelector(\"eMenu\")\n], ChartMenu.prototype, \"eMenu\", void 0);\n__decorate$T([\n RefSelector(\"eHideButton\")\n], ChartMenu.prototype, \"eHideButton\", void 0);\n__decorate$T([\n RefSelector(\"eHideButtonIcon\")\n], ChartMenu.prototype, \"eHideButtonIcon\", void 0);\n__decorate$T([\n PostConstruct\n], ChartMenu.prototype, \"postConstruct\", null);\n\nvar __decorate$S = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass TitleEdit extends Component {\n constructor(chartMenu) {\n super(TitleEdit.TEMPLATE);\n this.chartMenu = chartMenu;\n this.destroyableChartListeners = [];\n this.editing = false;\n }\n init() {\n this.addManagedListener(this.getGui(), 'keydown', (e) => {\n if (this.editing && e.key === 'Enter' && !e.shiftKey) {\n this.handleEndEditing();\n e.preventDefault();\n }\n });\n this.addManagedListener(this.getGui(), 'input', () => {\n if (this.editing) {\n this.updateHeight();\n }\n });\n this.addManagedListener(this.getGui(), 'blur', () => this.endEditing());\n }\n /* should be called when the containing component changes to a new chart proxy */\n refreshTitle(chartController, chartOptionsService) {\n this.chartController = chartController;\n this.chartOptionsService = chartOptionsService;\n for (const destroyFn of this.destroyableChartListeners) {\n destroyFn();\n }\n this.destroyableChartListeners = [];\n const chartProxy = this.chartController.getChartProxy();\n const chart = chartProxy.getChart();\n const canvas = chart.scene.canvas.element;\n const destroyDbleClickListener = this.addManagedListener(canvas, 'dblclick', event => {\n const { title } = chart;\n if (title && title.node.containsPoint(event.offsetX, event.offsetY)) {\n const bbox = title.node.computeBBox();\n const xy = title.node.inverseTransformPoint(bbox.x, bbox.y);\n this.startEditing(Object.assign(Object.assign({}, bbox), xy), canvas.width);\n }\n });\n let wasInTitle = false;\n const destroyMouseMoveListener = this.addManagedListener(canvas, 'mousemove', event => {\n const { title } = chart;\n const inTitle = !!(title && title.enabled && title.node.containsPoint(event.offsetX, event.offsetY));\n if (wasInTitle !== inTitle) {\n canvas.style.cursor = inTitle ? 'pointer' : '';\n }\n wasInTitle = inTitle;\n });\n this.destroyableChartListeners = [\n destroyDbleClickListener,\n destroyMouseMoveListener\n ];\n }\n startEditing(titleBBox, canvasWidth) {\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 if (this.editing) {\n return;\n }\n this.editing = true;\n const minimumTargetInputWidth = 300;\n const inputWidth = Math.max(Math.min(titleBBox.width + 20, canvasWidth), minimumTargetInputWidth);\n const element = this.getGui();\n element.classList.add('currently-editing');\n const inputStyle = element.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 const oldTitle = this.chartOptionsService.getChartOption('title.text');\n const isTitlePlaceholder = oldTitle === this.chartTranslationService.translate('titlePlaceholder');\n element.value = isTitlePlaceholder ? '' : oldTitle;\n const oldTitleLines = oldTitle.split(/\\r?\\n/g).length;\n inputStyle.left = Math.round(titleBBox.x + titleBBox.width / 2 - inputWidth / 2 - 1) + 'px';\n inputStyle.top = Math.round(titleBBox.y + titleBBox.height / 2 - (oldTitleLines * this.getLineHeight()) / 2 - 2) + 'px';\n inputStyle.width = Math.round(inputWidth) + 'px';\n inputStyle.lineHeight = this.getLineHeight() + 'px';\n this.updateHeight();\n element.focus();\n }\n updateHeight() {\n const element = this.getGui();\n // The element should cover the title and provide enough space for the new one.\n const oldTitleLines = this.chartOptionsService.getChartOption('title.text').split(/\\r?\\n/g).length;\n const currentTitleLines = element.value.split(/\\r?\\n/g).length;\n element.style.height = (Math.round(Math.max(oldTitleLines, currentTitleLines) * this.getLineHeight()) + 4) + 'px';\n }\n getLineHeight() {\n const fixedLineHeight = this.chartOptionsService.getChartOption('title.lineHeight');\n if (fixedLineHeight) {\n return parseInt(fixedLineHeight);\n }\n return Math.round(parseInt(this.chartOptionsService.getChartOption('title.fontSize')) * 1.2);\n }\n handleEndEditing() {\n // special handling to avoid flicker caused by delay when swapping old and new titles\n // 1 - store current title color\n const titleColor = this.chartOptionsService.getChartOption('title.color');\n // 2 - hide title by making it transparent\n const transparentColor = 'rgba(0, 0, 0, 0)';\n this.chartOptionsService.setChartOption('title.color', transparentColor);\n // 3 - trigger 'end editing' - this will update the chart with the new title\n this.chartOptionsService.awaitChartOptionUpdate(() => this.endEditing());\n // 4 - restore title color to its original value\n this.chartOptionsService.awaitChartOptionUpdate(() => {\n this.chartOptionsService.setChartOption('title.color', titleColor);\n });\n }\n endEditing() {\n if (!this.editing) {\n return;\n }\n this.editing = false;\n const value = this.getGui().value;\n if (value && value.trim() !== '') {\n this.chartOptionsService.setChartOption('title.text', value);\n this.chartOptionsService.setChartOption('title.enabled', true);\n }\n else {\n this.chartOptionsService.setChartOption('title.text', '');\n this.chartOptionsService.setChartOption('title.enabled', false);\n }\n this.getGui().classList.remove('currently-editing');\n // await chart updates so `chartTitleEdit` event consumers can read the new state correctly\n this.chartOptionsService.awaitChartOptionUpdate(() => {\n this.eventService.dispatchEvent({ type: 'chartTitleEdit' });\n });\n }\n}\nTitleEdit.TEMPLATE = `\n `;\n__decorate$S([\n Autowired('chartTranslationService')\n], TitleEdit.prototype, \"chartTranslationService\", void 0);\n__decorate$S([\n PostConstruct\n], TitleEdit.prototype, \"init\", null);\n\nvar __decorate$R = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass ChartDatasource extends BeanStub {\n getData(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.gridOptionsService.isRowModelType('clientSide')) {\n console.warn(\"AG Grid: crossing filtering is only supported in the client side row model.\");\n return { chartData: [], columnNames: {} };\n }\n }\n const isServerSide = this.gridOptionsService.isRowModelType('serverSide');\n if (isServerSide && params.pivoting) {\n this.updatePivotKeysForSSRM();\n }\n const result = this.extractRowsFromGridRowModel(params);\n result.chartData = this.aggregateRowsByDimension(params, result.chartData);\n return result;\n }\n extractRowsFromGridRowModel(params) {\n let extractedRowData = [];\n const columnNames = {};\n // maps used to keep track of expanded groups that need to be removed\n const groupNodeIndexes = {};\n const groupsToRemove = {};\n // only used when cross filtering\n let filteredNodes = {};\n let allRowNodes = [];\n let 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 const modelLastRow = this.gridRowModel.getRowCount() - 1;\n const rangeLastRow = params.endRow >= 0 ? Math.min(params.endRow, modelLastRow) : modelLastRow;\n numRows = rangeLastRow - params.startRow + 1;\n }\n for (let i = 0; i < numRows; i++) {\n const data = {};\n const rowNode = params.crossFiltering ? allRowNodes[i] : this.gridRowModel.getRow(i + params.startRow);\n // first get data for dimensions columns\n params.dimensionCols.forEach(col => {\n const colId = col.colId;\n const column = this.columnModel.getGridColumn(colId);\n if (column) {\n const 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 const valueString = valueObject && valueObject.toString ? String(valueObject.toString()) : '';\n // traverse parents to extract group label path\n const labels = ChartDatasource.getGroupLabels(rowNode, valueString);\n data[colId] = {\n labels, toString: function () {\n return this.labels.filter((l) => !!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 const 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(col => {\n let columnNamesArr = [];\n // pivot keys should be added first\n const pivotKeys = col.getColDef().pivotKeys;\n if (pivotKeys) {\n columnNamesArr = pivotKeys.slice();\n }\n // then add column header name to results\n const 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 const colId = col.getColId();\n if (params.crossFiltering) {\n const filteredOutColId = colId + '-filtered-out';\n // add data value to value column\n const value = this.valueService.getValue(col, rowNode);\n const 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 let value = this.valueService.getValue(col, rowNode);\n // aggregated value\n if (value && value.hasOwnProperty('toString')) {\n value = parseFloat(value.toString());\n }\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 if (params.grouping) {\n const groupIndexesToRemove = _.values(groupsToRemove);\n const filterFunc = (data, index) => !data.footer && !_.includes(groupIndexesToRemove, index);\n extractedRowData = extractedRowData.filter(filterFunc);\n }\n return { chartData: extractedRowData, columnNames };\n }\n aggregateRowsByDimension(params, dataFromGrid) {\n const dimensionCols = params.dimensionCols;\n if (!params.aggFunc || dimensionCols.length === 0) {\n return dataFromGrid;\n }\n const lastCol = _.last(dimensionCols);\n const lastColId = lastCol && lastCol.colId;\n const map = {};\n const dataAggregated = [];\n dataFromGrid.forEach(data => {\n let currentMap = map;\n dimensionCols.forEach(col => {\n const colId = col.colId;\n const key = data[colId];\n if (colId === lastColId) {\n let groupItem = currentMap[key];\n if (!groupItem) {\n groupItem = { __children: [] };\n dimensionCols.forEach(dimCol => {\n const dimColId = dimCol.colId;\n groupItem[dimColId] = data[dimColId];\n });\n currentMap[key] = groupItem;\n dataAggregated.push(groupItem);\n }\n groupItem.__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', this.context.getGridId())) {\n dataAggregated.forEach(groupItem => params.valueCols.forEach(col => {\n if (params.crossFiltering) {\n params.valueCols.forEach(valueCol => {\n const colId = valueCol.getColId();\n // filtered data\n const dataToAgg = groupItem.__children\n .filter((child) => typeof child[colId] !== 'undefined')\n .map((child) => child[colId]);\n let aggResult = this.aggregationStage.aggregateValues(dataToAgg, params.aggFunc);\n groupItem[valueCol.getId()] = aggResult && typeof aggResult.value !== 'undefined' ? aggResult.value : aggResult;\n // filtered out data\n const filteredOutColId = `${colId}-filtered-out`;\n const dataToAggFiltered = groupItem.__children\n .filter((child) => typeof child[filteredOutColId] !== 'undefined')\n .map((child) => child[filteredOutColId]);\n let aggResultFiltered = this.aggregationStage.aggregateValues(dataToAggFiltered, params.aggFunc);\n groupItem[filteredOutColId] = aggResultFiltered && typeof aggResultFiltered.value !== 'undefined' ? aggResultFiltered.value : aggResultFiltered;\n });\n }\n else {\n const dataToAgg = groupItem.__children.map((child) => child[col.getId()]);\n let aggResult = 0;\n if (ModuleRegistry.__assertRegistered(ModuleNames.RowGroupingModule, 'Charting Aggregation', this.context.getGridId())) {\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 updatePivotKeysForSSRM() {\n const 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 const 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(col => {\n if (pivotKeySeparator === '') {\n col.getColDef().pivotKeys = [];\n }\n else {\n const keys = col.getColId().split(pivotKeySeparator);\n col.getColDef().pivotKeys = keys.slice(0, keys.length - 1);\n }\n });\n }\n extractPivotKeySeparator(secondaryColumns) {\n if (secondaryColumns.length === 0) {\n return '';\n }\n const extractSeparator = (columnGroup, childId) => {\n const 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 const firstSecondaryCol = secondaryColumns[0];\n if (firstSecondaryCol.getParent() == null) {\n return '';\n }\n return extractSeparator(firstSecondaryCol.getParent(), firstSecondaryCol.getColId());\n }\n static getGroupLabels(rowNode, initialLabel) {\n const 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 getFilteredRowNodes() {\n const filteredNodes = {};\n this.gridRowModel.forEachNodeAfterFilterAndSort((rowNode) => {\n filteredNodes[rowNode.id] = rowNode;\n });\n return filteredNodes;\n }\n getAllRowNodes() {\n let allRowNodes = [];\n this.gridRowModel.forEachNode((rowNode) => {\n allRowNodes.push(rowNode);\n });\n return this.sortRowNodes(allRowNodes);\n }\n sortRowNodes(rowNodes) {\n const sortOptions = this.sortController.getSortOptions();\n const noSort = !sortOptions || sortOptions.length == 0;\n if (noSort)\n return rowNodes;\n return this.rowNodeSorter.doFullSort(rowNodes, sortOptions);\n }\n}\n__decorate$R([\n Autowired('rowModel')\n], ChartDatasource.prototype, \"gridRowModel\", void 0);\n__decorate$R([\n Autowired('valueService')\n], ChartDatasource.prototype, \"valueService\", void 0);\n__decorate$R([\n Autowired('columnModel')\n], ChartDatasource.prototype, \"columnModel\", void 0);\n__decorate$R([\n Autowired('rowNodeSorter')\n], ChartDatasource.prototype, \"rowNodeSorter\", void 0);\n__decorate$R([\n Autowired('sortController')\n], ChartDatasource.prototype, \"sortController\", void 0);\n__decorate$R([\n Optional('aggregationStage')\n], ChartDatasource.prototype, \"aggregationStage\", void 0);\n\nvar __decorate$Q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet ChartColumnService = class ChartColumnService extends BeanStub {\n getColumn(colId) {\n return this.columnModel.getPrimaryColumn(colId);\n }\n getAllDisplayedColumns() {\n return this.columnModel.getAllDisplayedColumns();\n }\n getColDisplayName(col) {\n return this.columnModel.getDisplayNameForColumn(col, 'chart');\n }\n getRowGroupColumns() {\n return this.columnModel.getRowGroupColumns();\n }\n getGroupDisplayColumns() {\n return this.columnModel.getGroupDisplayColumns();\n }\n isPivotMode() {\n return this.columnModel.isPivotMode();\n }\n isPivotActive() {\n return this.columnModel.isPivotActive();\n }\n getChartColumns() {\n const displayedCols = this.columnModel.getAllDisplayedColumns();\n const dimensionCols = new Set();\n const valueCols = new Set();\n displayedCols.forEach(col => {\n const colDef = col.getColDef();\n const 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, valueCols };\n }\n isNumberCol(col) {\n if (col.getColId() === 'ag-Grid-AutoColumn') {\n return false;\n }\n const row = this.rowRenderer.getRowNode({ rowIndex: 0, rowPinned: null });\n if (!row) {\n return false;\n }\n let 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 extractLeafData(row, col) {\n if (!row.allLeafChildren) {\n return null;\n }\n for (let i = 0; i < row.allLeafChildren.length; i++) {\n const childRow = row.allLeafChildren[i];\n const value = this.valueService.getValue(col, childRow);\n if (value != null) {\n return value;\n }\n }\n return null;\n }\n};\n__decorate$Q([\n Autowired('columnModel')\n], ChartColumnService.prototype, \"columnModel\", void 0);\n__decorate$Q([\n Autowired('valueService')\n], ChartColumnService.prototype, \"valueService\", void 0);\n__decorate$Q([\n Autowired('rowRenderer')\n], ChartColumnService.prototype, \"rowRenderer\", void 0);\nChartColumnService = __decorate$Q([\n Bean(\"chartColumnService\")\n], ChartColumnService);\n\nvar __decorate$P = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass ComboChartModel extends BeanStub {\n constructor(chartDataModel) {\n var _a;\n super();\n // this control flag is used to only log warning for the initial user config\n this.suppressComboChartWarnings = false;\n this.chartDataModel = chartDataModel;\n this.seriesChartTypes = (_a = chartDataModel.params.seriesChartTypes) !== null && _a !== void 0 ? _a : [];\n }\n init() {\n this.initComboCharts();\n }\n update(seriesChartTypes) {\n this.seriesChartTypes = seriesChartTypes !== null && seriesChartTypes !== void 0 ? seriesChartTypes : this.seriesChartTypes;\n this.initComboCharts();\n this.updateSeriesChartTypes();\n }\n initComboCharts() {\n const seriesChartTypesExist = this.seriesChartTypes && this.seriesChartTypes.length > 0;\n const customCombo = this.chartDataModel.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.chartDataModel.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 updateSeriesChartTypes() {\n if (!this.chartDataModel.isComboChart()) {\n return;\n }\n // ensure primary only chart types are not placed on secondary axis\n this.seriesChartTypes = this.seriesChartTypes.map(seriesChartType => {\n const 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.chartDataModel.chartType === 'customCombo') {\n this.updateSeriesChartTypesForCustomCombo();\n return;\n }\n this.updateChartSeriesTypesForBuiltInCombos();\n }\n updateSeriesChartTypesForCustomCombo() {\n const 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(s => {\n if (!ComboChartModel.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 const getSeriesChartType = (valueCol) => {\n if (!this.savedCustomSeriesChartTypes || this.savedCustomSeriesChartTypes.length === 0) {\n this.savedCustomSeriesChartTypes = this.seriesChartTypes;\n }\n const providedSeriesChartType = this.savedCustomSeriesChartTypes.find(s => 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 const updatedSeriesChartTypes = this.chartDataModel.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 updateChartSeriesTypesForBuiltInCombos() {\n const { chartType, valueColState } = this.chartDataModel;\n let primaryChartType = chartType === 'columnLineCombo' ? 'groupedColumn' : 'stackedArea';\n let secondaryChartType = chartType === 'columnLineCombo' ? 'line' : 'groupedColumn';\n const selectedCols = valueColState.filter(cs => cs.selected);\n const lineIndex = Math.ceil(selectedCols.length / 2);\n this.seriesChartTypes = selectedCols.map((valueCol, i) => {\n const seriesType = (i >= lineIndex) ? secondaryChartType : primaryChartType;\n return { colId: valueCol.colId, chartType: seriesType, secondaryAxis: false };\n });\n }\n}\nComboChartModel.SUPPORTED_COMBO_CHART_TYPES = ['line', 'groupedColumn', 'stackedColumn', 'area', 'stackedArea'];\n__decorate$P([\n PostConstruct\n], ComboChartModel.prototype, \"init\", null);\n\nvar __decorate$O = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass ChartDataModel extends BeanStub {\n constructor(params) {\n super();\n this.unlinked = false;\n this.chartData = [];\n this.valueColState = [];\n this.dimensionColState = [];\n this.columnNames = {};\n this.crossFiltering = false;\n this.grouping = false;\n this.params = params;\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 }\n init() {\n this.datasource = this.createManagedBean(new ChartDatasource());\n this.chartColumnService = this.createManagedBean(new ChartColumnService());\n this.comboChartModel = this.createManagedBean(new ComboChartModel(this));\n this.updateCellRanges();\n this.updateData();\n }\n updateModel(params) {\n const { cellRange, chartType, pivotChart, chartThemeName, aggFunc, suppressChartRanges, unlinkChart, crossFiltering, seriesChartTypes } = params;\n if (cellRange !== this.suppliedCellRange) {\n this.dimensionCellRange = undefined;\n this.valueCellRange = undefined;\n }\n this.chartType = chartType;\n this.pivotChart = pivotChart;\n this.chartThemeName = chartThemeName;\n this.aggFunc = aggFunc;\n this.referenceCellRange = cellRange;\n this.suppliedCellRange = cellRange;\n this.suppressChartRanges = suppressChartRanges;\n this.unlinked = !!unlinkChart;\n this.crossFiltering = !!crossFiltering;\n this.updateSelectedDimension(cellRange === null || cellRange === void 0 ? void 0 : cellRange.columns);\n this.updateCellRanges();\n const shouldUpdateComboModel = this.isComboChart() || seriesChartTypes;\n if (shouldUpdateComboModel) {\n this.comboChartModel.update(seriesChartTypes);\n }\n if (!this.unlinked) {\n this.updateData();\n }\n }\n updateCellRanges(updatedColState) {\n if (this.valueCellRange) {\n this.referenceCellRange = this.valueCellRange;\n }\n const { dimensionCols, valueCols } = this.chartColumnService.getChartColumns();\n const 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.comboChartModel.updateSeriesChartTypes();\n }\n updateData() {\n const { startRow, endRow } = this.getRowIndexes();\n if (this.pivotChart) {\n this.resetColumnState();\n }\n this.grouping = this.isGrouping();\n const 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,\n endRow,\n isScatter: _.includes(['scatter', 'bubble'], this.chartType)\n };\n const { chartData, columnNames } = this.datasource.getData(params);\n this.chartData = chartData;\n this.columnNames = columnNames;\n }\n isGrouping() {\n const usingTreeData = this.gridOptionsService.isTreeData();\n const groupedCols = usingTreeData ? null : this.chartColumnService.getRowGroupColumns();\n const isGroupActive = usingTreeData || (groupedCols && groupedCols.length > 0);\n // charts only group when the selected category is a group column\n const colId = this.getSelectedDimension().colId;\n const displayedGroupCols = this.chartColumnService.getGroupDisplayColumns();\n const groupDimensionSelected = displayedGroupCols.map(col => col.getColId()).some(id => id === colId);\n return !!isGroupActive && groupDimensionSelected;\n }\n getSelectedValueCols() {\n return this.valueColState.filter(cs => cs.selected).map(cs => cs.column);\n }\n getSelectedDimension() {\n return this.dimensionColState.filter(cs => cs.selected)[0];\n }\n getColDisplayName(col) {\n return this.chartColumnService.getColDisplayName(col);\n }\n isPivotMode() {\n return this.chartColumnService.isPivotMode();\n }\n getChartDataType(colId) {\n const column = this.chartColumnService.getColumn(colId);\n return column ? column.getColDef().chartDataType : undefined;\n }\n isPivotActive() {\n return this.chartColumnService.isPivotActive();\n }\n createCellRange(type, ...columns) {\n return {\n id: this.chartId,\n startRow: this.referenceCellRange.startRow,\n endRow: this.referenceCellRange.endRow,\n columns,\n startColumn: type === CellRangeType.DIMENSION ? columns[0] : this.referenceCellRange.startColumn,\n type\n };\n }\n getAllColumnsFromRanges() {\n if (this.pivotChart) {\n return _.convertToSet(this.chartColumnService.getAllDisplayedColumns());\n }\n const columns = this.dimensionCellRange || this.valueCellRange ? [] : this.referenceCellRange.columns;\n if (this.dimensionCellRange) {\n columns.push(...this.dimensionCellRange.columns);\n }\n if (this.valueCellRange) {\n columns.push(...this.valueCellRange.columns);\n }\n return _.convertToSet(columns);\n }\n getRowIndexes() {\n let startRow = 0, endRow = 0;\n const { rangeService, valueCellRange } = this;\n if (rangeService && valueCellRange) {\n startRow = rangeService.getRangeStartRow(valueCellRange).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 const endRowPosition = rangeService.getRangeEndRow(valueCellRange);\n endRow = endRowPosition.rowPinned === 'bottom' ? -1 : endRowPosition.rowIndex;\n }\n return { startRow, endRow };\n }\n resetColumnState() {\n const { dimensionCols, valueCols } = this.chartColumnService.getChartColumns();\n const allCols = this.getAllColumnsFromRanges();\n const isInitialising = this.valueColState.length < 1;\n this.dimensionColState = [];\n this.valueColState = [];\n let hasSelectedDimension = false;\n let order = 1;\n const aggFuncDimension = this.suppliedCellRange.columns[0]; //TODO\n dimensionCols.forEach(column => {\n const isAutoGroupCol = column.getColId() === 'ag-Grid-AutoColumn';\n let 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,\n colId: column.getColId(),\n displayName: this.getColDisplayName(column),\n selected,\n order: order++\n });\n if (selected) {\n hasSelectedDimension = true;\n }\n });\n const 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 const valueColumnsFromReferenceRange = this.referenceCellRange.columns.filter(c => valueCols.has(c));\n valueCols.forEach(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,\n colId: column.getColId(),\n displayName: this.getColDisplayName(column),\n selected: allCols.has(column),\n order: order++\n });\n });\n }\n updateColumnState(updatedCol) {\n const idsMatch = (cs) => cs.colId === updatedCol.colId;\n const { dimensionColState, valueColState } = this;\n if (dimensionColState.filter(idsMatch).length > 0) {\n // only one dimension should be selected\n dimensionColState.forEach(cs => cs.selected = idsMatch(cs));\n }\n else {\n // just update the selected value on the supplied value column\n valueColState.filter(idsMatch).forEach(cs => cs.selected = updatedCol.selected);\n }\n const allColumns = [...dimensionColState, ...valueColState];\n const orderedColIds = [];\n // calculate new order\n allColumns.forEach((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(col => {\n const order = orderedColIds.indexOf(col.colId);\n col.order = order >= 0 ? orderedColIds.indexOf(col.colId) : allColumns.length - 1;\n });\n this.reorderColState();\n }\n reorderColState() {\n const ascColStateOrder = (a, b) => a.order - b.order;\n this.dimensionColState.sort(ascColStateOrder);\n this.valueColState.sort(ascColStateOrder);\n }\n setDimensionCellRange(dimensionCols, colsInRange, updatedColState) {\n this.dimensionCellRange = undefined;\n if (!updatedColState && !this.dimensionColState.length) {\n // use first dimension column in range by default\n dimensionCols.forEach(col => {\n if (this.dimensionCellRange || !colsInRange.has(col)) {\n return;\n }\n this.dimensionCellRange = this.createCellRange(CellRangeType.DIMENSION, col);\n });\n return;\n }\n let selectedDimensionColState = updatedColState;\n if (this.crossFiltering && this.aggFunc) {\n const aggFuncDimension = this.suppliedCellRange.columns[0]; //TODO\n selectedDimensionColState = this.dimensionColState.filter(cs => cs.colId === aggFuncDimension.getColId())[0];\n }\n else if (!selectedDimensionColState || !dimensionCols.has(selectedDimensionColState.column)) {\n selectedDimensionColState = this.dimensionColState.filter(cs => cs.selected)[0];\n }\n if (selectedDimensionColState && selectedDimensionColState.colId !== ChartDataModel.DEFAULT_CATEGORY) {\n this.dimensionCellRange = this.createCellRange(CellRangeType.DIMENSION, selectedDimensionColState.column);\n }\n }\n setValueCellRange(valueCols, colsInRange, updatedColState) {\n this.valueCellRange = undefined;\n const selectedValueCols = [];\n valueCols.forEach(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 let orderedColIds = [];\n if (this.valueColState.length > 0) {\n orderedColIds = this.valueColState.map(c => c.colId);\n }\n else {\n colsInRange.forEach(c => orderedColIds.push(c.getColId()));\n }\n selectedValueCols.sort((a, b) => orderedColIds.indexOf(a.getColId()) - orderedColIds.indexOf(b.getColId()));\n this.valueCellRange = this.createCellRange(CellRangeType.VALUE, ...selectedValueCols);\n }\n }\n updateSelectedDimension(columns) {\n const colIdSet = new Set(columns.map((column) => column.getColId()));\n // if no dimension found in supplied columns use the default category (always index = 0)\n const foundColState = this.dimensionColState.find((colState) => colIdSet.has(colState.colId)) || this.dimensionColState[0];\n this.dimensionColState = this.dimensionColState.map((colState) => (Object.assign(Object.assign({}, colState), { selected: colState.colId === foundColState.colId })));\n }\n syncDimensionCellRange() {\n const selectedDimension = this.getSelectedDimension();\n if (selectedDimension && selectedDimension.column) {\n this.dimensionCellRange = this.createCellRange(CellRangeType.DIMENSION, selectedDimension.column);\n }\n }\n isComboChart() {\n return ['columnLineCombo', 'areaColumnCombo', 'customCombo'].includes(this.chartType);\n }\n}\nChartDataModel.DEFAULT_CATEGORY = 'AG-GRID-DEFAULT-CATEGORY';\n__decorate$O([\n Autowired('rangeService')\n], ChartDataModel.prototype, \"rangeService\", void 0);\n__decorate$O([\n Autowired('chartTranslationService')\n], ChartDataModel.prototype, \"chartTranslationService\", void 0);\n__decorate$O([\n PostConstruct\n], ChartDataModel.prototype, \"init\", null);\n\nfunction deproxy(chartOrProxy) {\n if (chartOrProxy.chart != null) {\n return chartOrProxy.chart;\n }\n return chartOrProxy;\n}\n\nclass ChartProxy {\n constructor(chartProxyParams) {\n this.chartProxyParams = chartProxyParams;\n this.clearThemeOverrides = false;\n this.chart = chartProxyParams.chartInstance;\n this.chartType = chartProxyParams.chartType;\n this.crossFiltering = chartProxyParams.crossFiltering;\n this.crossFilterCallback = chartProxyParams.crossFilterCallback;\n this.standaloneChartType = getSeriesType(this.chartType);\n if (this.chart == null) {\n this.chart = AgChart.create(this.getCommonChartOptions());\n }\n else {\n // On chart change, reset formatting panel changes.\n this.clearThemeOverrides = true;\n }\n }\n getChart() {\n return deproxy(this.chart);\n }\n getChartRef() {\n return this.chart;\n }\n downloadChart(dimensions, fileName, fileFormat) {\n const { chart } = this;\n const rawChart = deproxy(chart);\n const imageFileName = fileName || (rawChart.title ? rawChart.title.text : 'chart');\n const { width, height } = dimensions || {};\n AgChart.download(chart, { width, height, fileName: imageFileName, fileFormat });\n }\n getChartImageDataURL(type) {\n return this.getChart().scene.getDataURL(type);\n }\n getChartOptions() {\n return this.chart.getOptions();\n }\n getChartThemeOverrides() {\n var _a;\n const chartOptionsTheme = this.getChartOptions().theme;\n return (_a = chartOptionsTheme.overrides) !== null && _a !== void 0 ? _a : {};\n }\n getChartPalette() {\n return getChartTheme(this.getChartOptions().theme).palette;\n }\n setPaired(paired) {\n // Special handling to make scatter charts operate in paired mode by default, where \n // columns alternate between being X and Y (and size for bubble). In standard mode,\n // the first column is used for X and every other column is treated as Y\n // (or alternates between Y and size for bubble)\n const seriesType = getSeriesType(this.chartProxyParams.chartType);\n AgChart.updateDelta(this.chart, { theme: { overrides: { [seriesType]: { paired } } } });\n }\n isPaired() {\n const seriesType = getSeriesType(this.chartProxyParams.chartType);\n return _.get(this.getChartThemeOverrides(), `${seriesType}.paired`, true);\n }\n lookupCustomChartTheme(themeName) {\n return lookupCustomChartTheme(this.chartProxyParams, themeName);\n }\n transformData(data, categoryKey, categoryAxis) {\n if (categoryAxis) {\n // replace the values for the selected category with a complex object to allow for duplicated categories\n return data.map((d, index) => {\n const value = d[categoryKey];\n const valueString = value && value.toString ? value.toString() : '';\n const datum = Object.assign({}, d);\n datum[categoryKey] = { id: index, value, toString: () => valueString };\n return datum;\n });\n }\n return data;\n }\n getCommonChartOptions(updatedOverrides) {\n var _a, _b;\n // Only apply active overrides if chart is initialised.\n const existingOptions = this.clearThemeOverrides ? {} : (_b = (_a = this.chart) === null || _a === void 0 ? void 0 : _a.getOptions()) !== null && _b !== void 0 ? _b : {};\n const formattingPanelOverrides = this.chart != null ?\n { overrides: this.getActiveFormattingPanelOverrides() } : {};\n this.clearThemeOverrides = false;\n return Object.assign(Object.assign({}, existingOptions), { theme: Object.assign(Object.assign({}, createAgChartTheme(this.chartProxyParams, this)), (updatedOverrides ? { overrides: updatedOverrides } : formattingPanelOverrides)), container: this.chartProxyParams.parentElement, mode: 'integrated' });\n }\n getActiveFormattingPanelOverrides() {\n var _a, _b;\n if (this.clearThemeOverrides) {\n return {};\n }\n const inUseTheme = (_a = this.chart) === null || _a === void 0 ? void 0 : _a.getOptions().theme;\n return (_b = inUseTheme === null || inUseTheme === void 0 ? void 0 : inUseTheme.overrides) !== null && _b !== void 0 ? _b : {};\n }\n destroy({ keepChartInstance = false } = {}) {\n if (keepChartInstance) {\n return this.chart;\n }\n this.destroyChart();\n }\n destroyChart() {\n if (this.chart) {\n this.chart.destroy();\n this.chart = undefined;\n }\n }\n}\n\nclass CartesianChartProxy extends ChartProxy {\n constructor(params) {\n super(params);\n this.crossFilteringAllPoints = new Set();\n this.crossFilteringSelectedPoints = [];\n }\n update(params) {\n const axes = this.getAxes(params);\n const options = Object.assign(Object.assign({}, this.getCommonChartOptions(params.updatedOverrides)), { data: this.getData(params, axes), axes, series: this.getSeries(params) });\n AgChart.update(this.getChartRef(), options);\n }\n getData(params, axes) {\n var _a;\n const supportsCrossFiltering = ['area', 'line'].includes(this.standaloneChartType);\n const xPosition = this.standaloneChartType === 'bar' ? 'left' : 'bottom';\n const xAxisIsCategory = ((_a = axes.find(o => o.position === xPosition)) === null || _a === void 0 ? void 0 : _a.type) === 'category';\n return this.crossFiltering && supportsCrossFiltering ?\n this.getCrossFilterData(params) :\n this.getDataTransformedData(params, xAxisIsCategory);\n }\n getDataTransformedData(params, isCategoryAxis) {\n return this.transformData(params.data, params.category.id, isCategoryAxis);\n }\n getXAxisType(params) {\n if (params.grouping) {\n return 'groupedCategory';\n }\n else if (CartesianChartProxy.isTimeAxis(params)) {\n return 'time';\n }\n return 'category';\n }\n static isTimeAxis(params) {\n if (params.category && params.category.chartDataType) {\n return params.category.chartDataType === 'time';\n }\n const testDatum = params.data[0];\n return (testDatum && testDatum[params.category.id]) instanceof Date;\n }\n crossFilteringReset() {\n this.crossFilteringSelectedPoints = [];\n this.crossFilteringAllPoints.clear();\n }\n crossFilteringPointSelected(point) {\n return this.crossFilteringSelectedPoints.length == 0 || this.crossFilteringSelectedPoints.includes(point);\n }\n crossFilteringDeselectedPoints() {\n return this.crossFilteringSelectedPoints.length > 0 &&\n this.crossFilteringAllPoints.size !== this.crossFilteringSelectedPoints.length;\n }\n extractLineAreaCrossFilterSeries(series, params) {\n const getYKey = (yKey) => {\n if (this.standaloneChartType === 'area') {\n const lastSelectedChartId = params.getCrossFilteringContext().lastSelectedChartId;\n return (lastSelectedChartId === params.chartId) ? yKey + '-total' : yKey;\n }\n return yKey + '-total';\n };\n return series.map(s => {\n s.yKey = getYKey(s.yKey);\n s.listeners = {\n nodeClick: (e) => {\n const value = e.datum[s.xKey];\n const multiSelection = e.event.metaKey || e.event.ctrlKey;\n this.crossFilteringAddSelectedPoint(multiSelection, value);\n this.crossFilterCallback(e);\n }\n };\n s.marker = {\n formatter: (p) => {\n const category = p.datum[params.category.id];\n return {\n fill: p.highlighted ? 'yellow' : p.fill,\n size: p.highlighted ? 14 : this.crossFilteringPointSelected(category) ? 8 : 0,\n };\n }\n };\n if (this.standaloneChartType === 'area') {\n s.fillOpacity = this.crossFilteringDeselectedPoints() ? 0.3 : 1;\n }\n if (this.standaloneChartType === 'line') {\n s.strokeOpacity = this.crossFilteringDeselectedPoints() ? 0.3 : 1;\n }\n return s;\n });\n }\n getCrossFilterData(params) {\n this.crossFilteringAllPoints.clear();\n const colId = params.fields[0].colId;\n const filteredOutColId = `${colId}-filtered-out`;\n const lastSelectedChartId = params.getCrossFilteringContext().lastSelectedChartId;\n return params.data.map(d => {\n const category = d[params.category.id];\n this.crossFilteringAllPoints.add(category);\n const pointSelected = this.crossFilteringPointSelected(category);\n if (this.standaloneChartType === 'area' && lastSelectedChartId === params.chartId) {\n d[`${colId}-total`] = pointSelected ? d[colId] : d[colId] + d[filteredOutColId];\n }\n if (this.standaloneChartType === 'line') {\n d[`${colId}-total`] = pointSelected ? d[colId] : d[colId] + d[filteredOutColId];\n }\n return d;\n });\n }\n crossFilteringAddSelectedPoint(multiSelection, value) {\n multiSelection ? this.crossFilteringSelectedPoints.push(value) : this.crossFilteringSelectedPoints = [value];\n }\n}\n\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 const 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 const 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 const stringValue = Object.prototype.toString.call(value);\n return stringValue === '[object RegExp]' || stringValue === '[object Date]';\n}\nfunction 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 const sourceIsArray = Array.isArray(source);\n const targetIsArray = Array.isArray(target);\n const 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\nfunction hexToRGBA(hex, alpha) {\n const r = parseInt(hex.slice(1, 3), 16);\n const g = parseInt(hex.slice(3, 5), 16);\n const b = parseInt(hex.slice(5, 7), 16);\n return alpha ? `rgba(${r}, ${g}, ${b}, ${alpha})` : `rgba(${r}, ${g}, ${b})`;\n}\nfunction changeOpacity(fills, alpha) {\n return fills.map(fill => {\n const c = Color.fromString(fill);\n return new Color(c.r, c.g, c.b, alpha).toHexString();\n });\n}\n\nclass BarChartProxy extends CartesianChartProxy {\n constructor(params) {\n super(params);\n }\n getAxes(params) {\n const isBar = this.standaloneChartType === 'bar';\n const axes = [\n {\n type: this.getXAxisType(params),\n position: isBar ? 'left' : 'bottom',\n },\n {\n type: 'number',\n position: isBar ? 'bottom' : 'left',\n },\n ];\n // Add a default label formatter to show '%' for normalized charts if none is provided\n if (this.isNormalised()) {\n const numberAxis = axes[1];\n numberAxis.label = Object.assign(Object.assign({}, numberAxis.label), { formatter: (params) => Math.round(params.value) + '%' });\n }\n return axes;\n }\n getSeries(params) {\n const groupedCharts = ['groupedColumn', 'groupedBar'];\n const isGrouped = !this.crossFiltering && _.includes(groupedCharts, this.chartType);\n const series = params.fields.map(f => ({\n type: this.standaloneChartType,\n grouped: isGrouped,\n stacked: ['stackedColumn', 'normalizedColumn', 'stackedBar', 'normalizedBar'].includes(this.chartType),\n normalizedTo: this.isNormalised() ? 100 : undefined,\n xKey: params.category.id,\n xName: params.category.name,\n yKey: f.colId,\n yName: f.displayName\n }));\n return this.crossFiltering ? this.extractCrossFilterSeries(series) : series;\n }\n extractCrossFilterSeries(series) {\n const palette = this.getChartPalette();\n const updatePrimarySeries = (seriesOptions, index) => {\n return Object.assign(Object.assign({}, seriesOptions), { highlightStyle: { item: { fill: undefined } }, fill: palette === null || palette === void 0 ? void 0 : palette.fills[index], stroke: palette === null || palette === void 0 ? void 0 : palette.strokes[index], listeners: {\n nodeClick: this.crossFilterCallback\n } });\n };\n const updateFilteredOutSeries = (seriesOptions) => {\n const yKey = seriesOptions.yKey + '-filtered-out';\n return Object.assign(Object.assign({}, deepMerge({}, seriesOptions)), { yKey, fill: hexToRGBA(seriesOptions.fill, '0.3'), stroke: hexToRGBA(seriesOptions.stroke, '0.3'), showInLegend: false });\n };\n const allSeries = [];\n for (let i = 0; i < series.length; i++) {\n // update primary series\n const primarySeries = updatePrimarySeries(series[i], i);\n allSeries.push(primarySeries);\n // add 'filtered-out' series\n allSeries.push(updateFilteredOutSeries(primarySeries));\n }\n return allSeries;\n }\n isNormalised() {\n const normalisedCharts = ['normalizedColumn', 'normalizedBar'];\n return !this.crossFiltering && _.includes(normalisedCharts, this.chartType);\n }\n}\n\nclass AreaChartProxy extends CartesianChartProxy {\n constructor(params) {\n super(params);\n }\n getAxes(params) {\n const axes = [\n {\n type: this.getXAxisType(params),\n position: 'bottom',\n },\n {\n type: 'number',\n position: 'left',\n },\n ];\n // Add a default label formatter to show '%' for normalized charts if none is provided\n if (this.isNormalised()) {\n const numberAxis = axes[1];\n numberAxis.label = Object.assign(Object.assign({}, numberAxis.label), { formatter: (params) => Math.round(params.value) + '%' });\n }\n return axes;\n }\n getSeries(params) {\n const series = params.fields.map(f => ({\n type: this.standaloneChartType,\n xKey: params.category.id,\n xName: params.category.name,\n yKey: f.colId,\n yName: f.displayName,\n normalizedTo: this.chartType === 'normalizedArea' ? 100 : undefined,\n stacked: ['normalizedArea', 'stackedArea'].includes(this.chartType)\n }));\n return this.crossFiltering ? this.extractLineAreaCrossFilterSeries(series, params) : series;\n }\n isNormalised() {\n return !this.crossFiltering && this.chartType === 'normalizedArea';\n }\n}\n\nclass LineChartProxy extends CartesianChartProxy {\n constructor(params) {\n super(params);\n }\n getAxes(params) {\n return [\n {\n type: this.getXAxisType(params),\n position: 'bottom'\n },\n {\n type: 'number',\n position: 'left'\n },\n ];\n }\n getSeries(params) {\n const series = params.fields.map(f => ({\n type: this.standaloneChartType,\n xKey: params.category.id,\n xName: params.category.name,\n yKey: f.colId,\n yName: f.displayName\n }));\n return this.crossFiltering ? this.extractLineAreaCrossFilterSeries(series, params) : series;\n }\n}\n\nclass PieChartProxy extends ChartProxy {\n constructor(params) {\n super(params);\n }\n update(params) {\n const { data, category } = params;\n const options = Object.assign(Object.assign({}, this.getCommonChartOptions(params.updatedOverrides)), { data: this.crossFiltering ? this.getCrossFilterData(params) : this.transformData(data, category.id), series: this.getSeries(params) });\n AgChart.update(this.getChartRef(), options);\n }\n getSeries(params) {\n const numFields = params.fields.length;\n const offset = {\n currentOffset: 0,\n offsetAmount: numFields > 1 ? 20 : 40\n };\n const series = this.getFields(params).map((f) => {\n var _a;\n // options shared by 'pie' and 'doughnut' charts\n const options = {\n type: this.standaloneChartType,\n angleKey: f.colId,\n angleName: f.displayName,\n sectorLabelKey: f.colId,\n calloutLabelKey: params.category.id,\n calloutLabelName: params.category.name,\n };\n if (this.chartType === 'doughnut') {\n const { outerRadiusOffset, innerRadiusOffset } = PieChartProxy.calculateOffsets(offset);\n const title = f.displayName ? {\n title: { text: f.displayName, showInLegend: numFields > 1 },\n } : undefined;\n // augment shared options with 'doughnut' specific options\n return Object.assign(Object.assign(Object.assign(Object.assign({}, options), { outerRadiusOffset,\n innerRadiusOffset }), title), { calloutLine: {\n colors: (_a = this.getChartPalette()) === null || _a === void 0 ? void 0 : _a.strokes,\n } });\n }\n return options;\n });\n return this.crossFiltering ? this.extractCrossFilterSeries(series) : series;\n }\n getCrossFilterData(params) {\n const colId = params.fields[0].colId;\n const filteredOutColId = `${colId}-filtered-out`;\n return params.data.map(d => {\n const total = d[colId] + d[filteredOutColId];\n d[`${colId}-total`] = total;\n d[filteredOutColId] = 1; // normalise to 1\n d[colId] = d[colId] / total; // fraction of 1\n return d;\n });\n }\n extractCrossFilterSeries(series) {\n const palette = this.getChartPalette();\n const primaryOptions = (seriesOptions) => {\n return Object.assign(Object.assign({}, seriesOptions), { calloutLabel: { enabled: false }, highlightStyle: { item: { fill: undefined } }, radiusKey: seriesOptions.angleKey, angleKey: seriesOptions.angleKey + '-total', radiusMin: 0, radiusMax: 1, listeners: {\n nodeClick: this.crossFilterCallback,\n } });\n };\n const filteredOutOptions = (seriesOptions, angleKey) => {\n var _a, _b;\n return Object.assign(Object.assign({}, deepMerge({}, primaryOpts)), { radiusKey: angleKey + '-filtered-out', fills: changeOpacity((_a = seriesOptions.fills) !== null && _a !== void 0 ? _a : palette.fills, 0.3), strokes: changeOpacity((_b = seriesOptions.strokes) !== null && _b !== void 0 ? _b : palette.strokes, 0.3), showInLegend: false });\n };\n // currently, only single 'doughnut' cross-filter series are supported\n const primarySeries = series[0];\n // update primary series\n const angleKey = primarySeries.angleKey;\n const primaryOpts = primaryOptions(primarySeries);\n return [\n filteredOutOptions(primarySeries, angleKey),\n primaryOpts,\n ];\n }\n static calculateOffsets(offset) {\n const outerRadiusOffset = offset.currentOffset;\n offset.currentOffset -= offset.offsetAmount;\n const innerRadiusOffset = offset.currentOffset;\n offset.currentOffset -= offset.offsetAmount;\n return { outerRadiusOffset, innerRadiusOffset };\n }\n getFields(params) {\n return this.chartType === 'pie' ? params.fields.slice(0, 1) : params.fields;\n }\n crossFilteringReset() {\n // not required in pie charts\n }\n}\n\nclass ScatterChartProxy extends CartesianChartProxy {\n constructor(params) {\n super(params);\n }\n getAxes(_params) {\n return [\n {\n type: 'number',\n position: 'bottom',\n },\n {\n type: 'number',\n position: 'left',\n },\n ];\n }\n getSeries(params) {\n const paired = this.isPaired();\n const seriesDefinitions = this.getSeriesDefinitions(params.fields, paired);\n const labelFieldDefinition = params.category.id === ChartDataModel.DEFAULT_CATEGORY ? undefined : params.category;\n const series = seriesDefinitions.map(seriesDefinition => ({\n type: this.standaloneChartType,\n xKey: seriesDefinition.xField.colId,\n xName: seriesDefinition.xField.displayName,\n yKey: seriesDefinition.yField.colId,\n yName: seriesDefinition.yField.displayName,\n title: `${seriesDefinition.yField.displayName} vs ${seriesDefinition.xField.displayName}`,\n sizeKey: seriesDefinition.sizeField ? seriesDefinition.sizeField.colId : undefined,\n sizeName: seriesDefinition.sizeField ? seriesDefinition.sizeField.displayName : undefined,\n labelKey: labelFieldDefinition ? labelFieldDefinition.id : seriesDefinition.yField.colId,\n labelName: labelFieldDefinition ? labelFieldDefinition.name : undefined,\n }));\n return this.crossFiltering ? this.extractCrossFilterSeries(series, params) : series;\n }\n extractCrossFilterSeries(series, params) {\n const { data } = params;\n const palette = this.getChartPalette();\n const filteredOutKey = (key) => `${key}-filtered-out`;\n const calcMarkerDomain = (data, sizeKey) => {\n var _a;\n const markerDomain = [Infinity, -Infinity];\n if (sizeKey != null) {\n for (const datum of data) {\n const value = (_a = datum[sizeKey]) !== null && _a !== void 0 ? _a : datum[filteredOutKey(sizeKey)];\n if (value < markerDomain[0]) {\n markerDomain[0] = value;\n }\n if (value > markerDomain[1]) {\n markerDomain[1] = value;\n }\n }\n }\n if (markerDomain[0] <= markerDomain[1]) {\n return markerDomain;\n }\n return undefined;\n };\n const updatePrimarySeries = (series, idx) => {\n const { sizeKey } = series;\n const fill = palette === null || palette === void 0 ? void 0 : palette.fills[idx];\n const stroke = palette === null || palette === void 0 ? void 0 : palette.strokes[idx];\n let markerDomain = calcMarkerDomain(data, sizeKey);\n const marker = Object.assign(Object.assign({}, series.marker), { fill,\n stroke, domain: markerDomain });\n return Object.assign(Object.assign({}, series), { marker, highlightStyle: { item: { fill: 'yellow' } }, listeners: Object.assign(Object.assign({}, series.listeners), { nodeClick: this.crossFilterCallback }) });\n };\n const updateFilteredOutSeries = (series) => {\n let { sizeKey, yKey, xKey } = series;\n if (sizeKey != null) {\n sizeKey = filteredOutKey(sizeKey);\n }\n return Object.assign(Object.assign({}, series), { yKey: filteredOutKey(yKey), xKey: filteredOutKey(xKey), marker: Object.assign(Object.assign({}, series.marker), { fillOpacity: 0.3, strokeOpacity: 0.3 }), sizeKey, showInLegend: false, listeners: Object.assign(Object.assign({}, series.listeners), { nodeClick: (e) => {\n const value = e.datum[filteredOutKey(xKey)];\n // Need to remove the `-filtered-out` suffixes from the event so that\n // upstream processing maps the event correctly onto grid column ids.\n const filterableEvent = Object.assign(Object.assign({}, e), { xKey, datum: Object.assign(Object.assign({}, e.datum), { [xKey]: value }) });\n this.crossFilterCallback(filterableEvent);\n } }) });\n };\n const updatedSeries = series.map(updatePrimarySeries);\n return [\n ...updatedSeries,\n ...updatedSeries.map(updateFilteredOutSeries),\n ];\n }\n getSeriesDefinitions(fields, paired) {\n if (fields.length < 2) {\n return [];\n }\n const isBubbleChart = this.chartType === 'bubble';\n if (paired) {\n if (isBubbleChart) {\n return fields.map((currentXField, i) => i % 3 === 0 ? ({\n xField: currentXField,\n yField: fields[i + 1],\n sizeField: fields[i + 2],\n }) : null).filter(x => x && x.yField && x.sizeField);\n }\n return fields.map((currentXField, i) => i % 2 === 0 ? ({\n xField: currentXField,\n yField: fields[i + 1],\n }) : null).filter(x => x && x.yField);\n }\n const xField = fields[0];\n if (isBubbleChart) {\n return fields\n .map((yField, i) => i % 2 === 1 ? ({\n xField,\n yField,\n sizeField: fields[i + 1],\n }) : null)\n .filter(x => x && x.sizeField);\n }\n return fields.filter((value, i) => i > 0).map(yField => ({ xField, yField }));\n }\n}\n\nclass HistogramChartProxy extends CartesianChartProxy {\n constructor(params) {\n super(params);\n }\n getSeries(params) {\n const firstField = params.fields[0]; // multiple series are not supported!\n return [\n {\n type: this.standaloneChartType,\n xKey: firstField.colId,\n xName: firstField.displayName,\n yName: this.chartProxyParams.translate(\"histogramFrequency\"),\n areaPlot: false, // only constant width is supported via integrated charts\n }\n ];\n }\n getAxes(_params) {\n return [\n {\n type: 'number',\n position: 'bottom',\n },\n {\n type: 'number',\n position: 'left',\n },\n ];\n }\n}\n\nclass ChartOptionsService extends BeanStub {\n constructor(chartController) {\n super();\n this.chartController = chartController;\n }\n getChartOption(expression) {\n // TODO: We shouldn't be reading the chart implementation directly, but right now\n // it isn't possible to either get option defaults OR retrieve themed options.\n return _.get(this.getChart(), expression, undefined);\n }\n setChartOption(expression, value, isSilent) {\n const chartSeriesTypes = this.chartController.getChartSeriesTypes();\n if (this.chartController.isComboChart()) {\n chartSeriesTypes.push('cartesian');\n }\n let chartOptions = {};\n // we need to update chart options on each series type for combo charts\n chartSeriesTypes.forEach(seriesType => {\n chartOptions = deepMerge(chartOptions, this.createChartOptions({\n seriesType,\n expression,\n value\n }));\n });\n this.updateChart(chartOptions);\n if (!isSilent) {\n this.raiseChartOptionsChangedEvent();\n }\n }\n awaitChartOptionUpdate(func) {\n const chart = this.chartController.getChartProxy().getChart();\n chart.waitForUpdate().then(() => func())\n .catch((e) => console.error(`AG Grid - chart update failed`, e));\n }\n getAxisProperty(expression) {\n var _a;\n return _.get((_a = this.getChart().axes) === null || _a === void 0 ? void 0 : _a[0], expression, undefined);\n }\n setAxisProperty(expression, value) {\n var _a;\n // update axis options\n const chart = this.getChart();\n let chartOptions = {};\n (_a = chart.axes) === null || _a === void 0 ? void 0 : _a.forEach((axis) => {\n chartOptions = deepMerge(chartOptions, this.getUpdateAxisOptions(axis, expression, value));\n });\n this.updateChart(chartOptions);\n this.raiseChartOptionsChangedEvent();\n }\n getLabelRotation(axisType) {\n const axis = this.getAxis(axisType);\n return _.get(axis, 'label.rotation', undefined);\n }\n setLabelRotation(axisType, value) {\n const chartAxis = this.getAxis(axisType);\n if (chartAxis) {\n const chartOptions = this.getUpdateAxisOptions(chartAxis, 'label.rotation', value);\n this.updateChart(chartOptions);\n this.raiseChartOptionsChangedEvent();\n }\n }\n getSeriesOption(expression, seriesType) {\n const series = this.getChart().series.find((s) => ChartOptionsService.isMatchingSeries(seriesType, s));\n return _.get(series, expression, undefined);\n }\n setSeriesOption(expression, value, seriesType) {\n const chartOptions = this.createChartOptions({\n seriesType,\n expression: `series.${expression}`,\n value\n });\n this.updateChart(chartOptions);\n this.raiseChartOptionsChangedEvent();\n }\n getPairedMode() {\n return this.chartController.getChartProxy().isPaired();\n }\n setPairedMode(paired) {\n this.chartController.getChartProxy().setPaired(paired);\n }\n getAxis(axisType) {\n const 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 getUpdateAxisOptions(chartAxis, expression, value) {\n const seriesType = getSeriesType(this.getChartType());\n const validAxisTypes = ['number', 'category', 'time', 'groupedCategory'];\n if (!validAxisTypes.includes(chartAxis.type)) {\n return {};\n }\n return this.createChartOptions({\n seriesType,\n expression: `axes.${chartAxis.type}.${expression}`,\n value\n });\n }\n getChartType() {\n return this.chartController.getChartType();\n }\n getChart() {\n return this.chartController.getChartProxy().getChart();\n }\n updateChart(chartOptions) {\n const chartRef = this.chartController.getChartProxy().getChartRef();\n AgChart.updateDelta(chartRef, chartOptions);\n }\n createChartOptions({ seriesType, expression, value }) {\n const overrides = {};\n const chartOptions = {\n theme: {\n overrides\n }\n };\n _.set(overrides, `${seriesType}.${expression}`, value);\n return chartOptions;\n }\n raiseChartOptionsChangedEvent() {\n const chartModel = this.chartController.getChartModel();\n const event = {\n type: Events.EVENT_CHART_OPTIONS_CHANGED,\n chartId: chartModel.chartId,\n chartType: chartModel.chartType,\n chartThemeName: this.chartController.getChartThemeName(),\n chartOptions: chartModel.chartOptions\n };\n this.eventService.dispatchEvent(event);\n }\n static isMatchingSeries(seriesType, series) {\n return VALID_SERIES_TYPES.includes(seriesType) && series.type === seriesType;\n }\n destroy() {\n super.destroy();\n }\n}\n\nclass ComboChartProxy extends CartesianChartProxy {\n constructor(params) {\n super(params);\n }\n getAxes(params) {\n const fields = params ? params.fields : [];\n const fieldsMap = new Map(fields.map(f => [f.colId, f]));\n const { primaryYKeys, secondaryYKeys } = this.getYKeys(fields, params.seriesChartTypes);\n const axes = [\n {\n type: this.getXAxisType(params),\n position: 'bottom',\n gridStyle: [{ stroke: undefined }],\n },\n ];\n if (primaryYKeys.length > 0) {\n axes.push({\n type: 'number',\n keys: primaryYKeys,\n position: 'left',\n });\n }\n if (secondaryYKeys.length > 0) {\n secondaryYKeys.forEach((secondaryYKey, i) => {\n const field = fieldsMap.get(secondaryYKey);\n const secondaryAxisIsVisible = field && field.colId === secondaryYKey;\n if (!secondaryAxisIsVisible) {\n return;\n }\n const secondaryAxisOptions = {\n type: 'number',\n keys: [secondaryYKey],\n position: 'right',\n };\n const primaryYAxis = primaryYKeys.some(primaryYKey => !!fieldsMap.get(primaryYKey));\n const lastSecondaryAxis = i === secondaryYKeys.length - 1;\n if (!primaryYAxis && lastSecondaryAxis) ;\n else {\n secondaryAxisOptions.gridStyle = [{ stroke: undefined }];\n }\n axes.push(secondaryAxisOptions);\n });\n }\n return axes;\n }\n getSeries(params) {\n const { fields, category, seriesChartTypes } = params;\n return fields.map(field => {\n const seriesChartType = seriesChartTypes.find(s => s.colId === field.colId);\n if (seriesChartType) {\n const chartType = seriesChartType.chartType;\n const grouped = ['groupedColumn', 'groupedBar'].includes(chartType);\n const groupedOpts = grouped ? { grouped: true } : {};\n return Object.assign({ type: getSeriesType(chartType), xKey: category.id, yKey: field.colId, yName: field.displayName, stacked: ['stackedArea', 'stackedColumn'].includes(chartType) }, groupedOpts);\n }\n });\n }\n getYKeys(fields, seriesChartTypes) {\n const primaryYKeys = [];\n const secondaryYKeys = [];\n fields.forEach(field => {\n const colId = field.colId;\n const seriesChartType = seriesChartTypes.find(s => s.colId === colId);\n if (seriesChartType) {\n seriesChartType.secondaryAxis ? secondaryYKeys.push(colId) : primaryYKeys.push(colId);\n }\n });\n return { primaryYKeys, secondaryYKeys };\n }\n}\n\nvar __decorate$N = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass GridChartComp extends Component {\n constructor(params) {\n super(GridChartComp.TEMPLATE);\n this.params = params;\n }\n init() {\n const availableChartThemes = this.gridOptionsService.get('chartThemes') || DEFAULT_THEMES;\n if (availableChartThemes.length < 1) {\n throw new Error('Cannot create chart: no chart themes are available to be used.');\n }\n let { chartThemeName } = this.params;\n if (!_.includes(availableChartThemes, chartThemeName)) {\n chartThemeName = availableChartThemes[0];\n }\n const 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 const isRtl = this.gridOptionsService.is('enableRtl');\n this.addCssClass(isRtl ? 'ag-rtl' : 'ag-ltr');\n // only the chart controller interacts with the chart model\n const 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_MODEL_UPDATE, this.update.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());\n }\n this.update();\n this.raiseChartCreatedEvent();\n }\n validateCustomThemes() {\n const suppliedThemes = this.getChartThemes();\n const customChartThemes = this.gridOptionsService.get('customChartThemes');\n if (customChartThemes) {\n _.getAllKeysInObjects([customChartThemes]).forEach(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 createChart() {\n // if chart already exists, destroy it and remove it from DOM\n let chartInstance = undefined;\n if (this.chartProxy) {\n chartInstance = this.chartProxy.destroy({ keepChartInstance: true });\n }\n const crossFilterCallback = (event, reset) => {\n const ctx = this.params.crossFilteringContext;\n ctx.lastSelectedChartId = reset ? '' : this.chartController.getChartId();\n if (reset) {\n this.params.crossFilteringResetCallback();\n }\n this.crossFilterService.filter(event, reset);\n };\n const chartType = this.chartController.getChartType();\n const chartProxyParams = {\n chartType,\n chartInstance,\n getChartThemeName: this.getChartThemeName.bind(this),\n getChartThemes: this.getChartThemes.bind(this),\n customChartThemes: this.gridOptionsService.get('customChartThemes'),\n getGridOptionsChartThemeOverrides: () => this.getGridOptionsChartThemeOverrides(),\n getExtraPaddingDirections: () => { var _a, _b; return (_b = (_a = this.chartMenu) === null || _a === void 0 ? void 0 : _a.getExtraPaddingDirections()) !== null && _b !== void 0 ? _b : []; },\n apiChartThemeOverrides: this.params.chartThemeOverrides,\n crossFiltering: this.params.crossFiltering,\n crossFilterCallback,\n parentElement: this.eChart,\n grouping: this.chartController.isGrouping(),\n chartThemeToRestore: this.params.chartThemeName,\n chartOptionsToRestore: this.params.chartOptionsToRestore,\n chartPaletteToRestore: this.params.chartPaletteToRestore,\n seriesChartTypes: this.chartController.getSeriesChartTypes(),\n translate: (toTranslate, defaultText) => this.chartTranslationService.translate(toTranslate, defaultText),\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 const 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 getChartThemeName() {\n return this.chartController.getChartThemeName();\n }\n getChartThemes() {\n return this.chartController.getThemes();\n }\n getGridOptionsChartThemeOverrides() {\n return this.gridOptionsService.get('chartThemeOverrides');\n }\n static createChartProxy(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 case 'doughnut':\n return new PieChartProxy(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 addDialog() {\n const title = this.chartTranslationService.translate(this.params.pivotChart ? 'pivotChartTitle' : 'rangeChartTitle');\n const { width, height } = this.getBestDialogSize();\n this.chartDialog = new AgDialog({\n resizable: true,\n movable: true,\n maximizable: true,\n title,\n width,\n height,\n component: this,\n centered: true,\n closable: true\n });\n this.getContext().createBean(this.chartDialog);\n this.chartDialog.addEventListener(AgDialog.EVENT_DESTROYED, () => this.destroy());\n }\n getBestDialogSize() {\n const popupParent = this.popupService.getPopupParent();\n const maxWidth = _.getAbsoluteWidth(popupParent) * 0.75;\n const maxHeight = _.getAbsoluteHeight(popupParent) * 0.75;\n const ratio = 0.553;\n const chart = this.chartProxy.getChart();\n let width = this.params.insideDialog ? 850 : chart.width;\n let 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, height };\n }\n addMenu() {\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 addTitleEditComp() {\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 update(params) {\n // update chart model for api.updateChart()\n if (params === null || params === void 0 ? void 0 : params.chartId) {\n const validUpdate = this.chartController.update(params);\n if (!validUpdate) {\n return; // warning already logged!\n }\n }\n const chartTypeChanged = this.chartTypeChanged(params);\n // recreate chart if chart type has changed\n if (chartTypeChanged)\n this.createChart();\n // update chart options if chart type hasn't changed or if overrides are supplied\n this.updateChart(params === null || params === void 0 ? void 0 : params.chartThemeOverrides);\n if (params === null || params === void 0 ? void 0 : params.chartId) {\n this.chartProxy.getChart().waitForUpdate().then(() => {\n this.chartController.raiseChartApiUpdateEvent();\n });\n }\n }\n updateChart(updatedOverrides) {\n const { chartProxy } = this;\n const selectedCols = this.chartController.getSelectedValueColState();\n const fields = selectedCols.map(c => ({ colId: c.colId, displayName: c.displayName }));\n const data = this.chartController.getChartData();\n const chartEmpty = this.handleEmptyChart(data, fields);\n if (chartEmpty) {\n return;\n }\n let chartUpdateParams = this.chartController.getChartUpdateParams(updatedOverrides);\n chartProxy.update(chartUpdateParams);\n this.chartProxy.getChart().waitForUpdate().then(() => {\n this.chartController.raiseChartUpdatedEvent();\n });\n this.titleEdit.refreshTitle(this.chartController, this.chartOptionsService);\n }\n chartTypeChanged(updateParams) {\n const [currentType, updatedChartType] = [this.chartController.getChartType(), updateParams === null || updateParams === void 0 ? void 0 : updateParams.chartType];\n return this.chartType !== currentType || (!!updatedChartType && this.chartType !== updatedChartType);\n }\n getChartModel() {\n return this.chartController.getChartModel();\n }\n getChartImageDataURL(fileFormat) {\n return this.chartProxy.getChartImageDataURL(fileFormat);\n }\n handleEmptyChart(data, fields) {\n const pivotModeDisabled = this.chartController.isPivotChart() && !this.chartController.isPivotMode();\n let minFieldsRequired = 1;\n if (this.chartController.isActiveXYChart()) {\n minFieldsRequired = this.chartController.getChartType() === 'bubble' ? 3 : 2;\n }\n const isEmptyChart = fields.length < minFieldsRequired || data.length === 0;\n if (this.eChart) {\n const 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 downloadChart(dimensions, fileName, fileFormat) {\n this.chartProxy.downloadChart(dimensions, fileName, fileFormat);\n }\n openChartToolPanel(panel) {\n const menuPanel = panel ? CHART_TOOL_PANEL_MENU_OPTIONS[panel] : panel;\n this.chartMenu.showMenu(menuPanel);\n }\n closeChartToolPanel() {\n this.chartMenu.hideMenu();\n }\n getChartId() {\n return this.chartController.getChartId();\n }\n getUnderlyingChart() {\n return this.chartProxy.getChartRef();\n }\n crossFilteringReset() {\n this.chartProxy.crossFilteringReset();\n }\n setActiveChartCellRange(focusEvent) {\n if (this.getGui().contains(focusEvent.relatedTarget)) {\n return;\n }\n this.chartController.setChartRange(true);\n this.gridApi.focusService.clearFocusedCell();\n }\n raiseChartCreatedEvent() {\n const event = {\n type: Events.EVENT_CHART_CREATED,\n chartId: this.chartController.getChartId()\n };\n this.chartProxy.getChart().waitForUpdate().then(() => {\n this.eventService.dispatchEvent(event);\n });\n }\n raiseChartDestroyedEvent() {\n const event = {\n type: Events.EVENT_CHART_DESTROYED,\n chartId: this.chartController.getChartId(),\n };\n this.eventService.dispatchEvent(event);\n }\n destroy() {\n super.destroy();\n if (this.chartProxy) {\n this.chartProxy.destroy();\n }\n this.destroyBean(this.chartMenu);\n this.destroyBean(this.titleEdit);\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 const 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}\nGridChartComp.TEMPLATE = `
\n
\n
\n
\n
\n
\n
\n
`;\n__decorate$N([\n RefSelector('eChart')\n], GridChartComp.prototype, \"eChart\", void 0);\n__decorate$N([\n RefSelector('eChartContainer')\n], GridChartComp.prototype, \"eChartContainer\", void 0);\n__decorate$N([\n RefSelector('eMenuContainer')\n], GridChartComp.prototype, \"eMenuContainer\", void 0);\n__decorate$N([\n RefSelector('eEmpty')\n], GridChartComp.prototype, \"eEmpty\", void 0);\n__decorate$N([\n RefSelector('eTitleEditContainer')\n], GridChartComp.prototype, \"eTitleEditContainer\", void 0);\n__decorate$N([\n Autowired('chartCrossFilterService')\n], GridChartComp.prototype, \"crossFilterService\", void 0);\n__decorate$N([\n Autowired('chartTranslationService')\n], GridChartComp.prototype, \"chartTranslationService\", void 0);\n__decorate$N([\n Autowired('gridApi')\n], GridChartComp.prototype, \"gridApi\", void 0);\n__decorate$N([\n Autowired('popupService')\n], GridChartComp.prototype, \"popupService\", void 0);\n__decorate$N([\n PostConstruct\n], GridChartComp.prototype, \"init\", null);\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nconst VERSION$a = '30.0.5';\n\nvar __rest$1 = (undefined && undefined.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nfunction upgradeChartModel(model) {\n model.version;\n if (model.version == null) {\n // Try to guess the version so we can apply the right subset of migrations.\n model.version = heuristicVersionDetection(model);\n }\n model = migrateIfBefore('23.0.0', model, migrateV23);\n model = migrateIfBefore('24.0.0', model, migrateV24);\n model = migrateIfBefore('25.1.0', model, migrateV25_1);\n model = migrateIfBefore('26.0.0', model, migrateV26);\n model = migrateIfBefore('26.1.0', model, migrateV26_1);\n // Switch from iChartOptions to iAgChartOptions....\n model = migrateIfBefore('26.2.0', model, migrateV26_2);\n model = migrateIfBefore('28.0.0', model, migrateV28);\n model = migrateIfBefore('28.2.0', model, migrateV28_2);\n model = migrateIfBefore('29.0.0', model, migrateV29);\n model = migrateIfBefore('29.1.0', model, migrateV29_1);\n model = migrateIfBefore('29.2.0', model, migrateV29_2);\n model = migrateIfBefore('30.0.0', model, migrateV30);\n model = cleanup(model);\n // Bump version to latest.\n model = migrateIfBefore(VERSION$a, model, (m) => m);\n return model;\n}\nfunction migrateV23(model) {\n // https://github.com/ag-grid/ag-grid/commit/76c6744ff2b732d298d1ade73c122188854b5bac\n model = jsonRename('chartOptions.legend.item.marker.type', 'shape', model);\n model = jsonRename('chartOptions.seriesDefaults.marker.type', 'shape', model);\n // https://github.com/ag-grid/ag-grid/commit/7bdf2cfd666acda758a818733a9f9cb35ac1d7a7\n model = jsonRename('chartOptions.legend.padding', 'spacing', model);\n return model;\n}\nfunction migrateV24(model) {\n var _a;\n // https://github.com/ag-grid/ag-grid/commit/f4e854e3dc459400fa00e6da2873cb8e9cfff6fe#\n model = jsonDelete('chartOptions.seriesDefaults.marker.minSize', model);\n const _b = model, { chartType, chartPalette } = _b, // Migrate.\n _c = _b.chartOptions, // Migrate.\n { xAxis, yAxis } = _c, chartOptions = __rest$1(_c, [\"xAxis\", \"yAxis\"]), chartModel = __rest$1(_b, [\"chartType\", \"chartPalette\", \"chartOptions\"]);\n const axesTypes = getLegacyAxisType(chartType);\n const axes = axesTypes === null || axesTypes === void 0 ? void 0 : axesTypes.map((type, i) => (Object.assign({ type }, (i === 0 ? xAxis : yAxis))));\n return Object.assign({ chartType, chartThemeName: (_a = LEGACY_PALETTES[chartPalette]) !== null && _a !== void 0 ? _a : 'ag-default', chartOptions: Object.assign(Object.assign({}, chartOptions), { axes,\n xAxis,\n yAxis }) }, chartModel);\n}\nfunction migrateV25_1(model) {\n // https://github.com/ag-grid/ag-grid/commit/61943f9fecbfb5ac1b9a1fd93788f9fdd8687181\n model = jsonRename('chartOptions.seriesDefaults.label.minRequiredAngle', 'minAngle', model);\n return model;\n}\nfunction migrateV26(model) {\n // https://github.com/ag-grid/ag-grid/commit/df2445d88e64cb4e831d6163104a0fa60ccde3b5\n const highlightOptUpdate = (_a) => {\n var { dimOpacity } = _a, opts = __rest$1(_a, [\"dimOpacity\"]);\n return (Object.assign(Object.assign({}, opts), (dimOpacity != null ? { series: { dimOpacity } } : {})));\n };\n model = jsonMutate('chartOptions.seriesDefaults.highlightStyle', model, highlightOptUpdate);\n // https://github.com/ag-grid/ag-grid/commit/f4e854e3dc459400fa00e6da2873cb8e9cfff6fe#\n model = jsonDelete('chart', model);\n model = jsonDelete('chartOptions.seriesDefaults.tooltipClass', model);\n model = jsonDelete('chartOptions.seriesDefaults.tooltipTracking', model);\n // Cleanup label.rotation === 0, which was treated as 'use the default' on reload prior to 26.\n model = jsonDeleteDefault('chartOptions.axes[].label.rotation', 0, model);\n model = jsonDeleteDefault('chartOptions.axes[].label.rotation', 335, model);\n return model;\n}\nfunction migrateV26_1(model) {\n // https://github.com/ag-grid/ag-grid/commit/df2445d88e64cb4e831d6163104a0fa60ccde3b5\n const highlightOptUpdate = (_a) => {\n var { item, series } = _a, opts = __rest$1(_a, [\"item\", \"series\"]);\n return (Object.assign({ item: Object.assign(Object.assign({}, opts), item) }, (series ? { series } : {})));\n };\n model = jsonMutate('chartOptions.seriesDefaults.highlightStyle', model, highlightOptUpdate);\n model = jsonMutate('chartOptions.series[].highlightStyle', model, highlightOptUpdate);\n return model;\n}\nfunction migrateV26_2(model) {\n // https://github.com/ag-grid/ag-grid/commit/8b2e223cb1a687cb6c1d70b9f75f52fa29d00341\n model = jsonMove('chartOptions.seriesDefaults.fill.opacity', 'chartOptions.seriesDefaults.fillOpacity', model);\n model = jsonMove('chartOptions.seriesDefaults.stroke.opacity', 'chartOptions.seriesDefaults.strokeOpacity', model);\n model = jsonMove('chartOptions.seriesDefaults.stroke.width', 'chartOptions.seriesDefaults.strokeWidth', model);\n model = jsonDelete('chartOptions.seriesDefaults.fill', model);\n model = jsonDelete('chartOptions.seriesDefaults.stroke', model);\n model = jsonDelete('chartOptions.seriesDefaults.callout.colors', model);\n model = jsonDelete('chartOptions.xAxis', model);\n model = jsonDelete('chartOptions.yAxis', model);\n const _a = model, { chartType } = _a, _b = _a.chartOptions, { axes, series, seriesDefaults } = _b, otherChartOptions = __rest$1(_b, [\"axes\", \"series\", \"seriesDefaults\"]), otherModelProps = __rest$1(_a, [\"chartType\", \"chartOptions\"]);\n // At 26.2.0 combination charts weren't supported, so we can safely assume a single series type.\n // We can't rely on the `series.type` field as it was incorrect (in v25.0.0 line chart has an\n // `area` series).\n const seriesTypes = [getSeriesType(chartType)];\n const chartTypeMixin = {};\n if (!seriesTypes.includes('pie')) {\n const minimalAxis = { top: {}, bottom: {}, left: {}, right: {} };\n const updatedAxes = axes\n .map((_a) => {\n var { type } = _a, axisProps = __rest$1(_a, [\"type\"]);\n return ({\n [type]: Object.assign(Object.assign({}, minimalAxis), axisProps),\n });\n })\n .reduce(merge, {});\n ALL_AXIS_TYPES.filter((v) => updatedAxes[v] == null).forEach((v) => {\n updatedAxes[v] = Object.assign({}, minimalAxis);\n });\n chartTypeMixin.axes = updatedAxes;\n }\n const updatedChartOptions = seriesTypes\n .map((t) => ({\n [t]: Object.assign(Object.assign(Object.assign({}, chartTypeMixin), { series: seriesDefaults }), otherChartOptions),\n }))\n .reduce(merge, {});\n model = Object.assign(Object.assign({}, otherModelProps), { chartType, chartOptions: updatedChartOptions });\n return model;\n}\nfunction migrateV28(model) {\n model = jsonDelete('chartOptions.*.title.padding', model);\n model = jsonDelete('chartOptions.*.subtitle.padding', model);\n model = jsonDelete('chartOptions.*.axes.*.title.padding', model);\n model = jsonBackfill('chartOptions.*.axes.*.title.enabled', false, model);\n return model;\n}\nfunction migrateV28_2(model) {\n model = jsonRename('chartOptions.pie.series.callout', 'calloutLine', model);\n model = jsonRename('chartOptions.pie.series.label', 'calloutLabel', model);\n model = jsonRename('chartOptions.pie.series.labelKey', 'sectorLabelKey', model);\n model = jsonRename('chartOptions.pie.series.labelName', 'sectorLabelName', model);\n // series.yKeys => yKey ?\n // series.yNames => yName ?\n return model;\n}\nfunction migrateV29(model) {\n model = jsonMoveIfMissing('chartOptions.scatter.series.fill', 'chartOptions.scatter.series.marker.fill', model);\n model = jsonMoveIfMissing('chartOptions.scatter.series.fillOpacity', 'chartOptions.scatter.series.marker.fillOpacity', model);\n model = jsonMoveIfMissing('chartOptions.scatter.series.stroke', 'chartOptions.scatter.series.marker.stroke', model);\n model = jsonMoveIfMissing('chartOptions.scatter.series.strokeOpacity', 'chartOptions.scatter.series.marker.strokeOpacity', model);\n model = jsonMoveIfMissing('chartOptions.scatter.series.strokeWidth', 'chartOptions.scatter.series.marker.strokeWidth', model);\n model = jsonMove('chartOptions.scatter.series.paired', 'chartOptions.scatter.paired', model);\n return model;\n}\nfunction migrateV29_1(model) {\n model = jsonDelete('chartOptions.axes[].tick.count', model);\n return model;\n}\nfunction migrateV29_2(model) {\n // https://github.com/ag-grid/ag-grid/commit/ce11956492e42e845932edb4e05d7b0b21db5c61\n const tooltipOptUpdate = (_a) => {\n var _b, _c, _d, _e;\n var { tracking } = _a, opts = __rest$1(_a, [\"tracking\"]);\n const output = Object.assign({}, opts);\n if (tracking === false) {\n (_b = output.position) !== null && _b !== void 0 ? _b : (output.position = { type: 'pointer' });\n (_c = output.range) !== null && _c !== void 0 ? _c : (output.range = 'nearest');\n }\n else if (tracking === true) {\n (_d = output.position) !== null && _d !== void 0 ? _d : (output.position = { type: 'node' });\n (_e = output.range) !== null && _e !== void 0 ? _e : (output.range = 'nearest');\n }\n return output;\n };\n model = jsonMutate('chartOptions.*.tooltip', model, tooltipOptUpdate);\n return model;\n}\nfunction migrateV30(model) {\n // Repeated from migrateV28_2() as they were applied retrospectively for the v30 release.\n model = jsonRename('chartOptions.pie.series.labelKey', 'sectorLabelKey', model);\n model = jsonRename('chartOptions.pie.series.labelName', 'sectorLabelName', model);\n // Late-applied migrations for deprecations in the 29.x.y range.\n model = migrateV29_1(model);\n model = migrateV29_2(model);\n // Actual v30 changes.\n model = jsonDelete('chartOptions.*.series.flipXY', model);\n model = jsonAdd('chartOptions.common.legend.enabled', true, model);\n model = jsonBackfill('chartOptions.common.legend.position', 'right', model);\n return model;\n}\nfunction cleanup(model) {\n // Remove fixed width/height - this has never been supported via UI configuration.\n model = jsonDelete('chartOptions.*.width', model);\n model = jsonDelete('chartOptions.*.height', model);\n model = jsonBackfill('chartOptions.*.axes.category.label.autoRotate', true, model);\n return model;\n}\nfunction heuristicVersionDetection(model) {\n var _a, _b;\n const modelAny = model;\n if (model.version != null) {\n return model.version;\n }\n const hasKey = (obj, ...keys) => {\n return Object.keys(obj || {}).some((k) => keys.includes(k));\n };\n const chartOptions = modelAny.chartOptions;\n const seriesOptions = hasKey(chartOptions, 'seriesDefaults')\n ? chartOptions === null || chartOptions === void 0 ? void 0 : chartOptions.seriesDefaults\n : chartOptions === null || chartOptions === void 0 ? void 0 : chartOptions[Object.keys(chartOptions)[0]];\n const hints = {\n '27.0.0': hasKey(modelAny, 'seriesChartTypes'),\n '26.2.0': !hasKey(chartOptions, 'seriesDefaults'),\n '26.1.0': hasKey(seriesOptions === null || seriesOptions === void 0 ? void 0 : seriesOptions.highlightStyle, 'item'),\n '26.0.0': hasKey(seriesOptions === null || seriesOptions === void 0 ? void 0 : seriesOptions.highlightStyle, 'series'),\n // '26.0.0': modelAny.chart === undefined,\n '25.1.0': hasKey(seriesOptions === null || seriesOptions === void 0 ? void 0 : seriesOptions.label, 'minAngle'),\n '25.0.0': hasKey(modelAny, 'modelType', 'aggFunc', 'unlinkChart', 'suppressChartRanges') ||\n hasKey(seriesOptions, 'lineDash', 'lineDashOffset'),\n '24.0.0': hasKey(modelAny, 'chartThemeName', 'chart') || hasKey(chartOptions, 'series'),\n '23.2.0': hasKey(chartOptions, 'navigator'),\n '23.0.0': hasKey((_b = (_a = chartOptions === null || chartOptions === void 0 ? void 0 : chartOptions.legend) === null || _a === void 0 ? void 0 : _a.item) === null || _b === void 0 ? void 0 : _b.marker, 'shape'),\n '22.1.0': hasKey(modelAny, 'chartPalette', 'chartType'),\n };\n // Default to 27.1.0, the last version before we added `version`.\n const defaultVersion = '27.1.0';\n const matchingHints = Object.entries(hints).filter(([_, match]) => match);\n const [heuristicVersion = defaultVersion] = matchingHints[0];\n return heuristicVersion;\n}\nfunction migrateIfBefore(maxVersion, model, migration) {\n if (versionNumber(maxVersion) > versionNumber(model.version)) {\n const result = migration(model);\n result.version = maxVersion;\n return result;\n }\n return model;\n}\nfunction versionParts(version) {\n const split = typeof version === 'string' ? version.split('.').map((v) => Number(v)) : [];\n if (split.length !== 3 || split.some((v) => isNaN(v))) {\n throw new Error('AG Grid - Illegal version string: ' + version);\n }\n return {\n major: split[0],\n minor: split[1],\n patch: split[2],\n };\n}\nfunction versionNumber(version) {\n const { major, minor, patch } = versionParts(version);\n // Return a number of the form MMmmPP.\n return major * 10000 + minor * 100 + patch;\n}\nfunction jsonDeleteDefault(path, defaultValue, json) {\n return jsonMutateProperty(path, true, json, (parent, prop) => {\n if (parent[prop] === defaultValue) {\n delete parent[prop];\n }\n });\n}\nfunction jsonBackfill(path, defaultValue, json) {\n return jsonMutateProperty(path, false, json, (parent, prop) => {\n if (parent[prop] == null) {\n parent[prop] = defaultValue;\n }\n });\n}\nfunction jsonAdd(path, value, json) {\n var _a;\n if (typeof path === 'string') {\n path = path.split('.');\n }\n const nextPath = path[0];\n if (path.length > 1) {\n json[nextPath] = jsonAdd(path.slice(1), value, (_a = json[nextPath]) !== null && _a !== void 0 ? _a : {});\n }\n const hasProperty = Object.keys(json).includes(nextPath);\n if (!hasProperty) {\n json[nextPath] = value;\n }\n return json;\n}\nfunction jsonMove(from, to, json) {\n let valueToMove = undefined;\n let valueFound = false;\n json = jsonMutateProperty(from, true, json, (parent, prop) => {\n valueFound = true;\n valueToMove = parent[prop];\n delete parent[prop];\n });\n if (!valueFound) {\n return json;\n }\n return jsonMutateProperty(to, false, json, (parent, prop) => {\n parent[prop] = valueToMove;\n });\n}\nfunction jsonMoveIfMissing(from, to, json) {\n let valueToMove = undefined;\n let valueFound = false;\n json = jsonMutateProperty(from, true, json, (parent, prop) => {\n valueFound = true;\n valueToMove = parent[prop];\n delete parent[prop];\n });\n if (!valueFound) {\n return json;\n }\n return jsonMutateProperty(to, false, json, (parent, prop) => {\n if (parent[prop] === undefined) {\n parent[prop] = valueToMove;\n }\n });\n}\nfunction jsonRename(path, renameTo, json) {\n return jsonMutateProperty(path, true, json, (parent, prop) => {\n parent[renameTo] = parent[prop];\n delete parent[prop];\n });\n}\nfunction jsonDelete(path, json) {\n return jsonMutateProperty(path, true, json, (parent, prop) => delete parent[prop]);\n}\nfunction jsonMutateProperty(path, skipMissing, json, mutator) {\n const pathElements = path instanceof Array ? path : path.split('.');\n const parentPathElements = pathElements.slice(0, pathElements.length - 1);\n const targetName = pathElements[pathElements.length - 1];\n return jsonMutate(parentPathElements, json, (parent) => {\n const hasProperty = Object.keys(parent).includes(targetName);\n if (skipMissing && !hasProperty) {\n return parent;\n }\n const result = Object.assign({}, parent);\n mutator(result, targetName);\n return result;\n });\n}\nfunction jsonMutate(path, json, mutator) {\n const pathElements = path instanceof Array ? path : path.split('.');\n // Clone to avoid mutating original input.\n json = Object.assign({}, json);\n if (pathElements.length === 0) {\n return mutator(json);\n }\n else if (pathElements[0].startsWith('{')) {\n const pathOptions = pathElements[0].substring(1, pathElements[0].lastIndexOf('}')).split(',');\n for (const pathOption of pathOptions) {\n if (json[pathOption] != null) {\n json[pathOption] = jsonMutate(pathElements.slice(1), json[pathOption], mutator);\n }\n }\n }\n else if (pathElements[0].endsWith('[]')) {\n const arrayName = pathElements[0].substring(0, path[0].indexOf('['));\n if (json[arrayName] instanceof Array) {\n json[arrayName] = json[arrayName].map((v) => jsonMutate(pathElements.slice(1), v, mutator));\n }\n }\n else if (pathElements[0] === '*') {\n for (const jsonProp in json) {\n json[jsonProp] = jsonMutate(pathElements.slice(1), json[jsonProp], mutator);\n }\n }\n else if (json[pathElements[0]] != null) {\n json[pathElements[0]] = jsonMutate(pathElements.slice(1), json[pathElements[0]], mutator);\n }\n return json;\n}\nconst merge = (r, n) => (Object.assign(Object.assign({}, r), n));\n// Precise legacy palette fills/strokes can be found here for future reference:\n// https://github.com/ag-grid/ag-grid/blob/b22.1.0/grid-enterprise-modules/charts/src/charts/chart/palettes.ts\nconst LEGACY_PALETTES = {\n borneo: 'ag-default',\n material: 'ag-material',\n pastel: 'ag-pastel',\n bright: 'ag-vivid',\n flat: 'ag-solar',\n};\n\nvar __decorate$M = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet ChartService = class ChartService extends BeanStub {\n constructor() {\n super(...arguments);\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 }\n updateChart(params) {\n if (this.activeChartComps.size === 0) {\n console.warn(`AG Grid - No active charts to update.`);\n return;\n }\n const chartComp = [...this.activeChartComps].find(chartComp => chartComp.getChartId() === params.chartId);\n if (!chartComp) {\n console.warn(`AG Grid - Unable to update chart. No active chart found with ID: ${params.chartId}.`);\n return;\n }\n chartComp.update(params);\n }\n getChartModels() {\n const models = [];\n const versionedModel = (c) => {\n return Object.assign(Object.assign({}, c), { version: VERSION$a });\n };\n this.activeChartComps.forEach(c => models.push(versionedModel(c.getChartModel())));\n return models;\n }\n getChartRef(chartId) {\n let chartRef;\n this.activeCharts.forEach(cr => {\n if (cr.chartId === chartId) {\n chartRef = cr;\n }\n });\n return chartRef;\n }\n getChartComp(chartId) {\n let chartComp;\n this.activeChartComps.forEach(comp => {\n if (comp.getChartId() === chartId) {\n chartComp = comp;\n }\n });\n return chartComp;\n }\n getChartImageDataURL(params) {\n let url;\n this.activeChartComps.forEach(c => {\n if (c.getChartId() === params.chartId) {\n url = c.getChartImageDataURL(params.fileFormat);\n }\n });\n return url;\n }\n downloadChart(params) {\n const chartComp = Array.from(this.activeChartComps).find(c => c.getChartId() === params.chartId);\n chartComp === null || chartComp === void 0 ? void 0 : chartComp.downloadChart(params.dimensions, params.fileName, params.fileFormat);\n }\n openChartToolPanel(params) {\n const chartComp = Array.from(this.activeChartComps).find(c => c.getChartId() === params.chartId);\n chartComp === null || chartComp === void 0 ? void 0 : chartComp.openChartToolPanel(params.panel);\n }\n closeChartToolPanel(chartId) {\n const chartComp = Array.from(this.activeChartComps).find(c => c.getChartId() === chartId);\n chartComp === null || chartComp === void 0 ? void 0 : chartComp.closeChartToolPanel();\n }\n createChartFromCurrentRange(chartType = 'groupedColumn') {\n const selectedRange = this.getSelectedRange();\n return this.createChart(selectedRange, chartType);\n }\n restoreChart(model, chartContainer) {\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 !== VERSION$a) {\n model = upgradeChartModel(model);\n }\n const 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 const getCellRange = (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 const columns = this.columnModel.getAllDisplayedColumns().map(col => col.getColId());\n const chartAllRangeParams = {\n rowStartIndex: null,\n rowStartPinned: undefined,\n rowEndIndex: null,\n rowEndPinned: undefined,\n columns\n };\n const cellRange = getCellRange(chartAllRangeParams);\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, undefined, params.unlinkChart, false, model.chartOptions);\n }\n const 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, model.chartPalette, params.seriesChartTypes);\n }\n createRangeChart(params) {\n var _a;\n const cellRange = (_a = this.rangeService) === null || _a === void 0 ? void 0 : _a.createCellRangeFromCellRangeParams(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, params.chartThemeOverrides, params.unlinkChart, undefined, undefined, undefined, params.seriesChartTypes);\n }\n createPivotChart(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 const chartAllRangeParams = {\n rowStartIndex: null,\n rowStartPinned: undefined,\n rowEndIndex: null,\n rowEndPinned: undefined,\n columns: this.columnModel.getAllDisplayedColumns().map(col => col.getColId())\n };\n const 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 createCrossFilterChart(params) {\n var _a;\n const cellRange = (_a = this.rangeService) === null || _a === void 0 ? void 0 : _a.createCellRangeFromCellRangeParams(params.cellRange);\n if (!cellRange) {\n console.warn(\"AG Grid - unable to create chart as no range is selected\");\n return;\n }\n const crossFiltering = true;\n const suppressChartRangesSupplied = typeof params.suppressChartRanges !== 'undefined' && params.suppressChartRanges !== null;\n const 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 createChart(cellRange, chartType, chartThemeName, pivotChart = false, suppressChartRanges = false, container, aggFunc, chartThemeOverrides, unlinkChart = false, crossFiltering = false, chartOptionsToRestore, chartPaletteToRestore, seriesChartTypes) {\n const createChartContainerFunc = this.gridOptionsService.getCallback('createChartContainer');\n const params = {\n chartId: this.generateId(),\n pivotChart,\n cellRange,\n chartType,\n chartThemeName,\n insideDialog: !(container || createChartContainerFunc),\n suppressChartRanges,\n aggFunc,\n chartThemeOverrides,\n unlinkChart,\n crossFiltering,\n crossFilteringContext: this.crossFilteringContext,\n chartOptionsToRestore,\n chartPaletteToRestore,\n seriesChartTypes,\n crossFilteringResetCallback: () => this.activeChartComps.forEach(c => c.crossFilteringReset())\n };\n const chartComp = new GridChartComp(params);\n this.context.createBean(chartComp);\n const 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 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 const 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 (e.g. 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, () => {\n this.activeChartComps.delete(chartComp);\n this.activeCharts.delete(chartRef);\n });\n }\n return chartRef;\n }\n createChartRef(chartComp) {\n const chartRef = {\n destroyChart: () => {\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 getSelectedRange() {\n const ranges = this.rangeService.getCellRanges();\n return ranges.length > 0 ? ranges[0] : {};\n }\n generateId() {\n return `id-${Math.random().toString(36).substring(2, 18)}`;\n }\n destroyAllActiveCharts() {\n this.activeCharts.forEach(chart => chart.destroyChart());\n }\n};\nChartService.CHARTS_VERSION = VERSION$b;\n__decorate$M([\n Optional('rangeService')\n], ChartService.prototype, \"rangeService\", void 0);\n__decorate$M([\n Autowired('columnModel')\n], ChartService.prototype, \"columnModel\", void 0);\n__decorate$M([\n PreDestroy\n], ChartService.prototype, \"destroyAllActiveCharts\", null);\nChartService = __decorate$M([\n Bean('chartService')\n], ChartService);\n\nvar __decorate$L = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 ChartTranslationService_1;\nlet ChartTranslationService = ChartTranslationService_1 = class ChartTranslationService extends BeanStub {\n translate(toTranslate, defaultText) {\n const translate = this.localeService.getLocaleTextFunc();\n const defaultTranslation = ChartTranslationService_1.DEFAULT_TRANSLATIONS[toTranslate] || defaultText;\n return translate(toTranslate, defaultTranslation);\n }\n};\nChartTranslationService.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 autoRotate: 'Auto Rotate',\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 calloutLabels: 'Callout Labels',\n sectorLabels: 'Sector Labels',\n positionRatio: 'Position Ratio',\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 histogramFrequency: \"Frequency\",\n seriesChartType: 'Series Chart Type',\n seriesType: 'Series Type',\n secondaryAxis: 'Secondary Axis',\n};\nChartTranslationService = ChartTranslationService_1 = __decorate$L([\n Bean(\"chartTranslationService\")\n], ChartTranslationService);\n\nvar __decorate$K = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 ChartCrossFilterService_1;\nlet ChartCrossFilterService = ChartCrossFilterService_1 = class ChartCrossFilterService extends BeanStub {\n filter(event, reset = false) {\n const 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 let colId = ChartCrossFilterService_1.extractFilterColId(event);\n if (this.isValidColumnFilter(colId)) {\n // update filters based on current chart selections\n this.updateFilters(filterModel, event, colId);\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 resetFilters(filterModel) {\n const 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 updateFilters(filterModel, event, colId) {\n let dataKey = ChartCrossFilterService_1.extractFilterColId(event);\n let rawValue = event.datum[dataKey];\n if (rawValue === undefined) {\n return;\n }\n let selectedValue = rawValue.toString();\n if (event.event.metaKey || event.event.ctrlKey) {\n const existingGridValues = this.getCurrentGridValuesForCategory(colId);\n const valueAlreadyExists = _.includes(existingGridValues, selectedValue);\n let updatedValues;\n if (valueAlreadyExists) {\n updatedValues = existingGridValues.filter((v) => v !== selectedValue);\n }\n else {\n updatedValues = existingGridValues;\n updatedValues.push(selectedValue);\n }\n filterModel[colId] = this.getUpdatedFilterModel(colId, updatedValues);\n }\n else {\n const updatedValues = [selectedValue];\n filterModel = { [colId]: this.getUpdatedFilterModel(colId, updatedValues) };\n }\n this.gridApi.setFilterModel(filterModel);\n }\n getUpdatedFilterModel(colId, updatedValues) {\n let 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 getCurrentGridValuesForCategory(colId) {\n let filteredValues = [];\n const column = this.getColumnById(colId);\n this.gridApi.forEachNodeAfterFilter((rowNode) => {\n if (column && !rowNode.group) {\n const value = this.valueService.getValue(column, rowNode) + '';\n if (!filteredValues.includes(value)) {\n filteredValues.push(value);\n }\n }\n });\n return filteredValues;\n }\n static extractFilterColId(event) {\n return event.xKey || event.calloutLabelKey;\n }\n isValidColumnFilter(colId) {\n if (colId.indexOf('-filtered-out')) {\n colId = colId.replace('-filtered-out', '');\n }\n let filterType = this.getColumnFilterType(colId);\n if (typeof filterType === 'boolean') {\n return filterType;\n }\n return _.includes(['agSetColumnFilter', 'agMultiColumnFilter'], filterType);\n }\n getColumnFilterType(colId) {\n let gridColumn = this.getColumnById(colId);\n if (gridColumn) {\n const colDef = gridColumn.getColDef();\n return colDef.filter;\n }\n }\n getColumnById(colId) {\n return this.columnModel.getGridColumn(colId);\n }\n};\n__decorate$K([\n Autowired('gridApi')\n], ChartCrossFilterService.prototype, \"gridApi\", void 0);\n__decorate$K([\n Autowired('columnModel')\n], ChartCrossFilterService.prototype, \"columnModel\", void 0);\n__decorate$K([\n Autowired('valueService')\n], ChartCrossFilterService.prototype, \"valueService\", void 0);\nChartCrossFilterService = ChartCrossFilterService_1 = __decorate$K([\n Bean(\"chartCrossFilterService\")\n], ChartCrossFilterService);\n\nvar __decorate$J = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet RangeService = class RangeService extends BeanStub {\n constructor() {\n super(...arguments);\n this.cellRanges = [];\n this.bodyScrollListener = this.onBodyScroll.bind(this);\n this.dragging = false;\n this.intersectionRange = false; // When dragging ends, the current range will be used to intersect all other ranges\n }\n init() {\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, () => this.onColumnsChanged());\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VISIBLE, this.onColumnsChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VALUE_CHANGED, this.onColumnsChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, () => this.removeAllCellRanges());\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, () => this.removeAllCellRanges());\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_CHANGED, () => 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.ctrlsService.whenReady(() => {\n const gridBodyCtrl = this.ctrlsService.getGridBodyCtrl();\n this.autoScrollService = new AutoScrollService({\n scrollContainer: gridBodyCtrl.getBodyViewportElement(),\n scrollAxis: 'xy',\n getVerticalPosition: () => gridBodyCtrl.getScrollFeature().getVScrollPosition().top,\n setVerticalPosition: (position) => gridBodyCtrl.getScrollFeature().setVerticalScrollPosition(position),\n getHorizontalPosition: () => gridBodyCtrl.getScrollFeature().getHScrollPosition().left,\n setHorizontalPosition: (position) => gridBodyCtrl.getScrollFeature().setHorizontalScrollPosition(position),\n shouldSkipVerticalScroll: () => !this.gridOptionsService.isDomLayout('normal'),\n shouldSkipHorizontalScroll: () => !gridBodyCtrl.getScrollFeature().isHorizontalScrollShowing()\n });\n });\n }\n // Called for both columns loaded & column visibility events\n onColumnsChanged() {\n // first move start column in last cell range (i.e. series chart range)\n this.refreshLastRangeStart();\n const allColumns = this.columnModel.getAllDisplayedColumns();\n // check that the columns in each range still exist and are visible\n this.cellRanges.forEach(cellRange => {\n const beforeCols = cellRange.columns;\n // remove hidden or removed cols from cell range\n cellRange.columns = cellRange.columns.filter(col => col.isVisible() && allColumns.indexOf(col) !== -1);\n const 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 // Remove empty cell ranges\n const countBefore = this.cellRanges.length;\n this.cellRanges = this.cellRanges.filter((range) => range.columns.length > 0);\n if (countBefore > this.cellRanges.length) {\n this.dispatchChangedEvent(false, true);\n }\n }\n refreshLastRangeStart() {\n const lastRange = _.last(this.cellRanges);\n if (!lastRange) {\n return;\n }\n this.refreshRangeStart(lastRange);\n }\n isContiguousRange(cellRange) {\n const rangeColumns = cellRange.columns;\n if (!rangeColumns.length) {\n return false;\n }\n const allColumns = this.columnModel.getAllDisplayedColumns();\n const allPositions = rangeColumns.map(c => allColumns.indexOf(c)).sort((a, b) => a - b);\n return _.last(allPositions) - allPositions[0] + 1 === rangeColumns.length;\n }\n getRangeStartRow(cellRange) {\n if (cellRange.startRow && cellRange.endRow) {\n return this.rowPositionUtils.before(cellRange.startRow, cellRange.endRow) ?\n cellRange.startRow : cellRange.endRow;\n }\n const rowPinned = this.pinnedRowModel.getPinnedTopRowCount() > 0 ? 'top' : null;\n return { rowIndex: 0, rowPinned };\n }\n getRangeEndRow(cellRange) {\n if (cellRange.startRow && cellRange.endRow) {\n return this.rowPositionUtils.before(cellRange.startRow, cellRange.endRow) ?\n cellRange.endRow : cellRange.startRow;\n }\n const pinnedBottomRowCount = this.pinnedRowModel.getPinnedBottomRowCount();\n const pinnedBottom = pinnedBottomRowCount > 0;\n if (pinnedBottom) {\n return {\n rowIndex: pinnedBottomRowCount - 1,\n rowPinned: 'bottom'\n };\n }\n return {\n rowIndex: this.rowModel.getRowCount() - 1,\n rowPinned: null\n };\n }\n setRangeToCell(cell, appendRange = false) {\n if (!this.gridOptionsService.isEnableRangeSelection()) {\n return;\n }\n const columns = this.calculateColumnsBetween(cell.column, cell.column);\n if (!columns) {\n return;\n }\n const suppressMultiRangeSelections = this.gridOptionsService.is('suppressMultiRangeSelection');\n // if not appending, then clear previous range selections\n if (suppressMultiRangeSelections || !appendRange || _.missing(this.cellRanges)) {\n this.removeAllCellRanges(true);\n }\n const rowForCell = {\n rowIndex: cell.rowIndex,\n rowPinned: cell.rowPinned\n };\n const cellRange = {\n startRow: rowForCell,\n endRow: rowForCell,\n columns,\n startColumn: cell.column\n };\n this.cellRanges.push(cellRange);\n this.setNewestRangeStartCell(cell);\n this.onDragStop();\n this.dispatchChangedEvent(true, true);\n }\n extendLatestRangeToCell(cellPosition) {\n if (this.isEmpty() || !this.newestRangeStartCell) {\n return;\n }\n const cellRange = _.last(this.cellRanges);\n this.updateRangeEnd(cellRange, cellPosition);\n }\n updateRangeEnd(cellRange, cellPosition, silent = false) {\n const endColumn = cellPosition.column;\n const 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 refreshRangeStart(cellRange) {\n const { startColumn, columns } = cellRange;\n const moveColInCellRange = (colToMove, moveToFront) => {\n const otherCols = cellRange.columns.filter(col => col !== colToMove);\n if (colToMove) {\n cellRange.startColumn = colToMove;\n cellRange.columns = moveToFront ? [colToMove, ...otherCols] : [...otherCols, colToMove];\n }\n else {\n cellRange.columns = otherCols;\n }\n };\n const { left, right } = this.getRangeEdgeColumns(cellRange);\n const shouldMoveLeftCol = startColumn === columns[0] && startColumn !== left;\n if (shouldMoveLeftCol) {\n moveColInCellRange(left, true);\n return;\n }\n const shouldMoveRightCol = startColumn === _.last(columns) && startColumn === right;\n if (shouldMoveRightCol) {\n moveColInCellRange(right, false);\n return;\n }\n }\n getRangeEdgeColumns(cellRange) {\n const allColumns = this.columnModel.getAllDisplayedColumns();\n const allIndices = cellRange.columns\n .map(c => allColumns.indexOf(c))\n .filter(i => i > -1)\n .sort((a, b) => 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 extendLatestRangeInDirection(event) {\n if (this.isEmpty() || !this.newestRangeStartCell) {\n return;\n }\n const key = event.key;\n const ctrlKey = event.ctrlKey || event.metaKey;\n const lastRange = _.last(this.cellRanges);\n const startCell = this.newestRangeStartCell;\n const firstCol = lastRange.columns[0];\n const lastCol = _.last(lastRange.columns);\n // find the cell that is at the furthest away corner from the starting cell\n const endCellIndex = lastRange.endRow.rowIndex;\n const endCellFloating = lastRange.endRow.rowPinned;\n const endCellColumn = startCell.column === firstCol ? lastCol : firstCol;\n const endCell = { column: endCellColumn, rowIndex: endCellIndex, rowPinned: endCellFloating };\n const newEndCell = this.cellNavigationService.getNextCellToFocus(key, endCell, ctrlKey);\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 setCellRange(params) {\n if (!this.gridOptionsService.isEnableRangeSelection()) {\n return;\n }\n this.removeAllCellRanges(true);\n this.addCellRange(params);\n }\n setCellRanges(cellRanges) {\n if (_.shallowCompare(this.cellRanges, cellRanges)) {\n return;\n }\n this.removeAllCellRanges(true);\n cellRanges.forEach(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 setNewestRangeStartCell(position) {\n this.newestRangeStartCell = position;\n }\n clearCellRangeCellValues(params) {\n let { cellRanges } = params;\n const { cellEventSource = 'rangeService', dispatchWrapperEvents, wrapperEventSource = 'deleteKey' } = params;\n if (dispatchWrapperEvents) {\n const startEvent = {\n type: Events.EVENT_RANGE_DELETE_START,\n source: wrapperEventSource\n };\n this.eventService.dispatchEvent(startEvent);\n }\n if (!cellRanges) {\n cellRanges = this.cellRanges;\n }\n cellRanges.forEach(cellRange => {\n this.forEachRowInRange(cellRange, rowPosition => {\n const rowNode = this.rowPositionUtils.getRowNode(rowPosition);\n if (!rowNode) {\n return;\n }\n for (let i = 0; i < cellRange.columns.length; i++) {\n const column = this.columnModel.getGridColumn(cellRange.columns[i]);\n if (!column || !column.isCellEditable(rowNode)) {\n return;\n }\n rowNode.setDataValue(column, null, cellEventSource);\n }\n });\n });\n if (dispatchWrapperEvents) {\n const endEvent = {\n type: Events.EVENT_RANGE_DELETE_END,\n source: wrapperEventSource\n };\n this.eventService.dispatchEvent(endEvent);\n }\n }\n createCellRangeFromCellRangeParams(params) {\n let columns;\n let startsOnTheRight = false;\n if (params.columns) {\n columns = params.columns.map(c => this.columnModel.getColumnWithValidation(c)).filter(c => c);\n }\n else {\n const columnStart = this.columnModel.getColumnWithValidation(params.columnStart);\n const columnEnd = this.columnModel.getColumnWithValidation(params.columnEnd);\n if (!columnStart || !columnEnd) {\n return;\n }\n columns = this.calculateColumnsBetween(columnStart, columnEnd);\n if (columns && columns.length) {\n startsOnTheRight = columns[0] !== columnStart;\n }\n }\n if (!columns) {\n return;\n }\n const startRow = params.rowStartIndex != null ? {\n rowIndex: params.rowStartIndex,\n rowPinned: params.rowStartPinned || null\n } : undefined;\n const endRow = params.rowEndIndex != null ? {\n rowIndex: params.rowEndIndex,\n rowPinned: params.rowEndPinned || null\n } : undefined;\n return {\n startRow,\n endRow,\n columns,\n startColumn: startsOnTheRight ? _.last(columns) : columns[0]\n };\n }\n addCellRange(params) {\n if (!this.gridOptionsService.isEnableRangeSelection()) {\n return;\n }\n const 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.startColumn\n });\n }\n this.cellRanges.push(newRange);\n this.dispatchChangedEvent(false, true, newRange.id);\n }\n }\n getCellRanges() {\n return this.cellRanges;\n }\n isEmpty() {\n return this.cellRanges.length === 0;\n }\n isMoreThanOneCell() {\n const len = this.cellRanges.length;\n if (len === 0) {\n return false;\n }\n if (len > 1) {\n return true; // Assumes a cell range must contain at least one cell\n }\n // only one range, return true if range has more than one\n const range = this.cellRanges[0];\n const startRow = this.getRangeStartRow(range);\n const endRow = this.getRangeEndRow(range);\n return startRow.rowPinned !== endRow.rowPinned ||\n startRow.rowIndex !== endRow.rowIndex ||\n range.columns.length !== 1;\n }\n areAllRangesAbleToMerge() {\n const rowToColumnMap = new Map();\n const len = this.cellRanges.length;\n if (len <= 1)\n return true;\n this.cellRanges.forEach(range => {\n this.forEachRowInRange(range, row => {\n const rowName = `${row.rowPinned || 'normal'}_${row.rowIndex}`;\n const columns = rowToColumnMap.get(rowName);\n const currentRangeColIds = range.columns.map(col => col.getId());\n if (columns) {\n const filteredColumns = currentRangeColIds.filter(col => columns.indexOf(col) === -1);\n columns.push(...filteredColumns);\n }\n else {\n rowToColumnMap.set(rowName, currentRangeColIds);\n }\n });\n });\n let columnsString;\n for (const val of rowToColumnMap.values()) {\n const currentValString = val.sort().join();\n if (columnsString === undefined) {\n columnsString = currentValString;\n continue;\n }\n if (columnsString !== currentValString) {\n return false;\n }\n }\n return true;\n }\n forEachRowInRange(cellRange, callback) {\n const topRow = this.getRangeStartRow(cellRange);\n const bottomRow = this.getRangeEndRow(cellRange);\n let currentRow = topRow;\n while (currentRow) {\n callback(currentRow);\n if (this.rowPositionUtils.sameRow(currentRow, bottomRow)) {\n break;\n }\n currentRow = this.cellNavigationService.getRowBelow(currentRow);\n }\n }\n removeAllCellRanges(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 onBodyScroll() {\n if (this.dragging && this.lastMouseEvent) {\n this.onDragging(this.lastMouseEvent);\n }\n }\n isCellInAnyRange(cell) {\n return this.getCellRangeCount(cell) > 0;\n }\n isCellInSpecificRange(cell, range) {\n const columnInRange = range.columns !== null && _.includes(range.columns, cell.column);\n const rowInRange = this.isRowInRange(cell.rowIndex, cell.rowPinned, range);\n return columnInRange && rowInRange;\n }\n isLastCellOfRange(cellRange, cell) {\n const { startRow, endRow } = cellRange;\n const lastRow = this.rowPositionUtils.before(startRow, endRow) ? endRow : startRow;\n const isLastRow = cell.rowIndex === lastRow.rowIndex && cell.rowPinned === lastRow.rowPinned;\n const rangeFirstIndexColumn = cellRange.columns[0];\n const rangeLastIndexColumn = _.last(cellRange.columns);\n const lastRangeColumn = cellRange.startColumn === rangeFirstIndexColumn ? rangeLastIndexColumn : rangeFirstIndexColumn;\n const isLastColumn = cell.column === lastRangeColumn;\n return isLastColumn && isLastRow;\n }\n isBottomRightCell(cellRange, cell) {\n const allColumns = this.columnModel.getAllDisplayedColumns();\n const allPositions = cellRange.columns.map(c => allColumns.indexOf(c)).sort((a, b) => a - b);\n const { startRow, endRow } = cellRange;\n const lastRow = this.rowPositionUtils.before(startRow, endRow) ? endRow : startRow;\n const isRightColumn = allColumns.indexOf(cell.column) === _.last(allPositions);\n const 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 getCellRangeCount(cell) {\n if (this.isEmpty()) {\n return 0;\n }\n return this.cellRanges.filter(cellRange => this.isCellInSpecificRange(cell, cellRange)).length;\n }\n isRowInRange(rowIndex, floating, cellRange) {\n const firstRow = this.getRangeStartRow(cellRange);\n const lastRow = this.getRangeEndRow(cellRange);\n const thisRow = { rowIndex, rowPinned: floating || null };\n // compare rowPinned with == instead of === because it can be `null` or `undefined`\n const equalsFirstRow = thisRow.rowIndex === firstRow.rowIndex && thisRow.rowPinned == firstRow.rowPinned;\n const equalsLastRow = thisRow.rowIndex === lastRow.rowIndex && thisRow.rowPinned == lastRow.rowPinned;\n if (equalsFirstRow || equalsLastRow) {\n return true;\n }\n const afterFirstRow = !this.rowPositionUtils.before(thisRow, firstRow);\n const beforeLastRow = this.rowPositionUtils.before(thisRow, lastRow);\n return afterFirstRow && beforeLastRow;\n }\n getDraggingRange() {\n return this.draggingRange;\n }\n onDragStart(mouseEvent) {\n if (!this.gridOptionsService.isEnableRangeSelection()) {\n return;\n }\n const { ctrlKey, metaKey, shiftKey } = mouseEvent;\n // ctrlKey for windows, metaKey for Apple\n const isMultiKey = ctrlKey || metaKey;\n const allowMulti = !this.gridOptionsService.is('suppressMultiRangeSelection');\n const isMultiSelect = allowMulti ? isMultiKey : false;\n const extendRange = shiftKey && _.existsAndNotEmpty(this.cellRanges);\n if (!isMultiSelect && (!extendRange || _.exists(_.last(this.cellRanges).type))) {\n this.removeAllCellRanges(true);\n }\n // The browser changes the Event target of cached events when working with the ShadowDOM\n // so we need to retrieve the initial DragStartTarget.\n const startTarget = this.dragService.getStartTarget();\n if (startTarget) {\n this.updateValuesOnMove(startTarget);\n }\n if (!this.lastCellHovered) {\n return;\n }\n this.dragging = true;\n this.lastMouseEvent = mouseEvent;\n this.intersectionRange = isMultiSelect && this.getCellRangeCount(this.lastCellHovered) > 1;\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 const 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 intersectLastRange(fromMouseClick) {\n // when ranges are created due to a mouse click without drag (happens in cellMouseListener)\n // this method will be called with `fromMouseClick=true`.\n if (fromMouseClick && this.dragging) {\n return;\n }\n if (this.gridOptionsService.is('suppressMultiRangeSelection')) {\n return;\n }\n if (this.isEmpty()) {\n return;\n }\n const lastRange = _.last(this.cellRanges);\n const intersectionStartRow = this.getRangeStartRow(lastRange);\n const intersectionEndRow = this.getRangeEndRow(lastRange);\n const newRanges = [];\n this.cellRanges.slice(0, -1).forEach((range) => {\n const startRow = this.getRangeStartRow(range);\n const endRow = this.getRangeEndRow(range);\n const cols = range.columns;\n const intersectCols = cols.filter((col) => lastRange.columns.indexOf(col) === -1);\n if (intersectCols.length === cols.length) {\n // No overlapping columns, retain previous range\n newRanges.push(range);\n return;\n }\n if (this.rowPositionUtils.before(intersectionEndRow, startRow) || this.rowPositionUtils.before(endRow, intersectionStartRow)) {\n // No overlapping rows, retain previous range\n newRanges.push(range);\n return;\n }\n const rangeCountBefore = newRanges.length;\n // Top\n if (this.rowPositionUtils.before(startRow, intersectionStartRow)) {\n const top = {\n columns: [...cols],\n startColumn: lastRange.startColumn,\n startRow: Object.assign({}, startRow),\n endRow: this.cellNavigationService.getRowAbove(intersectionStartRow),\n };\n newRanges.push(top);\n }\n // Left & Right (not contiguous with columns)\n if (intersectCols.length > 0) {\n const middle = {\n columns: intersectCols,\n startColumn: _.includes(intersectCols, lastRange.startColumn) ? lastRange.startColumn : intersectCols[0],\n startRow: this.rowPositionUtils.rowMax([Object.assign({}, intersectionStartRow), Object.assign({}, startRow)]),\n endRow: this.rowPositionUtils.rowMin([Object.assign({}, intersectionEndRow), Object.assign({}, endRow)]),\n };\n newRanges.push(middle);\n }\n // Bottom\n if (this.rowPositionUtils.before(intersectionEndRow, endRow)) {\n newRanges.push({\n columns: [...cols],\n startColumn: lastRange.startColumn,\n startRow: this.cellNavigationService.getRowBelow(intersectionEndRow),\n endRow: Object.assign({}, endRow),\n });\n }\n if ((newRanges.length - rangeCountBefore) === 1) {\n // Only one range result from the intersection.\n // Copy the source range's id, since essentially we just reduced it's size\n newRanges[newRanges.length - 1].id = range.id;\n }\n });\n this.cellRanges = newRanges;\n // when this is called because of a clickEvent and the ranges were changed\n // we need to force a dragEnd event to update the UI.\n if (fromMouseClick) {\n this.dispatchChangedEvent(false, true);\n }\n }\n updateValuesOnMove(eventTarget) {\n const cellCtrl = _.getCtrlForEventTarget(this.gridOptionsService, eventTarget, CellCtrl.DOM_DATA_KEY_CELL_CTRL);\n const cell = cellCtrl === null || cellCtrl === void 0 ? void 0 : cellCtrl.getCellPosition();\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 onDragging(mouseEvent) {\n if (!this.dragging || !mouseEvent) {\n return;\n }\n this.updateValuesOnMove(mouseEvent.target);\n this.lastMouseEvent = mouseEvent;\n const cellPosition = this.lastCellHovered;\n const isMouseAndStartInPinned = (position) => cellPosition && cellPosition.rowPinned === position && this.newestRangeStartCell.rowPinned === position;\n const skipVerticalScroll = isMouseAndStartInPinned('top') || isMouseAndStartInPinned('bottom');\n this.autoScrollService.check(mouseEvent, skipVerticalScroll);\n if (!this.cellHasChanged) {\n return;\n }\n const 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 onDragStop() {\n if (!this.dragging) {\n return;\n }\n const { id } = this.draggingRange;\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 if (this.intersectionRange) {\n this.intersectionRange = false;\n this.intersectLastRange();\n }\n this.dispatchChangedEvent(false, true, id);\n }\n dispatchChangedEvent(started, finished, id) {\n const event = {\n type: Events.EVENT_RANGE_SELECTION_CHANGED,\n started,\n finished,\n id,\n };\n this.eventService.dispatchEvent(event);\n }\n calculateColumnsBetween(columnFrom, columnTo) {\n const allColumns = this.columnModel.getAllDisplayedColumns();\n const isSameColumn = columnFrom === columnTo;\n const fromIndex = allColumns.indexOf(columnFrom);\n if (fromIndex < 0) {\n console.warn(`AG Grid: column ${columnFrom.getId()} is not visible`);\n return;\n }\n const 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 const firstIndex = Math.min(fromIndex, toIndex);\n const lastIndex = firstIndex === fromIndex ? toIndex : fromIndex;\n const columns = [];\n for (let i = firstIndex; i <= lastIndex; i++) {\n columns.push(allColumns[i]);\n }\n return columns;\n }\n};\n__decorate$J([\n Autowired('rowModel')\n], RangeService.prototype, \"rowModel\", void 0);\n__decorate$J([\n Autowired('dragService')\n], RangeService.prototype, \"dragService\", void 0);\n__decorate$J([\n Autowired('columnModel')\n], RangeService.prototype, \"columnModel\", void 0);\n__decorate$J([\n Autowired('cellNavigationService')\n], RangeService.prototype, \"cellNavigationService\", void 0);\n__decorate$J([\n Autowired(\"pinnedRowModel\")\n], RangeService.prototype, \"pinnedRowModel\", void 0);\n__decorate$J([\n Autowired('rowPositionUtils')\n], RangeService.prototype, \"rowPositionUtils\", void 0);\n__decorate$J([\n Autowired('cellPositionUtils')\n], RangeService.prototype, \"cellPositionUtils\", void 0);\n__decorate$J([\n Autowired('ctrlsService')\n], RangeService.prototype, \"ctrlsService\", void 0);\n__decorate$J([\n PostConstruct\n], RangeService.prototype, \"init\", null);\nRangeService = __decorate$J([\n Bean('rangeService')\n], RangeService);\n\nvar __decorate$I = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass AbstractSelectionHandle extends Component {\n constructor() {\n super(...arguments);\n this.changedCalculatedValues = false;\n this.dragging = false;\n this.shouldDestroyOnEndDragging = false;\n }\n init() {\n this.dragService.addDragSource({\n dragStartPixels: 0,\n eElement: this.getGui(),\n onDragStart: this.onDragStart.bind(this),\n onDragging: (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: (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 isDragging() {\n return this.dragging;\n }\n getCellCtrl() {\n return this.cellCtrl;\n }\n setCellCtrl(cellComp) {\n this.cellCtrl = cellComp;\n }\n getCellRange() {\n return this.cellRange;\n }\n setCellRange(range) {\n this.cellRange = range;\n }\n getRangeStartRow() {\n return this.rangeStartRow;\n }\n setRangeStartRow(row) {\n this.rangeStartRow = row;\n }\n getRangeEndRow() {\n return this.rangeEndRow;\n }\n setRangeEndRow(row) {\n this.rangeEndRow = row;\n }\n getLastCellHovered() {\n return this.lastCellHovered;\n }\n preventRangeExtension(e) {\n e.stopPropagation();\n }\n onDragStart(e) {\n this.cellHoverListener = this.addManagedListener(this.ctrlsService.getGridCtrl().getGui(), 'mousemove', this.updateValuesOnMove.bind(this));\n document.body.classList.add(this.getDraggingCssClass());\n }\n getDraggingCssClass() {\n return `ag-dragging-${this.type === SelectionHandleType.FILL ? 'fill' : 'range'}-handle`;\n }\n updateValuesOnMove(e) {\n const 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 getType() {\n return this.type;\n }\n refresh(cellCtrl) {\n const oldCellComp = this.getCellCtrl();\n const eGui = this.getGui();\n const cellRange = _.last(this.rangeService.getCellRanges());\n const start = cellRange.startRow;\n const end = cellRange.endRow;\n if (start && end) {\n const 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 const eParentOfValue = cellCtrl.getComp().getParentOfValue();\n if (eParentOfValue) {\n eParentOfValue.appendChild(eGui);\n }\n }\n this.setCellRange(cellRange);\n }\n clearValues() {\n this.lastCellHovered = undefined;\n this.removeListeners();\n }\n removeListeners() {\n if (this.cellHoverListener) {\n this.cellHoverListener();\n this.cellHoverListener = undefined;\n }\n }\n destroy() {\n if (!this.shouldDestroyOnEndDragging && this.isDragging()) {\n _.setDisplayed(this.getGui(), false);\n this.shouldDestroyOnEndDragging = true;\n return;\n }\n this.shouldDestroyOnEndDragging = false;\n super.destroy();\n this.removeListeners();\n const eGui = this.getGui();\n if (eGui.parentElement) {\n eGui.parentElement.removeChild(eGui);\n }\n }\n}\n__decorate$I([\n Autowired(\"rowRenderer\")\n], AbstractSelectionHandle.prototype, \"rowRenderer\", void 0);\n__decorate$I([\n Autowired(\"dragService\")\n], AbstractSelectionHandle.prototype, \"dragService\", void 0);\n__decorate$I([\n Autowired(\"rangeService\")\n], AbstractSelectionHandle.prototype, \"rangeService\", void 0);\n__decorate$I([\n Autowired(\"mouseEventService\")\n], AbstractSelectionHandle.prototype, \"mouseEventService\", void 0);\n__decorate$I([\n Autowired(\"columnModel\")\n], AbstractSelectionHandle.prototype, \"columnModel\", void 0);\n__decorate$I([\n Autowired(\"cellNavigationService\")\n], AbstractSelectionHandle.prototype, \"cellNavigationService\", void 0);\n__decorate$I([\n Autowired(\"navigationService\")\n], AbstractSelectionHandle.prototype, \"navigationService\", void 0);\n__decorate$I([\n Autowired('rowPositionUtils')\n], AbstractSelectionHandle.prototype, \"rowPositionUtils\", void 0);\n__decorate$I([\n Autowired('cellPositionUtils')\n], AbstractSelectionHandle.prototype, \"cellPositionUtils\", void 0);\n__decorate$I([\n Autowired('ctrlsService')\n], AbstractSelectionHandle.prototype, \"ctrlsService\", void 0);\n__decorate$I([\n PostConstruct\n], AbstractSelectionHandle.prototype, \"init\", null);\n\nfunction findLineByLeastSquares(values) {\n const len = values.length;\n let maxDecimals = 0;\n if (len <= 1) {\n return values;\n }\n for (let i = 0; i < values.length; i++) {\n const value = values[i];\n const 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 let sum_x = 0;\n let sum_y = 0;\n let sum_xy = 0;\n let sum_xx = 0;\n let y = 0;\n for (let 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 const m = (len * sum_xy - sum_x * sum_y) / (len * sum_xx - sum_x * sum_x);\n const b = (sum_y / len) - (m * sum_x) / len;\n const result = [];\n for (let x = 0; x <= len; x++) {\n result.push(parseFloat((x * m + b).toFixed(maxDecimals)));\n }\n return result;\n}\n\nvar __decorate$H = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass FillHandle extends AbstractSelectionHandle {\n constructor() {\n super(FillHandle.TEMPLATE);\n this.markedCells = [];\n this.cellValues = [];\n this.isUp = false;\n this.isLeft = false;\n this.isReduce = false;\n this.type = SelectionHandleType.FILL;\n }\n updateValuesOnMove(e) {\n super.updateValuesOnMove(e);\n if (!this.initialXY) {\n this.initialXY = this.mouseEventService.getNormalisedPosition(e);\n }\n const { x, y } = this.initialXY;\n const { x: newX, y: newY } = this.mouseEventService.getNormalisedPosition(e);\n const diffX = Math.abs(x - newX);\n const diffY = Math.abs(y - newY);\n const allowedDirection = this.getFillHandleDirection();\n let 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 onDrag(e) {\n if (!this.initialPosition) {\n const cellCtrl = this.getCellCtrl();\n if (!cellCtrl) {\n return;\n }\n this.initialPosition = cellCtrl.getCellPosition();\n }\n const lastCellHovered = this.getLastCellHovered();\n if (lastCellHovered) {\n this.markPathFrom(this.initialPosition, lastCellHovered);\n }\n }\n onDragEnd(e) {\n this.initialXY = null;\n if (!this.markedCells.length) {\n return;\n }\n const isX = this.dragAxis === 'x';\n const initialRange = this.getCellRange();\n const colLen = initialRange.columns.length;\n const rangeStartRow = this.getRangeStartRow();\n const rangeEndRow = this.getRangeEndRow();\n let 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 const 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 getFillHandleDirection() {\n const direction = this.gridOptionsService.get('fillHandleDirection');\n if (!direction) {\n return 'xy';\n }\n if (direction !== 'x' && direction !== 'y' && direction !== 'xy') {\n _.doOnce(() => 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 raiseFillStartEvent() {\n const fillStartEvent = {\n type: Events.EVENT_FILL_START\n };\n this.eventService.dispatchEvent(fillStartEvent);\n }\n raiseFillEndEvent(initialRange, finalRange) {\n const fillEndEvent = {\n type: Events.EVENT_FILL_END,\n initialRange: initialRange,\n finalRange: finalRange\n };\n this.eventService.dispatchEvent(fillEndEvent);\n }\n handleValueChanged(initialRange, finalRange, e) {\n const initialRangeEndRow = this.rangeService.getRangeEndRow(initialRange);\n const initialRangeStartRow = this.rangeService.getRangeStartRow(initialRange);\n const finalRangeEndRow = this.rangeService.getRangeEndRow(finalRange);\n const finalRangeStartRow = this.rangeService.getRangeStartRow(finalRange);\n const 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.gridOptionsService.is('suppressClearOnFillReduction')) {\n const columns = isVertical\n ? initialRange.columns\n : initialRange.columns.filter(col => finalRange.columns.indexOf(col) < 0);\n const startRow = isVertical ? this.cellNavigationService.getRowBelow(finalRangeEndRow) : finalRangeStartRow;\n if (startRow) {\n this.clearCellsInRange(startRow, initialRangeEndRow, columns);\n }\n return;\n }\n let withinInitialRange = true;\n const values = [];\n const initialValues = [];\n let idx = 0;\n const resetValues = () => {\n values.length = 0;\n initialValues.length = 0;\n idx = 0;\n };\n const iterateAcrossCells = (column, columns) => {\n let currentRow = this.isUp ? initialRangeEndRow : initialRangeStartRow;\n let finished = false;\n if (isVertical) {\n withinInitialRange = true;\n resetValues();\n }\n while (!finished && currentRow) {\n const rowNode = this.rowPositionUtils.getRowNode(currentRow);\n if (!rowNode) {\n break;\n }\n if (isVertical && column) {\n fillValues(values, column, rowNode, () => {\n return !this.rowPositionUtils.sameRow(currentRow, this.isUp ? initialRangeStartRow : initialRangeEndRow);\n });\n }\n else if (columns) {\n withinInitialRange = true;\n resetValues();\n columns.forEach(col => fillValues(values, col, rowNode, () => 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 };\n const fillValues = (currentValues, col, rowNode, updateInitialSet) => {\n var _a, _b;\n let currentValue;\n let skipValue = false;\n if (withinInitialRange) {\n currentValue = this.valueService.getValue(col, rowNode);\n initialValues.push(currentValue);\n withinInitialRange = updateInitialSet();\n }\n else {\n const { value, fromUserFunction, sourceCol, sourceRowNode } = this.processValues(e, currentValues, initialValues, col, rowNode, idx++);\n currentValue = value;\n if (col.isCellEditable(rowNode)) {\n const cellValue = this.valueService.getValue(col, rowNode);\n if (!fromUserFunction) {\n if ((_a = sourceCol === null || sourceCol === void 0 ? void 0 : sourceCol.getColDef()) === null || _a === void 0 ? void 0 : _a.useValueFormatterForExport) {\n currentValue = (_b = this.valueFormatterService.formatValue(sourceCol, sourceRowNode, currentValue)) !== null && _b !== void 0 ? _b : currentValue;\n }\n if (col.getColDef().useValueParserForImport) {\n currentValue = this.valueParserService.parseValue(col, rowNode, \n // if no sourceCol, then currentValue is a number\n sourceCol ? currentValue : _.toStringOrNull(currentValue), cellValue);\n }\n }\n if (!fromUserFunction || cellValue !== currentValue) {\n rowNode.setDataValue(col, currentValue, 'rangeService');\n }\n else {\n skipValue = true;\n }\n }\n }\n if (!skipValue) {\n currentValues.push({\n value: currentValue,\n column: col,\n rowNode\n });\n }\n };\n if (isVertical) {\n initialRange.columns.forEach(col => {\n iterateAcrossCells(col);\n });\n }\n else {\n const columns = this.isLeft ? [...finalRange.columns].reverse() : finalRange.columns;\n iterateAcrossCells(undefined, columns);\n }\n }\n clearCellsInRange(startRow, endRow, columns) {\n const cellRange = {\n startRow,\n endRow,\n columns,\n startColumn: columns[0]\n };\n this.rangeService.clearCellRangeCellValues({ cellRanges: [cellRange] });\n }\n processValues(event, values, initialValues, col, rowNode, idx) {\n const userFillOperation = this.gridOptionsService.getCallback('fillOperation');\n const isVertical = this.dragAxis === 'y';\n let direction;\n if (isVertical) {\n direction = this.isUp ? 'up' : 'down';\n }\n else {\n direction = this.isLeft ? 'left' : 'right';\n }\n if (userFillOperation) {\n const params = {\n event,\n values: values.map(({ value }) => value),\n initialValues,\n currentIndex: idx,\n currentCellValue: this.valueService.getValue(col, rowNode),\n direction,\n column: col,\n rowNode: rowNode\n };\n const userResult = userFillOperation(params);\n if (userResult !== false) {\n return { value: userResult, fromUserFunction: true };\n }\n }\n const allNumbers = !values.some(({ value }) => {\n const asFloat = parseFloat(value);\n return isNaN(asFloat) || asFloat.toString() !== value.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 const multiplier = (this.isUp || this.isLeft) ? -1 : 1;\n return { value: parseFloat(_.last(values).value) + 1 * multiplier, fromUserFunction: false };\n }\n const { value, column: sourceCol, rowNode: sourceRowNode } = values[idx % values.length];\n return { value, fromUserFunction: false, sourceCol, sourceRowNode };\n }\n return { value: _.last(findLineByLeastSquares(values.map(({ value }) => Number(value)))), fromUserFunction: false };\n }\n clearValues() {\n this.clearMarkedPath();\n this.clearCellValues();\n this.lastCellMarked = undefined;\n super.clearValues();\n }\n clearMarkedPath() {\n this.markedCells.forEach(cell => {\n if (!cell.isAlive()) {\n return;\n }\n const 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 clearCellValues() {\n this.cellValues.length = 0;\n }\n markPathFrom(initialPosition, currentPosition) {\n this.clearMarkedPath();\n this.clearCellValues();\n if (this.dragAxis === 'y') {\n if (this.rowPositionUtils.sameRow(currentPosition, initialPosition)) {\n return;\n }\n const isBefore = this.rowPositionUtils.before(currentPosition, initialPosition);\n const rangeStartRow = this.getRangeStartRow();\n const 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 const initialColumn = initialPosition.column;\n const currentColumn = currentPosition.column;\n if (initialColumn === currentColumn) {\n return;\n }\n const displayedColumns = this.columnModel.getAllDisplayedColumns();\n const initialIndex = displayedColumns.indexOf(initialColumn);\n const 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 extendVertical(initialPosition, endPosition, isMovingUp) {\n const { navigationService, rangeService } = this;\n let row = initialPosition;\n do {\n const cellRange = this.getCellRange();\n const colLen = cellRange.columns.length;\n for (let i = 0; i < colLen; i++) {\n const column = cellRange.columns[i];\n const rowPos = { rowIndex: row.rowIndex, rowPinned: row.rowPinned };\n const cellPos = Object.assign(Object.assign({}, rowPos), { column });\n const cellInRange = rangeService.isCellInSpecificRange(cellPos, cellRange);\n const isInitialRow = this.rowPositionUtils.sameRow(row, initialPosition);\n if (isMovingUp) {\n this.isUp = true;\n }\n if (!isInitialRow) {\n const cell = navigationService.getCellByPosition(cellPos);\n if (cell) {\n this.markedCells.push(cell);\n const 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 reduceVertical(initialPosition, endPosition) {\n let row = initialPosition;\n do {\n const cellRange = this.getCellRange();\n const colLen = cellRange.columns.length;\n const isLastRow = this.rowPositionUtils.sameRow(row, endPosition);\n for (let i = 0; i < colLen; i++) {\n const rowPos = { rowIndex: row.rowIndex, rowPinned: row.rowPinned };\n const celPos = Object.assign(Object.assign({}, rowPos), { column: cellRange.columns[i] });\n const cell = this.navigationService.getCellByPosition(celPos);\n if (cell) {\n this.markedCells.push(cell);\n const 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 extendHorizontal(initialPosition, endPosition, isMovingLeft) {\n const allCols = this.columnModel.getAllDisplayedColumns();\n const startCol = allCols.indexOf(isMovingLeft ? endPosition.column : initialPosition.column);\n const endCol = allCols.indexOf(isMovingLeft ? this.getCellRange().columns[0] : endPosition.column);\n const offset = isMovingLeft ? 0 : 1;\n const colsToMark = allCols.slice(startCol + offset, endCol + offset);\n const rangeStartRow = this.getRangeStartRow();\n const rangeEndRow = this.getRangeEndRow();\n colsToMark.forEach(column => {\n let row = rangeStartRow;\n let isLastRow = false;\n do {\n isLastRow = this.rowPositionUtils.sameRow(row, rangeEndRow);\n const 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 const 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 reduceHorizontal(initialPosition, endPosition) {\n const allCols = this.columnModel.getAllDisplayedColumns();\n const startCol = allCols.indexOf(endPosition.column);\n const endCol = allCols.indexOf(initialPosition.column);\n const colsToMark = allCols.slice(startCol, endCol);\n const rangeStartRow = this.getRangeStartRow();\n const rangeEndRow = this.getRangeEndRow();\n colsToMark.forEach(column => {\n let row = rangeStartRow;\n let isLastRow = false;\n do {\n isLastRow = this.rowPositionUtils.sameRow(row, rangeEndRow);\n const 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 const 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 refresh(cellCtrl) {\n const cellRange = this.rangeService.getCellRanges()[0];\n const isColumnRange = !cellRange.startRow || !cellRange.endRow;\n if (isColumnRange) {\n this.destroy();\n return;\n }\n super.refresh(cellCtrl);\n }\n}\nFillHandle.TEMPLATE = `
`;\n__decorate$H([\n Autowired('valueService')\n], FillHandle.prototype, \"valueService\", void 0);\n__decorate$H([\n Autowired('valueParserService')\n], FillHandle.prototype, \"valueParserService\", void 0);\n__decorate$H([\n Autowired('valueFormatterService')\n], FillHandle.prototype, \"valueFormatterService\", void 0);\n\nclass RangeHandle extends AbstractSelectionHandle {\n constructor() {\n super(RangeHandle.TEMPLATE);\n this.type = SelectionHandleType.RANGE;\n this.rangeFixed = false;\n }\n onDrag(e) {\n const lastCellHovered = this.getLastCellHovered();\n if (!lastCellHovered) {\n return;\n }\n const cellRanges = this.rangeService.getCellRanges();\n const 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 const 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], Object.assign(Object.assign({}, this.endPosition), { column: cellRanges[0].columns[0] }), true);\n }\n }\n this.rangeService.extendLatestRangeToCell(this.endPosition);\n }\n onDragEnd(e) {\n const cellRange = _.last(this.rangeService.getCellRanges());\n this.fixRangeStartEnd(cellRange);\n this.rangeFixed = false;\n }\n fixRangeStartEnd(cellRange) {\n const startRow = this.rangeService.getRangeStartRow(cellRange);\n const endRow = this.rangeService.getRangeEndRow(cellRange);\n const column = cellRange.columns[0];\n cellRange.startRow = startRow;\n cellRange.endRow = endRow;\n cellRange.startColumn = column;\n }\n}\nRangeHandle.TEMPLATE = `
`;\n\nvar __decorate$G = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet SelectionHandleFactory = class SelectionHandleFactory extends BeanStub {\n createSelectionHandle(type) {\n return this.createBean(type === SelectionHandleType.RANGE ? new RangeHandle() : new FillHandle());\n }\n};\nSelectionHandleFactory = __decorate$G([\n Bean('selectionHandleFactory')\n], SelectionHandleFactory);\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nconst VERSION$9 = '30.0.5';\n\nconst RangeSelectionModule = {\n version: VERSION$9,\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\nvar __decorate$F = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass AgColorPanel extends Component {\n constructor(config) {\n super(AgColorPanel.TEMPLATE);\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 }\n postConstruct() {\n const 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 refreshSpectrumRect() {\n return this.spectrumValRect = this.spectrumVal.getBoundingClientRect();\n }\n refreshHueRect() {\n return this.spectrumHueRect = this.spectrumHue.getBoundingClientRect();\n }\n refreshAlphaRect() {\n return this.spectrumAlphaRect = this.spectrumAlpha.getBoundingClientRect();\n }\n onSpectrumDraggerDown(e) {\n this.refreshSpectrumRect();\n this.isSpectrumDragging = true;\n this.moveDragger(e);\n }\n onSpectrumDraggerMove(e) {\n if (this.isSpectrumDragging) {\n this.moveDragger(e);\n }\n }\n onSpectrumHueDown(e) {\n this.refreshHueRect();\n this.isSpectrumHueDragging = true;\n this.moveHueSlider(e);\n }\n onSpectrumHueMove(e) {\n if (this.isSpectrumHueDragging) {\n this.moveHueSlider(e);\n }\n }\n onSpectrumAlphaDown(e) {\n this.refreshAlphaRect();\n this.isSpectrumAlphaDragging = true;\n this.moveAlphaSlider(e);\n }\n onSpectrumAlphaMove(e) {\n if (this.isSpectrumAlphaDragging) {\n this.moveAlphaSlider(e);\n }\n }\n onMouseUp() {\n this.isSpectrumDragging = false;\n this.isSpectrumHueDragging = false;\n this.isSpectrumAlphaDragging = false;\n }\n moveDragger(e) {\n const valRect = this.spectrumValRect;\n if (valRect) {\n let x = e.clientX - valRect.left;\n let 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 moveHueSlider(e) {\n const hueRect = this.spectrumHueRect;\n if (hueRect) {\n const slider = this.spectrumHueSlider;\n const sliderRect = slider.getBoundingClientRect();\n let 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 moveAlphaSlider(e) {\n const alphaRect = this.spectrumAlphaRect;\n if (alphaRect) {\n const slider = this.spectrumAlphaSlider;\n const sliderRect = slider.getBoundingClientRect();\n let 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 update() {\n const color = Color.fromHSB(this.H * 360, this.S, this.B, this.A);\n const spectrumColor = Color.fromHSB(this.H * 360, 1, 1);\n const rgbaColor = color.toRgbaString();\n // the recent color list needs to know color has actually changed\n const colorPicker = this.picker;\n const 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 setSpectrumValue(saturation, brightness) {\n const valRect = this.spectrumValRect || this.refreshSpectrumRect();\n if (valRect) {\n const dragger = this.spectrumDragger;\n const 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 initRecentColors() {\n const recentColors = AgColorPanel.recentColors;\n const innerHtml = recentColors.map((color, index) => {\n return `
`;\n });\n this.recentColors.innerHTML = innerHtml.join('');\n }\n setValue(val) {\n const color = Color.fromString(val);\n const [h, s, b] = color.toHSB();\n this.H = (isNaN(h) ? 0 : h) / 360;\n this.A = color.a;\n const spectrumHueRect = this.spectrumHueRect || this.refreshHueRect();\n const 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 onRecentColorClick(e) {\n const target = e.target;\n if (!_.exists(target.id)) {\n return;\n }\n const id = parseInt(target.id, 10);\n this.setValue(AgColorPanel.recentColors[id]);\n this.destroy();\n }\n addRecentColor() {\n const color = Color.fromHSB(this.H * 360, this.S, this.B, this.A);\n const rgbaColor = color.toRgbaString();\n let recentColors = AgColorPanel.recentColors;\n if (!this.colorChanged || recentColors[0] === rgbaColor) {\n return;\n }\n // remove duplicate color\n recentColors = recentColors.filter(currentColor => 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 destroy() {\n this.addRecentColor();\n super.destroy();\n }\n}\nAgColorPanel.maxRecentColors = 8;\nAgColorPanel.recentColors = [];\nAgColorPanel.TEMPLATE = `
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
`;\n__decorate$F([\n RefSelector('spectrumColor')\n], AgColorPanel.prototype, \"spectrumColor\", void 0);\n__decorate$F([\n RefSelector('spectrumVal')\n], AgColorPanel.prototype, \"spectrumVal\", void 0);\n__decorate$F([\n RefSelector('spectrumDragger')\n], AgColorPanel.prototype, \"spectrumDragger\", void 0);\n__decorate$F([\n RefSelector('spectrumHue')\n], AgColorPanel.prototype, \"spectrumHue\", void 0);\n__decorate$F([\n RefSelector('spectrumHueSlider')\n], AgColorPanel.prototype, \"spectrumHueSlider\", void 0);\n__decorate$F([\n RefSelector('spectrumAlpha')\n], AgColorPanel.prototype, \"spectrumAlpha\", void 0);\n__decorate$F([\n RefSelector('spectrumAlphaSlider')\n], AgColorPanel.prototype, \"spectrumAlphaSlider\", void 0);\n__decorate$F([\n RefSelector('recentColors')\n], AgColorPanel.prototype, \"recentColors\", void 0);\n__decorate$F([\n PostConstruct\n], AgColorPanel.prototype, \"postConstruct\", null);\n\nclass AgColorPicker extends AgPickerField {\n constructor(config) {\n super(config, 'ag-color-picker', 'colorPicker');\n if (config && config.color) {\n this.value = config.color;\n }\n }\n postConstruct() {\n super.postConstruct();\n if (this.value) {\n this.setValue(this.value);\n }\n }\n showPicker() {\n const eGuiRect = this.getGui().getBoundingClientRect();\n const 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 const colorPanel = this.createBean(new AgColorPanel({ picker: this }));\n colorPanel.addDestroyFunc(() => {\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(() => {\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 setValue(color) {\n if (this.value === color) {\n return this;\n }\n this.eDisplayField.style.backgroundColor = color;\n return super.setValue(color);\n }\n getValue() {\n return this.value;\n }\n}\n\nconst VERSION_CHECKING_FIRST_GRID_MAJOR_VERSION = 28;\nconst VERSION_CHECKING_FIRST_CHARTS_MAJOR_VERSION = 6;\nfunction isValidVersion(version) {\n return version && version.match(/\\d+\\.\\d+\\.\\d+/);\n}\nfunction isValidMajorVersion({ gridMajorVersion, chartsMajorVersion }) {\n const gridMajor = parseInt(gridMajorVersion, 10);\n const chartsMajor = parseInt(chartsMajorVersion, 10);\n const gridMajorDifference = gridMajor - VERSION_CHECKING_FIRST_GRID_MAJOR_VERSION;\n const chartsMajorDifference = chartsMajor - VERSION_CHECKING_FIRST_CHARTS_MAJOR_VERSION;\n const isFirstOrAfterVersion = gridMajorDifference >= 0;\n return gridMajorDifference === chartsMajorDifference && isFirstOrAfterVersion;\n}\nfunction gridChartVersion(gridVersion) {\n if (!gridVersion || !isValidVersion(gridVersion)) {\n return undefined;\n }\n const [gridMajor, gridMinor] = gridVersion.split('.') || [];\n const gridMajorMinor = `${gridMajor}.${gridMinor}.x`;\n const gridMajorNumber = parseInt(gridMajor, 10);\n const chartsMajor = (gridMajorNumber - VERSION_CHECKING_FIRST_GRID_MAJOR_VERSION) + VERSION_CHECKING_FIRST_CHARTS_MAJOR_VERSION;\n if (chartsMajor < 0) {\n return undefined;\n }\n const chartsMinor = gridMinor;\n const chartsMajorMinor = `${chartsMajor}.${chartsMinor}.x`;\n return {\n gridMajorMinor,\n chartsMajorMinor\n };\n}\nfunction validGridChartsVersionErrorMessage({ type, gridVersion, chartsVersion }) {\n const invalidMessage = 'AG Grid: AG Grid version is incompatible. Please see https://www.ag-grid.com/javascript-data-grid/modules/ for more information.';\n if (!gridVersion) {\n return invalidMessage;\n }\n const version = gridChartVersion(gridVersion);\n if (!version) {\n return invalidMessage;\n }\n const { gridMajorMinor, chartsMajorMinor } = version;\n if (type === 'incompatible') {\n return `AG Grid version ${gridVersion} and AG Charts version ${chartsVersion} is not supported. AG Grid version ${gridMajorMinor} should be used with AG Chart ${chartsMajorMinor}. Please see https://www.ag-grid.com/javascript-data-grid/modules/ for more information.`;\n }\n else if (type === 'invalidCharts') {\n return `AG Grid version ${gridMajorMinor} should be used with AG Chart ${chartsMajorMinor}. Please see https://www.ag-grid.com/javascript-data-grid/modules/ for more information.`;\n }\n return invalidMessage;\n}\nfunction validGridChartsVersion({ gridVersion, chartsVersion }) {\n if (!isValidVersion(chartsVersion)) {\n return {\n isValid: false,\n message: validGridChartsVersionErrorMessage({ type: 'invalidCharts', gridVersion, chartsVersion })\n };\n }\n if (!isValidVersion(gridVersion)) {\n return {\n isValid: false,\n message: validGridChartsVersionErrorMessage({ type: 'invalidGrid', gridVersion, chartsVersion })\n };\n }\n const [gridMajor, gridMinor] = gridVersion.split('.') || [];\n const [chartsMajor, chartsMinor] = chartsVersion.split('.') || [];\n const isValidMajor = isValidMajorVersion({\n gridMajorVersion: gridMajor,\n chartsMajorVersion: chartsMajor\n });\n if (isValidMajor && gridMinor === chartsMinor) {\n return {\n isValid: true\n };\n }\n else if (!isValidMajor || gridMinor !== chartsMinor) {\n return {\n isValid: false,\n message: validGridChartsVersionErrorMessage({ type: 'incompatible', gridVersion, chartsVersion })\n };\n }\n return {\n isValid: false,\n message: validGridChartsVersionErrorMessage({ type: 'invalid', gridVersion, chartsVersion })\n };\n}\n\nconst GridChartsModule = {\n version: VERSION$a,\n validate: () => {\n return validGridChartsVersion({\n gridVersion: VERSION$a,\n chartsVersion: ChartService.CHARTS_VERSION\n });\n },\n moduleName: ModuleNames.GridChartsModule,\n beans: [\n ChartService, ChartTranslationService, ChartCrossFilterService\n ],\n agStackComponents: [\n { componentName: 'AgColorPicker', componentClass: AgColorPicker },\n { componentName: 'AgAngleSelect', componentClass: AgAngleSelect },\n ],\n dependantModules: [\n RangeSelectionModule,\n EnterpriseCoreModule\n ]\n};\n\n/**\n * Internal Use Only: Used to ensure this file is treated as a module until we can use moduleDetection flag in Ts v4.7\n */\nconst __FORCE_MODULE_DETECTION_AG_GRID_CORE_EXT = 0;\n\nconst agCharts = {\n time,\n AgChart\n};\n\nvar __decorate$E = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass DetailCellRendererCtrl extends BeanStub {\n constructor() {\n super(...arguments);\n this.loadRowDataVersion = 0;\n }\n init(comp, params) {\n this.params = params;\n this.comp = comp;\n const 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(this.eventService, Events.EVENT_FULL_WIDTH_ROW_FOCUSED, this.onFullWidthRowFocused.bind(this));\n }\n onFullWidthRowFocused(e) {\n const params = this.params;\n const row = { rowIndex: params.node.rowIndex, rowPinned: params.node.rowPinned };\n const eventRow = { rowIndex: e.rowIndex, rowPinned: e.rowPinned };\n const isSameRow = this.rowPositionUtils.sameRow(row, eventRow);\n if (!isSameRow) {\n return;\n }\n this.focusService.focusInto(this.comp.getGui(), e.fromBelow);\n }\n setAutoHeightClasses() {\n const autoHeight = this.gridOptionsService.is('detailRowAutoHeight');\n const parentClass = autoHeight ? 'ag-details-row-auto-height' : 'ag-details-row-fixed-height';\n const 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 setupRefreshStrategy() {\n const providedStrategy = this.params.refreshStrategy;\n const 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 addThemeToDetailGrid() {\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 const { theme } = this.environment.getTheme();\n if (theme) {\n this.comp.addOrRemoveDetailGridCssClass(theme, true);\n }\n }\n createDetailGrid() {\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 const autoHeight = this.gridOptionsService.is('detailRowAutoHeight');\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 const gridOptions = Object.assign({}, this.params.detailGridOptions);\n if (autoHeight) {\n gridOptions.domLayout = 'autoHeight';\n }\n this.comp.setDetailGrid(gridOptions);\n }\n registerDetailWithMaster(api, columnApi) {\n const rowId = this.params.node.id;\n const masterGridApi = this.params.api;\n const gridInfo = {\n id: rowId,\n api: api,\n columnApi: columnApi\n };\n const rowNode = this.params.node;\n // register with api\n masterGridApi.addDetailGridInfo(rowId, gridInfo);\n // register with node\n rowNode.detailGridInfo = gridInfo;\n this.addDestroyFunc(() => {\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 loadRowData() {\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 const versionThisCall = this.loadRowDataVersion;\n const 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 const successCallback = (rowData) => {\n const mostRecentCall = this.loadRowDataVersion === versionThisCall;\n if (mostRecentCall) {\n this.comp.setRowData(rowData);\n }\n };\n const 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.gridOptionsService.context\n };\n userFunc(funcParams);\n }\n refresh() {\n const GET_GRID_TO_REFRESH = false;\n const GET_GRID_TO_DO_NOTHING = true;\n switch (this.refreshStrategy) {\n // ignore this refresh, make grid think we've refreshed but do nothing\n case 'nothing': return GET_GRID_TO_DO_NOTHING;\n // grid will destroy and recreate the cell\n case 'everything': return GET_GRID_TO_REFRESH;\n }\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$E([\n Autowired('rowPositionUtils')\n], DetailCellRendererCtrl.prototype, \"rowPositionUtils\", void 0);\n__decorate$E([\n Autowired('focusService')\n], DetailCellRendererCtrl.prototype, \"focusService\", void 0);\n\nvar __decorate$D = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass DetailCellRenderer extends Component {\n init(params) {\n this.params = params;\n this.selectAndSetTemplate();\n const compProxy = {\n addOrRemoveCssClass: (cssClassName, on) => this.addOrRemoveCssClass(cssClassName, on),\n addOrRemoveDetailGridCssClass: (cssClassName, on) => this.eDetailGrid.classList.toggle(cssClassName, on),\n setDetailGrid: gridOptions => this.setDetailGrid(gridOptions),\n setRowData: rowData => this.setRowData(rowData),\n getGui: () => this.eDetailGrid\n };\n this.ctrl = this.createManagedBean(new DetailCellRendererCtrl());\n this.ctrl.init(compProxy, params);\n }\n refresh() {\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 destroy() {\n super.destroy();\n }\n selectAndSetTemplate() {\n if (this.params.pinned) {\n this.setTemplate('
');\n return;\n }\n const setDefaultTemplate = () => {\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 const templateFunc = this.params.template;\n const 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 setDetailGrid(gridOptions) {\n if (!this.eDetailGrid) {\n return;\n }\n // AG-1715\n // this is only needed when suppressReactUi=true, 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 const agGridReact = this.context.getBean('agGridReact');\n const 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 const frameworkComponentWrapper = this.context.getBean('frameworkComponentWrapper');\n const frameworkOverrides = this.getFrameworkOverrides();\n // tslint:disable-next-line\n new Grid(this.eDetailGrid, gridOptions, {\n frameworkOverrides,\n providedBeanInstances: {\n agGridReact: agGridReactCloned,\n frameworkComponentWrapper: frameworkComponentWrapper\n },\n modules: ModuleRegistry.__getGridRegisteredModules(this.params.api.getGridId())\n });\n this.detailApi = gridOptions.api;\n this.ctrl.registerDetailWithMaster(gridOptions.api, gridOptions.columnApi);\n this.addDestroyFunc(() => {\n if (gridOptions.api) {\n gridOptions.api.destroy();\n }\n });\n }\n setRowData(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}\nDetailCellRenderer.TEMPLATE = `
\n
\n
`;\n__decorate$D([\n RefSelector('eDetailGrid')\n], DetailCellRenderer.prototype, \"eDetailGrid\", void 0);\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nconst VERSION$8 = '30.0.5';\n\nconst MasterDetailModule = {\n version: VERSION$8,\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\nvar __decorate$C = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet EnterpriseMenuFactory = class EnterpriseMenuFactory extends BeanStub {\n hideActiveMenu() {\n this.destroyBean(this.activeMenu);\n }\n showMenuAfterMouseEvent(column, mouseEvent, defaultTab) {\n this.showMenu(column, (menu) => {\n const ePopup = menu.getGui();\n this.popupService.positionPopupUnderMouseEvent({\n type: 'columnMenu',\n column,\n mouseEvent,\n ePopup\n });\n if (defaultTab) {\n menu.showTab(defaultTab);\n }\n }, 'columnMenu', defaultTab, undefined, mouseEvent.target);\n }\n showMenuAfterButtonClick(column, eventSource, containerType, defaultTab, restrictToTabs) {\n let multiplier = -1;\n let alignSide = 'left';\n if (this.gridOptionsService.is('enableRtl')) {\n multiplier = 1;\n alignSide = 'right';\n }\n this.showMenu(column, (menu) => {\n const ePopup = menu.getGui();\n this.popupService.positionPopupByComponent({\n type: containerType,\n column,\n eventSource,\n ePopup,\n alignSide,\n nudgeX: 9 * multiplier,\n nudgeY: -23,\n position: 'under',\n keepWithinBounds: true,\n });\n if (defaultTab) {\n menu.showTab(defaultTab);\n }\n }, containerType, defaultTab, restrictToTabs, eventSource);\n }\n showMenu(column, positionCallback, containerType, defaultTab, restrictToTabs, eventSource) {\n const { menu, eMenuGui, currentHeaderPosition, currentColumnIndex, anchorToElement } = this.getMenuParams(column, restrictToTabs, eventSource);\n const closedFuncs = [];\n closedFuncs.push(this.getClosedCallback(column, menu, currentHeaderPosition, currentColumnIndex, eventSource));\n const translate = this.localeService.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 this.popupService.addPopup({\n modal: true,\n eChild: eMenuGui,\n closeOnEsc: true,\n closedCallback: (e) => {\n closedFuncs.forEach(f => f(e));\n },\n afterGuiAttached: params => menu.afterGuiAttached(Object.assign({}, { container: containerType }, params)),\n // if defaultTab is not present, positionCallback will be called\n // after `showTabBasedOnPreviousSelection` is called.\n positionCallback: !!defaultTab ? () => positionCallback(menu) : undefined,\n ariaLabel: translate('ariaLabelColumnMenu', 'Column Menu')\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 // 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 const stopAnchoringPromise = this.popupService.setPopupPositionRelatedToElement(eMenuGui, anchorToElement);\n if (stopAnchoringPromise) {\n this.addStopAnchoring(stopAnchoringPromise, column, closedFuncs);\n }\n menu.addEventListener(EnterpriseMenu.EVENT_TAB_SELECTED, (event) => {\n this.lastSelectedTab = event.key;\n });\n column.setMenuVisible(true, 'contextMenu');\n this.activeMenu = menu;\n menu.addEventListener(BeanStub.EVENT_DESTROYED, () => {\n if (this.activeMenu === menu) {\n this.activeMenu = null;\n }\n });\n }\n addStopAnchoring(stopAnchoringPromise, column, closedFuncsArr) {\n stopAnchoringPromise.then((stopAnchoringFunc) => {\n column.addEventListener('leftChanged', stopAnchoringFunc);\n column.addEventListener('visibleChanged', stopAnchoringFunc);\n closedFuncsArr.push(() => {\n column.removeEventListener('leftChanged', stopAnchoringFunc);\n column.removeEventListener('visibleChanged', stopAnchoringFunc);\n });\n });\n }\n getClosedCallback(column, menu, headerPosition, columnIndex, eventSource) {\n return (e) => {\n this.destroyBean(menu);\n column.setMenuVisible(false, 'contextMenu');\n const isKeyboardEvent = e instanceof KeyboardEvent;\n if (!isKeyboardEvent || !eventSource) {\n return;\n }\n if (_.isVisible(eventSource)) {\n const focusableEl = this.focusService.findTabbableParent(eventSource);\n if (focusableEl) {\n if (column) {\n this.headerNavigationService.scrollToColumn(column);\n }\n focusableEl.focus();\n }\n }\n // if the focusEl is no longer in the DOM, we try to focus\n // the header that is closest to the previous header position\n else if (headerPosition && columnIndex !== -1) {\n const allColumns = this.columnModel.getAllDisplayedColumns();\n const columnToFocus = allColumns[columnIndex] || _.last(allColumns);\n if (columnToFocus) {\n this.focusService.focusHeaderPosition({\n headerPosition: {\n headerRowIndex: headerPosition.headerRowIndex,\n column: columnToFocus\n }\n });\n }\n }\n };\n }\n getMenuParams(column, restrictToTabs, eventSource) {\n const menu = this.createBean(new EnterpriseMenu(column, this.lastSelectedTab, restrictToTabs));\n return {\n menu,\n eMenuGui: menu.getGui(),\n currentHeaderPosition: this.focusService.getFocusedHeader(),\n currentColumnIndex: this.columnModel.getAllDisplayedColumns().indexOf(column),\n anchorToElement: eventSource || this.ctrlsService.getGridBodyCtrl().getGui()\n };\n }\n isMenuEnabled(column) {\n return column.getMenuTabs(EnterpriseMenu.TABS_DEFAULT).length > 0;\n }\n};\n__decorate$C([\n Autowired('popupService')\n], EnterpriseMenuFactory.prototype, \"popupService\", void 0);\n__decorate$C([\n Autowired('focusService')\n], EnterpriseMenuFactory.prototype, \"focusService\", void 0);\n__decorate$C([\n Autowired('headerNavigationService')\n], EnterpriseMenuFactory.prototype, \"headerNavigationService\", void 0);\n__decorate$C([\n Autowired('ctrlsService')\n], EnterpriseMenuFactory.prototype, \"ctrlsService\", void 0);\n__decorate$C([\n Autowired('columnModel')\n], EnterpriseMenuFactory.prototype, \"columnModel\", void 0);\nEnterpriseMenuFactory = __decorate$C([\n Bean('menuFactory')\n], EnterpriseMenuFactory);\nclass EnterpriseMenu extends BeanStub {\n constructor(column, initialSelection, restrictTo) {\n super();\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] = () => true;\n this.includeChecks[EnterpriseMenu.TAB_FILTER] = () => this.filterManager.isFilterAllowed(column);\n this.includeChecks[EnterpriseMenu.TAB_COLUMNS] = () => true;\n this.restrictTo = restrictTo;\n }\n init() {\n const tabs = this.getTabsToCreate().map(name => 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 this.addDestroyFunc(() => this.destroyBean(this.tabbedLayout));\n }\n getTabsToCreate() {\n if (this.restrictTo) {\n return this.restrictTo;\n }\n return this.column.getMenuTabs(EnterpriseMenu.TABS_DEFAULT)\n .filter(tabName => this.isValidMenuTabItem(tabName))\n .filter(tabName => this.isNotSuppressed(tabName))\n .filter(tabName => this.isModuleLoaded(tabName));\n }\n isModuleLoaded(menuTabName) {\n if (menuTabName === EnterpriseMenu.TAB_COLUMNS) {\n return ModuleRegistry.__isRegistered(ModuleNames.ColumnsToolPanelModule, this.context.getGridId());\n }\n return true;\n }\n isValidMenuTabItem(menuTabName) {\n let isValid = true;\n let 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 isNotSuppressed(menuTabName) {\n return this.includeChecks[menuTabName]();\n }\n createTab(name) {\n return this.tabFactories[name]();\n }\n showTabBasedOnPreviousSelection() {\n // show the tab the user was on last time they had a menu open\n this.showTab(this.initialSelection);\n }\n showTab(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 onTabItemClicked(event) {\n let 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 activateTab(tab) {\n const ev = {\n type: EnterpriseMenu.EVENT_TAB_SELECTED,\n key: tab\n };\n this.dispatchEvent(ev);\n }\n getMenuItems() {\n const defaultMenuOptions = this.getDefaultMenuOptions();\n let result;\n const userFunc = this.gridOptionsService.getCallback('getMainMenuItems');\n if (userFunc) {\n result = userFunc({\n column: this.column,\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 getDefaultMenuOptions() {\n const result = [];\n const allowPinning = !this.column.getColDef().lockPinned;\n const rowGroupCount = this.columnModel.getRowGroupColumns().length;\n const doingGrouping = rowGroupCount > 0;\n const groupedByThisColumn = this.columnModel.getRowGroupColumns().indexOf(this.column) >= 0;\n const allowValue = this.column.isAllowValue();\n const allowRowGroup = this.column.isAllowRowGroup();\n const isPrimary = this.column.isPrimary();\n const pivotModeOn = this.columnModel.isPivotMode();\n const isInMemoryRowModel = this.rowModel.getType() === 'clientSide';\n const usingTreeData = this.gridOptionsService.isTreeData();\n const 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 const allowExpandAndContract = isInMemoryRowModel && (usingTreeData || rowGroupCount > (pivotModeOn ? 1 : 0));\n if (allowExpandAndContract) {\n result.push('expandAll');\n result.push('contractAll');\n }\n return result;\n }\n createMainPanel() {\n this.mainMenuList = this.createManagedBean(new AgMenuList());\n const menuItems = this.getMenuItems();\n const 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.gridOptionsService, 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 onHidePopup(event) {\n let 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 const focusedCell = this.focusService.getFocusedCell();\n const eDocument = this.gridOptionsService.getDocument();\n if (eDocument.activeElement === eDocument.body && focusedCell) {\n const { rowIndex, rowPinned, column } = focusedCell;\n this.focusService.setFocusedCell({ rowIndex, column, rowPinned, forceBrowserFocus: true, preventScrollOnBrowserFocus: true });\n }\n }\n createFilterPanel() {\n const filterWrapper = this.filterManager.getOrCreateFilterWrapper(this.column, 'COLUMN_MENU');\n if (!filterWrapper) {\n throw new Error('AG Grid - Unable to instantiate filter');\n }\n const afterFilterAttachedCallback = (params) => {\n if (!(filterWrapper === null || filterWrapper === void 0 ? void 0 : filterWrapper.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(filter => {\n if (filter && filter.afterGuiAttached) {\n filter.afterGuiAttached(params);\n }\n });\n };\n // see comment above\n const afterDetachedCallback = () => { var _a; return (_a = filterWrapper === null || filterWrapper === void 0 ? void 0 : filterWrapper.filterPromise) === null || _a === void 0 ? void 0 : _a.then(filter => { var _a; return (_a = filter === null || filter === void 0 ? void 0 : filter.afterGuiDetached) === null || _a === void 0 ? void 0 : _a.call(filter); }); };\n this.tabItemFilter = {\n title: _.createIconNoSpan('filter', this.gridOptionsService, this.column),\n titleLabel: EnterpriseMenu.TAB_FILTER.replace('MenuTab', ''),\n bodyPromise: filterWrapper === null || filterWrapper === void 0 ? void 0 : filterWrapper.guiPromise,\n afterAttachedCallback: afterFilterAttachedCallback,\n afterDetachedCallback,\n name: EnterpriseMenu.TAB_FILTER\n };\n return this.tabItemFilter;\n }\n createColumnsPanel() {\n const eWrapperDiv = document.createElement('div');\n eWrapperDiv.classList.add('ag-menu-column-select-wrapper');\n const columnSelectPanel = this.createManagedBean(new PrimaryColsPanel());\n let columnsMenuParams = this.column.getColDef().columnsMenuParams;\n if (!columnsMenuParams) {\n columnsMenuParams = {};\n }\n const { contractColumnSelection, suppressColumnExpandAll, suppressColumnFilter, suppressColumnSelectAll, suppressSyncLayoutWithGrid, columnLayout } = columnsMenuParams;\n columnSelectPanel.init(false, {\n suppressColumnMove: false,\n suppressValues: false,\n suppressPivots: false,\n suppressRowGroups: false,\n suppressPivotMode: false,\n contractColumnSelection: !!contractColumnSelection,\n suppressColumnExpandAll: !!suppressColumnExpandAll,\n suppressColumnFilter: !!suppressColumnFilter,\n suppressColumnSelectAll: !!suppressColumnSelectAll,\n suppressSyncLayoutWithGrid: !!columnLayout || !!suppressSyncLayoutWithGrid,\n api: this.gridApi,\n columnApi: this.columnApi,\n context: this.gridOptionsService.context\n }, 'columnMenu');\n if (columnLayout) {\n columnSelectPanel.setColumnLayout(columnLayout);\n }\n const columnSelectPanelGui = columnSelectPanel.getGui();\n columnSelectPanelGui.classList.add('ag-menu-column-select');\n eWrapperDiv.appendChild(columnSelectPanelGui);\n this.tabItemColumns = {\n title: _.createIconNoSpan('columns', this.gridOptionsService, 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 afterGuiAttached(params) {\n const { container, hidePopup } = params;\n this.tabbedLayout.setAfterAttachedParams({ container, hidePopup });\n if (hidePopup) {\n this.hidePopupFunc = hidePopup;\n this.addDestroyFunc(hidePopup);\n }\n }\n getGui() {\n return this.tabbedLayout.getGui();\n }\n}\nEnterpriseMenu.EVENT_TAB_SELECTED = 'tabSelected';\nEnterpriseMenu.TAB_FILTER = 'filterMenuTab';\nEnterpriseMenu.TAB_GENERAL = 'generalMenuTab';\nEnterpriseMenu.TAB_COLUMNS = 'columnsMenuTab';\nEnterpriseMenu.TABS_DEFAULT = [EnterpriseMenu.TAB_GENERAL, EnterpriseMenu.TAB_FILTER, EnterpriseMenu.TAB_COLUMNS];\nEnterpriseMenu.MENU_ITEM_SEPARATOR = 'separator';\n__decorate$C([\n Autowired('columnModel')\n], EnterpriseMenu.prototype, \"columnModel\", void 0);\n__decorate$C([\n Autowired('filterManager')\n], EnterpriseMenu.prototype, \"filterManager\", void 0);\n__decorate$C([\n Autowired('gridApi')\n], EnterpriseMenu.prototype, \"gridApi\", void 0);\n__decorate$C([\n Autowired('columnApi')\n], EnterpriseMenu.prototype, \"columnApi\", void 0);\n__decorate$C([\n Autowired('menuItemMapper')\n], EnterpriseMenu.prototype, \"menuItemMapper\", void 0);\n__decorate$C([\n Autowired('rowModel')\n], EnterpriseMenu.prototype, \"rowModel\", void 0);\n__decorate$C([\n Autowired('focusService')\n], EnterpriseMenu.prototype, \"focusService\", void 0);\n__decorate$C([\n PostConstruct\n], EnterpriseMenu.prototype, \"init\", null);\n\nvar __decorate$B = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst CSS_MENU = 'ag-menu';\nconst CSS_CONTEXT_MENU_OPEN = 'ag-context-menu-open';\nlet ContextMenuFactory = class ContextMenuFactory extends BeanStub {\n hideActiveMenu() {\n this.destroyBean(this.activeMenu);\n }\n getMenuItems(node, column, value) {\n const defaultMenuOptions = [];\n if (_.exists(node) && ModuleRegistry.__isRegistered(ModuleNames.ClipboardModule, this.context.getGridId())) {\n if (column) {\n // only makes sense if column exists, could have originated from a row\n if (!this.gridOptionsService.is('suppressCutToClipboard')) {\n defaultMenuOptions.push('cut');\n }\n defaultMenuOptions.push('copy', 'copyWithHeaders', 'copyWithGroupHeaders', 'paste', 'separator');\n }\n }\n if (this.gridOptionsService.is('enableCharts') && ModuleRegistry.__isRegistered(ModuleNames.GridChartsModule, this.context.getGridId())) {\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 const csvModuleMissing = !ModuleRegistry.__isRegistered(ModuleNames.CsvExportModule, this.context.getGridId());\n const excelModuleMissing = !ModuleRegistry.__isRegistered(ModuleNames.ExcelExportModule, this.context.getGridId());\n const suppressExcel = this.gridOptionsService.is('suppressExcelExport') || excelModuleMissing;\n const suppressCsv = this.gridOptionsService.is('suppressCsvExport') || csvModuleMissing;\n const onIPad = _.isIOSUserAgent();\n const anyExport = !onIPad && (!suppressExcel || !suppressCsv);\n if (anyExport) {\n defaultMenuOptions.push('export');\n }\n }\n const userFunc = this.gridOptionsService.getCallback('getContextMenuItems');\n if (userFunc) {\n const params = {\n node: node,\n column: column,\n value: value,\n defaultItems: defaultMenuOptions.length ? defaultMenuOptions : undefined,\n };\n return userFunc(params);\n }\n return defaultMenuOptions;\n }\n onContextMenu(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.gridOptionsService.is('allowContextMenuWithControlKey')) {\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.gridOptionsService.is('suppressContextMenu')) {\n return;\n }\n const eventOrTouch = mouseEvent ? mouseEvent : touchEvent.touches[0];\n if (this.showMenu(rowNode, column, value, eventOrTouch, anchorToElement)) {\n const event = mouseEvent ? mouseEvent : touchEvent;\n event.preventDefault();\n }\n }\n blockMiddleClickScrollsIfNeeded(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 const { gridOptionsService } = this;\n const { which } = mouseEvent;\n if (gridOptionsService.is('suppressMiddleClickScrolls') && which === 2) {\n mouseEvent.preventDefault();\n }\n }\n showMenu(node, column, value, mouseEvent, anchorToElement) {\n const menuItems = this.getMenuItems(node, column, value);\n const eGridBodyGui = this.ctrlsService.getGridBodyCtrl().getGui();\n if (menuItems === undefined || _.missingOrEmpty(menuItems)) {\n return false;\n }\n const menu = new ContextMenu(menuItems);\n this.createBean(menu);\n const eMenuGui = menu.getGui();\n const 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 const translate = this.localeService.getLocaleTextFunc();\n const addPopupRes = this.popupService.addPopup({\n modal: true,\n eChild: eMenuGui,\n closeOnEsc: true,\n closedCallback: () => {\n eGridBodyGui.classList.remove(CSS_CONTEXT_MENU_OPEN);\n this.destroyBean(menu);\n },\n click: mouseEvent,\n positionCallback: () => {\n const isRtl = this.gridOptionsService.is('enableRtl');\n this.popupService.positionPopupUnderMouseEvent(Object.assign(Object.assign({}, positionParams), { nudgeX: isRtl ? (eMenuGui.offsetWidth + 1) * -1 : 1 }));\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, () => {\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};\n__decorate$B([\n Autowired('popupService')\n], ContextMenuFactory.prototype, \"popupService\", void 0);\n__decorate$B([\n Optional('rangeService')\n], ContextMenuFactory.prototype, \"rangeService\", void 0);\n__decorate$B([\n Autowired('ctrlsService')\n], ContextMenuFactory.prototype, \"ctrlsService\", void 0);\n__decorate$B([\n Autowired('columnModel')\n], ContextMenuFactory.prototype, \"columnModel\", void 0);\nContextMenuFactory = __decorate$B([\n Bean('contextMenuFactory')\n], ContextMenuFactory);\nclass ContextMenu extends Component {\n constructor(menuItems) {\n super(/* html */ `
`);\n this.menuList = null;\n this.focusedCell = null;\n this.menuItems = menuItems;\n }\n addMenuItems() {\n const menuList = this.createManagedBean(new AgMenuList());\n const 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, (e) => this.dispatchEvent(e));\n }\n afterGuiAttached(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 restoreFocusedCell() {\n const currentFocusedCell = this.focusService.getFocusedCell();\n if (currentFocusedCell && this.focusedCell && this.cellPositionUtils.equals(currentFocusedCell, this.focusedCell)) {\n const { rowIndex, rowPinned, column } = this.focusedCell;\n const doc = this.gridOptionsService.getDocument();\n if (doc.activeElement === doc.body) {\n this.focusService.setFocusedCell({ rowIndex, column, rowPinned, forceBrowserFocus: true });\n }\n }\n }\n destroy() {\n this.restoreFocusedCell();\n super.destroy();\n }\n}\n__decorate$B([\n Autowired('menuItemMapper')\n], ContextMenu.prototype, \"menuItemMapper\", void 0);\n__decorate$B([\n Autowired('focusService')\n], ContextMenu.prototype, \"focusService\", void 0);\n__decorate$B([\n Autowired('cellPositionUtils')\n], ContextMenu.prototype, \"cellPositionUtils\", void 0);\n__decorate$B([\n PostConstruct\n], ContextMenu.prototype, \"addMenuItems\", null);\n\nvar __decorate$A = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet MenuItemMapper = class MenuItemMapper extends BeanStub {\n mapWithStockItems(originalList, column) {\n if (!originalList) {\n return [];\n }\n const resultList = [];\n originalList.forEach(menuItemOrString => {\n let result;\n if (typeof menuItemOrString === 'string') {\n result = this.getStockMenuItem(menuItemOrString, column);\n }\n else {\n // Spread to prevent leaking mapped subMenus back into the original menuItem\n result = Object.assign({}, 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 const resultDef = result;\n const { subMenu } = resultDef;\n if (subMenu && subMenu instanceof Array) {\n resultDef.subMenu = this.mapWithStockItems(subMenu, column);\n }\n if (result != null) {\n resultList.push(result);\n }\n });\n return resultList;\n }\n getStockMenuItem(key, column) {\n var _a;\n const localeTextFunc = this.localeService.getLocaleTextFunc();\n const skipHeaderOnAutoSize = this.gridOptionsService.is('skipHeaderOnAutoSize');\n switch (key) {\n case 'pinSubMenu':\n return {\n name: localeTextFunc('pinColumn', 'Pin Column'),\n icon: _.createIconNoSpan('menuPin', this.gridOptionsService, null),\n subMenu: ['clearPinned', 'pinLeft', 'pinRight']\n };\n case 'pinLeft':\n return {\n name: localeTextFunc('pinLeft', 'Pin Left'),\n action: () => this.columnModel.setColumnPinned(column, 'left', \"contextMenu\"),\n checked: !!column && column.isPinnedLeft()\n };\n case 'pinRight':\n return {\n name: localeTextFunc('pinRight', 'Pin Right'),\n action: () => this.columnModel.setColumnPinned(column, 'right', \"contextMenu\"),\n checked: !!column && column.isPinnedRight()\n };\n case 'clearPinned':\n return {\n name: localeTextFunc('noPin', 'No Pin'),\n action: () => this.columnModel.setColumnPinned(column, null, \"contextMenu\"),\n checked: !!column && !column.isPinned()\n };\n case 'valueAggSubMenu':\n if (ModuleRegistry.__assertRegistered(ModuleNames.RowGroupingModule, 'Aggregation from Menu', this.context.getGridId())) {\n if (!(column === null || column === void 0 ? void 0 : column.isPrimary()) && !(column === null || column === void 0 ? void 0 : column.getColDef().pivotValueColumn)) {\n return null;\n }\n return {\n name: localeTextFunc('valueAggregation', 'Value Aggregation'),\n icon: _.createIconNoSpan('menuValue', this.gridOptionsService, 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: () => this.columnModel.autoSizeColumn(column, skipHeaderOnAutoSize, \"contextMenu\")\n };\n case 'autoSizeAll':\n return {\n name: localeTextFunc('autosizeAllColumns', 'Autosize All Columns'),\n action: () => this.columnModel.autoSizeAllColumns(skipHeaderOnAutoSize, \"contextMenu\")\n };\n case 'rowGroup':\n return {\n name: localeTextFunc('groupBy', 'Group by') + ' ' + _.escapeString(this.columnModel.getDisplayNameForColumn(column, 'header')),\n disabled: (column === null || column === void 0 ? void 0 : column.isRowGroupActive()) || !(column === null || column === void 0 ? void 0 : column.getColDef().enableRowGroup),\n action: () => this.columnModel.addRowGroupColumn(column, \"contextMenu\"),\n icon: _.createIconNoSpan('menuAddRowGroup', this.gridOptionsService, null)\n };\n case 'rowUnGroup':\n return {\n name: localeTextFunc('ungroupBy', 'Un-Group by') + ' ' + _.escapeString(this.columnModel.getDisplayNameForColumn(column, 'header')),\n disabled: !(column === null || column === void 0 ? void 0 : column.isRowGroupActive()) || !(column === null || column === void 0 ? void 0 : column.getColDef().enableRowGroup),\n action: () => this.columnModel.removeRowGroupColumn(column, \"contextMenu\"),\n icon: _.createIconNoSpan('menuRemoveRowGroup', this.gridOptionsService, null)\n };\n case 'resetColumns':\n return {\n name: localeTextFunc('resetColumns', 'Reset Columns'),\n action: () => this.columnModel.resetColumnState(\"contextMenu\")\n };\n case 'expandAll':\n return {\n name: localeTextFunc('expandAll', 'Expand All Row Groups'),\n action: () => this.gridApi.expandAll()\n };\n case 'contractAll':\n return {\n name: localeTextFunc('collapseAll', 'Collapse All Row Groups'),\n action: () => this.gridApi.collapseAll()\n };\n case 'copy':\n if (ModuleRegistry.__assertRegistered(ModuleNames.ClipboardModule, 'Copy from Menu', this.context.getGridId())) {\n return {\n name: localeTextFunc('copy', 'Copy'),\n shortcut: localeTextFunc('ctrlC', 'Ctrl+C'),\n icon: _.createIconNoSpan('clipboardCopy', this.gridOptionsService, null),\n action: () => 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', this.context.getGridId())) {\n return {\n name: localeTextFunc('copyWithHeaders', 'Copy with Headers'),\n // shortcut: localeTextFunc('ctrlC','Ctrl+C'),\n icon: _.createIconNoSpan('clipboardCopy', this.gridOptionsService, null),\n action: () => 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', this.context.getGridId())) {\n return {\n name: localeTextFunc('copyWithGroupHeaders', 'Copy with Group Headers'),\n // shortcut: localeTextFunc('ctrlC','Ctrl+C'),\n icon: _.createIconNoSpan('clipboardCopy', this.gridOptionsService, null),\n action: () => this.clipboardService.copyToClipboard({ includeHeaders: true, includeGroupHeaders: true })\n };\n }\n else {\n return null;\n }\n case 'cut':\n if (ModuleRegistry.__assertRegistered(ModuleNames.ClipboardModule, 'Cut from Menu', this.context.getGridId())) {\n const focusedCell = this.focusService.getFocusedCell();\n const rowNode = focusedCell ? this.rowPositionUtils.getRowNode(focusedCell) : null;\n const isEditable = rowNode ? focusedCell === null || focusedCell === void 0 ? void 0 : focusedCell.column.isCellEditable(rowNode) : false;\n return {\n name: localeTextFunc('cut', 'Cut'),\n shortcut: localeTextFunc('ctrlX', 'Ctrl+X'),\n icon: _.createIconNoSpan('clipboardCut', this.gridOptionsService, null),\n disabled: !isEditable || this.gridOptionsService.is('suppressCutToClipboard'),\n action: () => this.clipboardService.cutToClipboard(undefined, 'contextMenu')\n };\n }\n else {\n return null;\n }\n case 'paste':\n if (ModuleRegistry.__assertRegistered(ModuleNames.ClipboardModule, 'Paste from Clipboard', this.context.getGridId())) {\n return {\n name: localeTextFunc('paste', 'Paste'),\n shortcut: localeTextFunc('ctrlV', 'Ctrl+V'),\n disabled: true,\n icon: _.createIconNoSpan('clipboardPaste', this.gridOptionsService, null),\n action: () => this.clipboardService.pasteFromClipboard()\n };\n }\n else {\n return null;\n }\n case 'export':\n const exportSubMenuItems = [];\n const csvModuleLoaded = ModuleRegistry.__isRegistered(ModuleNames.CsvExportModule, this.context.getGridId());\n const excelModuleLoaded = ModuleRegistry.__isRegistered(ModuleNames.ExcelExportModule, this.context.getGridId());\n if (!this.gridOptionsService.is('suppressCsvExport') && csvModuleLoaded) {\n exportSubMenuItems.push('csvExport');\n }\n if (!this.gridOptionsService.is('suppressExcelExport') && excelModuleLoaded) {\n exportSubMenuItems.push('excelExport');\n }\n return {\n name: localeTextFunc('export', 'Export'),\n subMenu: exportSubMenuItems,\n icon: _.createIconNoSpan('save', this.gridOptionsService, null),\n };\n case 'csvExport':\n return {\n name: localeTextFunc('csvExport', 'CSV Export'),\n icon: _.createIconNoSpan('csvExport', this.gridOptionsService, null),\n action: () => this.gridApi.exportDataAsCsv({})\n };\n case 'excelExport':\n return {\n name: localeTextFunc('excelExport', 'Excel Export'),\n icon: _.createIconNoSpan('excelExport', this.gridOptionsService, null),\n action: () => this.gridApi.exportDataAsExcel()\n };\n case 'separator':\n return 'separator';\n case 'pivotChart':\n case 'chartRange':\n return (_a = this.chartMenuItemMapper.getChartItems(key)) !== null && _a !== void 0 ? _a : null;\n default: {\n console.warn(`AG Grid: unknown menu item type ${key}`);\n return null;\n }\n }\n }\n createAggregationSubMenu(column) {\n const localeTextFunc = this.localeService.getLocaleTextFunc();\n let columnToUse;\n if (column.isPrimary()) {\n columnToUse = column;\n }\n else {\n const pivotValueColumn = column.getColDef().pivotValueColumn;\n columnToUse = _.exists(pivotValueColumn) ? pivotValueColumn : undefined;\n }\n const result = [];\n if (columnToUse) {\n const columnIsAlreadyAggValue = columnToUse.isValueActive();\n const funcNames = this.aggFuncService.getFuncNames(columnToUse);\n result.push({\n name: localeTextFunc('noAggregation', 'None'),\n action: () => {\n this.columnModel.removeValueColumn(columnToUse, \"contextMenu\");\n this.columnModel.setColumnAggFunc(columnToUse, undefined, \"contextMenu\");\n },\n checked: !columnIsAlreadyAggValue\n });\n funcNames.forEach(funcName => {\n result.push({\n name: localeTextFunc(funcName, _.capitalise(funcName)),\n action: () => {\n this.columnModel.setColumnAggFunc(columnToUse, funcName, \"contextMenu\");\n this.columnModel.addValueColumn(columnToUse, \"contextMenu\");\n },\n checked: columnIsAlreadyAggValue && columnToUse.getAggFunc() === funcName\n });\n });\n }\n return result;\n }\n};\n__decorate$A([\n Autowired('columnModel')\n], MenuItemMapper.prototype, \"columnModel\", void 0);\n__decorate$A([\n Autowired('gridApi')\n], MenuItemMapper.prototype, \"gridApi\", void 0);\n__decorate$A([\n Optional('clipboardService')\n], MenuItemMapper.prototype, \"clipboardService\", void 0);\n__decorate$A([\n Optional('aggFuncService')\n], MenuItemMapper.prototype, \"aggFuncService\", void 0);\n__decorate$A([\n Autowired('focusService')\n], MenuItemMapper.prototype, \"focusService\", void 0);\n__decorate$A([\n Autowired('rowPositionUtils')\n], MenuItemMapper.prototype, \"rowPositionUtils\", void 0);\n__decorate$A([\n Autowired('chartMenuItemMapper')\n], MenuItemMapper.prototype, \"chartMenuItemMapper\", void 0);\nMenuItemMapper = __decorate$A([\n Bean('menuItemMapper')\n], MenuItemMapper);\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nconst VERSION$7 = '30.0.5';\n\nvar __decorate$z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 ChartMenuItemMapper_1;\nlet ChartMenuItemMapper = ChartMenuItemMapper_1 = class ChartMenuItemMapper extends BeanStub {\n getChartItems(key) {\n var _a, _b;\n if (!this.chartService) {\n ModuleRegistry.__assertRegistered(ModuleNames.GridChartsModule, `the Context Menu key \"${key}\"`, this.context.getGridId());\n return undefined;\n }\n const builder = key === 'pivotChart'\n ? new PivotMenuItemMapper(this.gridOptionsService, this.chartService, this.localeService)\n : new RangeMenuItemMapper(this.gridOptionsService, this.chartService, this.localeService);\n let topLevelMenuItem = builder.getMenuItem();\n const chartGroupsDef = (_b = (_a = this.gridOptionsService.get('chartToolPanelsDef')) === null || _a === void 0 ? void 0 : _a.settingsPanel) === null || _b === void 0 ? void 0 : _b.chartGroupsDef;\n if (chartGroupsDef) {\n // Apply filtering and ordering if chartGroupsDef provided\n topLevelMenuItem = ChartMenuItemMapper_1.filterAndOrderChartMenu(topLevelMenuItem, chartGroupsDef, builder.getConfigLookup());\n }\n return this.cleanInternals(topLevelMenuItem);\n }\n // Remove our internal _key properties so this does not leak out of the class on the menu items.\n cleanInternals(menuItem) {\n if (!menuItem) {\n return menuItem;\n }\n const removeKey = (m) => {\n var _a;\n m === null || m === void 0 ? true : delete m._key;\n (_a = m === null || m === void 0 ? void 0 : m.subMenu) === null || _a === void 0 ? void 0 : _a.forEach(s => removeKey(s));\n return m;\n };\n return removeKey(menuItem);\n }\n static buildLookup(menuItem) {\n let itemLookup = {};\n const addItem = (item) => {\n itemLookup[item._key] = item;\n if (item.subMenu) {\n item.subMenu.forEach(s => addItem(s));\n }\n };\n addItem(menuItem);\n return itemLookup;\n }\n /**\n * Make the MenuItem match the charts provided and their ordering on the ChartGroupsDef config object as provided by the user.\n */\n static filterAndOrderChartMenu(topLevelMenuItem, chartGroupsDef, configLookup) {\n var _a;\n const menuItemLookup = this.buildLookup(topLevelMenuItem);\n let orderedAndFiltered = Object.assign(Object.assign({}, topLevelMenuItem), { subMenu: [] });\n Object.entries(chartGroupsDef).forEach(([group, chartTypes]) => {\n var _a, _b;\n const chartConfigGroup = configLookup[group];\n if (chartConfigGroup == undefined) {\n _.doOnce(() => console.warn(`AG Grid - invalid chartGroupsDef config '${group}'`), `invalid_chartGroupsDef${group}`);\n return undefined;\n }\n const menuItem = menuItemLookup[chartConfigGroup._key];\n if (menuItem) {\n if (menuItem.subMenu) {\n const subMenus = chartTypes.map(chartType => {\n const itemKey = chartConfigGroup[chartType];\n if (itemKey == undefined) {\n _.doOnce(() => console.warn(`AG Grid - invalid chartGroupsDef config '${group}.${chartType}'`), `invalid_chartGroupsDef${chartType}_${group}`);\n return undefined;\n }\n return menuItemLookup[itemKey];\n }).filter(s => s !== undefined);\n if (subMenus.length > 0) {\n menuItem.subMenu = subMenus;\n (_a = orderedAndFiltered.subMenu) === null || _a === void 0 ? void 0 : _a.push(menuItem);\n }\n }\n else {\n // Handles line case which is not actually a sub subMenu\n (_b = orderedAndFiltered.subMenu) === null || _b === void 0 ? void 0 : _b.push(menuItem);\n }\n }\n });\n if (((_a = orderedAndFiltered.subMenu) === null || _a === void 0 ? void 0 : _a.length) == 0) {\n return undefined;\n }\n return orderedAndFiltered;\n }\n};\n__decorate$z([\n Optional('chartService')\n], ChartMenuItemMapper.prototype, \"chartService\", void 0);\nChartMenuItemMapper = ChartMenuItemMapper_1 = __decorate$z([\n Bean('chartMenuItemMapper')\n], ChartMenuItemMapper);\nclass PivotMenuItemMapper {\n constructor(gridOptionsService, chartService, localeService) {\n this.gridOptionsService = gridOptionsService;\n this.chartService = chartService;\n this.localeService = localeService;\n }\n getMenuItem() {\n const localeTextFunc = this.localeService.getLocaleTextFunc();\n const getMenuItem = (localeKey, defaultText, chartType, key) => {\n return {\n name: localeTextFunc(localeKey, defaultText),\n action: () => this.chartService.createPivotChart({ chartType }),\n _key: key\n };\n };\n return {\n name: localeTextFunc('pivotChart', 'Pivot Chart'),\n _key: 'pivotChart',\n subMenu: [\n {\n _key: 'pivotColumnChart',\n name: localeTextFunc('columnChart', 'Column'),\n subMenu: [\n getMenuItem('groupedColumn', 'Grouped‎', 'groupedColumn', 'pivotGroupedColumn'),\n getMenuItem('stackedColumn', 'Stacked‎', 'stackedColumn', 'pivotStackedColumn'),\n getMenuItem('normalizedColumn', '100% Stacked‎', 'normalizedColumn', 'pivotNormalizedColumn')\n ]\n },\n {\n _key: 'pivotBarChart',\n name: localeTextFunc('barChart', 'Bar'),\n subMenu: [\n getMenuItem('groupedBar', 'Grouped‎', 'groupedBar', 'pivotGroupedBar'),\n getMenuItem('stackedBar', 'Stacked‎', 'stackedBar', 'pivotStackedBar'),\n getMenuItem('normalizedBar', '100% Stacked‎', 'normalizedBar', 'pivotNormalizedBar')\n ]\n },\n {\n _key: 'pivotPieChart',\n name: localeTextFunc('pieChart', 'Pie'),\n subMenu: [\n getMenuItem('pie', 'Pie‎', 'pie', 'pivotPie'),\n getMenuItem('doughnut', 'Doughnut‎', 'doughnut', 'pivotDoughnut')\n ]\n },\n getMenuItem('line', 'Line‎', 'line', 'pivotLineChart'),\n {\n _key: 'pivotXYChart',\n name: localeTextFunc('xyChart', 'X Y (Scatter)'),\n subMenu: [\n getMenuItem('scatter', 'Scatter‎', 'scatter', 'pivotScatter'),\n getMenuItem('bubble', 'Bubble‎', 'bubble', 'pivotBubble')\n ]\n },\n {\n _key: 'pivotAreaChart',\n name: localeTextFunc('areaChart', 'Area'),\n subMenu: [\n getMenuItem('area', 'Area‎', 'area', 'pivotArea'),\n getMenuItem('stackedArea', 'Stacked‎', 'stackedArea', 'pivotStackedArea'),\n getMenuItem('normalizedArea', '100% Stacked‎', 'normalizedArea', 'pivotNormalizedArea')\n ]\n },\n getMenuItem('histogramChart', 'Histogram‎', 'histogram', 'pivotHistogramChart'),\n {\n _key: 'pivotCombinationChart',\n name: localeTextFunc('combinationChart', 'Combination'),\n subMenu: [\n getMenuItem('columnLineCombo', 'Column & Line‎', 'columnLineCombo', 'pivotColumnLineCombo'),\n getMenuItem('AreaColumnCombo', 'Area & Column‎', 'areaColumnCombo', 'pivotAreaColumnCombo')\n ]\n }\n ],\n icon: _.createIconNoSpan('chart', this.gridOptionsService, undefined),\n };\n }\n getConfigLookup() {\n return {\n columnGroup: {\n _key: 'pivotColumnChart',\n column: 'pivotGroupedColumn',\n stackedColumn: 'pivotStackedColumn',\n normalizedColumn: 'pivotNormalizedColumn',\n },\n barGroup: {\n _key: 'pivotBarChart',\n bar: 'pivotGroupedBar',\n stackedBar: 'pivotStackedBar',\n normalizedBar: 'pivotNormalizedBar',\n },\n pieGroup: {\n _key: 'pivotPieChart',\n pie: 'pivotPie',\n doughnut: 'pivotDoughnut',\n },\n lineGroup: {\n _key: 'pivotLineChart',\n line: 'pivotLineChart',\n },\n scatterGroup: {\n _key: 'pivotXYChart',\n bubble: 'pivotBubble',\n scatter: 'pivotScatter',\n },\n areaGroup: {\n _key: 'pivotAreaChart',\n area: 'pivotArea',\n stackedArea: 'pivotStackedArea',\n normalizedArea: 'pivotNormalizedArea',\n },\n histogramGroup: {\n _key: 'pivotHistogramChart',\n histogram: 'pivotHistogramChart',\n },\n combinationGroup: {\n _key: 'pivotCombinationChart',\n columnLineCombo: 'pivotColumnLineCombo',\n areaColumnCombo: 'pivotAreaColumnCombo',\n customCombo: '' // Not currently supported but needs a value to separate from a missing value\n }\n };\n }\n}\nclass RangeMenuItemMapper {\n constructor(gridOptionsService, chartService, localeService) {\n this.gridOptionsService = gridOptionsService;\n this.chartService = chartService;\n this.localeService = localeService;\n }\n getMenuItem() {\n const localeTextFunc = this.localeService.getLocaleTextFunc();\n const getMenuItem = (localeKey, defaultText, chartType, key) => {\n return {\n name: localeTextFunc(localeKey, defaultText),\n action: () => this.chartService.createChartFromCurrentRange(chartType),\n _key: key\n };\n };\n return {\n name: localeTextFunc('chartRange', 'Chart Range'),\n _key: 'chartRange',\n subMenu: [\n {\n name: localeTextFunc('columnChart', 'Column'),\n subMenu: [\n getMenuItem('groupedColumn', 'Grouped‎', 'groupedColumn', 'rangeGroupedColumn'),\n getMenuItem('stackedColumn', 'Stacked‎', 'stackedColumn', 'rangeStackedColumn'),\n getMenuItem('normalizedColumn', '100% Stacked‎', 'normalizedColumn', 'rangeNormalizedColumn')\n ],\n _key: 'rangeColumnChart'\n },\n {\n name: localeTextFunc('barChart', 'Bar'),\n subMenu: [\n getMenuItem('groupedBar', 'Grouped‎', 'groupedBar', 'rangeGroupedBar'),\n getMenuItem('stackedBar', 'Stacked‎', 'stackedBar', 'rangeStackedBar'),\n getMenuItem('normalizedBar', '100% Stacked‎', 'normalizedBar', 'rangeNormalizedBar')\n ],\n _key: 'rangeBarChart'\n },\n {\n name: localeTextFunc('pieChart', 'Pie'),\n subMenu: [\n getMenuItem('pie', 'Pie‎', 'pie', 'rangePie'),\n getMenuItem('doughnut', 'Doughnut‎', 'doughnut', 'rangeDoughnut')\n ],\n _key: 'rangePieChart'\n },\n getMenuItem('line', 'Line‎', 'line', 'rangeLineChart'),\n {\n name: localeTextFunc('xyChart', 'X Y (Scatter)'),\n subMenu: [\n getMenuItem('scatter', 'Scatter‎', 'scatter', 'rangeScatter'),\n getMenuItem('bubble', 'Bubble‎', 'bubble', 'rangeBubble')\n ],\n _key: 'rangeXYChart'\n },\n {\n name: localeTextFunc('areaChart', 'Area'),\n subMenu: [\n getMenuItem('area', 'Area‎', 'area', 'rangeArea'),\n getMenuItem('stackedArea', 'Stacked‎', 'stackedArea', 'rangeStackedArea'),\n getMenuItem('normalizedArea', '100% Stacked‎', 'normalizedArea', 'rangeNormalizedArea')\n ],\n _key: 'rangeAreaChart'\n },\n getMenuItem('histogramChart', 'Histogram‎', 'histogram', 'rangeHistogramChart'),\n {\n name: localeTextFunc('combinationChart', 'Combination'),\n subMenu: [\n getMenuItem('columnLineCombo', 'Column & Line‎', 'columnLineCombo', 'rangeColumnLineCombo'),\n getMenuItem('AreaColumnCombo', 'Area & Column‎', 'areaColumnCombo', 'rangeAreaColumnCombo')\n ],\n _key: 'rangeCombinationChart'\n }\n ],\n icon: _.createIconNoSpan('chart', this.gridOptionsService, undefined),\n };\n }\n getConfigLookup() {\n return {\n columnGroup: {\n _key: 'rangeColumnChart',\n column: 'rangeGroupedColumn',\n stackedColumn: 'rangeStackedColumn',\n normalizedColumn: 'rangeNormalizedColumn',\n },\n barGroup: {\n _key: 'rangeBarChart',\n bar: 'rangeGroupedBar',\n stackedBar: 'rangeStackedBar',\n normalizedBar: 'rangeNormalizedBar',\n },\n pieGroup: {\n _key: 'rangePieChart',\n pie: 'rangePie',\n doughnut: 'rangeDoughnut',\n },\n lineGroup: {\n _key: 'rangeLineChart',\n line: 'rangeLineChart',\n },\n scatterGroup: {\n _key: 'rangeXYChart',\n bubble: 'rangeBubble',\n scatter: 'rangeScatter',\n },\n areaGroup: {\n _key: 'rangeAreaChart',\n area: 'rangeArea',\n stackedArea: 'rangeStackedArea',\n normalizedArea: 'rangeNormalizedArea',\n },\n histogramGroup: {\n _key: 'rangeHistogramChart',\n histogram: 'rangeHistogramChart',\n },\n combinationGroup: {\n _key: 'rangeCombinationChart',\n columnLineCombo: 'rangeColumnLineCombo',\n areaColumnCombo: 'rangeAreaColumnCombo',\n customCombo: '' // Not currently supported but needs a value to separate from a missing value\n }\n };\n }\n}\n\nconst MenuModule = {\n version: VERSION$7,\n moduleName: ModuleNames.MenuModule,\n beans: [EnterpriseMenuFactory, ContextMenuFactory, MenuItemMapper, ChartMenuItemMapper],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n\nvar __decorate$y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass MultiFilter extends TabGuardComp {\n constructor() {\n super(/* html */ `
`);\n this.filterDefs = [];\n this.filters = [];\n this.guiDestroyFuncs = [];\n this.activeFilterIndices = [];\n this.lastActivatedMenuItem = null;\n this.afterFiltersReadyFuncs = [];\n }\n postConstruct() {\n this.initialiseTabGuard({\n onFocusIn: e => this.onFocusIn(e)\n });\n }\n static getFilterDefs(params) {\n const { filters } = params;\n return filters && filters.length > 0 ?\n filters :\n [{ filter: 'agTextColumnFilter' }, { filter: 'agSetColumnFilter' }];\n }\n init(params) {\n this.params = params;\n this.filterDefs = MultiFilter.getFilterDefs(params);\n const { column, filterChangedCallback } = params;\n this.column = column;\n this.filterChangedCallback = filterChangedCallback;\n const filterPromises = [];\n this.filterDefs.forEach((filterDef, index) => {\n const 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(filters => {\n this.filters = filters;\n this.refreshGui('columnMenu');\n this.afterFiltersReadyFuncs.forEach(f => f());\n this.afterFiltersReadyFuncs.length = 0;\n });\n }\n refreshGui(container) {\n if (container === this.lastOpenedInContainer) {\n return;\n }\n this.removeAllChildrenExceptTabGuards();\n this.destroyChildren();\n this.filters.forEach((filter, index) => {\n if (index > 0) {\n this.appendChild(_.loadTemplate(/* html */ `
`));\n }\n const filterDef = this.filterDefs[index];\n const filterTitle = this.getFilterTitle(filter, filterDef);\n let filterGui;\n if (filterDef.display === 'subMenu' && container !== 'toolPanel') {\n // prevent sub-menu being used in tool panel\n const 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 const 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 getFilterTitle(filter, filterDef) {\n if (filterDef.title != null) {\n return filterDef.title;\n }\n const filterWithoutType = filter;\n return typeof filterWithoutType.getFilterTitle === 'function' ? filterWithoutType.getFilterTitle() : 'Filter';\n }\n destroyChildren() {\n this.guiDestroyFuncs.forEach(func => func());\n this.guiDestroyFuncs.length = 0;\n }\n insertFilterMenu(filter, name) {\n const menuItem = this.createBean(new AgMenuItemComponent({\n name,\n subMenu: filter,\n cssClasses: ['ag-multi-filter-menu-item'],\n isCompact: true,\n isAnotherSubMenuOpen: () => false,\n }));\n menuItem.setParentComponent(this);\n this.guiDestroyFuncs.push(() => this.destroyBean(menuItem));\n this.addManagedListener(menuItem, AgMenuItemComponent.EVENT_MENU_ITEM_ACTIVATED, (event) => {\n if (this.lastActivatedMenuItem && this.lastActivatedMenuItem !== event.menuItem) {\n this.lastActivatedMenuItem.deactivate();\n }\n this.lastActivatedMenuItem = event.menuItem;\n });\n menuItem.addGuiEventListener('focusin', () => menuItem.activate());\n menuItem.addGuiEventListener('focusout', () => {\n if (!menuItem.isSubMenuOpen()) {\n menuItem.deactivate();\n }\n });\n return menuItem;\n }\n insertFilterGroup(filter, title) {\n const group = this.createBean(new AgGroupComponent({\n title,\n cssIdentifier: 'multi-filter',\n }));\n this.guiDestroyFuncs.push(() => this.destroyBean(group));\n group.addItem(filter.getGui());\n group.toggleGroupExpand(false);\n if (filter.afterGuiAttached) {\n group.addManagedListener(group, AgGroupComponent.EVENT_EXPANDED, () => filter.afterGuiAttached({\n container: this.lastOpenedInContainer,\n suppressFocus: true,\n hidePopup: this.hidePopup\n }));\n }\n return group;\n }\n isFilterActive() {\n return this.filters.some(filter => filter.isFilterActive());\n }\n getLastActiveFilterIndex() {\n return this.activeFilterIndices.length > 0 ? this.activeFilterIndices[this.activeFilterIndices.length - 1] : null;\n }\n doesFilterPass(params, filterToSkip) {\n let rowPasses = true;\n this.filters.forEach(filter => {\n if (!rowPasses || filter === filterToSkip || !filter.isFilterActive()) {\n return;\n }\n rowPasses = filter.doesFilterPass(params);\n });\n return rowPasses;\n }\n getFilterType() {\n return 'multi';\n }\n getModelFromUi() {\n const model = {\n filterType: this.getFilterType(),\n filterModels: this.filters.map(filter => {\n const providedFilter = filter;\n if (typeof providedFilter.getModelFromUi === 'function') {\n return providedFilter.getModelFromUi();\n }\n return null;\n })\n };\n return model;\n }\n getModel() {\n if (!this.isFilterActive()) {\n return null;\n }\n const model = {\n filterType: this.getFilterType(),\n filterModels: this.filters.map(filter => {\n if (filter.isFilterActive()) {\n return filter.getModel();\n }\n return null;\n })\n };\n return model;\n }\n setModel(model) {\n const setFilterModel = (filter, filterModel) => {\n return new AgPromise(resolve => {\n const promise = filter.setModel(filterModel);\n promise ? promise.then(() => resolve()) : resolve();\n });\n };\n let promises = [];\n if (model == null) {\n promises = this.filters.map((filter, index) => {\n const res = setFilterModel(filter, null).then(() => {\n this.updateActiveList(index);\n });\n return res;\n });\n }\n else {\n this.filters.forEach((filter, index) => {\n const filterModel = model.filterModels.length > index ? model.filterModels[index] : null;\n const res = setFilterModel(filter, filterModel).then(() => {\n this.updateActiveList(index);\n });\n promises.push(res);\n });\n }\n return AgPromise.all(promises).then(() => { });\n }\n applyModel(source = 'api') {\n let result = false;\n this.filters.forEach((filter) => {\n if (filter instanceof ProvidedFilter) {\n result = filter.applyModel(source) || result;\n }\n });\n return result;\n }\n getChildFilterInstance(index) {\n return this.filters[index];\n }\n afterGuiAttached(params) {\n if (params) {\n this.hidePopup = params.hidePopup;\n this.refreshGui(params.container);\n }\n else {\n this.hidePopup = undefined;\n }\n const { filters } = this.params;\n const suppressFocus = filters && filters.some(filter => filter.display && filter.display !== 'inline');\n this.executeFunctionIfExists('afterGuiAttached', Object.assign(Object.assign({}, params || {}), { suppressFocus }));\n const eDocument = this.gridOptionsService.getDocument();\n const 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 afterGuiDetached() {\n this.executeFunctionIfExists('afterGuiDetached');\n }\n onAnyFilterChanged() {\n this.executeFunctionIfExists('onAnyFilterChanged');\n }\n onNewRowsLoaded() {\n this.executeFunctionIfExists('onNewRowsLoaded');\n }\n destroy() {\n this.filters.forEach(filter => {\n filter.setModel(null);\n this.destroyBean(filter);\n });\n this.filters.length = 0;\n this.destroyChildren();\n this.hidePopup = undefined;\n super.destroy();\n }\n executeFunctionIfExists(name, ...params) {\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, filter => {\n const func = filter[name];\n if (typeof func === 'function') {\n func.apply(filter, params);\n }\n });\n }\n createFilter(filterDef, index) {\n const { filterModifiedCallback, doesRowPassOtherFilter } = this.params;\n let filterInstance;\n const filterParams = Object.assign(Object.assign({}, this.filterManager.createFilterParams(this.column, this.column.getColDef())), { filterModifiedCallback, filterChangedCallback: additionalEventAttributes => {\n this.executeWhenAllFiltersReady(() => this.filterChanged(index, additionalEventAttributes));\n }, doesRowPassOtherFilter: (node) => doesRowPassOtherFilter(node) && this.doesFilterPass({ node, data: node.data }, filterInstance) });\n const compDetails = this.userComponentFactory.getFilterDetails(filterDef, filterParams, 'agTextColumnFilter');\n if (!compDetails) {\n return null;\n }\n const filterPromise = compDetails.newAgStackInstance();\n if (filterPromise) {\n filterPromise.then(filter => filterInstance = filter);\n }\n return filterPromise;\n }\n executeWhenAllFiltersReady(action) {\n if (this.filters && this.filters.length > 0) {\n action();\n }\n else {\n this.afterFiltersReadyFuncs.push(action);\n }\n }\n updateActiveList(index) {\n const changedFilter = this.filters[index];\n _.removeFromArray(this.activeFilterIndices, index);\n if (changedFilter.isFilterActive()) {\n this.activeFilterIndices.push(index);\n }\n }\n filterChanged(index, additionalEventAttributes) {\n this.updateActiveList(index);\n this.filterChangedCallback(additionalEventAttributes);\n const changedFilter = this.filters[index];\n this.filters.forEach(filter => {\n if (filter === changedFilter) {\n return;\n }\n if (typeof filter.onAnyFilterChanged === 'function') {\n filter.onAnyFilterChanged();\n }\n });\n }\n onFocusIn(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 getModelAsString(model) {\n var _a, _b, _c, _d;\n if (!this.filters || !((_a = model === null || model === void 0 ? void 0 : model.filterModels) === null || _a === void 0 ? void 0 : _a.length)) {\n return '';\n }\n const lastActiveIndex = (_b = this.getLastActiveFilterIndex()) !== null && _b !== void 0 ? _b : 0;\n const activeFilter = this.filters[lastActiveIndex];\n return (_d = (_c = activeFilter.getModelAsString) === null || _c === void 0 ? void 0 : _c.call(activeFilter, model.filterModels[lastActiveIndex])) !== null && _d !== void 0 ? _d : '';\n }\n}\n__decorate$y([\n Autowired('filterManager')\n], MultiFilter.prototype, \"filterManager\", void 0);\n__decorate$y([\n Autowired('userComponentFactory')\n], MultiFilter.prototype, \"userComponentFactory\", void 0);\n__decorate$y([\n PostConstruct\n], MultiFilter.prototype, \"postConstruct\", null);\n\nvar __decorate$x = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass MultiFloatingFilterComp extends Component {\n constructor() {\n super(/* html */ `
`);\n this.floatingFilters = [];\n }\n init(params) {\n this.params = params;\n const filterParams = params.filterParams;\n const floatingFilterPromises = [];\n MultiFilter.getFilterDefs(filterParams).forEach((filterDef, index) => {\n const floatingFilterParams = Object.assign(Object.assign({}, params), { \n // set the parent filter instance for each floating filter to the relevant child filter instance\n parentFilterInstance: (callback) => {\n this.parentMultiFilterInstance((parent) => {\n const child = parent.getChildFilterInstance(index);\n if (child == null) {\n return;\n }\n callback(child);\n });\n } });\n _.mergeDeep(floatingFilterParams.filterParams, filterDef.filterParams);\n const floatingFilterPromise = this.createFloatingFilter(filterDef, floatingFilterParams);\n if (floatingFilterPromise != null) {\n floatingFilterPromises.push(floatingFilterPromise);\n }\n });\n return AgPromise.all(floatingFilterPromises).then(floatingFilters => {\n floatingFilters.forEach((floatingFilter, index) => {\n this.floatingFilters.push(floatingFilter);\n const gui = floatingFilter.getGui();\n this.appendChild(gui);\n if (index > 0) {\n _.setDisplayed(gui, false);\n }\n });\n });\n }\n onParentModelChanged(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 (event && event.afterFloatingFilter) {\n return;\n }\n this.parentMultiFilterInstance((parent) => {\n if (model == null) {\n this.floatingFilters.forEach((filter, i) => {\n filter.onParentModelChanged(null, event);\n _.setDisplayed(filter.getGui(), i === 0);\n });\n }\n else {\n const lastActiveFloatingFilterIndex = parent.getLastActiveFilterIndex();\n this.floatingFilters.forEach((filter, i) => {\n const filterModel = model.filterModels.length > i ? model.filterModels[i] : null;\n filter.onParentModelChanged(filterModel, event);\n const shouldShow = lastActiveFloatingFilterIndex == null ? i === 0 : i === lastActiveFloatingFilterIndex;\n _.setDisplayed(filter.getGui(), shouldShow);\n });\n }\n });\n }\n destroy() {\n this.destroyBeans(this.floatingFilters);\n this.floatingFilters.length = 0;\n super.destroy();\n }\n createFloatingFilter(filterDef, params) {\n var _a;\n let defaultComponentName = (_a = this.userComponentFactory.getDefaultFloatingFilterType(filterDef, () => this.filterManager.getDefaultFloatingFilter(this.params.column))) !== null && _a !== void 0 ? _a : 'agReadOnlyFloatingFilter';\n const compDetails = this.userComponentFactory.getFloatingFilterCompDetails(filterDef, params, defaultComponentName);\n return compDetails ? compDetails.newAgStackInstance() : null;\n }\n parentMultiFilterInstance(cb) {\n this.params.parentFilterInstance((parent) => {\n if (!(parent instanceof MultiFilter)) {\n throw new Error('AG Grid - MultiFloatingFilterComp expects MultiFilter as its parent');\n }\n cb(parent);\n });\n }\n}\n__decorate$x([\n Autowired('userComponentFactory')\n], MultiFloatingFilterComp.prototype, \"userComponentFactory\", void 0);\n__decorate$x([\n Autowired('filterManager')\n], MultiFloatingFilterComp.prototype, \"filterManager\", void 0);\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nconst VERSION$6 = '30.0.5';\n\nconst MultiFilterModule = {\n version: VERSION$6,\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\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 */\nfunction bindCellRendererToHtmlElement(cellRendererPromise, eTarget) {\n cellRendererPromise.then(cellRenderer => {\n const 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\nvar __decorate$w = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass RichSelectRow extends Component {\n constructor(params) {\n super(/* html */ `
`);\n this.params = params;\n }\n setState(value, valueFormatted, selected) {\n const rendererSuccessful = this.populateWithRenderer(value, valueFormatted);\n if (!rendererSuccessful) {\n this.populateWithoutRenderer(value, valueFormatted);\n }\n this.updateSelected(selected);\n }\n updateSelected(selected) {\n this.addOrRemoveCssClass('ag-rich-select-row-selected', selected);\n }\n populateWithoutRenderer(value, valueFormatted) {\n const valueFormattedExits = valueFormatted !== null && valueFormatted !== undefined;\n const 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 populateWithRenderer(value, valueFormatted) {\n // bad coder here - we are not populating all values of the cellRendererParams\n const params = {\n value: value,\n valueFormatted: valueFormatted,\n api: this.gridOptionsService.api\n };\n const compDetails = this.userComponentFactory.getCellRendererDetails(this.params, params);\n const 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(childComponent => {\n this.addDestroyFunc(() => {\n this.getContext().destroyBean(childComponent);\n });\n });\n return true;\n }\n return false;\n }\n}\n__decorate$w([\n Autowired('userComponentFactory')\n], RichSelectRow.prototype, \"userComponentFactory\", void 0);\n\nvar __decorate$v = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass RichSelectCellEditor extends PopupComponent {\n constructor() {\n super(RichSelectCellEditor.TEMPLATE);\n this.selectionConfirmed = false;\n this.searchString = '';\n }\n init(params) {\n var _a;\n this.params = params;\n this.selectedValue = params.value;\n this.originalSelectedValue = params.value;\n this.focusAfterAttached = params.cellStartedEdit;\n const icon = _.createIconNoSpan('smallDown', this.gridOptionsService);\n icon.classList.add('ag-rich-select-value-icon');\n this.eValue.appendChild(icon);\n this.virtualList = this.createManagedBean(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 const values = params.values;\n this.virtualList.setModel({\n getRowCount: () => values.length,\n getRow: (index) => values[index]\n });\n this.addGuiEventListener('keydown', this.onKeyDown.bind(this));\n const virtualListGui = this.virtualList.getGui();\n this.addManagedListener(virtualListGui, 'click', this.onClick.bind(this));\n this.addManagedListener(virtualListGui, 'mousemove', this.onMouseMove.bind(this));\n const debounceDelay = _.exists(params.searchDebounceDelay) ? params.searchDebounceDelay : 300;\n this.clearSearchString = _.debounce(this.clearSearchString, debounceDelay);\n if (((_a = params.eventKey) === null || _a === void 0 ? void 0 : _a.length) === 1) {\n this.searchText(params.eventKey);\n }\n }\n onKeyDown(event) {\n const 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.onNavigationKeyDown(event, key);\n break;\n default:\n this.searchText(event);\n }\n }\n confirmSelection() {\n this.selectionConfirmed = true;\n }\n onEnterKeyDown() {\n this.confirmSelection();\n this.params.stopEditing();\n }\n onNavigationKeyDown(event, key) {\n // if we don't preventDefault the page body and/or grid scroll will move.\n event.preventDefault();\n const oldIndex = this.params.values.indexOf(this.selectedValue);\n const newIndex = key === KeyCode.UP ? oldIndex - 1 : oldIndex + 1;\n if (newIndex >= 0 && newIndex < this.params.values.length) {\n const valueToSelect = this.params.values[newIndex];\n this.setSelectedValue(valueToSelect);\n }\n }\n searchText(key) {\n if (typeof key !== 'string') {\n let 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 runSearch() {\n const values = this.params.values;\n let searchStrings;\n if (typeof values[0] === 'number' || typeof values[0] === 'string') {\n searchStrings = values.map(v => this.params.formatValue(v));\n }\n if (typeof values[0] === 'object' && this.params.colDef.keyCreator) {\n searchStrings = values.map(value => {\n const 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.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context\n };\n return this.params.colDef.keyCreator(keyParams);\n });\n }\n if (!searchStrings) {\n return;\n }\n const topSuggestion = _.fuzzySuggestions(this.searchString, searchStrings, true)[0];\n if (!topSuggestion) {\n return;\n }\n const topSuggestionIndex = searchStrings.indexOf(topSuggestion);\n const topValue = values[topSuggestionIndex];\n this.setSelectedValue(topValue);\n }\n clearSearchString() {\n this.searchString = '';\n }\n renderSelectedValue() {\n const valueFormatted = this.params.formatValue(this.selectedValue);\n const eValue = this.eValue;\n const params = {\n value: this.selectedValue,\n valueFormatted: valueFormatted,\n api: this.gridOptionsService.api,\n };\n const compDetails = this.userComponentFactory.getCellRendererDetails(this.params, params);\n const promise = compDetails ? compDetails.newAgStackInstance() : undefined;\n if (promise) {\n bindCellRendererToHtmlElement(promise, eValue);\n promise.then(renderer => {\n this.addDestroyFunc(() => this.getContext().destroyBean(renderer));\n });\n }\n else {\n if (_.exists(this.selectedValue)) {\n eValue.innerText = valueFormatted;\n }\n else {\n _.clearElement(eValue);\n }\n }\n }\n setSelectedValue(value) {\n if (this.selectedValue === value) {\n return;\n }\n const 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.forEachRenderedRow((cmp, idx) => {\n cmp.updateSelected(index === idx);\n });\n this.virtualList.focusRow(index);\n }\n createRowComponent(value) {\n const valueFormatted = this.params.formatValue(value);\n const row = new RichSelectRow(this.params);\n this.getContext().createBean(row);\n row.setState(value, valueFormatted, value === this.selectedValue);\n return row;\n }\n onMouseMove(mouseEvent) {\n const rect = this.virtualList.getGui().getBoundingClientRect();\n const scrollTop = this.virtualList.getScrollTop();\n const mouseY = mouseEvent.clientY - rect.top + scrollTop;\n const row = Math.floor(mouseY / this.virtualList.getRowHeight());\n const 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 onClick() {\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 afterGuiAttached() {\n const 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 const indexToSelect = selectedIndex !== -1 ? selectedIndex : 0;\n if (this.params.values.length) {\n this.virtualList.focusRow(indexToSelect);\n }\n else {\n this.getGui().focus();\n }\n }\n }\n getValue() {\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}\n// tab index is needed so we can focus, which is needed for keyboard events\nRichSelectCellEditor.TEMPLATE = `
\n
\n
\n
`;\n__decorate$v([\n Autowired('userComponentFactory')\n], RichSelectCellEditor.prototype, \"userComponentFactory\", void 0);\n__decorate$v([\n RefSelector('eValue')\n], RichSelectCellEditor.prototype, \"eValue\", void 0);\n__decorate$v([\n RefSelector('eList')\n], RichSelectCellEditor.prototype, \"eList\", void 0);\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nconst VERSION$5 = '30.0.5';\n\nconst RichSelectModule = {\n version: VERSION$5,\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\nvar __decorate$u = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass FullStore extends RowNodeBlock {\n constructor(ssrmParams, storeParams, parentRowNode) {\n // finite block represents a cache with just one block, thus 0 is the id, it's the first block\n super(0);\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 }\n postConstruct() {\n this.usingTreeData = this.gridOptionsService.isTreeData();\n this.nodeIdPrefix = this.blockUtils.createNodeIdPrefix(this.parentRowNode);\n if (!this.usingTreeData && this.groupLevel) {\n const groupColVo = this.ssrmParams.rowGroupCols[this.level];\n this.groupField = groupColVo.field;\n this.rowGroupColumn = this.columnModel.getRowGroupColumns()[this.level];\n }\n let initialRowCount = 1;\n const isRootStore = this.parentRowNode.level === -1;\n const userInitialRowCount = this.storeUtils.getServerSideInitialRowCount();\n if (isRootStore && userInitialRowCount !== undefined) {\n initialRowCount = userInitialRowCount;\n }\n this.initialiseRowNodes(initialRowCount);\n this.rowNodeBlockLoader.addBlock(this);\n this.addDestroyFunc(() => this.rowNodeBlockLoader.removeBlock(this));\n }\n destroyRowNodes() {\n this.blockUtils.destroyRowNodes(this.allRowNodes);\n this.allRowNodes = [];\n this.nodesAfterSort = [];\n this.nodesAfterFilter = [];\n this.allNodesMap = {};\n }\n initialiseRowNodes(loadingRowsCount, failedLoad = false) {\n this.destroyRowNodes();\n for (let i = 0; i < loadingRowsCount; i++) {\n const loadingRowNode = this.blockUtils.createRowNode({\n field: this.groupField, group: this.groupLevel, leafGroup: this.leafGroup,\n level: this.level, parent: this.parentRowNode, rowGroupColumn: this.rowGroupColumn\n });\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 getBlockStateJson() {\n return {\n id: this.nodeIdPrefix ? this.nodeIdPrefix : '',\n state: this.getState()\n };\n }\n loadFromDatasource() {\n this.storeUtils.loadFromDatasource({\n startRow: undefined,\n endRow: undefined,\n parentBlock: this,\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 getStartRow() {\n return 0; // always zero as not in a cache\n }\n getEndRow() {\n return this.nodesAfterSort.length;\n }\n createDataNode(data, index) {\n const rowNode = this.blockUtils.createRowNode({\n field: this.groupField, group: this.groupLevel, leafGroup: this.leafGroup,\n level: this.level, parent: this.parentRowNode, rowGroupColumn: this.rowGroupColumn\n });\n if (index != null) {\n _.insertIntoArray(this.allRowNodes, rowNode, index);\n }\n else {\n this.allRowNodes.push(rowNode);\n }\n const 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 prefixId(id) {\n if (this.nodeIdPrefix) {\n return this.nodeIdPrefix + '-' + id;\n }\n else {\n return id.toString();\n }\n }\n processServerFail() {\n this.initialiseRowNodes(1, true);\n this.fireStoreUpdatedEvent();\n this.flushAsyncTransactions();\n }\n processServerResult(params) {\n if (!this.isAlive()) {\n return;\n }\n const info = params.storeInfo || params.groupLevelInfo;\n if (info) {\n Object.assign(this.info, info);\n }\n const 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 const message = '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(() => console.warn(message, 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 createOrRecycleNodes(nodesToRecycle, rowData) {\n if (!rowData) {\n return;\n }\n const lookupNodeToRecycle = (data) => {\n if (!nodesToRecycle) {\n return undefined;\n }\n const getRowIdFunc = this.gridOptionsService.getCallback('getRowId');\n if (!getRowIdFunc) {\n return undefined;\n }\n const parentKeys = this.parentRowNode.getGroupKeys();\n const level = this.level;\n const id = getRowIdFunc({\n data,\n parentKeys: parentKeys.length > 0 ? parentKeys : undefined,\n level,\n });\n const foundNode = nodesToRecycle[id];\n if (!foundNode) {\n return undefined;\n }\n delete nodesToRecycle[id];\n return foundNode;\n };\n const recycleNode = (rowNode, dataItem) => {\n this.allNodesMap[rowNode.id] = rowNode;\n this.blockUtils.updateDataIntoRowNode(rowNode, dataItem);\n this.allRowNodes.push(rowNode);\n };\n rowData.forEach(dataItem => {\n const nodeToRecycle = lookupNodeToRecycle(dataItem);\n if (nodeToRecycle) {\n recycleNode(nodeToRecycle, dataItem);\n }\n else {\n this.createDataNode(dataItem);\n }\n });\n }\n flushAsyncTransactions() {\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(() => this.transactionManager.flushAsyncTransactions(), 0);\n }\n filterAndSortNodes() {\n this.filterRowNodes();\n this.sortRowNodes();\n }\n sortRowNodes() {\n const serverIsSorting = this.storeUtils.isServerSideSortAllLevels() || this.storeUtils.isServerSideSortOnServer();\n const sortOptions = this.sortController.getSortOptions();\n const noSortApplied = !sortOptions || sortOptions.length == 0;\n if (serverIsSorting || noSortApplied) {\n this.nodesAfterSort = this.nodesAfterFilter;\n return;\n }\n this.nodesAfterSort = this.rowNodeSorter.doFullSort(this.nodesAfterFilter, sortOptions);\n }\n filterRowNodes() {\n const serverIsFiltering = !this.storeUtils.isServerSideOnlyRefreshFilteredGroups() || this.storeUtils.isServerSideFilterOnServer();\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 const groupLevel = this.groupLevel;\n if (serverIsFiltering || groupLevel) {\n this.nodesAfterFilter = this.allRowNodes;\n return;\n }\n this.nodesAfterFilter = this.allRowNodes.filter(rowNode => this.filterManager.doesRowPassFilter({ rowNode: rowNode }));\n }\n clearDisplayIndexes() {\n this.displayIndexStart = undefined;\n this.displayIndexEnd = undefined;\n this.allRowNodes.forEach(rowNode => this.blockUtils.clearDisplayIndex(rowNode));\n }\n getDisplayIndexEnd() {\n return this.displayIndexEnd;\n }\n isDisplayIndexInStore(displayIndex) {\n if (this.getRowCount() === 0) {\n return false;\n }\n return displayIndex >= this.displayIndexStart && displayIndex < this.displayIndexEnd;\n }\n setDisplayIndexes(displayIndexSeq, nextRowTop) {\n this.displayIndexStart = displayIndexSeq.peek();\n this.topPx = nextRowTop.value;\n const visibleNodeIds = {};\n // set on all visible nodes\n this.nodesAfterSort.forEach(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(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 forEachStoreDeep(callback, sequence = new NumberSequence()) {\n callback(this, sequence.next());\n this.allRowNodes.forEach(rowNode => {\n const childCache = rowNode.childStore;\n if (childCache) {\n childCache.forEachStoreDeep(callback, sequence);\n }\n });\n }\n forEachNodeDeep(callback, sequence = new NumberSequence()) {\n this.allRowNodes.forEach(rowNode => {\n callback(rowNode, sequence.next());\n const childCache = rowNode.childStore;\n if (childCache) {\n childCache.forEachNodeDeep(callback, sequence);\n }\n });\n }\n forEachNodeDeepAfterFilterAndSort(callback, sequence = new NumberSequence()) {\n this.nodesAfterSort.forEach(rowNode => {\n callback(rowNode, sequence.next());\n const childCache = rowNode.childStore;\n if (childCache) {\n childCache.forEachNodeDeepAfterFilterAndSort(callback, sequence);\n }\n });\n }\n getRowUsingDisplayIndex(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 const res = this.blockUtils.binarySearchForDisplayIndex(displayRowIndex, this.nodesAfterSort);\n return res;\n }\n getRowBounds(index) {\n for (let i = 0; i < this.nodesAfterSort.length; i++) {\n const rowNode = this.nodesAfterSort[i];\n const res = this.blockUtils.extractRowBounds(rowNode, index);\n if (res) {\n return res;\n }\n }\n return null;\n }\n isPixelInRange(pixel) {\n return pixel >= this.topPx && pixel < (this.topPx + this.heightPx);\n }\n getRowIndexAtPixel(pixel) {\n // if pixel before block, return first row\n const pixelBeforeThisStore = pixel <= this.topPx;\n if (pixelBeforeThisStore) {\n const 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 const pixelAfterThisStore = pixel >= (this.topPx + this.heightPx);\n if (pixelAfterThisStore) {\n const lastRowNode = this.nodesAfterSort[this.nodesAfterSort.length - 1];\n const 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 let res = null;\n this.nodesAfterSort.forEach(rowNode => {\n const res2 = this.blockUtils.getIndexAtPixel(rowNode, pixel);\n if (res2 != null) {\n res = res2;\n }\n });\n const pixelIsPastLastRow = res == null;\n if (pixelIsPastLastRow) {\n return this.displayIndexEnd - 1;\n }\n return res;\n }\n getChildStore(keys) {\n return this.storeUtils.getChildStore(keys, this, (key) => {\n const rowNode = this.allRowNodes.find(currentRowNode => {\n return currentRowNode.key == key;\n });\n return rowNode;\n });\n }\n forEachChildStoreShallow(callback) {\n this.allRowNodes.forEach(rowNode => {\n const childStore = rowNode.childStore;\n if (childStore) {\n callback(childStore);\n }\n });\n }\n refreshAfterFilter(params) {\n const serverIsFiltering = this.storeUtils.isServerSideFilterOnServer();\n const storeIsImpacted = this.storeUtils.isServerRefreshNeeded(this.parentRowNode, this.ssrmParams.rowGroupCols, params);\n const serverIsFilteringAllLevels = !this.storeUtils.isServerSideOnlyRefreshFilteredGroups();\n if (serverIsFilteringAllLevels || (serverIsFiltering && storeIsImpacted)) {\n this.refreshStore(true);\n this.sortRowNodes();\n return;\n }\n this.filterRowNodes();\n this.sortRowNodes();\n this.forEachChildStoreShallow(store => store.refreshAfterFilter(params));\n }\n refreshAfterSort(params) {\n const serverIsSorting = this.storeUtils.isServerSideSortOnServer();\n const storeIsImpacted = this.storeUtils.isServerRefreshNeeded(this.parentRowNode, this.ssrmParams.rowGroupCols, params);\n const serverIsSortingAllLevels = this.storeUtils.isServerSideSortAllLevels();\n if (serverIsSortingAllLevels || (serverIsSorting && storeIsImpacted)) {\n this.refreshStore(true);\n this.filterRowNodes();\n return;\n }\n this.filterRowNodes();\n this.sortRowNodes();\n this.forEachChildStoreShallow(store => store.refreshAfterSort(params));\n }\n applyTransaction(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 const applyCallback = this.gridOptionsService.getCallback('isApplyServerSideTransaction');\n if (applyCallback) {\n const params = {\n transaction: transaction,\n parentNode: this.parentRowNode,\n storeInfo: this.info,\n groupLevelInfo: this.info\n };\n const apply = applyCallback(params);\n if (!apply) {\n return { status: ServerSideTransactionResultStatus.Cancelled };\n }\n }\n const res = {\n status: ServerSideTransactionResultStatus.Applied,\n remove: [],\n update: [],\n add: []\n };\n const 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 updateSelection(nodesToUnselect) {\n const selectionChanged = nodesToUnselect.length > 0;\n if (selectionChanged) {\n this.selectionService.setNodesSelected({\n newValue: false,\n nodes: nodesToUnselect,\n suppressFinishActions: true,\n clearSelection: false,\n source: 'rowDataChanged',\n });\n const event = {\n type: Events.EVENT_SELECTION_CHANGED,\n source: 'rowDataChanged'\n };\n this.eventService.dispatchEvent(event);\n }\n }\n executeAdd(rowDataTran, rowNodeTransaction) {\n const { add, addIndex } = rowDataTran;\n if (_.missingOrEmpty(add)) {\n return;\n }\n const useIndex = typeof addIndex === 'number' && addIndex >= 0;\n if (useIndex) {\n // items get inserted in reverse order for index insertion\n add.reverse().forEach(item => {\n const newRowNode = this.createDataNode(item, addIndex);\n rowNodeTransaction.add.push(newRowNode);\n });\n }\n else {\n add.forEach(item => {\n const newRowNode = this.createDataNode(item);\n rowNodeTransaction.add.push(newRowNode);\n });\n }\n }\n executeRemove(rowDataTran, rowNodeTransaction, nodesToUnselect) {\n const { remove } = rowDataTran;\n if (remove == null) {\n return;\n }\n const rowIdsRemoved = {};\n remove.forEach(item => {\n const 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(rowNode => !rowIdsRemoved[rowNode.id]);\n }\n executeUpdate(rowDataTran, rowNodeTransaction, nodesToUnselect) {\n const { update } = rowDataTran;\n if (update == null) {\n return;\n }\n update.forEach(item => {\n const rowNode = this.lookupRowNode(item);\n if (!rowNode) {\n return;\n }\n this.blockUtils.updateDataIntoRowNode(rowNode, item);\n if (!rowNode.selectable && rowNode.isSelected()) {\n nodesToUnselect.push(rowNode);\n }\n rowNodeTransaction.update.push(rowNode);\n });\n }\n lookupRowNode(data) {\n const getRowIdFunc = this.gridOptionsService.getCallback('getRowId');\n let rowNode;\n if (getRowIdFunc != null) {\n // find rowNode using id\n const level = this.level;\n const parentKeys = this.parentRowNode.getGroupKeys();\n const id = getRowIdFunc({\n data,\n parentKeys: parentKeys.length > 0 ? parentKeys : undefined,\n level,\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(currentRowNode => 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 addStoreStates(result) {\n result.push({\n suppressInfiniteScroll: true,\n route: this.parentRowNode.getGroupKeys(),\n rowCount: this.allRowNodes.length,\n info: this.info\n });\n this.forEachChildStoreShallow(childStore => childStore.addStoreStates(result));\n }\n refreshStore(purge) {\n if (purge) {\n const loadingRowsToShow = this.nodesAfterSort ? this.nodesAfterSort.length : 1;\n this.initialiseRowNodes(loadingRowsToShow);\n }\n this.scheduleLoad();\n this.fireStoreUpdatedEvent();\n }\n retryLoads() {\n if (this.getState() === RowNodeBlock.STATE_FAILED) {\n this.initialiseRowNodes(1);\n this.scheduleLoad();\n }\n this.forEachChildStoreShallow(store => store.retryLoads());\n }\n scheduleLoad() {\n this.setStateWaitingToLoad();\n this.rowNodeBlockLoader.checkBlockToLoad();\n }\n // gets called 1) row count changed 2) cache purged 3) items inserted\n fireStoreUpdatedEvent() {\n // this results in row model firing ModelUpdated.\n // server side row model also updates the row indexes first\n const event = {\n type: Events.EVENT_STORE_UPDATED\n };\n this.eventService.dispatchEvent(event);\n }\n getRowCount() {\n return this.nodesAfterSort.length;\n }\n getTopLevelRowDisplayedIndex(topLevelIndex) {\n const rowNode = this.nodesAfterSort[topLevelIndex];\n return rowNode.rowIndex;\n }\n isLastRowIndexKnown() {\n return this.getState() == RowNodeBlock.STATE_LOADED;\n }\n getRowNodesInRange(firstInRange, lastInRange) {\n const result = [];\n let 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(rowNode => {\n const 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 const invalidRange = inActiveRange;\n return invalidRange ? [] : result;\n }\n getStoreBounds() {\n return {\n topPx: this.topPx,\n heightPx: this.heightPx,\n };\n }\n}\n__decorate$u([\n Autowired('ssrmStoreUtils')\n], FullStore.prototype, \"storeUtils\", void 0);\n__decorate$u([\n Autowired('ssrmBlockUtils')\n], FullStore.prototype, \"blockUtils\", void 0);\n__decorate$u([\n Autowired('columnModel')\n], FullStore.prototype, \"columnModel\", void 0);\n__decorate$u([\n Autowired('rowNodeBlockLoader')\n], FullStore.prototype, \"rowNodeBlockLoader\", void 0);\n__decorate$u([\n Autowired('rowNodeSorter')\n], FullStore.prototype, \"rowNodeSorter\", void 0);\n__decorate$u([\n Autowired('sortController')\n], FullStore.prototype, \"sortController\", void 0);\n__decorate$u([\n Autowired('selectionService')\n], FullStore.prototype, \"selectionService\", void 0);\n__decorate$u([\n Autowired('ssrmNodeManager')\n], FullStore.prototype, \"nodeManager\", void 0);\n__decorate$u([\n Autowired('filterManager')\n], FullStore.prototype, \"filterManager\", void 0);\n__decorate$u([\n Autowired('ssrmTransactionManager')\n], FullStore.prototype, \"transactionManager\", void 0);\n__decorate$u([\n PostConstruct\n], FullStore.prototype, \"postConstruct\", null);\n__decorate$u([\n PreDestroy\n], FullStore.prototype, \"destroyRowNodes\", null);\n\nvar __decorate$t = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass LazyBlockLoader extends BeanStub {\n constructor(cache, parentNode, storeParams) {\n super();\n this.loadingNodes = new Set();\n this.checkForLoadQueued = false;\n this.loaderTimeout = undefined;\n this.nextBlockToLoad = undefined;\n this.parentNode = parentNode;\n this.cache = cache;\n this.storeParams = storeParams;\n }\n init() {\n this.addManagedListener(this.rowNodeBlockLoader, RowNodeBlockLoader.BLOCK_LOADED_EVENT, () => this.queueLoadAction());\n }\n isRowLoading(index) {\n return this.loadingNodes.has(index);\n }\n getBlockToLoad() {\n var _a;\n const firstRowInViewport = this.api.getFirstDisplayedRow();\n const lastRowInViewport = this.api.getLastDisplayedRow();\n // quick look-up for priority rows needing loading in viewport.\n for (let i = firstRowInViewport; i <= lastRowInViewport; i++) {\n const node = this.cache.getNodeCachedByDisplayIndex(i);\n if (!node) {\n // if no row details, ignore, as row hasn't been created\n // and it's too expensive to work out its location here\n continue;\n }\n const lazyNode = this.cache.getNodes().getBy('node', node);\n if (!lazyNode) {\n continue;\n }\n if (this.isRowLoading(lazyNode.index)) {\n continue;\n }\n if (node.__needsRefreshWhenVisible || (node.stub && !node.failedLoad)) {\n return this.getBlockStartIndexForIndex(lazyNode.index);\n }\n }\n const nodesToRefresh = this.cache.getNodesToRefresh();\n let nodeToRefresh = null;\n let nodeToRefreshDist = Number.MAX_SAFE_INTEGER;\n nodesToRefresh.forEach(node => {\n if (node.rowIndex == null) {\n nodeToRefresh = node;\n return;\n }\n const distToViewportTop = Math.abs(firstRowInViewport - node.rowIndex);\n const distToViewportBottom = Math.abs(node.rowIndex - lastRowInViewport);\n if (distToViewportTop < nodeToRefreshDist) {\n nodeToRefresh = node;\n nodeToRefreshDist = distToViewportTop;\n }\n if (distToViewportBottom < nodeToRefreshDist) {\n nodeToRefresh = node;\n nodeToRefreshDist = distToViewportBottom;\n }\n });\n const lazyIndex = (_a = this.cache.getNodes().getBy('node', nodeToRefresh)) === null || _a === void 0 ? void 0 : _a.index;\n return lazyIndex == null ? undefined : this.getBlockStartIndexForIndex(lazyIndex);\n }\n reset() {\n this.loadingNodes.clear();\n clearTimeout(this.loaderTimeout);\n this.loaderTimeout = undefined;\n }\n executeLoad(startRow, endRow) {\n var _a;\n const ssrmParams = this.cache.getSsrmParams();\n const request = {\n startRow,\n endRow,\n rowGroupCols: ssrmParams.rowGroupCols,\n valueCols: ssrmParams.valueCols,\n pivotCols: ssrmParams.pivotCols,\n pivotMode: ssrmParams.pivotMode,\n groupKeys: this.parentNode.getGroupKeys(),\n filterModel: ssrmParams.filterModel,\n sortModel: ssrmParams.sortModel,\n };\n const removeNodesFromLoadingMap = () => {\n for (let i = 0; i < endRow - startRow; i++) {\n this.loadingNodes.delete(startRow + i);\n }\n };\n const addNodesToLoadingMap = () => {\n for (let i = 0; i < endRow - startRow; i++) {\n this.loadingNodes.add(startRow + i);\n }\n };\n const success = (params) => {\n this.rowNodeBlockLoader.loadComplete();\n this.cache.onLoadSuccess(startRow, endRow - startRow, params);\n removeNodesFromLoadingMap();\n this.queueLoadAction();\n };\n const fail = () => {\n this.rowNodeBlockLoader.loadComplete();\n this.cache.onLoadFailed(startRow, endRow - startRow);\n removeNodesFromLoadingMap();\n this.queueLoadAction();\n };\n const params = {\n request,\n successCallback: (rowData, rowCount) => success({ rowData, rowCount }),\n success,\n failCallback: fail,\n fail,\n parentNode: this.parentNode,\n api: this.api,\n columnApi: this.columnApi,\n context: this.gridOptionsService.context\n };\n addNodesToLoadingMap();\n (_a = this.cache.getSsrmParams().datasource) === null || _a === void 0 ? void 0 : _a.getRows(params);\n }\n getNextBlockToLoad() {\n const result = this.getBlockToLoad();\n if (result != null && result < 0) {\n this.getBlockToLoad();\n }\n if (result != null) {\n return [String(result), result + this.getBlockSize()];\n }\n return null;\n }\n queueLoadCheck() {\n // already going to check next cycle, ignore.\n if (this.checkForLoadQueued) {\n return;\n }\n this.checkForLoadQueued = true;\n window.queueMicrotask(() => {\n this.checkForLoadQueued = false;\n this.queueLoadAction();\n });\n }\n queueLoadAction() {\n var _a;\n const nextBlockToLoad = this.getNextBlockToLoad();\n if (!nextBlockToLoad) {\n // there's no block we should be loading right now, clear the timeouts\n window.clearTimeout(this.loaderTimeout);\n this.loaderTimeout = undefined;\n this.nextBlockToLoad = undefined;\n return;\n }\n // if the next required block has changed, reset the loading timeout\n if (!this.nextBlockToLoad || (this.nextBlockToLoad[0] !== nextBlockToLoad[0] && this.nextBlockToLoad[1] !== nextBlockToLoad[1])) {\n this.nextBlockToLoad = nextBlockToLoad;\n window.clearTimeout(this.loaderTimeout);\n const [startRowString, endRow] = this.nextBlockToLoad;\n const startRow = Number(startRowString);\n this.loaderTimeout = window.setTimeout(() => {\n if (!this.cache.isAlive()) {\n return;\n }\n this.loaderTimeout = undefined;\n this.attemptLoad(startRow, endRow);\n this.nextBlockToLoad = undefined;\n }, (_a = this.gridOptionsService.getNum('blockLoadDebounceMillis')) !== null && _a !== void 0 ? _a : 0);\n }\n }\n attemptLoad(start, end) {\n const availableLoadingCount = this.rowNodeBlockLoader.getAvailableLoadingCount();\n // too many loads already, ignore the request as a successful request will requeue itself anyway\n if (availableLoadingCount != null && availableLoadingCount === 0) {\n return;\n }\n this.rowNodeBlockLoader.registerLoads(1);\n this.executeLoad(start, end);\n this.queueLoadAction();\n }\n getBlockSize() {\n return this.storeParams.cacheBlockSize || LazyBlockLoader.DEFAULT_BLOCK_SIZE;\n }\n getBlockStartIndexForIndex(storeIndex) {\n const blockSize = this.getBlockSize();\n return storeIndex - (storeIndex % blockSize);\n }\n getBlockBoundsForIndex(storeIndex) {\n const startOfBlock = this.getBlockStartIndexForIndex(storeIndex);\n const blockSize = this.getBlockSize();\n return [startOfBlock, startOfBlock + blockSize];\n }\n}\nLazyBlockLoader.DEFAULT_BLOCK_SIZE = 100;\n__decorate$t([\n Autowired('gridApi')\n], LazyBlockLoader.prototype, \"api\", void 0);\n__decorate$t([\n Autowired('columnApi')\n], LazyBlockLoader.prototype, \"columnApi\", void 0);\n__decorate$t([\n Autowired('rowNodeBlockLoader')\n], LazyBlockLoader.prototype, \"rowNodeBlockLoader\", void 0);\n__decorate$t([\n PostConstruct\n], LazyBlockLoader.prototype, \"init\", null);\n\nclass MultiIndexMap {\n constructor(...indexes) {\n if (indexes.length < 1) {\n throw new Error('AG Grid: At least one index must be provided.');\n }\n this.indexes = indexes;\n this.maps = new Map(this.indexes.map(index => [index, new Map()]));\n }\n getBy(index, key) {\n const map = this.maps.get(index);\n if (!map) {\n throw new Error(`AG Grid: ${String(index)} not found`);\n }\n return map.get(key);\n }\n set(item) {\n this.indexes.forEach(index => {\n const map = this.maps.get(index);\n if (!map) {\n throw new Error(`AG Grid: ${String(index)} not found`);\n }\n map.set(item[index], item);\n });\n }\n delete(item) {\n this.indexes.forEach(index => {\n const map = this.maps.get(index);\n if (!map) {\n throw new Error(`AG Grid: ${String(index)} not found`);\n }\n map.delete(item[index]);\n });\n }\n clear() {\n this.maps.forEach(map => map.clear());\n }\n getIterator(index) {\n const map = this.maps.get(index);\n if (!map) {\n throw new Error(`AG Grid: ${String(index)} not found`);\n }\n return map.values();\n }\n forEach(callback) {\n const iterator = this.getIterator(this.indexes[0]);\n let pointer;\n while (pointer = iterator.next()) {\n if (pointer.done)\n break;\n callback(pointer.value);\n }\n }\n find(callback) {\n const iterator = this.getIterator(this.indexes[0]);\n let pointer;\n while (pointer = iterator.next()) {\n if (pointer.done)\n break;\n if (callback(pointer.value)) {\n return pointer.value;\n }\n }\n }\n filter(predicate) {\n const iterator = this.getIterator(this.indexes[0]);\n let pointer;\n const result = [];\n while (pointer = iterator.next()) {\n if (pointer.done)\n break;\n if (predicate(pointer.value)) {\n result.push(pointer.value);\n }\n }\n return result;\n }\n}\n\nvar __decorate$s = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass LazyCache extends BeanStub {\n constructor(store, numberOfRows, storeParams) {\n super();\n /**\n * Indicates whether this is still the live dataset for this store (used for ignoring old requests after purge)\n */\n this.live = true;\n /**\n * A cache of removed group nodes, this is retained for preserving group\n * state when the node moves in and out of the cache. Generally caused by\n * rows moving blocks.\n */\n this.removedNodeCache = new Map();\n this.store = store;\n this.numberOfRows = numberOfRows;\n this.isLastRowKnown = false;\n this.storeParams = storeParams;\n }\n init() {\n // initiate the node map to be indexed at 'index', 'id' and 'node' for quick look-up.\n // it's important id isn't first, as stub nodes overwrite each-other, and the first index is\n // used for iteration.\n this.nodeMap = new MultiIndexMap('index', 'id', 'node');\n this.nodeDisplayIndexMap = new Map();\n this.nodesToRefresh = new Set();\n this.defaultNodeIdPrefix = this.blockUtils.createNodeIdPrefix(this.store.getParentNode());\n this.rowLoader = this.createManagedBean(new LazyBlockLoader(this, this.store.getParentNode(), this.storeParams));\n this.getRowIdFunc = this.gridOptionsService.getCallback('getRowId');\n this.isMasterDetail = this.gridOptionsService.isMasterDetail();\n }\n destroyRowNodes() {\n this.numberOfRows = 0;\n this.nodeMap.forEach(node => this.blockUtils.destroyRowNode(node.node));\n this.nodeMap.clear();\n this.nodeDisplayIndexMap.clear();\n this.nodesToRefresh.clear();\n this.live = false;\n }\n /**\n * Get the row node for a specific display index from this store\n * @param displayIndex the display index of the node to find\n * @returns undefined if the node is not in the store bounds, otherwise will always return a node\n */\n getRowByDisplayIndex(displayIndex) {\n var _a, _b, _c, _d;\n // if index isn't in store, nothing to return\n if (!this.store.isDisplayIndexInStore(displayIndex)) {\n return undefined;\n }\n // first try to directly look this node up in the display index map\n const node = this.nodeDisplayIndexMap.get(displayIndex);\n if (node) {\n // if we have the node, check if it needs refreshed when rendered\n if (node.stub || node.__needsRefreshWhenVisible) {\n this.rowLoader.queueLoadCheck();\n }\n return node;\n }\n // next check if this is the first row, if so return a stub node\n // this is a performance optimisation, as it is the most common scenario\n // and enables the node - 1 check to kick in more often.\n if (displayIndex === this.store.getDisplayIndexStart()) {\n return this.createStubNode(0, displayIndex);\n }\n // check if the row immediately prior is available in the store\n const contiguouslyPreviousNode = this.nodeDisplayIndexMap.get(displayIndex - 1);\n if (contiguouslyPreviousNode) {\n // if previous row is master detail, and expanded, this node must be detail\n if (this.isMasterDetail && contiguouslyPreviousNode.master && contiguouslyPreviousNode.expanded) {\n return contiguouslyPreviousNode.detailNode;\n }\n // if previous row is expanded group, this node will belong to that group.\n if (contiguouslyPreviousNode.expanded && ((_a = contiguouslyPreviousNode.childStore) === null || _a === void 0 ? void 0 : _a.isDisplayIndexInStore(displayIndex))) {\n return (_b = contiguouslyPreviousNode.childStore) === null || _b === void 0 ? void 0 : _b.getRowUsingDisplayIndex(displayIndex);\n }\n // otherwise, row must be a stub node\n const lazyCacheNode = this.nodeMap.getBy('node', contiguouslyPreviousNode);\n return this.createStubNode(lazyCacheNode.index + 1, displayIndex);\n }\n const adjacentNodes = this.getSurroundingNodesByDisplayIndex(displayIndex);\n // if no bounds skipped includes this, calculate from end index\n if (adjacentNodes == null) {\n const storeIndexFromEndIndex = this.store.getRowCount() - (this.store.getDisplayIndexEnd() - displayIndex);\n return this.createStubNode(storeIndexFromEndIndex, displayIndex);\n }\n const { previousNode, nextNode } = adjacentNodes;\n // if the node before this node is expanded, this node might be a child of that node\n if (previousNode && previousNode.node.expanded && ((_c = previousNode.node.childStore) === null || _c === void 0 ? void 0 : _c.isDisplayIndexInStore(displayIndex))) {\n return (_d = previousNode.node.childStore) === null || _d === void 0 ? void 0 : _d.getRowUsingDisplayIndex(displayIndex);\n }\n // if we have the node after this node, we can calculate the store index of this node by the difference\n // in display indexes between the two nodes.\n if (nextNode) {\n const displayIndexDiff = nextNode.node.rowIndex - displayIndex;\n const newStoreIndex = nextNode.index - displayIndexDiff;\n return this.createStubNode(newStoreIndex, displayIndex);\n }\n // if no next node, calculate from end index of this store\n const storeIndexFromEndIndex = this.store.getRowCount() - (this.store.getDisplayIndexEnd() - displayIndex);\n return this.createStubNode(storeIndexFromEndIndex, displayIndex);\n }\n /**\n * Used for creating and positioning a stub node without firing a store updated event\n */\n createStubNode(storeIndex, displayIndex) {\n // bounds are acquired before creating the node, as otherwise it'll use it's own empty self to calculate\n const rowBounds = this.store.getRowBounds(displayIndex);\n const newNode = this.createRowAtIndex(storeIndex, null, node => {\n node.setRowIndex(displayIndex);\n node.setRowTop(rowBounds.rowTop);\n this.nodeDisplayIndexMap.set(displayIndex, node);\n });\n this.rowLoader.queueLoadCheck();\n return newNode;\n }\n /**\n * @param index The row index relative to this store\n * @returns A rowNode at the given store index\n */\n getRowByStoreIndex(index) {\n var _a;\n return (_a = this.nodeMap.getBy('index', index)) === null || _a === void 0 ? void 0 : _a.node;\n }\n /**\n * Given a number of rows, skips through the given sequence & row top reference (using default row height)\n * @param numberOfRowsToSkip number of rows to skip over in the given sequence\n * @param displayIndexSeq the sequence in which to skip\n * @param nextRowTop the row top reference in which to skip\n */\n skipDisplayIndexes(numberOfRowsToSkip, displayIndexSeq, nextRowTop) {\n if (numberOfRowsToSkip === 0) {\n return;\n }\n const defaultRowHeight = this.gridOptionsService.getRowHeightAsNumber();\n displayIndexSeq.skip(numberOfRowsToSkip);\n nextRowTop.value += numberOfRowsToSkip * defaultRowHeight;\n }\n /**\n * @param displayIndexSeq the number sequence for generating the display index of each row\n * @param nextRowTop an object containing the next row top value intended to be modified by ref per row\n */\n setDisplayIndexes(displayIndexSeq, nextRowTop) {\n // Create a map of display index nodes for access speed\n this.nodeDisplayIndexMap.clear();\n // create an object indexed by store index, as this will sort all of the nodes when we iterate\n // the object\n const orderedMap = {};\n this.nodeMap.forEach(lazyNode => {\n orderedMap[lazyNode.index] = lazyNode.node;\n });\n let lastIndex = -1;\n // iterate over the nodes in order, setting the display index on each node.\n for (const stringIndex in orderedMap) {\n const node = orderedMap[stringIndex];\n const numericIndex = Number(stringIndex);\n // if any nodes aren't currently in the store, skip the display indexes too\n const numberOfRowsToSkip = (numericIndex - 1) - lastIndex;\n this.skipDisplayIndexes(numberOfRowsToSkip, displayIndexSeq, nextRowTop);\n // set this nodes index and row top\n this.blockUtils.setDisplayIndex(node, displayIndexSeq, nextRowTop);\n this.nodeDisplayIndexMap.set(node.rowIndex, node);\n // store this index for skipping after this\n lastIndex = numericIndex;\n }\n // need to skip rows until the end of this store\n const numberOfRowsToSkip = (this.numberOfRows - 1) - lastIndex;\n this.skipDisplayIndexes(numberOfRowsToSkip, displayIndexSeq, nextRowTop);\n // this is not terribly efficient, and could probs be improved\n this.purgeExcessRows();\n }\n getRowCount() {\n return this.numberOfRows;\n }\n setRowCount(rowCount, isLastRowIndexKnown) {\n if (rowCount < 0) {\n throw new Error('AG Grid: setRowCount can only accept a positive row count.');\n }\n this.numberOfRows = rowCount;\n if (isLastRowIndexKnown != null) {\n this.isLastRowKnown = isLastRowIndexKnown;\n if (isLastRowIndexKnown === false) {\n this.numberOfRows += 1;\n }\n }\n this.fireStoreUpdatedEvent();\n }\n getNodes() {\n return this.nodeMap;\n }\n getNodeCachedByDisplayIndex(displayIndex) {\n var _a;\n return (_a = this.nodeDisplayIndexMap.get(displayIndex)) !== null && _a !== void 0 ? _a : null;\n }\n getNodesToRefresh() {\n return this.nodesToRefresh;\n }\n /**\n * @returns the previous and next loaded row nodes surrounding the given display index\n */\n getSurroundingNodesByDisplayIndex(displayIndex) {\n let nextNode;\n let previousNode;\n this.nodeMap.forEach(lazyNode => {\n // previous node\n if (displayIndex > lazyNode.node.rowIndex) {\n // get the largest previous node\n if (previousNode == null || previousNode.node.rowIndex < lazyNode.node.rowIndex) {\n previousNode = lazyNode;\n }\n return;\n }\n // next node\n // get the smallest next node\n if (nextNode == null || nextNode.node.rowIndex > lazyNode.node.rowIndex) {\n nextNode = lazyNode;\n return;\n }\n });\n if (!previousNode && !nextNode)\n return null;\n return { previousNode, nextNode };\n }\n /**\n * Get or calculate the display index for a given store index\n * @param storeIndex the rows index within this store\n * @returns the rows visible display index relative to the grid\n */\n getDisplayIndexFromStoreIndex(storeIndex) {\n var _a, _b;\n const nodeAtIndex = this.nodeMap.getBy('index', storeIndex);\n if (nodeAtIndex) {\n return nodeAtIndex.node.rowIndex;\n }\n let nextNode;\n let previousNode;\n this.nodeMap.forEach(lazyNode => {\n // previous node\n if (storeIndex > lazyNode.index) {\n // get the largest previous node\n if (previousNode == null || previousNode.index < lazyNode.index) {\n previousNode = lazyNode;\n }\n return;\n }\n // next node\n // get the smallest next node\n if (nextNode == null || nextNode.index > lazyNode.index) {\n nextNode = lazyNode;\n return;\n }\n });\n if (!nextNode) {\n return this.store.getDisplayIndexEnd() - (this.numberOfRows - storeIndex);\n }\n if (!previousNode) {\n return this.store.getDisplayIndexStart() + storeIndex;\n }\n const storeIndexDiff = storeIndex - previousNode.index;\n const previousDisplayIndex = ((_b = (_a = previousNode.node.childStore) === null || _a === void 0 ? void 0 : _a.getDisplayIndexEnd()) !== null && _b !== void 0 ? _b : previousNode.node.rowIndex);\n return previousDisplayIndex + storeIndexDiff;\n }\n /**\n * Creates a new row and inserts it at the given index\n * @param atStoreIndex the node index relative to this store\n * @param data the data object to populate the node with\n * @returns the new row node\n */\n createRowAtIndex(atStoreIndex, data, createNodeCallback) {\n var _a, _b;\n // make sure an existing node isn't being overwritten\n const lazyNode = this.nodeMap.getBy('index', atStoreIndex);\n // if node already exists, update it or destroy it\n if (lazyNode) {\n const { node } = lazyNode;\n this.nodesToRefresh.delete(node);\n node.__needsRefreshWhenVisible = false;\n // if the node is the same, just update the content\n if (this.doesNodeMatch(data, node)) {\n this.blockUtils.updateDataIntoRowNode(node, data);\n return node;\n }\n // if there's no id and this is an open group, protect this node from changes\n if (this.getRowIdFunc == null && node.group && node.expanded) {\n return node;\n }\n // destroy the old node, might be worth caching state here\n this.destroyRowAtIndex(atStoreIndex);\n }\n // if the node already exists elsewhere, update it and move it to the new location\n if (data && this.getRowIdFunc != null) {\n const id = this.getRowId(data);\n // the node was deleted at some point, but as we're refreshing\n // it's been cached and we can retrieve it for reuse.\n const deletedNode = id && ((_a = this.removedNodeCache) === null || _a === void 0 ? void 0 : _a.get(id));\n if (deletedNode) {\n (_b = this.removedNodeCache) === null || _b === void 0 ? void 0 : _b.delete(id);\n this.blockUtils.updateDataIntoRowNode(deletedNode, data);\n this.nodeMap.set({\n id: deletedNode.id,\n node: deletedNode,\n index: atStoreIndex\n });\n return deletedNode;\n }\n const lazyNode = this.nodeMap.getBy('id', id);\n if (lazyNode) {\n // delete old lazy node so we can insert it at different location\n this.nodeMap.delete(lazyNode);\n const { node, index } = lazyNode;\n this.blockUtils.updateDataIntoRowNode(node, data);\n this.nodeMap.set({\n id: node.id,\n node,\n index: atStoreIndex\n });\n this.nodesToRefresh.delete(node);\n if (this.rowLoader.getBlockStartIndexForIndex(index) === this.rowLoader.getBlockStartIndexForIndex(atStoreIndex)) {\n // if the block hasn't changed and we have a nodes map, we don't need to refresh the original block, as this block\n // has just been refreshed.\n return node;\n }\n // mark all of the old block as needsVerify to trigger it for a refresh, as nodes\n // should not be out of place\n this.markBlockForVerify(index);\n return node;\n }\n }\n // node doesn't exist, create a new one\n const newNode = this.blockUtils.createRowNode(this.store.getRowDetails());\n if (data != null) {\n const defaultId = this.getPrefixedId(this.store.getIdSequence().next());\n this.blockUtils.setDataIntoRowNode(newNode, data, defaultId, undefined);\n this.blockUtils.checkOpenByDefault(newNode);\n this.nodeManager.addRowNode(newNode);\n }\n // add the new node to the store, has to be done after the display index is calculated so it doesn't take itself into account\n this.nodeMap.set({\n id: newNode.id,\n node: newNode,\n index: atStoreIndex,\n });\n if (createNodeCallback) {\n createNodeCallback(newNode);\n }\n return newNode;\n }\n getBlockStates() {\n const blockCounts = {};\n const blockStates = {};\n this.nodeMap.forEach(({ node, index }) => {\n var _a;\n const blockStart = this.rowLoader.getBlockStartIndexForIndex(index);\n if (!node.stub && !node.failedLoad) {\n blockCounts[blockStart] = ((_a = blockCounts[blockStart]) !== null && _a !== void 0 ? _a : 0) + 1;\n }\n let rowState = 'loaded';\n if (node.failedLoad) {\n rowState = 'failed';\n }\n else if (this.rowLoader.isRowLoading(blockStart)) {\n rowState = 'loading';\n }\n else if (this.nodesToRefresh.has(node) || node.stub) {\n rowState = 'needsLoading';\n }\n if (!blockStates[blockStart]) {\n blockStates[blockStart] = new Set();\n }\n blockStates[blockStart].add(rowState);\n });\n const statePriorityMap = {\n loading: 4,\n failed: 3,\n needsLoading: 2,\n loaded: 1,\n };\n const blockPrefix = this.blockUtils.createNodeIdPrefix(this.store.getParentNode());\n const results = {};\n Object.entries(blockStates).forEach(([blockStart, uniqueStates]) => {\n var _a;\n const sortedStates = [...uniqueStates].sort((a, b) => { var _a, _b; return ((_a = statePriorityMap[a]) !== null && _a !== void 0 ? _a : 0) - ((_b = statePriorityMap[b]) !== null && _b !== void 0 ? _b : 0); });\n const priorityState = sortedStates[0];\n const blockNumber = Number(blockStart) / this.rowLoader.getBlockSize();\n const blockId = blockPrefix ? `${blockPrefix}-${blockNumber}` : String(blockNumber);\n results[blockId] = {\n blockNumber,\n startRow: Number(blockStart),\n endRow: Number(blockStart) + this.rowLoader.getBlockSize(),\n pageStatus: priorityState,\n loadedRowCount: (_a = blockCounts[blockStart]) !== null && _a !== void 0 ? _a : 0,\n };\n });\n return results;\n }\n destroyRowAtIndex(atStoreIndex) {\n const lazyNode = this.nodeMap.getBy('index', atStoreIndex);\n if (!lazyNode) {\n return;\n }\n this.nodeMap.delete(lazyNode);\n this.nodeDisplayIndexMap.delete(lazyNode.node.rowIndex);\n this.nodesToRefresh.delete(lazyNode.node);\n if (lazyNode.node.group && this.nodesToRefresh.size > 0) {\n // while refreshing, we retain the group nodes so they can be moved\n // without losing state\n this.removedNodeCache.set(lazyNode.node.id, lazyNode.node);\n }\n else {\n this.blockUtils.destroyRowNode(lazyNode.node);\n }\n }\n getSsrmParams() {\n return this.store.getSsrmParams();\n }\n /**\n * @param id the base id to be prefixed\n * @returns a node id with prefix if required\n */\n getPrefixedId(id) {\n if (this.defaultNodeIdPrefix) {\n return this.defaultNodeIdPrefix + '-' + id;\n }\n else {\n return id.toString();\n }\n }\n markBlockForVerify(rowIndex) {\n const [start, end] = this.rowLoader.getBlockBoundsForIndex(rowIndex);\n const lazyNodesInRange = this.nodeMap.filter((lazyNode) => lazyNode.index >= start && lazyNode.index < end);\n lazyNodesInRange.forEach(({ node }) => {\n node.__needsRefreshWhenVisible = true;\n });\n }\n doesNodeMatch(data, node) {\n if (node.stub) {\n return false;\n }\n if (this.getRowIdFunc != null) {\n const id = this.getRowId(data);\n return node.id === id;\n }\n return node.data === data;\n }\n /**\n * Deletes any stub nodes not within the given range\n */\n purgeStubsOutsideOfViewport() {\n const firstRow = this.api.getFirstDisplayedRow();\n const lastRow = this.api.getLastDisplayedRow();\n const firstRowBlockStart = this.rowLoader.getBlockStartIndexForIndex(firstRow);\n const [_, lastRowBlockEnd] = this.rowLoader.getBlockBoundsForIndex(lastRow);\n this.nodeMap.forEach(lazyNode => {\n // failed loads are still useful, so we don't purge them\n if (this.rowLoader.isRowLoading(lazyNode.index) || lazyNode.node.failedLoad) {\n return;\n }\n if (lazyNode.node.stub && (lazyNode.index < firstRowBlockStart || lazyNode.index > lastRowBlockEnd)) {\n this.destroyRowAtIndex(lazyNode.index);\n }\n });\n }\n getBlocksDistanceFromRow(nodes, otherDisplayIndex) {\n const blockDistanceToMiddle = {};\n nodes.forEach(({ node, index }) => {\n const [blockStart, blockEnd] = this.rowLoader.getBlockBoundsForIndex(index);\n if (blockStart in blockDistanceToMiddle) {\n return;\n }\n const distStart = Math.abs(node.rowIndex - otherDisplayIndex);\n let distEnd;\n // may not have an end node if the block came back small \n const lastLazyNode = this.nodeMap.getBy('index', [blockEnd - 1]);\n if (lastLazyNode)\n distEnd = Math.abs(lastLazyNode.node.rowIndex - otherDisplayIndex);\n const farthest = distEnd == null || distStart < distEnd ? distStart : distEnd;\n blockDistanceToMiddle[blockStart] = farthest;\n });\n return Object.entries(blockDistanceToMiddle);\n }\n purgeExcessRows() {\n var _a;\n // Delete all stub nodes which aren't in the viewport or already loading\n this.purgeStubsOutsideOfViewport();\n if (this.store.getDisplayIndexEnd() == null || this.storeParams.maxBlocksInCache == null) {\n // if group is collapsed, or max blocks missing, ignore the event\n return;\n }\n const firstRowInViewport = this.api.getFirstDisplayedRow();\n const lastRowInViewport = this.api.getLastDisplayedRow();\n // the start storeIndex of every block in this store\n const allLoadedBlocks = new Set();\n // the start storeIndex of every displayed block in this store\n const blocksInViewport = new Set();\n this.nodeMap.forEach(({ index, node }) => {\n const blockStart = this.rowLoader.getBlockStartIndexForIndex(index);\n allLoadedBlocks.add(blockStart);\n const isInViewport = node.rowIndex >= firstRowInViewport && node.rowIndex <= lastRowInViewport;\n if (isInViewport) {\n blocksInViewport.add(blockStart);\n }\n });\n // if the viewport is larger than the max blocks, then the viewport size is minimum cache size\n const numberOfBlocksToRetain = Math.max(blocksInViewport.size, (_a = this.storeParams.maxBlocksInCache) !== null && _a !== void 0 ? _a : 0);\n // ensure there is blocks that can be removed\n const loadedBlockCount = allLoadedBlocks.size;\n const blocksToRemove = loadedBlockCount - numberOfBlocksToRetain;\n if (blocksToRemove <= 0) {\n return;\n }\n // the first and last block in the viewport\n let firstRowBlockStart = Number.MAX_SAFE_INTEGER;\n let lastRowBlockStart = Number.MIN_SAFE_INTEGER;\n blocksInViewport.forEach(blockStart => {\n if (firstRowBlockStart > blockStart) {\n firstRowBlockStart = blockStart;\n }\n if (lastRowBlockStart < blockStart) {\n lastRowBlockStart = blockStart;\n }\n });\n // all nodes which aren't cached or in the viewport, and so can be removed\n const disposableNodes = this.nodeMap.filter(({ node, index }) => {\n const rowBlockStart = this.rowLoader.getBlockStartIndexForIndex(index);\n const rowBlockInViewport = rowBlockStart >= firstRowBlockStart && rowBlockStart <= lastRowBlockStart;\n return !rowBlockInViewport && !this.isNodeCached(node);\n });\n if (disposableNodes.length === 0) {\n return;\n }\n const midViewportRow = firstRowInViewport + ((lastRowInViewport - firstRowInViewport) / 2);\n const blockDistanceArray = this.getBlocksDistanceFromRow(disposableNodes, midViewportRow);\n const blockSize = this.rowLoader.getBlockSize();\n // sort the blocks by distance from middle of viewport\n blockDistanceArray.sort((a, b) => Math.sign(b[1] - a[1]));\n // remove excess blocks, starting from furthest from viewport\n for (let i = 0; i < Math.min(blocksToRemove, blockDistanceArray.length); i++) {\n const blockStart = Number(blockDistanceArray[i][0]);\n for (let x = blockStart; x < blockStart + blockSize; x++) {\n const lazyNode = this.nodeMap.getBy('index', x);\n if (!lazyNode || this.isNodeCached(lazyNode.node)) {\n continue;\n }\n this.destroyRowAtIndex(x);\n }\n }\n }\n isNodeFocused(node) {\n const focusedCell = this.focusService.getFocusCellToUseAfterRefresh();\n if (!focusedCell) {\n return false;\n }\n if (focusedCell.rowPinned != null) {\n return false;\n }\n const hasFocus = focusedCell.rowIndex === node.rowIndex;\n return hasFocus;\n }\n isNodeCached(node) {\n return (node.isExpandable() && node.expanded) || this.isNodeFocused(node);\n }\n extractDuplicateIds(rows) {\n if (!this.getRowIdFunc == null) {\n return [];\n }\n const newIds = new Set();\n const duplicates = new Set();\n rows.forEach(data => {\n const id = this.getRowId(data);\n if (newIds.has(id)) {\n duplicates.add(id);\n return;\n }\n newIds.add(id);\n });\n return [...duplicates];\n }\n onLoadSuccess(firstRowIndex, numberOfRowsExpected, response) {\n var _a;\n if (!this.live)\n return;\n const info = (_a = response.groupLevelInfo) !== null && _a !== void 0 ? _a : response.storeInfo;\n this.store.setStoreInfo(info);\n if (this.getRowIdFunc != null) {\n const duplicates = this.extractDuplicateIds(response.rowData);\n if (duplicates.length > 0) {\n const duplicateIdText = duplicates.join(', ');\n console.warn(`AG Grid: Unable to display rows as duplicate row ids (${duplicateIdText}) were returned by the getRowId callback. Please modify the getRowId callback to provide unique ids.`);\n this.onLoadFailed(firstRowIndex, numberOfRowsExpected);\n return;\n }\n }\n const wasRefreshing = this.nodesToRefresh.size > 0;\n response.rowData.forEach((data, responseRowIndex) => {\n var _a;\n const rowIndex = firstRowIndex + responseRowIndex;\n const nodeFromCache = this.nodeMap.getBy('index', rowIndex);\n // if stub, overwrite\n if ((_a = nodeFromCache === null || nodeFromCache === void 0 ? void 0 : nodeFromCache.node) === null || _a === void 0 ? void 0 : _a.stub) {\n this.createRowAtIndex(rowIndex, data);\n return;\n }\n // node already exists, and same as node at designated position, update data\n if (nodeFromCache && this.doesNodeMatch(data, nodeFromCache.node)) {\n this.blockUtils.updateDataIntoRowNode(nodeFromCache.node, data);\n this.nodesToRefresh.delete(nodeFromCache.node);\n nodeFromCache.node.__needsRefreshWhenVisible = false;\n return;\n }\n // create row will handle deleting the overwritten row\n this.createRowAtIndex(rowIndex, data);\n });\n const finishedRefreshing = this.nodesToRefresh.size === 0;\n if (wasRefreshing && finishedRefreshing) {\n this.fireRefreshFinishedEvent();\n }\n if (response.rowCount != undefined && response.rowCount !== -1) {\n // if the rowCount has been provided, set the row count\n this.numberOfRows = response.rowCount;\n this.isLastRowKnown = true;\n }\n else if (numberOfRowsExpected > response.rowData.length) {\n // infer the last row as the response came back short\n this.numberOfRows = firstRowIndex + response.rowData.length;\n this.isLastRowKnown = true;\n }\n else if (!this.isLastRowKnown) {\n // add 1 for loading row, as we don't know the last row\n const lastInferredRow = firstRowIndex + response.rowData.length + 1;\n if (lastInferredRow > this.numberOfRows) {\n this.numberOfRows = lastInferredRow;\n }\n }\n if (this.isLastRowKnown) {\n // delete any rows after the last index\n const lazyNodesAfterStoreEnd = this.nodeMap.filter(lazyNode => lazyNode.index >= this.numberOfRows);\n lazyNodesAfterStoreEnd.forEach(lazyNode => this.destroyRowAtIndex(lazyNode.index));\n }\n this.fireStoreUpdatedEvent();\n }\n fireRefreshFinishedEvent() {\n const finishedRefreshing = this.nodesToRefresh.size === 0;\n // if anything refreshing currently, skip.\n if (!finishedRefreshing) {\n return;\n }\n // any nodes left in the map need to be cleaned up, this prevents us preserving nodes\n // indefinitely\n this.removedNodeCache.forEach(node => {\n this.blockUtils.destroyRowNode(node);\n });\n this.removedNodeCache = new Map();\n this.store.fireRefreshFinishedEvent();\n }\n isLastRowIndexKnown() {\n return this.isLastRowKnown;\n }\n onLoadFailed(firstRowIndex, numberOfRowsExpected) {\n var _a;\n if (!this.live)\n return;\n const wasRefreshing = this.nodesToRefresh.size > 0;\n for (let i = firstRowIndex; i < firstRowIndex + numberOfRowsExpected && i < this.getRowCount(); i++) {\n let { node } = (_a = this.nodeMap.getBy('index', i)) !== null && _a !== void 0 ? _a : {};\n if (node) {\n this.nodesToRefresh.delete(node);\n }\n if (!node || !node.stub) {\n if (node && !node.stub) {\n // if node is not a stub, we destroy it and recreate as nodes can't go from data to stub\n this.destroyRowAtIndex(i);\n }\n node = this.createRowAtIndex(i);\n }\n // this node has been refreshed, even if it wasn't successful\n node.__needsRefreshWhenVisible = false;\n node.failedLoad = true;\n }\n const finishedRefreshing = this.nodesToRefresh.size === 0;\n if (wasRefreshing && finishedRefreshing) {\n this.fireRefreshFinishedEvent();\n }\n this.fireStoreUpdatedEvent();\n }\n markNodesForRefresh() {\n this.nodeMap.forEach(lazyNode => {\n if (lazyNode.node.stub && !lazyNode.node.failedLoad) {\n return;\n }\n this.nodesToRefresh.add(lazyNode.node);\n });\n this.rowLoader.queueLoadCheck();\n if (this.isLastRowKnown && this.numberOfRows === 0) {\n this.numberOfRows = 1;\n this.isLastRowKnown = false;\n this.fireStoreUpdatedEvent();\n }\n }\n isNodeInCache(id) {\n return !!this.nodeMap.getBy('id', id);\n }\n // gets called 1) row count changed 2) cache purged 3) items inserted\n fireStoreUpdatedEvent() {\n if (!this.live) {\n return;\n }\n this.store.fireStoreUpdatedEvent();\n }\n getRowId(data) {\n if (this.getRowIdFunc == null) {\n return null;\n }\n // find rowNode using id\n const { level } = this.store.getRowDetails();\n const parentKeys = this.store.getParentNode().getGroupKeys();\n const id = this.getRowIdFunc({\n data,\n parentKeys: parentKeys.length > 0 ? parentKeys : undefined,\n level,\n });\n return String(id);\n }\n updateRowNodes(updates) {\n if (this.getRowIdFunc == null) {\n // throw error, as this is type checked in the store. User likely abusing internal apis if here.\n throw new Error('AG Grid: Insert transactions can only be applied when row ids are supplied.');\n }\n const updatedNodes = [];\n updates.forEach(data => {\n const id = this.getRowId(data);\n const lazyNode = this.nodeMap.getBy('id', id);\n if (lazyNode) {\n this.blockUtils.updateDataIntoRowNode(lazyNode.node, data);\n updatedNodes.push(lazyNode.node);\n }\n });\n return updatedNodes;\n }\n insertRowNodes(inserts, indexToAdd) {\n // if missing and we know the last row, we're inserting at the end\n const addIndex = indexToAdd == null && this.isLastRowKnown ? this.store.getRowCount() : indexToAdd;\n // can't insert nodes past the end of the store\n if (addIndex == null || this.store.getRowCount() < addIndex) {\n return [];\n }\n if (this.getRowIdFunc == null) {\n // throw error, as this is type checked in the store. User likely abusing internal apis if here.\n throw new Error('AG Grid: Insert transactions can only be applied when row ids are supplied.');\n }\n const uniqueInsertsMap = {};\n inserts.forEach(data => {\n const dataId = this.getRowId(data);\n if (dataId && this.isNodeInCache(dataId)) {\n return;\n }\n uniqueInsertsMap[dataId] = data;\n });\n const uniqueInserts = Object.values(uniqueInsertsMap);\n let numberOfInserts = uniqueInserts.length;\n if (numberOfInserts === 0) {\n return [];\n }\n const nodesToMove = this.nodeMap.filter(node => node.index >= addIndex);\n // delete all nodes which need moved first, so they don't get overwritten\n nodesToMove.forEach(lazyNode => this.nodeMap.delete(lazyNode));\n // then move the nodes to their new locations\n nodesToMove.forEach(lazyNode => {\n this.nodeMap.set({\n node: lazyNode.node,\n index: lazyNode.index + numberOfInserts,\n id: lazyNode.id,\n });\n });\n // increase the store size to accommodate\n this.numberOfRows += numberOfInserts;\n // finally insert the new rows\n return uniqueInserts.map((data, uniqueInsertOffset) => this.createRowAtIndex(addIndex + uniqueInsertOffset, data));\n }\n getOrderedNodeMap() {\n const obj = {};\n this.nodeMap.forEach(node => obj[node.index] = node);\n return obj;\n }\n clearDisplayIndexes() {\n this.nodeDisplayIndexMap.clear();\n }\n removeRowNodes(idsToRemove) {\n if (this.getRowIdFunc == null) {\n // throw error, as this is type checked in the store. User likely abusing internal apis if here.\n throw new Error('AG Grid: Insert transactions can only be applied when row ids are supplied.');\n }\n const removedNodes = [];\n const nodesToVerify = [];\n // track how many nodes have been deleted, as when we pass other nodes we need to shift them up\n let deletedNodeCount = 0;\n const remainingIdsToRemove = [...idsToRemove];\n const allNodes = this.getOrderedNodeMap();\n let contiguousIndex = -1;\n for (let stringIndex in allNodes) {\n contiguousIndex += 1;\n const node = allNodes[stringIndex];\n // finding the index allows the use of splice which should be slightly faster than both a check and filter\n const matchIndex = remainingIdsToRemove.findIndex(idToRemove => idToRemove === node.id);\n if (matchIndex !== -1) {\n // found node, remove it from nodes to remove\n remainingIdsToRemove.splice(matchIndex, 1);\n this.destroyRowAtIndex(Number(stringIndex));\n removedNodes.push(node.node);\n deletedNodeCount += 1;\n continue;\n }\n // no nodes removed and this node doesn't match, so no need to shift\n if (deletedNodeCount === 0) {\n continue;\n }\n const numericStoreIndex = Number(stringIndex);\n if (contiguousIndex !== numericStoreIndex) {\n nodesToVerify.push(node.node);\n }\n // shift normal node up by number of deleted prior to this point\n this.nodeMap.delete(allNodes[stringIndex]);\n this.nodeMap.set({\n id: node.id,\n node: node.node,\n index: numericStoreIndex - deletedNodeCount,\n });\n }\n this.numberOfRows -= this.isLastRowIndexKnown() ? idsToRemove.length : deletedNodeCount;\n if (remainingIdsToRemove.length > 0 && nodesToVerify.length > 0) {\n nodesToVerify.forEach(node => node.__needsRefreshWhenVisible = true);\n this.rowLoader.queueLoadCheck();\n }\n return removedNodes;\n }\n}\n__decorate$s([\n Autowired('gridApi')\n], LazyCache.prototype, \"api\", void 0);\n__decorate$s([\n Autowired('ssrmBlockUtils')\n], LazyCache.prototype, \"blockUtils\", void 0);\n__decorate$s([\n Autowired('focusService')\n], LazyCache.prototype, \"focusService\", void 0);\n__decorate$s([\n Autowired('ssrmNodeManager')\n], LazyCache.prototype, \"nodeManager\", void 0);\n__decorate$s([\n PostConstruct\n], LazyCache.prototype, \"init\", null);\n__decorate$s([\n PreDestroy\n], LazyCache.prototype, \"destroyRowNodes\", null);\n\nvar __decorate$r = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass LazyStore extends BeanStub {\n constructor(ssrmParams, storeParams, parentRowNode) {\n super();\n this.idSequence = new NumberSequence();\n this.ssrmParams = ssrmParams;\n this.parentRowNode = parentRowNode;\n this.storeParams = storeParams;\n this.level = parentRowNode.level + 1;\n this.group = ssrmParams.rowGroupCols ? this.level < ssrmParams.rowGroupCols.length : false;\n this.leafGroup = ssrmParams.rowGroupCols ? this.level === ssrmParams.rowGroupCols.length - 1 : false;\n this.info = {};\n }\n init() {\n let numberOfRows = 1;\n if (this.level === 0) {\n numberOfRows = this.storeUtils.getServerSideInitialRowCount();\n }\n this.cache = this.createManagedBean(new LazyCache(this, numberOfRows, this.storeParams));\n const usingTreeData = this.gridOptionsService.isTreeData();\n if (!usingTreeData && this.group) {\n const groupColVo = this.ssrmParams.rowGroupCols[this.level];\n this.groupField = groupColVo.field;\n this.rowGroupColumn = this.columnModel.getRowGroupColumns()[this.level];\n }\n }\n destroyRowNodes() {\n this.displayIndexStart = undefined;\n this.displayIndexEnd = undefined;\n this.destroyBean(this.cache);\n }\n /**\n * Applies a given transaction to the data set within this store\n *\n * @param transaction an object containing delta instructions determining the changes to apply to this store\n * @returns an object determining the status of this transaction and effected nodes\n */\n applyTransaction(transaction) {\n var _a, _b, _c;\n const idFunc = this.gridOptionsService.getCallback('getRowId');\n if (!idFunc) {\n console.warn('AG Grid: getRowId callback must be implemented for transactions to work. Transaction was ignored.');\n return {\n status: ServerSideTransactionResultStatus.Cancelled,\n };\n }\n const applyCallback = this.gridOptionsService.getCallback('isApplyServerSideTransaction');\n if (applyCallback) {\n const params = {\n transaction: transaction,\n parentNode: this.parentRowNode,\n storeInfo: this.info,\n groupLevelInfo: this.info\n };\n const apply = applyCallback(params);\n if (!apply) {\n return { status: ServerSideTransactionResultStatus.Cancelled };\n }\n }\n let updatedNodes = undefined;\n if ((_a = transaction.update) === null || _a === void 0 ? void 0 : _a.length) {\n updatedNodes = this.cache.updateRowNodes(transaction.update);\n }\n let insertedNodes = undefined;\n if ((_b = transaction.add) === null || _b === void 0 ? void 0 : _b.length) {\n let addIndex = transaction.addIndex;\n if (addIndex != null && addIndex < 0) {\n addIndex = undefined;\n }\n insertedNodes = this.cache.insertRowNodes(transaction.add, addIndex);\n }\n let removedNodes = undefined;\n if ((_c = transaction.remove) === null || _c === void 0 ? void 0 : _c.length) {\n const allIdsToRemove = transaction.remove.map(data => (idFunc({ level: this.level, parentKeys: this.parentRowNode.getGroupKeys(), data })));\n const allUniqueIdsToRemove = [...new Set(allIdsToRemove)];\n removedNodes = this.cache.removeRowNodes(allUniqueIdsToRemove);\n }\n this.updateSelectionAfterTransaction(updatedNodes, removedNodes);\n return {\n status: ServerSideTransactionResultStatus.Applied,\n update: updatedNodes,\n add: insertedNodes,\n remove: removedNodes,\n };\n }\n updateSelectionAfterTransaction(updatedNodes, removedNodes) {\n const nodesToDeselect = [];\n updatedNodes === null || updatedNodes === void 0 ? void 0 : updatedNodes.forEach(node => {\n if (node.isSelected() && !node.selectable) {\n nodesToDeselect.push(node);\n }\n });\n removedNodes === null || removedNodes === void 0 ? void 0 : removedNodes.forEach(node => {\n if (node.isSelected()) {\n nodesToDeselect.push(node);\n }\n });\n if (nodesToDeselect.length) {\n this.selectionService.setNodesSelected({\n newValue: false,\n clearSelection: false,\n nodes: nodesToDeselect,\n source: 'rowDataChanged',\n });\n }\n }\n /**\n * Clear the display indexes, used for fading rows out when stores are not being destroyed\n */\n clearDisplayIndexes() {\n this.displayIndexStart = undefined;\n this.displayIndexEnd = undefined;\n this.cache.getNodes().forEach(lazyNode => this.blockUtils.clearDisplayIndex(lazyNode.node));\n if (this.parentRowNode.sibling) {\n this.blockUtils.clearDisplayIndex(this.parentRowNode.sibling);\n }\n this.cache.clearDisplayIndexes();\n }\n /**\n * @returns an index representing the last sequentially displayed row in the grid for this store\n */\n getDisplayIndexStart() {\n return this.displayIndexStart;\n }\n /**\n * @returns the index representing one after the last sequentially displayed row in the grid for this store\n */\n getDisplayIndexEnd() {\n return this.displayIndexEnd;\n }\n /**\n * @returns the virtual size of this store\n */\n getRowCount() {\n if (this.parentRowNode.sibling) {\n return this.cache.getRowCount() + 1;\n }\n return this.cache.getRowCount();\n }\n /**\n * Sets the current row count of the store, and whether the last row index is known\n */\n setRowCount(rowCount, isLastRowIndexKnown) {\n this.cache.setRowCount(rowCount, isLastRowIndexKnown);\n }\n /**\n * Given a display index, returns whether that row is within this store or a child store of this store\n *\n * @param displayIndex the visible index of a row\n * @returns whether or not the row exists within this store\n */\n isDisplayIndexInStore(displayIndex) {\n if (this.cache.getRowCount() === 0)\n return false;\n return this.displayIndexStart <= displayIndex && displayIndex < this.getDisplayIndexEnd();\n }\n /**\n * Recursively sets up the display indexes and top position of every node belonging to this store.\n *\n * Called after a row height changes, or a store updated event.\n *\n * @param displayIndexSeq the number sequence for generating the display index of each row\n * @param nextRowTop an object containing the next row top value intended to be modified by ref per row\n */\n setDisplayIndexes(displayIndexSeq, nextRowTop) {\n this.displayIndexStart = displayIndexSeq.peek();\n this.topPx = nextRowTop.value;\n // delegate to the store to set the row display indexes\n this.cache.setDisplayIndexes(displayIndexSeq, nextRowTop);\n if (this.parentRowNode.sibling) {\n this.blockUtils.setDisplayIndex(this.parentRowNode.sibling, displayIndexSeq, nextRowTop);\n }\n this.displayIndexEnd = displayIndexSeq.peek();\n this.heightPx = nextRowTop.value - this.topPx;\n }\n /**\n * Recursively applies a provided function to every node\n *\n * For the purpose of exclusively server side filtered stores, this is the same as getNodes().forEachDeepAfterFilterAndSort\n */\n forEachStoreDeep(callback, sequence = new NumberSequence()) {\n callback(this, sequence.next());\n this.cache.getNodes().forEach(lazyNode => {\n const childCache = lazyNode.node.childStore;\n if (childCache) {\n childCache.forEachStoreDeep(callback, sequence);\n }\n });\n }\n /**\n * Recursively applies a provided function to every node\n *\n * For the purpose of exclusively server side filtered stores, this is the same as getNodes().forEachDeepAfterFilterAndSort\n */\n forEachNodeDeep(callback, sequence = new NumberSequence()) {\n this.cache.getNodes().forEach(lazyNode => {\n callback(lazyNode.node, sequence.next());\n const childCache = lazyNode.node.childStore;\n if (childCache) {\n childCache.forEachNodeDeep(callback, sequence);\n }\n });\n }\n /**\n * Recursively applies a provided function to every node\n *\n * For the purpose of exclusively server side filtered stores, this is the same as getNodes().forEachDeep\n */\n forEachNodeDeepAfterFilterAndSort(callback, sequence = new NumberSequence()) {\n const orderedNodes = this.cache.getOrderedNodeMap();\n for (let key in orderedNodes) {\n const lazyNode = orderedNodes[key];\n callback(lazyNode.node, sequence.next());\n const childCache = lazyNode.node.childStore;\n if (childCache) {\n childCache.forEachNodeDeepAfterFilterAndSort(callback, sequence);\n }\n }\n }\n /**\n * Removes the failed status from all nodes, and marks them as stub to encourage reloading\n */\n retryLoads() {\n this.cache.getNodes().forEach(({ node }) => {\n if (node.failedLoad) {\n node.failedLoad = false;\n node.__needsRefreshWhenVisible = true;\n node.stub = true;\n }\n });\n this.forEachChildStoreShallow(store => store.retryLoads());\n this.fireStoreUpdatedEvent();\n }\n /**\n * Given a display index, returns the row at that location.\n *\n * @param displayRowIndex the displayed index within the grid to search for\n * @returns the row node if the display index falls within the store, if it didn't exist this will create a new stub to return\n */\n getRowUsingDisplayIndex(displayRowIndex) {\n if (this.parentRowNode.sibling && displayRowIndex === this.parentRowNode.sibling.rowIndex) {\n return this.parentRowNode.sibling;\n }\n return this.cache.getRowByDisplayIndex(displayRowIndex);\n }\n /**\n * Given a display index, returns the row top and height for the row at that index.\n *\n * @param displayIndex the display index of the node\n * @returns an object containing the rowTop and rowHeight of the node at the given displayIndex\n */\n getRowBounds(displayIndex) {\n var _a;\n if (!this.isDisplayIndexInStore(displayIndex)) {\n return null;\n }\n const thisNode = this.cache.getNodeCachedByDisplayIndex(displayIndex);\n if (thisNode) {\n const boundsFromRow = this.blockUtils.extractRowBounds(thisNode, displayIndex);\n if (boundsFromRow) {\n return boundsFromRow;\n }\n }\n const { previousNode, nextNode } = (_a = this.cache.getSurroundingNodesByDisplayIndex(displayIndex)) !== null && _a !== void 0 ? _a : {};\n // previous node may equal, or catch via detail node or child of group\n if (previousNode) {\n const boundsFromRow = this.blockUtils.extractRowBounds(previousNode.node, displayIndex);\n if (boundsFromRow != null) {\n return boundsFromRow;\n }\n }\n const defaultRowHeight = this.gridOptionsService.getRowHeightAsNumber();\n // if node after this, can calculate backwards (and ignore detail/grouping)\n if (nextNode) {\n const numberOfRowDiff = (nextNode.node.rowIndex - displayIndex) * defaultRowHeight;\n return {\n rowTop: nextNode.node.rowTop - numberOfRowDiff,\n rowHeight: defaultRowHeight,\n };\n }\n // otherwise calculate from end of store\n const lastTop = this.topPx + this.heightPx;\n const numberOfRowDiff = (this.getDisplayIndexEnd() - displayIndex) * defaultRowHeight;\n return {\n rowTop: lastTop - numberOfRowDiff,\n rowHeight: defaultRowHeight,\n };\n }\n /**\n * Given a vertical pixel, determines whether this store contains a row at that pixel\n *\n * @param pixel a vertical pixel position from the grid\n * @returns whether that pixel points to a virtual space belonging to this store\n */\n isPixelInRange(pixel) {\n return pixel >= this.topPx && pixel < (this.topPx + this.heightPx);\n }\n /**\n * Given a vertical pixel, returns the row existing at that pixel location\n *\n * @param pixel a vertical pixel position from the grid\n * @returns the display index at the given pixel location\n */\n getRowIndexAtPixel(pixel) {\n if (pixel < this.topPx) {\n return this.getDisplayIndexStart();\n }\n if (pixel >= this.topPx + this.heightPx) {\n return this.getDisplayIndexEnd() - 1;\n }\n let distToPreviousNodeTop = Number.MAX_SAFE_INTEGER;\n let previousNode = null;\n let distToNextNodeTop = Number.MAX_SAFE_INTEGER;\n let nextNode = null;\n this.cache.getNodes().forEach(({ node }) => {\n const distBetween = Math.abs(pixel - node.rowTop);\n // previous node\n if (node.rowTop < pixel) {\n if (distBetween < distToPreviousNodeTop) {\n distToPreviousNodeTop = distBetween;\n previousNode = node;\n }\n return;\n }\n // next node\n if (distBetween < distToNextNodeTop) {\n distToNextNodeTop = distBetween;\n nextNode = node;\n }\n });\n // cast these back as typescript doesn't understand the forEach above\n previousNode = previousNode;\n nextNode = nextNode;\n // previous node may equal, or catch via detail node or child of group\n if (previousNode) {\n const indexOfRow = this.blockUtils.getIndexAtPixel(previousNode, pixel);\n if (indexOfRow != null) {\n return indexOfRow;\n }\n }\n const defaultRowHeight = this.gridOptionsService.getRowHeightAsNumber();\n // if node after this, can calculate backwards (and ignore detail/grouping)\n if (nextNode) {\n const nextTop = nextNode.rowTop;\n const numberOfRowDiff = Math.ceil((nextTop - pixel) / defaultRowHeight);\n return nextNode.rowIndex - numberOfRowDiff;\n }\n // otherwise calculate from end of store\n const nextTop = this.topPx + this.heightPx;\n const numberOfRowDiff = Math.floor((nextTop - pixel) / defaultRowHeight);\n return this.getDisplayIndexEnd() - numberOfRowDiff;\n }\n /**\n * Given a path of group keys, returns the child store for that group.\n *\n * @param keys the grouping path to the desired store\n * @returns the child store for the given keys, or null if not found\n */\n getChildStore(keys) {\n return this.storeUtils.getChildStore(keys, this, (key) => {\n const lazyNode = this.cache.getNodes().find(lazyNode => lazyNode.node.key == key);\n if (!lazyNode) {\n return null;\n }\n return lazyNode.node;\n });\n }\n /**\n * Executes a provided callback on each child store belonging to this store\n *\n * @param cb the callback to execute\n */\n forEachChildStoreShallow(cb) {\n this.cache.getNodes().forEach(({ node }) => {\n if (node.childStore) {\n cb(node.childStore);\n }\n });\n }\n /**\n * Executes after a change to sorting, determines recursively whether this store or a child requires refreshed.\n *\n * If a purge refresh occurs, the row count is preserved.\n *\n * @param params a set of properties pertaining to the sort changes\n */\n refreshAfterSort(params) {\n const serverSortsAllLevels = this.storeUtils.isServerSideSortAllLevels();\n if (serverSortsAllLevels || this.storeUtils.isServerRefreshNeeded(this.parentRowNode, this.ssrmParams.rowGroupCols, params)) {\n const oldCount = this.cache.getRowCount();\n this.destroyBean(this.cache);\n this.cache = this.createManagedBean(new LazyCache(this, oldCount, this.storeParams));\n this.fireStoreUpdatedEvent();\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(store => store.refreshAfterSort(params));\n }\n /**\n * Executes after a change to filtering, determines recursively whether this store or a child requires refreshed.\n *\n * If a refresh occurs, the row count is reset.\n *\n * @param params a set of properties pertaining to the filter changes\n */\n refreshAfterFilter(params) {\n const serverFiltersAllLevels = !this.storeUtils.isServerSideOnlyRefreshFilteredGroups();\n if (serverFiltersAllLevels || this.storeUtils.isServerRefreshNeeded(this.parentRowNode, this.ssrmParams.rowGroupCols, params)) {\n this.refreshStore(true);\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(store => store.refreshAfterFilter(params));\n }\n /**\n * Marks all existing nodes as requiring reloaded, and triggers a load check\n *\n * @param purge whether to remove all nodes and data in favour of stub nodes\n */\n refreshStore(purge) {\n if (purge) {\n this.destroyBean(this.cache);\n this.cache = this.createManagedBean(new LazyCache(this, 1, this.storeParams));\n this.fireStoreUpdatedEvent();\n return;\n }\n this.cache.markNodesForRefresh();\n }\n /**\n * Used for pagination, given a local/store index, returns the display index of that row\n *\n * @param topLevelIndex the store index of a row\n * @returns the display index for the given store index\n */\n getTopLevelRowDisplayedIndex(topLevelIndex) {\n const displayIndex = this.cache.getDisplayIndexFromStoreIndex(topLevelIndex);\n return displayIndex !== null && displayIndex !== void 0 ? displayIndex : topLevelIndex;\n }\n /**\n * Used for pagination to determine if the last page is known, and for aria to determine if the last grid row is known\n *\n * @returns whether the last index of this store is known, or if lazy loading still required\n */\n isLastRowIndexKnown() {\n return this.cache.isLastRowIndexKnown();\n }\n /**\n * Used by the selection service to select a range of nodes\n *\n * @param firstInRange the first node in the range to find\n * @param lastInRange the last node in the range to find\n * @returns a range of nodes between firstInRange and lastInRange inclusive\n */\n getRowNodesInRange(firstInRange, lastInRange) {\n // if only one node passed, we start the selection at the top\n if (_.missing(firstInRange)) ;\n return this.cache.getNodes().filter(({ node }) => {\n return node.rowIndex >= firstInRange.rowIndex && node.rowIndex <= lastInRange.rowIndex;\n }).map(({ node }) => node);\n }\n /**\n * Mutates a given array to add this stores state, and recursively add all the children store states.\n *\n * @param result a mutable results array\n */\n addStoreStates(result) {\n result.push({\n suppressInfiniteScroll: false,\n route: this.parentRowNode.getGroupKeys(),\n rowCount: this.getRowCount(),\n lastRowIndexKnown: this.isLastRowIndexKnown(),\n info: this.info,\n maxBlocksInCache: this.storeParams.maxBlocksInCache,\n cacheBlockSize: this.storeParams.cacheBlockSize,\n });\n this.forEachChildStoreShallow(childStore => childStore.addStoreStates(result));\n }\n getIdSequence() {\n return this.idSequence;\n }\n getParentNode() {\n return this.parentRowNode;\n }\n getRowDetails() {\n return {\n field: this.groupField,\n group: this.group,\n leafGroup: this.leafGroup,\n level: this.level,\n parent: this.parentRowNode,\n rowGroupColumn: this.rowGroupColumn,\n };\n }\n getSsrmParams() {\n return this.ssrmParams;\n }\n setStoreInfo(info) {\n if (info) {\n Object.assign(this.info, info);\n }\n }\n // gets called 1) row count changed 2) cache purged\n fireStoreUpdatedEvent() {\n // this results in row model firing ModelUpdated.\n // server side row model also updates the row indexes first\n const event = {\n type: Events.EVENT_STORE_UPDATED\n };\n this.eventService.dispatchEvent(event);\n }\n // gets called when row data updated, and no more refreshing needed\n fireRefreshFinishedEvent() {\n const event = {\n type: Events.EVENT_STORE_REFRESHED,\n route: this.parentRowNode.getRoute(),\n };\n this.eventService.dispatchEvent(event);\n }\n getBlockStates() {\n return this.cache.getBlockStates();\n }\n getStoreBounds() {\n return {\n topPx: this.topPx,\n heightPx: this.heightPx,\n };\n }\n}\n__decorate$r([\n Autowired('ssrmBlockUtils')\n], LazyStore.prototype, \"blockUtils\", void 0);\n__decorate$r([\n Autowired('ssrmStoreUtils')\n], LazyStore.prototype, \"storeUtils\", void 0);\n__decorate$r([\n Autowired('columnModel')\n], LazyStore.prototype, \"columnModel\", void 0);\n__decorate$r([\n Autowired('selectionService')\n], LazyStore.prototype, \"selectionService\", void 0);\n__decorate$r([\n PostConstruct\n], LazyStore.prototype, \"init\", null);\n__decorate$r([\n PreDestroy\n], LazyStore.prototype, \"destroyRowNodes\", null);\n\nvar __decorate$q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet ServerSideRowModel = class ServerSideRowModel extends BeanStub {\n constructor() {\n super(...arguments);\n this.onRowHeightChanged_debounced = _.debounce(this.onRowHeightChanged.bind(this), 100);\n this.pauseStoreUpdateListening = false;\n this.started = false;\n }\n // we don't implement as lazy row heights is not supported in this row model\n ensureRowHeightsValid() { return false; }\n start() {\n this.started = true;\n const datasource = this.gridOptionsService.get('serverSideDatasource');\n if (datasource) {\n this.setDatasource(datasource);\n }\n }\n destroyDatasource() {\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 addEventListeners() {\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 const 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 verifyProps() {\n if (this.gridOptionsService.exists('initialGroupOrderComparator')) {\n const message = `AG Grid: initialGroupOrderComparator 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 Infinite Scroll, then sorting is done on the server side, nothing to do with the client.`;\n _.doOnce(() => console.warn(message), 'SSRM.InitialGroupOrderComparator');\n }\n if (this.gridOptionsService.isRowSelection() && !this.gridOptionsService.exists('getRowId')) {\n const message = `AG Grid: getRowId callback must be provided for Server Side Row Model selection to work correctly.`;\n _.doOnce(() => console.warn(message), 'SSRM.SelectionNeedsRowNodeIdFunc');\n }\n }\n setDatasource(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 isLastRowIndexKnown() {\n const cache = this.getRootStore();\n if (!cache) {\n return false;\n }\n return cache.isLastRowIndexKnown();\n }\n onColumnEverything() {\n // if first time, always 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 const rowGroupColumnVos = this.columnsToValueObjects(this.columnModel.getRowGroupColumns());\n const valueColumnVos = this.columnsToValueObjects(this.columnModel.getValueColumns());\n const pivotColumnVos = this.columnsToValueObjects(this.columnModel.getPivotColumns());\n // compares two sets of columns, ensuring no columns have been added or removed (unless specified via allowRemovedColumns)\n // if the columns are found, also ensures the field and aggFunc properties have not been changed.\n const areColsSame = (params) => {\n const oldColsMap = {};\n params.oldCols.forEach(col => oldColsMap[col.id] = col);\n const allColsUnchanged = params.newCols.every(col => {\n const equivalentCol = oldColsMap[col.id];\n if (equivalentCol) {\n delete oldColsMap[col.id];\n }\n return equivalentCol && equivalentCol.field === col.field && equivalentCol.aggFunc === col.aggFunc;\n });\n const missingCols = !params.allowRemovedColumns && !!Object.values(oldColsMap).length;\n return allColsUnchanged && !missingCols;\n };\n const sortModelDifferent = !_.jsonEquals(this.storeParams.sortModel, this.sortListener.extractSortModel());\n const rowGroupDifferent = !areColsSame({\n oldCols: this.storeParams.rowGroupCols,\n newCols: rowGroupColumnVos,\n });\n const pivotDifferent = !areColsSame({\n oldCols: this.storeParams.pivotCols,\n newCols: pivotColumnVos,\n });\n const valuesDifferent = !!(rowGroupColumnVos === null || rowGroupColumnVos === void 0 ? void 0 : rowGroupColumnVos.length) && !areColsSame({\n oldCols: this.storeParams.valueCols,\n newCols: valueColumnVos,\n allowRemovedColumns: true,\n });\n const resetRequired = sortModelDifferent || rowGroupDifferent || pivotDifferent || valuesDifferent;\n if (resetRequired) {\n this.resetRootStore();\n }\n else {\n // cols may have changed even if we didn't do a reset. storeParams ref will be provided when getRows\n // is called, so it's important to keep it up to date.\n const newParams = this.createStoreParams();\n this.storeParams.rowGroupCols = newParams.rowGroupCols;\n this.storeParams.pivotCols = newParams.pivotCols;\n this.storeParams.valueCols = newParams.valueCols;\n }\n }\n destroyRootStore() {\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 refreshAfterSort(newSortModel, params) {\n if (this.storeParams) {\n this.storeParams.sortModel = newSortModel;\n }\n const rootStore = this.getRootStore();\n if (!rootStore) {\n return;\n }\n rootStore.refreshAfterSort(params);\n this.onStoreUpdated();\n }\n resetRootStore() {\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 shows/hides 'no rows' overlay\n const rowDataChangedEvent = {\n type: Events.EVENT_ROW_DATA_UPDATED\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 columnsToValueObjects(columns) {\n return columns.map(col => ({\n id: col.getId(),\n aggFunc: col.getAggFunc(),\n displayName: this.columnModel.getDisplayNameForColumn(col, 'model'),\n field: col.getColDef().field\n }));\n }\n createStoreParams() {\n const rowGroupColumnVos = this.columnsToValueObjects(this.columnModel.getRowGroupColumns());\n const valueColumnVos = this.columnsToValueObjects(this.columnModel.getValueColumns());\n const pivotColumnVos = this.columnsToValueObjects(this.columnModel.getPivotColumns());\n const dynamicRowHeight = this.gridOptionsService.isGetRowHeightFunction();\n const 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 getParams() {\n return this.storeParams;\n }\n dispatchModelUpdated(reset = false) {\n const modelUpdatedEvent = {\n type: Events.EVENT_MODEL_UPDATED,\n animate: !reset,\n keepRenderedRows: !reset,\n newPage: false,\n newData: false\n };\n this.eventService.dispatchEvent(modelUpdatedEvent);\n }\n onStoreUpdated() {\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 /** This method is debounced. It is used for row auto-height. If we don't debounce,\n * then the Row Models will end up recalculating each row position\n * for each row height change and result in the Row Renderer laying out rows.\n * This is particularly bad if using print layout, and showing eg 1,000 rows,\n * each row will change it's height, causing Row Model to update 1,000 times.\n */\n onRowHeightChangedDebounced() {\n this.onRowHeightChanged_debounced();\n }\n onRowHeightChanged() {\n this.updateRowIndexesAndBounds();\n this.dispatchModelUpdated();\n }\n updateRowIndexesAndBounds() {\n const rootStore = this.getRootStore();\n if (!rootStore) {\n return;\n }\n rootStore.setDisplayIndexes(new NumberSequence(), { value: 0 });\n }\n retryLoads() {\n const rootStore = this.getRootStore();\n if (!rootStore) {\n return;\n }\n rootStore.retryLoads();\n this.onStoreUpdated();\n }\n getRow(index) {\n const rootStore = this.getRootStore();\n if (!rootStore) {\n return undefined;\n }\n return rootStore.getRowUsingDisplayIndex(index);\n }\n expandAll(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(node => {\n if (node.stub) {\n return;\n }\n if (node.hasChildren()) {\n node.setExpanded(value);\n }\n });\n this.pauseStoreUpdateListening = false;\n this.onStoreUpdated();\n }\n refreshAfterFilter(newFilterModel, params) {\n if (this.storeParams) {\n this.storeParams.filterModel = newFilterModel;\n }\n const rootStore = this.getRootStore();\n if (!rootStore) {\n return;\n }\n rootStore.refreshAfterFilter(params);\n this.onStoreUpdated();\n }\n getRootStore() {\n if (this.rootNode && this.rootNode.childStore) {\n return this.rootNode.childStore;\n }\n }\n getRowCount() {\n const rootStore = this.getRootStore();\n if (!rootStore) {\n return 0;\n }\n return rootStore.getDisplayIndexEnd();\n }\n getTopLevelRowCount() {\n const rootStore = this.getRootStore();\n if (!rootStore) {\n return 1;\n }\n return rootStore.getRowCount();\n }\n getTopLevelRowDisplayedIndex(topLevelIndex) {\n const rootStore = this.getRootStore();\n if (!rootStore) {\n return topLevelIndex;\n }\n return rootStore.getTopLevelRowDisplayedIndex(topLevelIndex);\n }\n getRowBounds(index) {\n const rootStore = this.getRootStore();\n if (!rootStore) {\n const rowHeight = this.gridOptionsService.getRowHeightAsNumber();\n return {\n rowTop: 0,\n rowHeight: rowHeight\n };\n }\n return rootStore.getRowBounds(index);\n }\n getBlockStates() {\n const root = this.getRootStore();\n if (!root) {\n return undefined;\n }\n const states = {};\n root.forEachStoreDeep(store => {\n if (store instanceof FullStore) {\n const { id, state } = store.getBlockStateJson();\n states[id] = state;\n }\n else if (store instanceof LazyStore) {\n Object.entries(store.getBlockStates()).forEach(([block, state]) => {\n states[block] = state;\n });\n }\n else {\n throw new Error('AG Grid: Unsupported store type');\n }\n });\n return states;\n }\n getRowIndexAtPixel(pixel) {\n const rootStore = this.getRootStore();\n if (pixel <= 0 || !rootStore) {\n return 0;\n }\n return rootStore.getRowIndexAtPixel(pixel);\n }\n isEmpty() {\n return false;\n }\n isRowsToRender() {\n return this.getRootStore() != null && this.getRowCount() > 0;\n }\n getType() {\n return 'serverSide';\n }\n forEachNode(callback) {\n const rootStore = this.getRootStore();\n if (!rootStore) {\n return;\n }\n rootStore.forEachNodeDeep(callback);\n }\n forEachNodeAfterFilterAndSort(callback) {\n const rootStore = this.getRootStore();\n if (!rootStore) {\n return;\n }\n rootStore.forEachNodeDeepAfterFilterAndSort(callback);\n }\n executeOnStore(route, callback) {\n const rootStore = this.getRootStore();\n if (!rootStore) {\n return;\n }\n const storeToExecuteOn = rootStore.getChildStore(route);\n if (storeToExecuteOn) {\n callback(storeToExecuteOn);\n }\n }\n refreshStore(params = {}) {\n const route = params.route ? params.route : [];\n this.executeOnStore(route, store => store.refreshStore(params.purge == true));\n }\n getStoreState() {\n const res = [];\n const rootStore = this.getRootStore();\n if (rootStore) {\n rootStore.addStoreStates(res);\n }\n return res;\n }\n getNodesInRangeForSelection(firstInRange, lastInRange) {\n if (!_.exists(firstInRange)) {\n return [];\n }\n if (!lastInRange) {\n return [firstInRange];\n }\n const startIndex = firstInRange.rowIndex;\n const endIndex = lastInRange.rowIndex;\n if (startIndex === null || endIndex === null) {\n return [firstInRange];\n }\n const nodeRange = [];\n const [firstIndex, lastIndex] = [startIndex, endIndex].sort((a, b) => a - b);\n this.forEachNode((node) => {\n const thisRowIndex = node.rowIndex;\n if (thisRowIndex == null || node.stub) {\n return;\n }\n if (thisRowIndex >= firstIndex && thisRowIndex <= lastIndex) {\n nodeRange.push(node);\n }\n });\n // don't allow range selection if we don't have the full range of rows\n if (nodeRange.length !== (lastIndex - firstIndex + 1)) {\n return [firstInRange];\n }\n return nodeRange;\n }\n getRowNode(id) {\n let result;\n this.forEachNode(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 isRowPresent(rowNode) {\n const foundRowNode = this.getRowNode(rowNode.id);\n return !!foundRowNode;\n }\n setRowCount(rowCount, lastRowIndexKnown) {\n const rootStore = this.getRootStore();\n if (rootStore) {\n if (rootStore instanceof LazyStore) {\n rootStore.setRowCount(rowCount, lastRowIndexKnown);\n return;\n }\n console.error('AG Grid: Infinite scrolling must be enabled in order to set the row count.');\n }\n }\n};\n__decorate$q([\n Autowired('columnModel')\n], ServerSideRowModel.prototype, \"columnModel\", void 0);\n__decorate$q([\n Autowired('filterManager')\n], ServerSideRowModel.prototype, \"filterManager\", void 0);\n__decorate$q([\n Autowired('rowRenderer')\n], ServerSideRowModel.prototype, \"rowRenderer\", void 0);\n__decorate$q([\n Autowired('ssrmSortService')\n], ServerSideRowModel.prototype, \"sortListener\", void 0);\n__decorate$q([\n Autowired('ssrmNodeManager')\n], ServerSideRowModel.prototype, \"nodeManager\", void 0);\n__decorate$q([\n Autowired('ssrmStoreFactory')\n], ServerSideRowModel.prototype, \"storeFactory\", void 0);\n__decorate$q([\n Autowired('beans')\n], ServerSideRowModel.prototype, \"beans\", void 0);\n__decorate$q([\n PreDestroy\n], ServerSideRowModel.prototype, \"destroyDatasource\", null);\n__decorate$q([\n PostConstruct\n], ServerSideRowModel.prototype, \"addEventListeners\", null);\n__decorate$q([\n PreDestroy\n], ServerSideRowModel.prototype, \"destroyRootStore\", null);\nServerSideRowModel = __decorate$q([\n Bean('rowModel')\n], ServerSideRowModel);\n\nvar __decorate$p = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet StoreUtils = class StoreUtils extends BeanStub {\n loadFromDatasource(p) {\n const { storeParams, parentBlock, parentNode } = p;\n const groupKeys = parentNode.getGroupKeys();\n if (!storeParams.datasource) {\n return;\n }\n const 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 const 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 context: this.gridOptionsService.context\n };\n window.setTimeout(() => {\n if (!storeParams.datasource || !parentBlock.isAlive()) {\n // failCallback() is important, to reduce the 'RowNodeBlockLoader.activeBlockLoadsCount' count\n p.failCallback();\n return;\n }\n storeParams.datasource.getRows(getRowsParams);\n }, 0);\n }\n getChildStore(keys, currentCache, findNodeFunc) {\n if (_.missingOrEmpty(keys)) {\n return currentCache;\n }\n const nextKey = keys[0];\n const nextNode = findNodeFunc(nextKey);\n if (nextNode) {\n const keyListForNextLevel = keys.slice(1, keys.length);\n const nextStore = nextNode.childStore;\n return nextStore ? nextStore.getChildStore(keyListForNextLevel) : null;\n }\n return null;\n }\n isServerRefreshNeeded(parentRowNode, rowGroupCols, params) {\n if (params.valueColChanged || params.secondaryColChanged) {\n return true;\n }\n const level = parentRowNode.level + 1;\n const grouping = level < rowGroupCols.length;\n const leafNodes = !grouping;\n if (leafNodes) {\n return true;\n }\n const colIdThisGroup = rowGroupCols[level].id;\n const actionOnThisGroup = params.changedColumns.indexOf(colIdThisGroup) > -1;\n if (actionOnThisGroup) {\n return true;\n }\n const allCols = this.columnModel.getAllGridColumns();\n const affectedGroupCols = allCols\n // find all impacted cols which also a group display column\n .filter(col => col.getColDef().showRowGroup && params.changedColumns.includes(col.getId()))\n .map(col => col.getColDef().showRowGroup)\n // if displaying all groups, or displaying the effected col for this group, refresh\n .some(group => group === true || group === colIdThisGroup);\n return affectedGroupCols;\n }\n getServerSideInitialRowCount() {\n const rowCount = this.gridOptionsService.getNum('serverSideInitialRowCount');\n if (typeof rowCount === 'number' && rowCount > 0) {\n return rowCount;\n }\n return 1;\n }\n assertRowModelIsServerSide(key) {\n if (!this.gridOptionsService.isRowModelType('serverSide')) {\n _.doOnce(() => console.warn(`AG Grid: The '${key}' property can only be used with the Server Side Row Model.`), key);\n return false;\n }\n return true;\n }\n assertNotTreeData(key) {\n if (this.gridOptionsService.is('treeData')) {\n _.doOnce(() => console.warn(`AG Grid: The '${key}' property cannot be used while using tree data.`), key + '_TreeData');\n return false;\n }\n return true;\n }\n isServerSideSortAllLevels() {\n return this.gridOptionsService.is('serverSideSortAllLevels') && this.assertRowModelIsServerSide('serverSideSortAllLevels');\n }\n isServerSideOnlyRefreshFilteredGroups() {\n return this.gridOptionsService.is('serverSideOnlyRefreshFilteredGroups') && this.assertRowModelIsServerSide('serverSideOnlyRefreshFilteredGroups');\n }\n isServerSideSortOnServer() {\n return this.gridOptionsService.is('serverSideSortOnServer') && this.assertRowModelIsServerSide('serverSideSortOnServer') && this.assertNotTreeData('serverSideSortOnServer');\n }\n isServerSideFilterOnServer() {\n return this.gridOptionsService.is('serverSideFilterOnServer') && this.assertRowModelIsServerSide('serverSideFilterOnServer') && this.assertNotTreeData('serverSideFilterOnServer');\n }\n};\n__decorate$p([\n Autowired('columnApi')\n], StoreUtils.prototype, \"columnApi\", void 0);\n__decorate$p([\n Autowired('columnModel')\n], StoreUtils.prototype, \"columnModel\", void 0);\n__decorate$p([\n Autowired('gridApi')\n], StoreUtils.prototype, \"gridApi\", void 0);\nStoreUtils = __decorate$p([\n Bean('ssrmStoreUtils')\n], StoreUtils);\n\nvar __decorate$o = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst GROUP_MISSING_KEY_ID = 'ag-Grid-MissingKey';\nlet BlockUtils = class BlockUtils extends BeanStub {\n postConstruct() {\n this.rowHeight = this.gridOptionsService.getRowHeightAsNumber();\n this.usingTreeData = this.gridOptionsService.isTreeData();\n this.usingMasterDetail = this.gridOptionsService.isMasterDetail();\n }\n createRowNode(params) {\n const rowNode = new RowNode(this.beans);\n const 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 rowNode.__needsRefreshWhenVisible = false;\n if (rowNode.group) {\n rowNode.expanded = false;\n rowNode.field = params.field;\n rowNode.rowGroupColumn = params.rowGroupColumn;\n }\n return rowNode;\n }\n destroyRowNodes(rowNodes) {\n if (rowNodes) {\n rowNodes.forEach((row) => this.destroyRowNode(row));\n }\n }\n destroyRowNode(rowNode, preserveStore = false) {\n if (rowNode.childStore && !preserveStore) {\n this.destroyBean(rowNode.childStore);\n rowNode.childStore = null;\n }\n if (rowNode.sibling) {\n this.destroyRowNode(rowNode.sibling, false);\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 setTreeGroupInfo(rowNode) {\n rowNode.updateHasChildren();\n const getKeyFunc = this.gridOptionsService.get('getServerSideGroupKey');\n if (rowNode.hasChildren() && getKeyFunc != null) {\n rowNode.key = getKeyFunc(rowNode.data);\n }\n if (!rowNode.hasChildren() && rowNode.childStore != null) {\n this.destroyBean(rowNode.childStore);\n rowNode.childStore = null;\n rowNode.expanded = false;\n }\n }\n setRowGroupInfo(rowNode) {\n rowNode.key = this.valueService.getValue(rowNode.rowGroupColumn, rowNode);\n if (rowNode.key === null || rowNode.key === undefined) {\n _.doOnce(() => {\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 if (this.beans.gridOptionsService.is('groupIncludeFooter')) {\n rowNode.createFooter();\n if (rowNode.sibling) {\n rowNode.sibling.uiLevel = rowNode.uiLevel + 1;\n }\n }\n }\n setMasterDetailInfo(rowNode) {\n const isMasterFunc = this.gridOptionsService.get('isRowMaster');\n if (isMasterFunc != null) {\n rowNode.master = isMasterFunc(rowNode.data);\n }\n else {\n rowNode.master = true;\n }\n }\n updateDataIntoRowNode(rowNode, data) {\n rowNode.updateData(data);\n if (this.usingTreeData) {\n this.setTreeGroupInfo(rowNode);\n this.setChildCountIntoRowNode(rowNode);\n }\n else if (rowNode.group) {\n this.setChildCountIntoRowNode(rowNode);\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 }\n setDataIntoRowNode(rowNode, data, defaultId, cachedRowHeight) {\n var _a;\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.gridOptionsService.getRowHeightForNode(rowNode, false, cachedRowHeight).height);\n (_a = rowNode.sibling) === null || _a === void 0 ? void 0 : _a.setRowHeight(this.gridOptionsService.getRowHeightForNode(rowNode.sibling, false, cachedRowHeight).height);\n }\n }\n setChildCountIntoRowNode(rowNode) {\n const getChildCount = this.gridOptionsService.get('getChildCount');\n if (getChildCount) {\n rowNode.setAllChildrenCount(getChildCount(rowNode.data));\n }\n }\n setGroupDataIntoRowNode(rowNode) {\n const groupDisplayCols = this.columnModel.getGroupDisplayColumns();\n const usingTreeData = this.gridOptionsService.isTreeData();\n groupDisplayCols.forEach(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 const groupValue = this.valueService.getValue(rowNode.rowGroupColumn, rowNode);\n rowNode.groupData[col.getColId()] = groupValue;\n }\n });\n }\n clearDisplayIndex(rowNode) {\n rowNode.clearRowTopAndRowIndex();\n const hasChildStore = rowNode.hasChildren() && _.exists(rowNode.childStore);\n if (hasChildStore) {\n const childStore = rowNode.childStore;\n childStore.clearDisplayIndexes();\n }\n const hasDetailNode = rowNode.master && rowNode.detailNode;\n if (hasDetailNode) {\n rowNode.detailNode.clearRowTopAndRowIndex();\n }\n }\n setDisplayIndex(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 const 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 const hasChildStore = rowNode.hasChildren() && _.exists(rowNode.childStore);\n if (hasChildStore) {\n const 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 binarySearchForDisplayIndex(displayRowIndex, rowNodes) {\n let bottomPointer = 0;\n let 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 const midPointer = Math.floor((bottomPointer + topPointer) / 2);\n const 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 const expandedMasterRow = currentRowNode.master && currentRowNode.expanded;\n const detailNode = currentRowNode.detailNode;\n if (expandedMasterRow && detailNode && detailNode.rowIndex === displayRowIndex) {\n return currentRowNode.detailNode;\n }\n // then check if child cache contains index\n const 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 extractRowBounds(rowNode, index) {\n const extractRowBounds = (currentRowNode) => ({\n rowHeight: currentRowNode.rowHeight,\n rowTop: currentRowNode.rowTop\n });\n if (rowNode.rowIndex === index) {\n return extractRowBounds(rowNode);\n }\n if (rowNode.hasChildren() && rowNode.expanded && _.exists(rowNode.childStore)) {\n const 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 getIndexAtPixel(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 const expandedMasterRow = rowNode.master && rowNode.expanded;\n const 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.hasChildren() && rowNode.expanded && _.exists(rowNode.childStore)) {\n const 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 createNodeIdPrefix(parentRowNode) {\n const parts = [];\n let rowNode = parentRowNode;\n // pull keys from all parent nodes, but do not include the root node\n while (rowNode && rowNode.level >= 0) {\n if (rowNode.key === '') {\n parts.push(GROUP_MISSING_KEY_ID);\n }\n else {\n parts.push(rowNode.key);\n }\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 checkOpenByDefault(rowNode) {\n if (!rowNode.isExpandable()) {\n return;\n }\n const userFunc = this.gridOptionsService.getCallback('isServerSideGroupOpenByDefault');\n if (!userFunc) {\n return;\n }\n const params = {\n data: rowNode.data,\n rowNode\n };\n const 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(() => rowNode.setExpanded(true), 0);\n }\n }\n};\n__decorate$o([\n Autowired('valueService')\n], BlockUtils.prototype, \"valueService\", void 0);\n__decorate$o([\n Autowired('columnModel')\n], BlockUtils.prototype, \"columnModel\", void 0);\n__decorate$o([\n Autowired('ssrmNodeManager')\n], BlockUtils.prototype, \"nodeManager\", void 0);\n__decorate$o([\n Autowired('beans')\n], BlockUtils.prototype, \"beans\", void 0);\n__decorate$o([\n PostConstruct\n], BlockUtils.prototype, \"postConstruct\", null);\nBlockUtils = __decorate$o([\n Bean('ssrmBlockUtils')\n], BlockUtils);\n\nvar __decorate$n = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet NodeManager = class NodeManager {\n constructor() {\n this.rowNodes = {};\n }\n addRowNode(rowNode) {\n const id = rowNode.id;\n if (this.rowNodes[id]) {\n console.warn(`AG Grid: Duplicate node id ${rowNode.id}. Row ID's are provided via the getRowId() callback. Please modify the getRowId() callback code to provide unique row id values.`);\n console.warn('first instance', this.rowNodes[id].data);\n console.warn('second instance', rowNode.data);\n }\n this.rowNodes[id] = rowNode;\n }\n removeNode(rowNode) {\n const id = rowNode.id;\n if (this.rowNodes[id]) {\n this.rowNodes[id] = undefined;\n }\n }\n clear() {\n this.rowNodes = {};\n }\n};\n__decorate$n([\n PreDestroy\n], NodeManager.prototype, \"clear\", null);\nNodeManager = __decorate$n([\n Bean('ssrmNodeManager')\n], NodeManager);\n\nvar __decorate$m = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet TransactionManager = class TransactionManager extends BeanStub {\n constructor() {\n super(...arguments);\n this.asyncTransactions = [];\n }\n postConstruct() {\n // only want to be active if SSRM active, otherwise would be interfering with other row models\n if (!this.gridOptionsService.isRowModelType('serverSide')) {\n return;\n }\n }\n applyTransactionAsync(transaction, callback) {\n if (this.asyncTransactionsTimeout == null) {\n this.scheduleExecuteAsync();\n }\n this.asyncTransactions.push({ transaction: transaction, callback: callback });\n }\n scheduleExecuteAsync() {\n const waitMillis = this.gridOptionsService.getAsyncTransactionWaitMillis();\n this.asyncTransactionsTimeout = window.setTimeout(() => {\n this.executeAsyncTransactions();\n }, waitMillis);\n }\n executeAsyncTransactions() {\n if (!this.asyncTransactions) {\n return;\n }\n const resultFuncs = [];\n const resultsForEvent = [];\n const transactionsToRetry = [];\n let atLeastOneTransactionApplied = false;\n this.asyncTransactions.forEach(txWrapper => {\n let result;\n this.serverSideRowModel.executeOnStore(txWrapper.transaction.route, cache => {\n result = cache.applyTransaction(txWrapper.transaction);\n });\n if (result == undefined) {\n result = { status: ServerSideTransactionResultStatus.StoreNotFound };\n }\n resultsForEvent.push(result);\n const retryTransaction = result.status == ServerSideTransactionResultStatus.StoreLoading;\n if (retryTransaction) {\n transactionsToRetry.push(txWrapper);\n return;\n }\n if (txWrapper.callback) {\n resultFuncs.push(() => 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(() => {\n resultFuncs.forEach(func => 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 const event = {\n type: Events.EVENT_ASYNC_TRANSACTIONS_FLUSHED,\n results: resultsForEvent\n };\n this.eventService.dispatchEvent(event);\n }\n }\n flushAsyncTransactions() {\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 applyTransaction(transaction) {\n let res;\n this.serverSideRowModel.executeOnStore(transaction.route, store => {\n res = store.applyTransaction(transaction);\n });\n if (res) {\n this.valueCache.onDataChanged();\n if (res.remove) {\n const removedRowIds = res.remove.map(row => row.id);\n this.selectionService.deleteSelectionStateFromParent(transaction.route || [], removedRowIds);\n }\n this.eventService.dispatchEvent({ type: Events.EVENT_STORE_UPDATED });\n return res;\n }\n else {\n return { status: ServerSideTransactionResultStatus.StoreNotFound };\n }\n }\n};\n__decorate$m([\n Autowired('rowNodeBlockLoader')\n], TransactionManager.prototype, \"rowNodeBlockLoader\", void 0);\n__decorate$m([\n Autowired('valueCache')\n], TransactionManager.prototype, \"valueCache\", void 0);\n__decorate$m([\n Autowired('rowModel')\n], TransactionManager.prototype, \"serverSideRowModel\", void 0);\n__decorate$m([\n Autowired('rowRenderer')\n], TransactionManager.prototype, \"rowRenderer\", void 0);\n__decorate$m([\n Autowired('selectionService')\n], TransactionManager.prototype, \"selectionService\", void 0);\n__decorate$m([\n PostConstruct\n], TransactionManager.prototype, \"postConstruct\", null);\nTransactionManager = __decorate$m([\n Bean('ssrmTransactionManager')\n], TransactionManager);\n\nvar __decorate$l = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet ExpandListener = class ExpandListener extends BeanStub {\n postConstruct() {\n // only want to be active if SSRM active, otherwise would be interfering with other row models\n if (!this.gridOptionsService.isRowModelType('serverSide')) {\n return;\n }\n this.addManagedListener(this.eventService, Events.EVENT_ROW_GROUP_OPENED, this.onRowGroupOpened.bind(this));\n }\n onRowGroupOpened(event) {\n const rowNode = event.node;\n if (rowNode.expanded) {\n if (rowNode.master) {\n this.createDetailNode(rowNode);\n }\n else if (_.missing(rowNode.childStore)) {\n const storeParams = this.serverSideRowModel.getParams();\n rowNode.childStore = this.createBean(this.storeFactory.createStore(storeParams, rowNode));\n }\n }\n else if (this.gridOptionsService.is('purgeClosedRowNodes') && _.exists(rowNode.childStore)) {\n rowNode.childStore = this.destroyBean(rowNode.childStore);\n }\n const storeUpdatedEvent = { type: Events.EVENT_STORE_UPDATED };\n this.eventService.dispatchEvent(storeUpdatedEvent);\n }\n createDetailNode(masterNode) {\n if (_.exists(masterNode.detailNode)) {\n return masterNode.detailNode;\n }\n const 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 const defaultDetailRowHeight = 200;\n const rowHeight = this.gridOptionsService.getRowHeightForNode(detailNode).height;\n detailNode.rowHeight = rowHeight ? rowHeight : defaultDetailRowHeight;\n masterNode.detailNode = detailNode;\n return detailNode;\n }\n};\n__decorate$l([\n Autowired('rowModel')\n], ExpandListener.prototype, \"serverSideRowModel\", void 0);\n__decorate$l([\n Autowired('ssrmStoreFactory')\n], ExpandListener.prototype, \"storeFactory\", void 0);\n__decorate$l([\n Autowired('beans')\n], ExpandListener.prototype, \"beans\", void 0);\n__decorate$l([\n PostConstruct\n], ExpandListener.prototype, \"postConstruct\", null);\nExpandListener = __decorate$l([\n Bean('ssrmExpandListener')\n], ExpandListener);\n\nvar __decorate$k = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet SortListener = class SortListener extends BeanStub {\n postConstruct() {\n // only want to be active if SSRM active, otherwise would be interfering with other row models\n if (!this.gridOptionsService.isRowModelType('serverSide')) {\n return;\n }\n this.addManagedListener(this.eventService, Events.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n }\n extractSortModel() {\n const 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.gridOptionsService.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 removeMultiColumnPrefixOnColumnIds(sortModel) {\n if (this.gridOptionsService.isGroupMultiAutoColumn()) {\n const multiColumnPrefix = GROUP_AUTO_COLUMN_ID + \"-\";\n for (let 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 replaceAutoGroupColumnWithActualRowGroupColumns(sortModel) {\n // find index of auto group column in sort model\n const autoGroupSortModel = sortModel.find(sm => sm.colId == GROUP_AUTO_COLUMN_ID);\n // replace auto column with individual group columns\n if (autoGroupSortModel) {\n // remove auto group column\n const autoGroupIndex = sortModel.indexOf(autoGroupSortModel);\n _.removeFromArray(sortModel, autoGroupSortModel);\n const isNotInSortModel = (col) => sortModel.filter(sm => sm.colId === col.getColId()).length == 0;\n const mapColumnToSortModel = (col) => ({ colId: col.getId(), sort: autoGroupSortModel.sort });\n const newModels = this.columnModel.getRowGroupColumns()\n .filter(isNotInSortModel)\n .map(mapColumnToSortModel);\n _.insertArrayIntoArray(sortModel, newModels, autoGroupIndex);\n }\n }\n onSortChanged() {\n const storeParams = this.serverSideRowModel.getParams();\n if (!storeParams) {\n return;\n } // params is undefined if no datasource set\n const newSortModel = this.extractSortModel();\n const oldSortModel = storeParams.sortModel;\n const changedColumns = this.findChangedColumnsInSort(newSortModel, oldSortModel);\n const valueColChanged = this.listenerUtils.isSortingWithValueColumn(changedColumns);\n const secondaryColChanged = this.listenerUtils.isSortingWithSecondaryColumn(changedColumns);\n const params = {\n valueColChanged,\n secondaryColChanged,\n 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 findChangedColumnsInSort(newSortModel, oldSortModel) {\n let allColsInBothSorts = [];\n [newSortModel, oldSortModel].forEach(sortModel => {\n if (sortModel) {\n const ids = sortModel.map(sm => sm.colId);\n allColsInBothSorts = allColsInBothSorts.concat(ids);\n }\n });\n const differentSorts = (oldSortItem, newSortItem) => {\n const oldSort = oldSortItem ? oldSortItem.sort : null;\n const newSort = newSortItem ? newSortItem.sort : null;\n return oldSort !== newSort;\n };\n const differentIndexes = (oldSortItem, newSortItem) => {\n const oldIndex = oldSortItem ? oldSortModel.indexOf(oldSortItem) : -1;\n const newIndex = newSortItem ? newSortModel.indexOf(newSortItem) : -1;\n return oldIndex !== newIndex;\n };\n return allColsInBothSorts.filter(colId => {\n const oldSortItem = oldSortModel.find(sm => sm.colId === colId);\n const newSortItem = newSortModel.find(sm => sm.colId === colId);\n return differentSorts(oldSortItem, newSortItem) || differentIndexes(oldSortItem, newSortItem);\n });\n }\n};\n__decorate$k([\n Autowired('sortController')\n], SortListener.prototype, \"sortController\", void 0);\n__decorate$k([\n Autowired('columnModel')\n], SortListener.prototype, \"columnModel\", void 0);\n__decorate$k([\n Autowired('rowModel')\n], SortListener.prototype, \"serverSideRowModel\", void 0);\n__decorate$k([\n Autowired('ssrmListenerUtils')\n], SortListener.prototype, \"listenerUtils\", void 0);\n__decorate$k([\n PostConstruct\n], SortListener.prototype, \"postConstruct\", null);\nSortListener = __decorate$k([\n Bean('ssrmSortService')\n], SortListener);\n\nvar __decorate$j = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet FilterListener = class FilterListener extends BeanStub {\n postConstruct() {\n // only want to be active if SSRM active, otherwise would be interfering with other row models\n if (!this.gridOptionsService.isRowModelType('serverSide')) {\n return;\n }\n this.addManagedListener(this.eventService, Events.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n }\n onFilterChanged() {\n const storeParams = this.serverSideRowModel.getParams();\n if (!storeParams) {\n return;\n } // params is undefined if no datasource set\n const newModel = this.filterManager.getFilterModel();\n const oldModel = storeParams ? storeParams.filterModel : {};\n const changedColumns = this.findChangedColumns(newModel, oldModel);\n const valueColChanged = this.listenerUtils.isSortingWithValueColumn(changedColumns);\n const secondaryColChanged = this.listenerUtils.isSortingWithSecondaryColumn(changedColumns);\n const params = {\n valueColChanged,\n secondaryColChanged,\n changedColumns\n };\n this.serverSideRowModel.refreshAfterFilter(newModel, params);\n }\n findChangedColumns(oldModel, newModel) {\n const allColKeysMap = {};\n Object.keys(oldModel).forEach(key => allColKeysMap[key] = true);\n Object.keys(newModel).forEach(key => allColKeysMap[key] = true);\n const res = [];\n Object.keys(allColKeysMap).forEach(key => {\n const oldJson = JSON.stringify(oldModel[key]);\n const newJson = JSON.stringify(newModel[key]);\n const filterChanged = oldJson != newJson;\n if (filterChanged) {\n res.push(key);\n }\n });\n return res;\n }\n};\n__decorate$j([\n Autowired('rowModel')\n], FilterListener.prototype, \"serverSideRowModel\", void 0);\n__decorate$j([\n Autowired('filterManager')\n], FilterListener.prototype, \"filterManager\", void 0);\n__decorate$j([\n Autowired('ssrmListenerUtils')\n], FilterListener.prototype, \"listenerUtils\", void 0);\n__decorate$j([\n PostConstruct\n], FilterListener.prototype, \"postConstruct\", null);\nFilterListener = __decorate$j([\n Bean('ssrmFilterListener')\n], FilterListener);\n\nvar __decorate$i = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet StoreFactory = class StoreFactory {\n createStore(ssrmParams, parentNode) {\n const storeParams = this.getStoreParams(ssrmParams, parentNode);\n const CacheClass = storeParams.suppressInfiniteScroll ? FullStore : LazyStore;\n return new CacheClass(ssrmParams, storeParams, parentNode);\n }\n getStoreParams(ssrmParams, parentNode) {\n const userStoreParams = this.getLevelSpecificParams(parentNode);\n // if user provided overrideParams, we take infiniteScroll from there if it exists\n const infiniteScroll = this.isInfiniteScroll(userStoreParams);\n const cacheBlockSize = this.getBlockSize(infiniteScroll, userStoreParams);\n const maxBlocksInCache = this.getMaxBlocksInCache(infiniteScroll, ssrmParams, userStoreParams);\n const storeParams = {\n suppressInfiniteScroll: !infiniteScroll,\n cacheBlockSize,\n maxBlocksInCache\n };\n return storeParams;\n }\n getMaxBlocksInCache(infiniteScroll, ssrmParams, userStoreParams) {\n if (!infiniteScroll) {\n return undefined;\n }\n const maxBlocksInCache = (userStoreParams && userStoreParams.maxBlocksInCache != null)\n ? userStoreParams.maxBlocksInCache\n : this.gridOptionsService.getNum('maxBlocksInCache');\n const maxBlocksActive = maxBlocksInCache != null && maxBlocksInCache >= 0;\n if (!maxBlocksActive) {\n return undefined;\n }\n if (ssrmParams.dynamicRowHeight) {\n const message = '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(() => console.warn(message), 'storeFactory.maxBlocksInCache.dynamicRowHeight');\n return undefined;\n }\n if (this.columnModel.isAutoRowHeightActive()) {\n const message = '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(() => console.warn(message), 'storeFactory.maxBlocksInCache.autoRowHeightActive');\n return undefined;\n }\n return maxBlocksInCache;\n }\n getBlockSize(infiniteScroll, userStoreParams) {\n if (!infiniteScroll) {\n return undefined;\n }\n const blockSize = (userStoreParams && userStoreParams.cacheBlockSize != null)\n ? userStoreParams.cacheBlockSize\n : this.gridOptionsService.getNum('cacheBlockSize');\n if (blockSize != null && blockSize > 0) {\n return blockSize;\n }\n else {\n return 100;\n }\n }\n getLevelSpecificParams(parentNode) {\n const callback = this.gridOptionsService.getCallback('getServerSideGroupLevelParams');\n if (!callback) {\n return undefined;\n }\n const 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 const res = callback(params);\n if (res.storeType != null) {\n res.suppressInfiniteScroll = res.storeType !== \"partial\";\n }\n return res;\n }\n isInfiniteScroll(storeParams) {\n const res = (storeParams && storeParams.suppressInfiniteScroll != null)\n ? storeParams.suppressInfiniteScroll\n : this.isSuppressServerSideInfiniteScroll();\n return !res;\n }\n isSuppressServerSideInfiniteScroll() {\n return this.gridOptionsService.is('suppressServerSideInfiniteScroll');\n }\n};\n__decorate$i([\n Autowired('gridOptionsService')\n], StoreFactory.prototype, \"gridOptionsService\", void 0);\n__decorate$i([\n Autowired('columnModel')\n], StoreFactory.prototype, \"columnModel\", void 0);\nStoreFactory = __decorate$i([\n Bean('ssrmStoreFactory')\n], StoreFactory);\n\nvar __decorate$h = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet ListenerUtils = class ListenerUtils {\n isSortingWithValueColumn(changedColumnsInSort) {\n const valueColIds = this.columnModel.getValueColumns().map(col => col.getColId());\n for (let i = 0; i < changedColumnsInSort.length; i++) {\n if (valueColIds.indexOf(changedColumnsInSort[i]) > -1) {\n return true;\n }\n }\n return false;\n }\n isSortingWithSecondaryColumn(changedColumnsInSort) {\n if (!this.columnModel.getSecondaryColumns()) {\n return false;\n }\n const secondaryColIds = this.columnModel.getSecondaryColumns().map(col => col.getColId());\n for (let i = 0; i < changedColumnsInSort.length; i++) {\n if (secondaryColIds.indexOf(changedColumnsInSort[i]) > -1) {\n return true;\n }\n }\n return false;\n }\n};\n__decorate$h([\n Autowired('columnModel')\n], ListenerUtils.prototype, \"columnModel\", void 0);\nListenerUtils = __decorate$h([\n Bean('ssrmListenerUtils')\n], ListenerUtils);\n\nvar __decorate$g = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass DefaultStrategy extends BeanStub {\n constructor() {\n super(...arguments);\n this.selectedState = { selectAll: false, toggledNodes: new Set() };\n this.lastSelected = null;\n this.selectAllUsed = false;\n // this is to prevent regressions, default selectionService retains reference of clicked nodes.\n this.selectedNodes = {};\n }\n init() {\n this.rowSelection = this.gridOptionsService.get('rowSelection');\n this.addManagedPropertyListener('rowSelection', (propChange) => {\n this.rowSelection = propChange.currentValue;\n });\n }\n getSelectedState() {\n return {\n selectAll: this.selectedState.selectAll,\n toggledNodes: [...this.selectedState.toggledNodes],\n };\n }\n setSelectedState(state) {\n // fire selection changed event\n const newState = {\n selectAll: false,\n toggledNodes: new Set(),\n };\n if (typeof state !== 'object') {\n console.error('AG Grid: The provided selection state should be an object.');\n return;\n }\n if ('selectAll' in state && typeof state.selectAll === 'boolean') {\n newState.selectAll = state.selectAll;\n }\n else {\n console.error('AG Grid: Select all status should be of boolean type.');\n return;\n }\n if ('toggledNodes' in state && Array.isArray(state.toggledNodes)) {\n state.toggledNodes.forEach((key) => {\n if (typeof key === 'string') {\n newState.toggledNodes.add(key);\n }\n else {\n console.warn(`AG Grid: Provided ids must be of string type. Invalid id provided: ${key}`);\n }\n });\n }\n else {\n console.error('AG Grid: `toggledNodes` must be an array of string ids.');\n return;\n }\n this.selectedState = newState;\n }\n deleteSelectionStateFromParent(parentPath, removedNodeIds) {\n if (this.selectedState.toggledNodes.size === 0) {\n return false;\n }\n let anyNodesToggled = false;\n removedNodeIds.forEach(id => {\n if (this.selectedState.toggledNodes.delete(id)) {\n anyNodesToggled = true;\n }\n });\n return anyNodesToggled;\n }\n setNodesSelected(params) {\n if (params.nodes.length === 0)\n return 0;\n const onlyThisNode = params.clearSelection && params.newValue && !params.rangeSelect;\n if (this.rowSelection !== 'multiple' || onlyThisNode) {\n if (params.nodes.length > 1) {\n throw new Error('AG Grid: cannot select multiple rows when rowSelection is set to \\'single\\'');\n }\n const node = params.nodes[0];\n if (params.newValue) {\n this.selectedNodes = { [node.id]: node };\n this.selectedState = {\n selectAll: false,\n toggledNodes: new Set([node.id]),\n };\n }\n else {\n this.selectedNodes = {};\n this.selectedState = {\n selectAll: false,\n toggledNodes: new Set(),\n };\n }\n this.lastSelected = node.id;\n return 1;\n }\n const updateNodeState = (node) => {\n if (params.newValue) {\n this.selectedNodes[node.id] = node;\n }\n else {\n delete this.selectedNodes[node.id];\n }\n const doesNodeConform = params.newValue === this.selectedState.selectAll;\n if (doesNodeConform) {\n this.selectedState.toggledNodes.delete(node.id);\n return;\n }\n this.selectedState.toggledNodes.add(node.id);\n };\n if (params.rangeSelect && this.lastSelected) {\n if (params.nodes.length > 1) {\n throw new Error('AG Grid: cannot select multiple rows when using rangeSelect');\n }\n const node = params.nodes[0];\n const lastSelectedNode = this.rowModel.getRowNode(this.lastSelected);\n this.rowModel.getNodesInRangeForSelection(node, lastSelectedNode !== null && lastSelectedNode !== void 0 ? lastSelectedNode : null).forEach(updateNodeState);\n this.lastSelected = node.id;\n return 1;\n }\n params.nodes.forEach(updateNodeState);\n this.lastSelected = params.nodes[params.nodes.length - 1].id;\n return 1;\n }\n processNewRow(node) {\n if (this.selectedNodes[node.id]) {\n this.selectedNodes[node.id] = node;\n }\n }\n isNodeSelected(node) {\n const isToggled = this.selectedState.toggledNodes.has(node.id);\n return this.selectedState.selectAll ? !isToggled : isToggled;\n }\n getSelectedNodes() {\n if (this.selectAllUsed) {\n console.warn(`AG Grid: getSelectedNodes and getSelectedRows functions cannot be used with select all functionality with the server-side row model.\n Use \\`api.getServerSideSelectionState()\\` instead.`);\n }\n return Object.values(this.selectedNodes);\n }\n getSelectedRows() {\n return this.getSelectedNodes().map(node => node.data);\n }\n getSelectionCount() {\n if (this.selectedState.selectAll) {\n return -1;\n }\n return this.selectedState.toggledNodes.size;\n }\n clearOtherNodes(rowNodeToKeepSelected, source) {\n const clearedRows = this.selectedState.selectAll ? 1 : this.selectedState.toggledNodes.size - 1;\n this.selectedState = {\n selectAll: false,\n toggledNodes: new Set([rowNodeToKeepSelected.id]),\n };\n this.rowModel.forEachNode(node => {\n if (node !== rowNodeToKeepSelected) {\n node.selectThisNode(false, undefined, source);\n }\n });\n const event = {\n type: Events.EVENT_SELECTION_CHANGED,\n source,\n };\n this.eventService.dispatchEvent(event);\n return clearedRows;\n }\n isEmpty() {\n var _a;\n return !this.selectedState.selectAll && !((_a = this.selectedState.toggledNodes) === null || _a === void 0 ? void 0 : _a.size);\n }\n selectAllRowNodes(params) {\n this.selectedState = { selectAll: true, toggledNodes: new Set() };\n this.selectedNodes = {};\n this.selectAllUsed = true;\n }\n deselectAllRowNodes(params) {\n this.selectedState = { selectAll: false, toggledNodes: new Set() };\n this.selectedNodes = {};\n }\n getSelectAllState(justFiltered, justCurrentPage) {\n if (this.selectedState.selectAll) {\n if (this.selectedState.toggledNodes.size > 0) {\n return null;\n }\n return true;\n }\n if (this.selectedState.toggledNodes.size > 0) {\n return null;\n }\n return false;\n }\n}\n__decorate$g([\n Autowired('rowModel')\n], DefaultStrategy.prototype, \"rowModel\", void 0);\n__decorate$g([\n PostConstruct\n], DefaultStrategy.prototype, \"init\", null);\n\nvar __decorate$f = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 __rest = (undefined && undefined.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nclass GroupSelectsChildrenStrategy extends BeanStub {\n constructor() {\n super(...arguments);\n this.selectedState = { selectAllChildren: false, toggledNodes: new Map() };\n this.lastSelected = null;\n }\n init() {\n // if model has updated, a store may now be fully loaded to clean up indeterminate states\n this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, () => this.removeRedundantState());\n // when the grouping changes, the state no longer makes sense, so reset the state.\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, () => this.selectionService.reset());\n }\n getSelectedState() {\n const recursivelySerializeState = (state, level, nodeId) => {\n const normalisedState = {\n nodeId,\n };\n if (level <= this.columnModel.getRowGroupColumns().length) {\n normalisedState.selectAllChildren = state.selectAllChildren;\n }\n // omit toggledNodes if empty\n if (state.toggledNodes.size) {\n const toggledNodes = [];\n state.toggledNodes.forEach((value, key) => {\n const newState = recursivelySerializeState(value, level + 1, key);\n toggledNodes.push(newState);\n });\n normalisedState.toggledNodes = toggledNodes;\n }\n return normalisedState;\n };\n return recursivelySerializeState(this.selectedState, 0);\n }\n setSelectedState(state) {\n const recursivelyDeserializeState = (normalisedState, parentSelected) => {\n var _a, _b;\n if (typeof normalisedState !== 'object') {\n throw new Error('AG Grid: Each provided state object must be an object.');\n }\n if ('selectAllChildren' in normalisedState && typeof normalisedState.selectAllChildren !== 'boolean') {\n throw new Error('AG Grid: `selectAllChildren` must be a boolean value or undefined.');\n }\n if ('toggledNodes' in normalisedState) {\n if (!Array.isArray(normalisedState.toggledNodes)) {\n throw new Error('AG Grid: `toggledNodes` must be an array.');\n }\n const allHaveIds = normalisedState.toggledNodes.every(innerState => (typeof innerState === 'object' && 'nodeId' in innerState && typeof innerState.nodeId === 'string'));\n if (!allHaveIds) {\n throw new Error('AG Grid: Every `toggledNode` requires an associated string id.');\n }\n }\n const isThisNodeSelected = (_a = normalisedState.selectAllChildren) !== null && _a !== void 0 ? _a : !parentSelected;\n const convertedChildren = (_b = normalisedState.toggledNodes) === null || _b === void 0 ? void 0 : _b.map(innerState => ([innerState.nodeId, recursivelyDeserializeState(innerState, isThisNodeSelected)]));\n const doesRedundantStateExist = convertedChildren === null || convertedChildren === void 0 ? void 0 : convertedChildren.some(([_, innerState]) => isThisNodeSelected === innerState.selectAllChildren && innerState.toggledNodes.size === 0);\n if (doesRedundantStateExist) {\n throw new Error(`\n AG Grid: AG Grid: Row selection state could not be parsed due to invalid data. Ensure all child state has toggledNodes or does not conform with the parent rule.\n Please rebuild the selection state and reapply it.\n `);\n }\n return {\n selectAllChildren: isThisNodeSelected,\n toggledNodes: new Map(convertedChildren),\n };\n };\n try {\n this.selectedState = recursivelyDeserializeState(state, !!state.selectAllChildren);\n }\n catch (e) {\n console.error(e.message);\n }\n }\n deleteSelectionStateFromParent(parentRoute, removedNodeIds) {\n let parentState = this.selectedState;\n const remainingRoute = [...parentRoute];\n while (parentState && remainingRoute.length) {\n parentState = parentState.toggledNodes.get(remainingRoute.pop());\n }\n // parent has no explicit state, nothing to remove\n if (!parentState) {\n return false;\n }\n let anyStateChanged = false;\n removedNodeIds.forEach(id => {\n if (parentState === null || parentState === void 0 ? void 0 : parentState.toggledNodes.delete(id)) {\n anyStateChanged = true;\n }\n });\n if (anyStateChanged) {\n this.removeRedundantState();\n }\n return anyStateChanged;\n }\n setNodesSelected(params) {\n const { nodes } = params, other = __rest(params, [\"nodes\"]);\n if (nodes.length === 0)\n return 0;\n if (params.rangeSelect) {\n if (nodes.length > 1) {\n throw new Error('AG Grid: cannot select multiple rows when using rangeSelect');\n }\n const node = nodes[0];\n const rangeOfNodes = this.rowModel.getNodesInRangeForSelection(node, this.lastSelected);\n // sort the routes by route length, high to low, this means we can do the lowest level children first\n const routes = rangeOfNodes.map(this.getRouteToNode).sort((a, b) => b.length - a.length);\n // skip routes if we've already done a descendent\n const completedRoutes = new Set();\n routes.forEach(route => {\n // skip routes if we've already selected a descendent\n if (completedRoutes.has(route[route.length - 1])) {\n return;\n }\n route.forEach(part => completedRoutes.add(part));\n this.recursivelySelectNode(route, this.selectedState, Object.assign({ node }, other));\n });\n this.removeRedundantState();\n this.lastSelected = node;\n return 1;\n }\n params.nodes.forEach(node => {\n const idPathToNode = this.getRouteToNode(node);\n this.recursivelySelectNode(idPathToNode, this.selectedState, Object.assign(Object.assign({}, other), { node }));\n });\n this.removeRedundantState();\n this.lastSelected = params.nodes[params.nodes.length - 1];\n return 1;\n }\n isNodeSelected(node) {\n const path = this.getRouteToNode(node);\n return this.isNodePathSelected(path, this.selectedState);\n }\n isNodePathSelected([nextNode, ...nodes], state) {\n if (nodes.length === 0) {\n const isToggled = state.toggledNodes.has(nextNode.id);\n if (nextNode.hasChildren()) {\n const groupState = state.toggledNodes.get(nextNode.id);\n if (groupState && groupState.toggledNodes.size) {\n return undefined;\n }\n }\n return state.selectAllChildren ? !isToggled : isToggled;\n }\n // if there's a deeper level, check recursively\n if (state.toggledNodes.has(nextNode.id)) {\n const nextState = state.toggledNodes.get(nextNode.id);\n if (nextState) {\n return this.isNodePathSelected(nodes, nextState);\n }\n }\n // no deeper custom state, respect the closest default\n return !!state.selectAllChildren;\n }\n getRouteToNode(node) {\n const pathToNode = [];\n let tempNode = node;\n while (tempNode.parent) {\n pathToNode.push(tempNode);\n tempNode = tempNode.parent;\n }\n return pathToNode.reverse();\n }\n removeRedundantState() {\n if (this.filterManager.isAnyFilterPresent()) {\n return;\n }\n const recursivelyRemoveState = (selectedState = this.selectedState, store = this.serverSideRowModel.getRootStore(), node) => {\n let allChildNodesFound = true;\n let noIndeterminateChildren = true;\n selectedState.toggledNodes.forEach((state, id) => {\n const parentNode = this.rowModel.getRowNode(id);\n if (!parentNode) {\n allChildNodesFound = false;\n }\n const nextStore = parentNode === null || parentNode === void 0 ? void 0 : parentNode.childStore;\n if (!nextStore) {\n if (state.toggledNodes.size > 0) {\n noIndeterminateChildren = false;\n }\n return;\n }\n // if child was cleared, check if this state is still relevant\n if (recursivelyRemoveState(state, nextStore, parentNode)) {\n // cleans out groups which have no toggled nodes and an equivalent default to its parent\n if (selectedState.selectAllChildren === state.selectAllChildren) {\n selectedState.toggledNodes.delete(id);\n }\n }\n if (state.toggledNodes.size > 0) {\n noIndeterminateChildren = false;\n }\n });\n if (!store || !store.isLastRowIndexKnown() || store.getRowCount() !== selectedState.toggledNodes.size) {\n // if row count unknown, or doesn't match the size of toggledNodes, ignore.\n return false;\n }\n if (noIndeterminateChildren && allChildNodesFound) {\n selectedState.toggledNodes.clear();\n selectedState.selectAllChildren = !selectedState.selectAllChildren;\n // if node was indeterminate, it's not any more.\n if (node && (node === null || node === void 0 ? void 0 : node.isSelected()) !== selectedState.selectAllChildren) {\n node.selectThisNode(selectedState.selectAllChildren, undefined, 'api');\n }\n return true;\n }\n return false;\n };\n recursivelyRemoveState();\n }\n recursivelySelectNode([nextNode, ...nodes], selectedState, params) {\n if (!nextNode) {\n return;\n }\n // if this is the last node, hard add/remove based on its selectAllChildren state\n const isLastNode = !nodes.length;\n if (isLastNode) {\n const needsDeleted = selectedState.selectAllChildren === params.newValue;\n if (needsDeleted) {\n selectedState.toggledNodes.delete(nextNode.id);\n return;\n }\n const newState = {\n selectAllChildren: params.newValue,\n toggledNodes: new Map(),\n };\n selectedState.toggledNodes.set(nextNode.id, newState);\n return;\n }\n const doesStateAlreadyExist = selectedState.toggledNodes.has(nextNode.id);\n const childState = doesStateAlreadyExist ? (selectedState.toggledNodes.get(nextNode.id)) : {\n selectAllChildren: selectedState.selectAllChildren,\n toggledNodes: new Map(),\n };\n if (!doesStateAlreadyExist) {\n selectedState.toggledNodes.set(nextNode.id, childState);\n }\n this.recursivelySelectNode(nodes, childState, params);\n // cleans out groups which have no toggled nodes and an equivalent default to its parent\n if (selectedState.selectAllChildren === childState.selectAllChildren && childState.toggledNodes.size === 0) {\n selectedState.toggledNodes.delete(nextNode.id);\n }\n }\n getSelectedNodes() {\n console.warn(`AG Grid: \\`getSelectedNodes\\` and \\`getSelectedRows\\` functions cannot be used with \\`groupSelectsChildren\\` and the server-side row model.\n Use \\`api.getServerSideSelectionState()\\` instead.`);\n const selectedNodes = [];\n this.rowModel.forEachNode(node => {\n if (node.isSelected()) {\n selectedNodes.push(node);\n }\n });\n return selectedNodes;\n }\n processNewRow(node) {\n // This is used for updating outdated node refs, as this model entirely uses ids it's irrelevant\n }\n getSelectedRows() {\n return this.getSelectedNodes().map(node => node.data);\n }\n getSelectionCount() {\n return -1;\n }\n isEmpty() {\n var _a;\n return !this.selectedState.selectAllChildren && !((_a = this.selectedState.toggledNodes) === null || _a === void 0 ? void 0 : _a.size);\n }\n selectAllRowNodes(params) {\n this.selectedState = { selectAllChildren: true, toggledNodes: new Map() };\n }\n deselectAllRowNodes(params) {\n this.selectedState = { selectAllChildren: false, toggledNodes: new Map() };\n }\n getSelectAllState(justFiltered, justCurrentPage) {\n if (this.selectedState.selectAllChildren) {\n if (this.selectedState.toggledNodes.size > 0) {\n return null;\n }\n return true;\n }\n if (this.selectedState.toggledNodes.size > 0) {\n return null;\n }\n return false;\n }\n}\n__decorate$f([\n Autowired('rowModel')\n], GroupSelectsChildrenStrategy.prototype, \"rowModel\", void 0);\n__decorate$f([\n Autowired('columnModel')\n], GroupSelectsChildrenStrategy.prototype, \"columnModel\", void 0);\n__decorate$f([\n Autowired('filterManager')\n], GroupSelectsChildrenStrategy.prototype, \"filterManager\", void 0);\n__decorate$f([\n Autowired('rowModel')\n], GroupSelectsChildrenStrategy.prototype, \"serverSideRowModel\", void 0);\n__decorate$f([\n Autowired('selectionService')\n], GroupSelectsChildrenStrategy.prototype, \"selectionService\", void 0);\n__decorate$f([\n PostConstruct\n], GroupSelectsChildrenStrategy.prototype, \"init\", null);\n\nvar __decorate$e = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet ServerSideSelectionService = class ServerSideSelectionService extends BeanStub {\n init() {\n const groupSelectsChildren = this.gridOptionsService.is('groupSelectsChildren');\n this.addManagedPropertyListener('groupSelectsChildren', (propChange) => {\n this.destroyBean(this.selectionStrategy);\n const StrategyClazz = !propChange.currentValue ? DefaultStrategy : GroupSelectsChildrenStrategy;\n this.selectionStrategy = this.createManagedBean(new StrategyClazz());\n this.shotgunResetNodeSelectionState();\n const event = {\n type: Events.EVENT_SELECTION_CHANGED,\n source: 'api',\n };\n this.eventService.dispatchEvent(event);\n });\n this.rowSelection = this.gridOptionsService.get('rowSelection');\n this.addManagedPropertyListener('rowSelection', (propChange) => this.rowSelection = propChange.currentValue);\n const StrategyClazz = !groupSelectsChildren ? DefaultStrategy : GroupSelectsChildrenStrategy;\n this.selectionStrategy = this.createManagedBean(new StrategyClazz());\n }\n getServerSideSelectionState() {\n return this.selectionStrategy.getSelectedState();\n }\n setServerSideSelectionState(state) {\n this.selectionStrategy.setSelectedState(state);\n this.shotgunResetNodeSelectionState();\n const event = {\n type: Events.EVENT_SELECTION_CHANGED,\n source: 'api',\n };\n this.eventService.dispatchEvent(event);\n }\n setNodesSelected(params) {\n if (params.nodes.length > 1 && this.rowSelection !== 'multiple') {\n console.warn(`AG Grid: cannot multi select while rowSelection='single'`);\n return 0;\n }\n if (params.nodes.length > 1 && params.rangeSelect) {\n console.warn(`AG Grid: cannot use range selection when multi selecting rows`);\n return 0;\n }\n const changedNodes = this.selectionStrategy.setNodesSelected(params);\n this.shotgunResetNodeSelectionState(params.source);\n const event = {\n type: Events.EVENT_SELECTION_CHANGED,\n source: params.source,\n };\n this.eventService.dispatchEvent(event);\n return changedNodes;\n }\n /**\n * Deletes the selection state for a set of nodes, for use after deleting nodes via\n * transaction. As this is designed for transactions, all nodes should belong to the same group.\n */\n deleteSelectionStateFromParent(storeRoute, removedNodeIds) {\n const stateChanged = this.selectionStrategy.deleteSelectionStateFromParent(storeRoute, removedNodeIds);\n if (!stateChanged) {\n return;\n }\n this.shotgunResetNodeSelectionState();\n const event = {\n type: Events.EVENT_SELECTION_CHANGED,\n source: 'api',\n };\n this.eventService.dispatchEvent(event);\n }\n shotgunResetNodeSelectionState(source) {\n this.rowModel.forEachNode(node => {\n if (node.stub) {\n return;\n }\n const isNodeSelected = this.selectionStrategy.isNodeSelected(node);\n if (isNodeSelected !== node.isSelected()) {\n node.selectThisNode(isNodeSelected, undefined, source);\n }\n });\n }\n getSelectedNodes() {\n return this.selectionStrategy.getSelectedNodes();\n }\n getSelectedRows() {\n return this.selectionStrategy.getSelectedRows();\n }\n getSelectionCount() {\n return this.selectionStrategy.getSelectionCount();\n }\n syncInRowNode(rowNode, oldNode) {\n // update any refs being held in the strategies\n this.selectionStrategy.processNewRow(rowNode);\n const isNodeSelected = this.selectionStrategy.isNodeSelected(rowNode);\n rowNode.setSelectedInitialValue(isNodeSelected);\n }\n reset() {\n this.selectionStrategy.deselectAllRowNodes({ source: 'api' });\n }\n isEmpty() {\n return this.selectionStrategy.isEmpty();\n }\n selectAllRowNodes(params) {\n if (params.justCurrentPage || params.justFiltered) {\n console.warn(\"AG Grid: selecting just filtered only works when gridOptions.rowModelType='clientSide'\");\n }\n this.selectionStrategy.selectAllRowNodes(params);\n this.rowModel.forEachNode(node => {\n if (node.stub) {\n return;\n }\n node.selectThisNode(true, undefined, params.source);\n });\n const event = {\n type: Events.EVENT_SELECTION_CHANGED,\n source: params.source,\n };\n this.eventService.dispatchEvent(event);\n }\n deselectAllRowNodes(params) {\n if (params.justCurrentPage || params.justFiltered) {\n console.warn(\"AG Grid: selecting just filtered only works when gridOptions.rowModelType='clientSide'\");\n }\n this.selectionStrategy.deselectAllRowNodes(params);\n this.rowModel.forEachNode(node => {\n if (node.stub) {\n return;\n }\n node.selectThisNode(false, undefined, params.source);\n });\n const event = {\n type: Events.EVENT_SELECTION_CHANGED,\n source: params.source,\n };\n this.eventService.dispatchEvent(event);\n }\n getSelectAllState(justFiltered, justCurrentPage) {\n return this.selectionStrategy.getSelectAllState(justFiltered, justCurrentPage);\n }\n // used by CSRM\n updateGroupsFromChildrenSelections(source, changedPath) {\n return false;\n }\n // used by CSRM\n getBestCostNodeSelection() {\n console.warn('AG Grid: calling gridApi.getBestCostNodeSelection() is only possible when using rowModelType=`clientSide`.');\n return undefined;\n }\n // used by CSRM\n filterFromSelection() {\n return;\n }\n};\n__decorate$e([\n Autowired('rowModel')\n], ServerSideSelectionService.prototype, \"rowModel\", void 0);\n__decorate$e([\n PostConstruct\n], ServerSideSelectionService.prototype, \"init\", null);\nServerSideSelectionService = __decorate$e([\n Bean('selectionService')\n], ServerSideSelectionService);\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nconst VERSION$4 = '30.0.5';\n\nconst ServerSideRowModelModule = {\n version: VERSION$4,\n moduleName: ModuleNames.ServerSideRowModelModule,\n rowModel: 'serverSide',\n beans: [ServerSideRowModel, ExpandListener, SortListener, StoreUtils, BlockUtils, NodeManager, TransactionManager,\n FilterListener, StoreFactory, ListenerUtils, ServerSideSelectionService],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n\n/** @param V type of value in the Set Filter */\nclass ClientSideValuesExtractor {\n constructor(rowModel, filterParams, createKey, caseFormat, columnModel, valueService, treeDataOrGrouping, treeData, getDataPath) {\n this.rowModel = rowModel;\n this.filterParams = filterParams;\n this.createKey = createKey;\n this.caseFormat = caseFormat;\n this.columnModel = columnModel;\n this.valueService = valueService;\n this.treeDataOrGrouping = treeDataOrGrouping;\n this.treeData = treeData;\n this.getDataPath = getDataPath;\n }\n extractUniqueValues(predicate, existingValues) {\n const values = new Map();\n const existingFormattedKeys = this.extractExistingFormattedKeys(existingValues);\n const formattedKeys = new Set();\n const treeData = this.treeData && !!this.getDataPath;\n const groupedCols = this.columnModel.getRowGroupColumns();\n const addValue = (unformattedKey, value) => {\n const formattedKey = this.caseFormat(unformattedKey);\n if (!formattedKeys.has(formattedKey)) {\n formattedKeys.add(formattedKey);\n let keyToAdd = unformattedKey;\n let valueToAdd = _.makeNull(value);\n // when case insensitive, we pick the first value to use. if this is later filtered out,\n // we still want to use the original value and not one with a different case\n const existingUnformattedKey = existingFormattedKeys === null || existingFormattedKeys === void 0 ? void 0 : existingFormattedKeys.get(formattedKey);\n if (existingUnformattedKey != null) {\n keyToAdd = existingUnformattedKey;\n valueToAdd = existingValues.get(existingUnformattedKey);\n }\n values.set(keyToAdd, valueToAdd);\n }\n };\n this.rowModel.forEachLeafNode(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 if (this.treeDataOrGrouping) {\n this.addValueForTreeDataOrGrouping(node, treeData, groupedCols, addValue);\n return;\n }\n let value = this.getValue(node);\n if (this.filterParams.convertValuesToStrings) {\n // for backwards compatibility - keeping separate as it will eventually be removed\n this.addValueForConvertValuesToString(node, value, addValue);\n return;\n }\n if (value != null && Array.isArray(value)) {\n value.forEach(x => {\n addValue(this.createKey(x, node), x);\n });\n if (value.length === 0) {\n addValue(null, null);\n }\n }\n else {\n addValue(this.createKey(value, node), value);\n }\n });\n return values;\n }\n addValueForConvertValuesToString(node, value, addValue) {\n const key = this.createKey(value, node);\n if (key != null && Array.isArray(key)) {\n key.forEach(part => {\n const processedPart = _.toStringOrNull(_.makeNull(part));\n addValue(processedPart, processedPart);\n });\n if (key.length === 0) {\n addValue(null, null);\n }\n }\n else {\n addValue(key, key);\n }\n }\n addValueForTreeDataOrGrouping(node, treeData, groupedCols, addValue) {\n var _a;\n let dataPath;\n if (treeData) {\n if ((_a = node.childrenAfterGroup) === null || _a === void 0 ? void 0 : _a.length) {\n return;\n }\n dataPath = this.getDataPath(node.data);\n }\n else {\n dataPath = groupedCols.map(groupCol => this.valueService.getKeyForNode(groupCol, node));\n dataPath.push(this.getValue(node));\n }\n if (dataPath) {\n dataPath = dataPath.map(treeKey => _.toStringOrNull(_.makeNull(treeKey)));\n }\n if (dataPath === null || dataPath === void 0 ? void 0 : dataPath.some(treeKey => treeKey == null)) {\n dataPath = null;\n }\n addValue(this.createKey(dataPath), dataPath);\n }\n getValue(node) {\n const { api, colDef, column, columnApi, context } = this.filterParams;\n return this.filterParams.valueGetter({\n api,\n colDef,\n column,\n columnApi,\n context,\n data: node.data,\n getValue: (field) => node.data[field],\n node,\n });\n }\n extractExistingFormattedKeys(existingValues) {\n if (!existingValues) {\n return null;\n }\n const existingFormattedKeys = new Map();\n existingValues.forEach((_value, key) => {\n existingFormattedKeys.set(this.caseFormat(key), key);\n });\n return existingFormattedKeys;\n }\n}\n\nclass SetFilterDisplayValue {\n}\nSetFilterDisplayValue.SELECT_ALL = '__AG_SELECT_ALL__';\n\nclass FlatSetDisplayValueModel {\n constructor(valueFormatterService, valueFormatter, formatter, column) {\n this.valueFormatterService = valueFormatterService;\n this.valueFormatter = valueFormatter;\n this.formatter = formatter;\n this.column = column;\n /** All keys that are currently displayed, after the mini-filter has been applied. */\n this.displayedKeys = [];\n }\n updateDisplayedValuesToAllAvailable(_getValue, _allKeys, availableKeys) {\n this.displayedKeys = Array.from(availableKeys);\n }\n updateDisplayedValuesToMatchMiniFilter(getValue, _allKeys, availableKeys, matchesFilter, nullMatchesFilter) {\n this.displayedKeys = [];\n for (let key of availableKeys) {\n if (key == null) {\n if (nullMatchesFilter) {\n this.displayedKeys.push(key);\n }\n }\n else {\n const value = getValue(key);\n const valueFormatterValue = this.valueFormatterService.formatValue(this.column, null, value, this.valueFormatter, false);\n const textFormatterValue = this.formatter(valueFormatterValue);\n if (matchesFilter(textFormatterValue)) {\n this.displayedKeys.push(key);\n }\n }\n }\n }\n getDisplayedValueCount() {\n return this.displayedKeys.length;\n }\n getDisplayedItem(index) {\n return this.displayedKeys[index];\n }\n getSelectAllItem() {\n return SetFilterDisplayValue.SELECT_ALL;\n }\n getDisplayedKeys() {\n return this.displayedKeys;\n }\n forEachDisplayedKey(func) {\n this.displayedKeys.forEach(func);\n }\n someDisplayedKey(func) {\n return this.displayedKeys.some(func);\n }\n hasGroups() {\n return false;\n }\n refresh() {\n // not used\n }\n}\n\nclass TreeSetDisplayValueModel {\n constructor(formatter, treeListPathGetter, treeListFormatter, treeDataOrGrouping) {\n this.formatter = formatter;\n this.treeListPathGetter = treeListPathGetter;\n this.treeListFormatter = treeListFormatter;\n this.treeDataOrGrouping = treeDataOrGrouping;\n /** all displayed items in a tree structure */\n this.allDisplayedItemsTree = [];\n /** all displayed items flattened and filtered */\n this.activeDisplayedItemsFlat = [];\n this.selectAllItem = {\n depth: 0,\n filterPasses: true,\n available: true,\n treeKey: SetFilterDisplayValue.SELECT_ALL,\n children: this.allDisplayedItemsTree,\n expanded: true,\n key: SetFilterDisplayValue.SELECT_ALL,\n parentTreeKeys: []\n };\n }\n ;\n updateDisplayedValuesToAllAvailable(getValue, allKeys, availableKeys, source) {\n if (source === 'reload') {\n this.generateItemTree(getValue, allKeys, availableKeys);\n }\n else if (source === 'otherFilter') {\n this.updateAvailable(availableKeys);\n this.updateExpandAll();\n }\n else if (source === 'miniFilter') {\n this.resetFilter();\n this.updateExpandAll();\n }\n this.flattenItems();\n }\n updateDisplayedValuesToMatchMiniFilter(getValue, allKeys, availableKeys, matchesFilter, nullMatchesFilter, source) {\n if (source === 'reload') {\n this.generateItemTree(getValue, allKeys, availableKeys);\n }\n else if (source === 'otherFilter') {\n this.updateAvailable(availableKeys);\n }\n this.updateFilter(matchesFilter, nullMatchesFilter);\n this.updateExpandAll();\n this.flattenItems();\n }\n generateItemTree(getValue, allKeys, availableKeys) {\n var _a;\n this.allDisplayedItemsTree = [];\n this.groupsExist = false;\n const treeListPathGetter = this.getTreeListPathGetter(getValue, availableKeys);\n for (let key of allKeys) {\n const value = getValue(key);\n const dataPath = (_a = treeListPathGetter(value)) !== null && _a !== void 0 ? _a : [null];\n if (dataPath.length > 1) {\n this.groupsExist = true;\n }\n const available = availableKeys.has(key);\n let children = this.allDisplayedItemsTree;\n let item;\n let parentTreeKeys = [];\n dataPath.forEach((treeKey, depth) => {\n if (!children) {\n children = [];\n item.children = children;\n }\n item = children.find(child => { var _a; return ((_a = child.treeKey) === null || _a === void 0 ? void 0 : _a.toUpperCase()) === (treeKey === null || treeKey === void 0 ? void 0 : treeKey.toUpperCase()); });\n if (!item) {\n item = { treeKey, depth, filterPasses: true, expanded: false, available, parentTreeKeys };\n if (depth === dataPath.length - 1) {\n item.key = key;\n }\n children.push(item);\n }\n children = item.children;\n parentTreeKeys = [...parentTreeKeys, treeKey];\n });\n }\n // update the parent availability based on the children\n this.updateAvailable(availableKeys);\n this.selectAllItem.children = this.allDisplayedItemsTree;\n this.selectAllItem.expanded = false;\n }\n getTreeListPathGetter(getValue, availableKeys) {\n if (this.treeListPathGetter) {\n return this.treeListPathGetter;\n }\n if (this.treeDataOrGrouping) {\n return value => value;\n }\n // infer from data\n let isDate = false;\n for (const availableKey of availableKeys) {\n // find the first non-null value\n const value = getValue(availableKey);\n if (value instanceof Date) {\n isDate = true;\n break;\n }\n else if (value != null) {\n break;\n }\n }\n if (isDate) {\n return TreeSetDisplayValueModel.DATE_TREE_LIST_PATH_GETTER;\n }\n _.doOnce(() => console.warn('AG Grid: property treeList=true for Set Filter params, but you did not provide a treeListPathGetter or values of type Date.'), 'getTreeListPathGetter');\n return value => [String(value)];\n }\n flattenItems() {\n this.activeDisplayedItemsFlat = [];\n const recursivelyFlattenDisplayedItems = (items) => {\n items.forEach(item => {\n if (!item.filterPasses || !item.available) {\n return;\n }\n this.activeDisplayedItemsFlat.push(item);\n if (item.children && item.expanded) {\n recursivelyFlattenDisplayedItems(item.children);\n }\n });\n };\n recursivelyFlattenDisplayedItems(this.allDisplayedItemsTree);\n }\n resetFilter() {\n const recursiveFilterReset = (item) => {\n if (item.children) {\n item.children.forEach(child => {\n recursiveFilterReset(child);\n });\n }\n item.filterPasses = true;\n };\n this.allDisplayedItemsTree.forEach(item => recursiveFilterReset(item));\n }\n updateFilter(matchesFilter, nullMatchesFilter) {\n const passesFilter = (item) => {\n if (!item.available) {\n return false;\n }\n if (item.treeKey == null) {\n return nullMatchesFilter;\n }\n return matchesFilter(this.formatter(this.treeListFormatter ? this.treeListFormatter(item.treeKey, item.depth, item.parentTreeKeys) : item.treeKey));\n };\n this.allDisplayedItemsTree.forEach(item => this.recursiveItemCheck(item, false, passesFilter, 'filterPasses'));\n }\n getDisplayedValueCount() {\n return this.activeDisplayedItemsFlat.length;\n }\n getDisplayedItem(index) {\n return this.activeDisplayedItemsFlat[index];\n }\n getSelectAllItem() {\n return this.selectAllItem;\n }\n getDisplayedKeys() {\n const displayedKeys = [];\n this.forEachDisplayedKey((key) => displayedKeys.push(key));\n return displayedKeys;\n }\n forEachDisplayedKey(func) {\n const recursiveForEachItem = (item, topParentExpanded) => {\n if (item.children) {\n if (!item.expanded || !topParentExpanded) {\n // if the parent is not expanded, we need to iterate the entire tree\n item.children.forEach(child => {\n if (child.filterPasses) {\n recursiveForEachItem(child, false);\n }\n });\n }\n }\n else {\n func(item.key);\n }\n };\n this.activeDisplayedItemsFlat.forEach(item => recursiveForEachItem(item, true));\n }\n someDisplayedKey(func) {\n const recursiveSomeItem = (item, topParentExpanded) => {\n if (item.children) {\n if (!item.expanded || !topParentExpanded) {\n // if the parent is not expanded, we need to iterate the entire tree\n return item.children.some(child => {\n if (child.filterPasses) {\n return recursiveSomeItem(child, false);\n }\n return false;\n });\n }\n }\n else {\n return func(item.key);\n }\n return false;\n };\n return this.activeDisplayedItemsFlat.some(item => recursiveSomeItem(item, true));\n }\n hasGroups() {\n return this.groupsExist;\n }\n refresh() {\n this.updateExpandAll();\n this.flattenItems();\n }\n updateExpandAll() {\n const recursiveExpansionCheck = (items, someTrue, someFalse) => {\n for (const item of items) {\n if (!item.filterPasses || !item.available || !item.children) {\n continue;\n }\n // indeterminate state only exists for expand all, so don't need to check for the current item\n someTrue = someTrue || !!item.expanded;\n someFalse = someFalse || !item.expanded;\n if (someTrue && someFalse) {\n // already indeterminate. No need to check the children\n return undefined;\n }\n const childExpanded = recursiveExpansionCheck(item.children, someTrue, someFalse);\n if (childExpanded === undefined) {\n return undefined;\n }\n else if (childExpanded) {\n someTrue = true;\n }\n else {\n someFalse = true;\n }\n }\n return someTrue && someFalse ? undefined : someTrue;\n };\n const item = this.getSelectAllItem();\n item.expanded = recursiveExpansionCheck(item.children, false, false);\n }\n recursiveItemCheck(item, parentPasses, checkFunction, itemProp) {\n let atLeastOneChildPassed = false;\n if (item.children) {\n item.children.forEach(child => {\n const childPasses = this.recursiveItemCheck(child, parentPasses || checkFunction(item), checkFunction, itemProp);\n atLeastOneChildPassed = atLeastOneChildPassed || childPasses;\n });\n }\n const itemPasses = parentPasses || atLeastOneChildPassed || checkFunction(item);\n item[itemProp] = itemPasses;\n return itemPasses;\n }\n updateAvailable(availableKeys) {\n const isAvailable = (item) => availableKeys.has(item.key);\n this.allDisplayedItemsTree.forEach(item => this.recursiveItemCheck(item, false, isAvailable, 'available'));\n }\n}\nTreeSetDisplayValueModel.DATE_TREE_LIST_PATH_GETTER = (date) => date ? [String(date.getFullYear()), String(date.getMonth() + 1), String(date.getDate())] : null;\n\nvar 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 = {}));\n/** @param V type of value in the Set Filter */\nclass SetValueModel {\n constructor(params) {\n var _a;\n this.localEventService = new EventService();\n this.miniFilterText = null;\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 = new Map();\n /** Remaining keys when filters from other columns have been applied. */\n this.availableKeys = new Set();\n /** Keys that have been selected for this filter. */\n this.selectedKeys = new Set();\n this.initialised = false;\n const { usingComplexObjects, columnModel, valueService, treeDataTreeList, groupingTreeList, filterParams, gridOptionsService, valueFormatterService, valueFormatter } = params;\n const { column, colDef, textFormatter, doesRowPassOtherFilter, suppressSorting, comparator, rowModel, values, caseSensitive, convertValuesToStrings, treeList, treeListPathGetter, treeListFormatter } = filterParams;\n this.filterParams = filterParams;\n this.setIsLoading = params.setIsLoading;\n this.translate = params.translate;\n this.caseFormat = params.caseFormat;\n this.createKey = params.createKey;\n this.usingComplexObjects = !!params.usingComplexObjects;\n this.formatter = textFormatter || TextFilter.DEFAULT_FORMATTER;\n this.doesRowPassOtherFilters = doesRowPassOtherFilter;\n this.suppressSorting = suppressSorting || false;\n this.convertValuesToStrings = !!convertValuesToStrings;\n const keyComparator = comparator !== null && comparator !== void 0 ? comparator : colDef.comparator;\n const treeDataOrGrouping = !!treeDataTreeList || !!groupingTreeList;\n // If using complex objects and a comparator is provided, sort by values, otherwise need to sort by the string keys.\n // Also if tree data, grouping, or date with tree list, then need to do value sort\n this.compareByValue = !!((usingComplexObjects && keyComparator) || treeDataOrGrouping || (treeList && !treeListPathGetter));\n if (treeDataOrGrouping && !keyComparator) {\n this.entryComparator = this.createTreeDataOrGroupingComparator();\n }\n else if (treeList && !treeListPathGetter && !keyComparator) {\n this.entryComparator = ([_aKey, aValue], [_bKey, bValue]) => _.defaultComparator(aValue, bValue);\n }\n else {\n this.entryComparator = ([_aKey, aValue], [_bKey, bValue]) => keyComparator(aValue, bValue);\n }\n this.keyComparator = (_a = keyComparator) !== null && _a !== void 0 ? _a : _.defaultComparator;\n this.caseSensitive = !!caseSensitive;\n const getDataPath = gridOptionsService.get('getDataPath');\n if (rowModel.getType() === 'clientSide') {\n this.clientSideValuesExtractor = new ClientSideValuesExtractor(rowModel, this.filterParams, this.createKey, this.caseFormat, columnModel, valueService, treeDataOrGrouping, !!treeDataTreeList, getDataPath);\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.displayValueModel = treeList ? new TreeSetDisplayValueModel(this.formatter, treeListPathGetter, treeListFormatter, treeDataTreeList || groupingTreeList) : new FlatSetDisplayValueModel(valueFormatterService, valueFormatter, this.formatter, column);\n this.updateAllValues().then(updatedKeys => this.resetSelectionState(updatedKeys || []));\n }\n addEventListener(eventType, listener, async) {\n this.localEventService.addEventListener(eventType, listener, async);\n }\n removeEventListener(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 refreshValues() {\n const 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 overrideValues(valuesToUse) {\n return new AgPromise(resolve => {\n // wait for any existing values to be populated before overriding\n this.allValuesPromise.then(() => {\n this.valuesType = SetFilterModelValuesType.PROVIDED_LIST;\n this.providedValues = valuesToUse;\n this.refreshValues().then(() => resolve());\n });\n });\n }\n /** @return has anything been updated */\n refreshAfterAnyFilterChanged() {\n if (this.showAvailableOnly()) {\n return this.allValuesPromise.then(keys => {\n this.updateAvailableKeys(keys !== null && keys !== void 0 ? keys : [], 'otherFilter');\n return true;\n });\n }\n return AgPromise.resolve(false);\n }\n isInitialised() {\n return this.initialised;\n }\n updateAllValues() {\n this.allValuesPromise = new AgPromise(resolve => {\n switch (this.valuesType) {\n case SetFilterModelValuesType.TAKEN_FROM_GRID_VALUES:\n case SetFilterModelValuesType.PROVIDED_LIST: {\n resolve(this.processAllKeys(this.valuesType === SetFilterModelValuesType.TAKEN_FROM_GRID_VALUES, this.providedValues));\n break;\n }\n case SetFilterModelValuesType.PROVIDED_CALLBACK: {\n this.setIsLoading(true);\n const callback = this.providedValues;\n const { columnApi, api, context, column, colDef } = this.filterParams;\n const params = {\n success: values => {\n this.setIsLoading(false);\n resolve(this.processAllKeys(false, values));\n },\n colDef,\n column,\n columnApi,\n api,\n context,\n };\n window.setTimeout(() => callback(params), 0);\n break;\n }\n default:\n throw new Error('Unrecognised valuesType');\n }\n });\n this.allValuesPromise.then(values => this.updateAvailableKeys(values || [], 'reload')).then(() => this.initialised = true);\n return this.allValuesPromise;\n }\n processAllKeys(getFromRows, providedValues) {\n const values = getFromRows ? this.getValuesFromRows(false) : this.uniqueValues(this.validateProvidedValues(providedValues));\n const sortedKeys = this.sortKeys(values);\n this.allValues = values !== null && values !== void 0 ? values : new Map();\n return sortedKeys;\n }\n validateProvidedValues(values) {\n if (this.usingComplexObjects && (values === null || values === void 0 ? void 0 : values.length)) {\n const firstValue = values[0];\n if (firstValue && typeof firstValue !== 'object' && typeof firstValue !== 'function') {\n const firstKey = this.createKey(firstValue);\n if (firstKey == null) {\n _.doOnce(() => console.warn('Set Filter Key Creator is returning null for provided values and provided values are primitives. Please provide complex objects or set convertValuesToStrings=true in the filterParams. See https://www.ag-grid.com/javascript-data-grid/filter-set-filter-list/#filter-value-types'), 'setFilterComplexObjectsProvidedNull');\n }\n else {\n _.doOnce(() => console.warn('AG Grid: Set Filter has a Key Creator, but provided values are primitives. Did you mean to provide complex objects or enable convertValuesToStrings?'), 'setFilterComplexObjectsProvidedPrimitive');\n }\n }\n }\n return values;\n }\n setValuesType(value) {\n this.valuesType = value;\n }\n getValuesType() {\n return this.valuesType;\n }\n isKeyAvailable(key) {\n return this.availableKeys.has(key);\n }\n showAvailableOnly() {\n return this.valuesType === SetFilterModelValuesType.TAKEN_FROM_GRID_VALUES;\n }\n updateAvailableKeys(allKeys, source) {\n const availableKeys = this.showAvailableOnly() ? this.sortKeys(this.getValuesFromRows(true)) : allKeys;\n this.availableKeys = new Set(availableKeys);\n this.localEventService.dispatchEvent({ type: SetValueModel.EVENT_AVAILABLE_VALUES_CHANGED });\n this.updateDisplayedValues(source, allKeys);\n }\n sortKeys(nullableValues) {\n const values = nullableValues !== null && nullableValues !== void 0 ? nullableValues : new Map();\n if (this.suppressSorting) {\n return Array.from(values.keys());\n }\n let sortedKeys;\n if (this.compareByValue) {\n sortedKeys = Array.from(values.entries()).sort(this.entryComparator).map(([key]) => key);\n }\n else {\n sortedKeys = Array.from(values.keys()).sort(this.keyComparator);\n }\n if (this.filterParams.excelMode && values.has(null)) {\n // ensure the blank value always appears last\n sortedKeys = sortedKeys.filter(v => v != null);\n sortedKeys.push(null);\n }\n return sortedKeys;\n }\n getValuesFromRows(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 null;\n }\n const predicate = (node) => (!removeUnavailableValues || this.doesRowPassOtherFilters(node));\n return this.clientSideValuesExtractor.extractUniqueValues(predicate, removeUnavailableValues && !this.caseSensitive ? this.allValues : undefined);\n }\n /** Sets mini filter value. Returns true if it changed from last value, otherwise false. */\n setMiniFilter(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('miniFilter');\n return true;\n }\n getMiniFilter() {\n return this.miniFilterText;\n }\n updateDisplayedValues(source, allKeys) {\n if (source === 'expansion') {\n this.displayValueModel.refresh();\n return;\n }\n // if no filter, just display all available values\n if (this.miniFilterText == null) {\n this.displayValueModel.updateDisplayedValuesToAllAvailable((key) => this.getValue(key), allKeys, this.availableKeys, source);\n return;\n }\n // if filter present, we filter down the list\n // to allow for case insensitive searches, upper-case both filter text and value\n const formattedFilterText = this.caseFormat(this.formatter(this.miniFilterText) || '');\n const matchesFilter = (valueToCheck) => valueToCheck != null && this.caseFormat(valueToCheck).indexOf(formattedFilterText) >= 0;\n const nullMatchesFilter = !!this.filterParams.excelMode && matchesFilter(this.translate('blanks'));\n this.displayValueModel.updateDisplayedValuesToMatchMiniFilter((key) => this.getValue(key), allKeys, this.availableKeys, matchesFilter, nullMatchesFilter, source);\n }\n getDisplayedValueCount() {\n return this.displayValueModel.getDisplayedValueCount();\n }\n getDisplayedItem(index) {\n return this.displayValueModel.getDisplayedItem(index);\n }\n getSelectAllItem() {\n return this.displayValueModel.getSelectAllItem();\n }\n hasSelections() {\n return this.filterParams.defaultToNothingSelected ?\n this.selectedKeys.size > 0 :\n this.allValues.size !== this.selectedKeys.size;\n }\n getKeys() {\n return Array.from(this.allValues.keys());\n }\n getValues() {\n return Array.from(this.allValues.values());\n }\n getValue(key) {\n return this.allValues.get(key);\n }\n selectAllMatchingMiniFilter(clearExistingSelection = false) {\n if (this.miniFilterText == null) {\n // ensure everything is selected\n this.selectedKeys = new Set(this.allValues.keys());\n }\n else {\n // ensure everything that matches the mini filter is selected\n if (clearExistingSelection) {\n this.selectedKeys.clear();\n }\n this.displayValueModel.forEachDisplayedKey(key => this.selectedKeys.add(key));\n }\n }\n deselectAllMatchingMiniFilter() {\n if (this.miniFilterText == null) {\n // ensure everything is deselected\n this.selectedKeys.clear();\n }\n else {\n // ensure everything that matches the mini filter is deselected\n this.displayValueModel.forEachDisplayedKey(key => this.selectedKeys.delete(key));\n }\n }\n selectKey(key) {\n this.selectedKeys.add(key);\n }\n deselectKey(key) {\n if (this.filterParams.excelMode && this.isEverythingVisibleSelected()) {\n // ensure we're starting from the correct \"everything selected\" state\n this.resetSelectionState(this.displayValueModel.getDisplayedKeys());\n }\n this.selectedKeys.delete(key);\n }\n isKeySelected(key) {\n return this.selectedKeys.has(key);\n }\n isEverythingVisibleSelected() {\n return !this.displayValueModel.someDisplayedKey(it => !this.isKeySelected(it));\n }\n isNothingVisibleSelected() {\n return !this.displayValueModel.someDisplayedKey(it => this.isKeySelected(it));\n }\n getModel() {\n return this.hasSelections() ? Array.from(this.selectedKeys) : null;\n }\n setModel(model) {\n return this.allValuesPromise.then(keys => {\n if (model == null) {\n this.resetSelectionState(keys !== null && keys !== void 0 ? keys : []);\n }\n else {\n // select all values from the model that exist in the filter\n this.selectedKeys.clear();\n const existingFormattedKeys = new Map();\n this.allValues.forEach((_value, key) => {\n existingFormattedKeys.set(this.caseFormat(key), key);\n });\n model.forEach(unformattedKey => {\n const formattedKey = this.caseFormat(unformattedKey);\n const existingUnformattedKey = existingFormattedKeys.get(formattedKey);\n if (existingUnformattedKey !== undefined) {\n this.selectKey(existingUnformattedKey);\n }\n });\n }\n });\n }\n uniqueValues(values) {\n const uniqueValues = new Map();\n const formattedKeys = new Set();\n (values !== null && values !== void 0 ? values : []).forEach(value => {\n const valueToUse = _.makeNull(value);\n const unformattedKey = this.convertAndGetKey(valueToUse);\n const formattedKey = this.caseFormat(unformattedKey);\n if (!formattedKeys.has(formattedKey)) {\n formattedKeys.add(formattedKey);\n uniqueValues.set(unformattedKey, valueToUse);\n }\n });\n return uniqueValues;\n }\n convertAndGetKey(value) {\n return this.convertValuesToStrings ? value : this.createKey(value);\n }\n resetSelectionState(keys) {\n if (this.filterParams.defaultToNothingSelected) {\n this.selectedKeys.clear();\n }\n else {\n this.selectedKeys = new Set(keys);\n }\n }\n hasGroups() {\n return this.displayValueModel.hasGroups();\n }\n createTreeDataOrGroupingComparator() {\n return ([_aKey, aValue], [_bKey, bValue]) => {\n if (aValue == null) {\n return bValue == null ? 0 : -1;\n }\n else if (bValue == null) {\n return 1;\n }\n for (let i = 0; i < aValue.length; i++) {\n if (i >= bValue.length) {\n return 1;\n }\n const diff = _.defaultComparator(aValue[i], bValue[i]);\n if (diff !== 0) {\n return diff;\n }\n }\n return 0;\n };\n }\n}\nSetValueModel.EVENT_AVAILABLE_VALUES_CHANGED = 'availableValuesChanged';\n\nvar __decorate$d = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/** @param V type of value in the Set Filter */\nclass SetFilterListItem extends Component {\n constructor(params) {\n var _a;\n super(params.isGroup ? SetFilterListItem.GROUP_TEMPLATE : SetFilterListItem.TEMPLATE);\n this.focusWrapper = params.focusWrapper;\n this.value = params.value;\n this.params = params.params;\n this.translate = params.translate;\n this.valueFormatter = params.valueFormatter;\n this.item = params.item;\n this.isSelected = params.isSelected;\n this.isTree = params.isTree;\n this.depth = (_a = params.depth) !== null && _a !== void 0 ? _a : 0;\n this.isGroup = params.isGroup;\n this.groupsExist = params.groupsExist;\n this.isExpanded = params.isExpanded;\n this.hasIndeterminateExpandState = params.hasIndeterminateExpandState;\n }\n init() {\n this.addDestroyFunc(() => { var _a; return (_a = this.destroyCellRendererComponent) === null || _a === void 0 ? void 0 : _a.call(this); });\n this.render();\n this.eCheckbox.setLabelEllipsis(true);\n this.eCheckbox.setValue(this.isSelected, true);\n this.eCheckbox.setDisabled(!!this.params.readOnly);\n this.eCheckbox.getInputElement().setAttribute('tabindex', '-1');\n this.refreshVariableAriaLabels();\n if (this.isTree) {\n if (this.depth > 0) {\n this.addCssClass('ag-set-filter-indent-' + this.depth);\n }\n if (this.isGroup) {\n this.setupExpansion();\n }\n else {\n if (this.groupsExist) {\n this.addCssClass('ag-set-filter-add-group-indent');\n }\n }\n _.setAriaLevel(this.focusWrapper, this.depth + 1);\n }\n if (!!this.params.readOnly) {\n // Don't add event listeners if we're read-only.\n return;\n }\n this.eCheckbox.onValueChange((value) => this.onCheckboxChanged(!!value));\n }\n setupExpansion() {\n this.eGroupClosedIcon.appendChild(_.createIcon('setFilterGroupClosed', this.gridOptionsService, null));\n this.eGroupOpenedIcon.appendChild(_.createIcon('setFilterGroupOpen', this.gridOptionsService, null));\n this.addManagedListener(this.eGroupClosedIcon, 'click', this.onExpandOrContractClicked.bind(this));\n this.addManagedListener(this.eGroupOpenedIcon, 'click', this.onExpandOrContractClicked.bind(this));\n if (this.hasIndeterminateExpandState) {\n this.eGroupIndeterminateIcon.appendChild(_.createIcon('setFilterGroupIndeterminate', this.gridOptionsService, null));\n this.addManagedListener(this.eGroupIndeterminateIcon, 'click', this.onExpandOrContractClicked.bind(this));\n }\n this.setExpandedIcons();\n this.refreshAriaExpanded();\n }\n onExpandOrContractClicked() {\n this.setExpanded(!this.isExpanded);\n }\n setExpanded(isExpanded, silent) {\n if (this.isGroup && isExpanded !== this.isExpanded) {\n this.isExpanded = isExpanded;\n const event = {\n type: SetFilterListItem.EVENT_EXPANDED_CHANGED,\n isExpanded: !!isExpanded,\n item: this.item\n };\n if (!silent) {\n this.dispatchEvent(event);\n }\n this.setExpandedIcons();\n this.refreshAriaExpanded();\n }\n }\n refreshAriaExpanded() {\n _.setAriaExpanded(this.focusWrapper, !!this.isExpanded);\n }\n setExpandedIcons() {\n _.setDisplayed(this.eGroupClosedIcon, this.hasIndeterminateExpandState ? this.isExpanded === false : !this.isExpanded);\n _.setDisplayed(this.eGroupOpenedIcon, this.isExpanded === true);\n if (this.hasIndeterminateExpandState) {\n _.setDisplayed(this.eGroupIndeterminateIcon, this.isExpanded === undefined);\n }\n }\n onCheckboxChanged(isSelected) {\n this.isSelected = isSelected;\n const event = {\n type: SetFilterListItem.EVENT_SELECTION_CHANGED,\n isSelected,\n item: this.item\n };\n this.dispatchEvent(event);\n this.refreshVariableAriaLabels();\n }\n toggleSelected() {\n if (!!this.params.readOnly) {\n return;\n }\n this.setSelected(!this.isSelected);\n }\n setSelected(isSelected, silent) {\n this.isSelected = isSelected;\n this.eCheckbox.setValue(this.isSelected, silent);\n }\n refreshVariableAriaLabels() {\n if (!this.isTree) {\n return;\n }\n const translate = this.localeService.getLocaleTextFunc();\n const checkboxValue = this.eCheckbox.getValue();\n const state = checkboxValue === undefined ?\n translate('ariaIndeterminate', 'indeterminate') :\n (checkboxValue ? translate('ariaVisible', 'visible') : translate('ariaHidden', 'hidden'));\n const visibilityLabel = translate('ariaToggleVisibility', 'Press SPACE to toggle visibility');\n _.setAriaLabelledBy(this.eCheckbox.getInputElement(), undefined);\n this.eCheckbox.setInputAriaLabel(`${visibilityLabel} (${state})`);\n }\n setupFixedAriaLabels(value) {\n if (!this.isTree) {\n return;\n }\n const translate = this.localeService.getLocaleTextFunc();\n const itemLabel = translate('ariaFilterValue', 'Filter Value');\n _.setAriaLabel(this.focusWrapper, `${value} ${itemLabel}`);\n _.setAriaDescribedBy(this.focusWrapper, this.eCheckbox.getInputElement().id);\n }\n refresh(item, isSelected, isExpanded) {\n var _a, _b;\n this.item = item;\n // setExpanded checks if value has changed, setSelected does not\n if (isSelected !== this.isSelected) {\n this.setSelected(isSelected, true);\n }\n this.setExpanded(isExpanded, true);\n if (this.valueFunction) {\n // underlying value might have changed, so call again and re-render\n const value = this.valueFunction();\n this.setTooltipAndCellRendererParams(value, value);\n if (!this.cellRendererComponent) {\n this.renderCellWithoutCellRenderer();\n }\n }\n if (this.cellRendererComponent) {\n const success = (_b = (_a = this.cellRendererComponent).refresh) === null || _b === void 0 ? void 0 : _b.call(_a, this.cellRendererParams);\n if (!success) {\n const oldComponent = this.cellRendererComponent;\n this.renderCell();\n this.destroyBean(oldComponent);\n }\n }\n }\n render() {\n const { params: { column } } = this;\n let { value } = this;\n let formattedValue = null;\n if (typeof value === 'function') {\n this.valueFunction = value;\n formattedValue = this.valueFunction();\n // backwards compatibility for select all in value\n value = formattedValue;\n }\n else if (this.isTree) {\n // tree values are already formatted via treeListFormatter\n formattedValue = _.toStringOrNull(value);\n }\n else {\n formattedValue = this.getFormattedValue(column, value);\n }\n this.setTooltipAndCellRendererParams(value, formattedValue);\n this.renderCell();\n }\n setTooltipAndCellRendererParams(value, formattedValue) {\n if (this.params.showTooltips) {\n const tooltipValue = formattedValue != null ? formattedValue : _.toStringOrNull(value);\n this.setTooltip(tooltipValue);\n }\n this.cellRendererParams = {\n value,\n valueFormatted: formattedValue,\n api: this.gridOptionsService.api,\n columnApi: this.gridOptionsService.columnApi,\n context: this.gridOptionsService.context,\n colDef: this.params.colDef,\n column: this.params.column,\n };\n }\n getTooltipParams() {\n const res = super.getTooltipParams();\n res.location = 'setFilterValue';\n res.colDef = this.getComponentHolder();\n if (this.isTree) {\n res.level = this.depth;\n }\n return res;\n }\n getFormattedValue(column, value) {\n return this.valueFormatterService.formatValue(column, null, value, this.valueFormatter, false);\n }\n renderCell() {\n const compDetails = this.userComponentFactory.getSetFilterCellRendererDetails(this.params, this.cellRendererParams);\n const cellRendererPromise = compDetails ? compDetails.newAgStackInstance() : undefined;\n if (cellRendererPromise == null) {\n this.renderCellWithoutCellRenderer();\n return;\n }\n cellRendererPromise.then(component => {\n if (component) {\n this.cellRendererComponent = component;\n this.eCheckbox.setLabel(component.getGui());\n this.destroyCellRendererComponent = () => this.destroyBean(component);\n }\n });\n }\n renderCellWithoutCellRenderer() {\n var _a;\n let valueToRender = (_a = (this.cellRendererParams.valueFormatted == null ? this.cellRendererParams.value : this.cellRendererParams.valueFormatted)) !== null && _a !== void 0 ? _a : this.translate('blanks');\n if (typeof valueToRender !== 'string') {\n _.doOnce(() => console.warn('AG Grid: Set Filter Value Formatter must return string values. Please ensure the Set Filter Value Formatter returns string values for complex objects, or set convertValuesToStrings=true in the filterParams. See https://www.ag-grid.com/javascript-data-grid/filter-set-filter-list/#filter-value-types'), 'setFilterComplexObjectsValueFormatter');\n valueToRender = '';\n }\n this.eCheckbox.setLabel(valueToRender);\n this.setupFixedAriaLabels(valueToRender);\n }\n getComponentHolder() {\n return this.params.column.getColDef();\n }\n}\nSetFilterListItem.EVENT_SELECTION_CHANGED = 'selectionChanged';\nSetFilterListItem.EVENT_EXPANDED_CHANGED = 'expandedChanged';\nSetFilterListItem.GROUP_TEMPLATE = `\n
\n \n \n \n \n \n \n
`;\nSetFilterListItem.TEMPLATE = `\n
\n \n
`;\n__decorate$d([\n Autowired('valueFormatterService')\n], SetFilterListItem.prototype, \"valueFormatterService\", void 0);\n__decorate$d([\n Autowired('userComponentFactory')\n], SetFilterListItem.prototype, \"userComponentFactory\", void 0);\n__decorate$d([\n RefSelector('eCheckbox')\n], SetFilterListItem.prototype, \"eCheckbox\", void 0);\n__decorate$d([\n RefSelector('eGroupOpenedIcon')\n], SetFilterListItem.prototype, \"eGroupOpenedIcon\", void 0);\n__decorate$d([\n RefSelector('eGroupClosedIcon')\n], SetFilterListItem.prototype, \"eGroupClosedIcon\", void 0);\n__decorate$d([\n RefSelector('eGroupIndeterminateIcon')\n], SetFilterListItem.prototype, \"eGroupIndeterminateIcon\", void 0);\n__decorate$d([\n PostConstruct\n], SetFilterListItem.prototype, \"init\", null);\n\nconst 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\nclass SetFilterModelFormatter {\n getModelAsString(model, setFilter) {\n const { values } = model || setFilter.getModel() || {};\n const valueModel = setFilter.getValueModel();\n if (values == null || valueModel == null) {\n return '';\n }\n const availableKeys = values.filter(v => valueModel.isKeyAvailable(v));\n const numValues = availableKeys.length;\n const formattedValues = availableKeys.slice(0, 10).map(key => setFilter.getFormattedValue(key));\n return `(${numValues}) ${formattedValues.join(',')}${numValues > 10 ? ',...' : ''}`;\n }\n}\n\nvar __decorate$c = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/** @param V type of value in the Set Filter */\nclass SetFilter extends ProvidedFilter {\n constructor() {\n super('setFilter');\n this.valueModel = null;\n this.setFilterParams = null;\n this.virtualList = null;\n this.caseSensitive = false;\n this.convertValuesToStrings = false;\n this.treeDataTreeList = false;\n this.groupingTreeList = false;\n this.hardRefreshVirtualList = false;\n this.noValueFormatterSupplied = false;\n // To make the filtering super fast, we store the keys in an Set rather than using the default array\n this.appliedModelKeys = null;\n this.noAppliedModelKeys = false;\n this.filterModelFormatter = new SetFilterModelFormatter();\n }\n postConstruct() {\n super.postConstruct();\n }\n // unlike the simple filters, nothing in the set filter UI shows/hides.\n // maybe this method belongs in abstractSimpleFilter???\n updateUiVisibility() { }\n createBodyTemplate() {\n return /* html */ `\n
\n
${this.translateForSetFilter('loadingOoo')}
\n \n
${this.translateForSetFilter('noMatches')}
\n
\n
`;\n }\n handleKeyDown(e) {\n super.handleKeyDown(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 case KeyCode.LEFT:\n this.handleKeyLeft(e);\n break;\n case KeyCode.RIGHT:\n this.handleKeyRight(e);\n break;\n }\n }\n handleKeySpace(e) {\n var _a;\n (_a = this.getComponentForKeyEvent(e)) === null || _a === void 0 ? void 0 : _a.toggleSelected();\n }\n handleKeyEnter(e) {\n if (!this.setFilterParams) {\n return;\n }\n const { excelMode, readOnly } = this.setFilterParams || {};\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 handleKeyLeft(e) {\n var _a;\n (_a = this.getComponentForKeyEvent(e)) === null || _a === void 0 ? void 0 : _a.setExpanded(false);\n }\n handleKeyRight(e) {\n var _a;\n (_a = this.getComponentForKeyEvent(e)) === null || _a === void 0 ? void 0 : _a.setExpanded(true);\n }\n getComponentForKeyEvent(e) {\n var _a;\n const eDocument = this.gridOptionsService.getDocument();\n if (!this.eSetFilterList.contains(eDocument.activeElement) || !this.virtualList) {\n return;\n }\n const currentItem = this.virtualList.getLastFocusedRow();\n if (currentItem == null) {\n return;\n }\n const component = this.virtualList.getComponentAt(currentItem);\n if (component == null) {\n return;\n }\n e.preventDefault();\n const { readOnly } = (_a = this.setFilterParams) !== null && _a !== void 0 ? _a : {};\n if (!!readOnly) {\n return;\n }\n return component;\n }\n getCssIdentifier() {\n return 'set-filter';\n }\n setModel(model) {\n var _a;\n if (model == null && ((_a = this.valueModel) === null || _a === void 0 ? void 0 : _a.getModel()) == null) {\n // refreshing is expensive. if new and old model are both null (e.g. nothing set), skip.\n // mini filter isn't contained within the model, so always reset\n this.setMiniFilter(null);\n return AgPromise.resolve();\n }\n return super.setModel(model);\n }\n setModelAndRefresh(values) {\n return this.valueModel ? this.valueModel.setModel(values).then(() => this.refresh()) : AgPromise.resolve();\n }\n resetUiToDefaults() {\n this.setMiniFilter(null);\n return this.setModelAndRefresh(null);\n }\n setModelIntoUi(model) {\n this.setMiniFilter(null);\n const values = model == null ? null : model.values;\n return this.setModelAndRefresh(values);\n }\n getModelFromUi() {\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n const values = this.valueModel.getModel();\n if (!values) {\n return null;\n }\n return { values, filterType: this.getFilterType() };\n }\n getFilterType() {\n return 'set';\n }\n getValueModel() {\n return this.valueModel;\n }\n areModelsEqual(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 setParams(params) {\n var _a;\n this.applyExcelModeOptions(params);\n super.setParams(params);\n this.setFilterParams = params;\n this.convertValuesToStrings = !!params.convertValuesToStrings;\n this.caseSensitive = !!params.caseSensitive;\n let keyCreator = (_a = params.keyCreator) !== null && _a !== void 0 ? _a : params.colDef.keyCreator;\n this.setValueFormatter(params.valueFormatter, keyCreator, this.convertValuesToStrings, !!params.treeList, !!params.colDef.refData);\n const isGroupCol = params.column.getId().startsWith(GROUP_AUTO_COLUMN_ID);\n this.treeDataTreeList = this.gridOptionsService.is('treeData') && !!params.treeList && isGroupCol;\n this.getDataPath = this.gridOptionsService.get('getDataPath');\n this.groupingTreeList = !!this.columnModel.getRowGroupColumns().length && !!params.treeList && isGroupCol;\n this.createKey = this.generateCreateKey(keyCreator, this.convertValuesToStrings, this.treeDataTreeList || this.groupingTreeList);\n this.valueModel = new SetValueModel({\n filterParams: params,\n setIsLoading: loading => this.setIsLoading(loading),\n valueFormatterService: this.valueFormatterService,\n translate: key => this.translateForSetFilter(key),\n caseFormat: v => this.caseFormat(v),\n createKey: this.createKey,\n valueFormatter: this.valueFormatter,\n usingComplexObjects: !!keyCreator,\n gridOptionsService: this.gridOptionsService,\n columnModel: this.columnModel,\n valueService: this.valueService,\n treeDataTreeList: this.treeDataTreeList,\n groupingTreeList: this.groupingTreeList\n });\n this.initialiseFilterBodyUi();\n this.addEventListenersForDataChanges();\n }\n setValueFormatter(providedValueFormatter, keyCreator, convertValuesToStrings, treeList, isRefData) {\n let valueFormatter = providedValueFormatter;\n if (!valueFormatter) {\n if (keyCreator && !convertValuesToStrings && !treeList) {\n throw new Error('AG Grid: Must supply a Value Formatter in Set Filter params when using a Key Creator unless convertValuesToStrings is enabled');\n }\n this.noValueFormatterSupplied = true;\n // ref data is handled by ValueFormatterService\n if (!isRefData) {\n valueFormatter = params => _.toStringOrNull(params.value);\n }\n }\n this.valueFormatter = valueFormatter;\n }\n generateCreateKey(keyCreator, convertValuesToStrings, treeDataOrGrouping) {\n if (treeDataOrGrouping && !keyCreator) {\n throw new Error('AG Grid: Must supply a Key Creator in Set Filter params when `treeList = true` on a group column, and Tree Data or Row Grouping is enabled.');\n }\n if (keyCreator) {\n return (value, node = null) => {\n const params = this.getKeyCreatorParams(value, node);\n return _.makeNull(keyCreator(params));\n };\n }\n if (convertValuesToStrings) {\n // for backwards compatibility - keeping separate as it will eventually be removed\n return value => Array.isArray(value) ? value : _.makeNull(_.toStringOrNull(value));\n }\n else {\n return value => _.makeNull(_.toStringOrNull(value));\n }\n }\n getFormattedValue(key) {\n var _a;\n let value = this.valueModel.getValue(key);\n if (this.noValueFormatterSupplied && (this.treeDataTreeList || this.groupingTreeList) && Array.isArray(value)) {\n // essentially get back the cell value\n value = _.last(value);\n }\n const formattedValue = this.valueFormatterService.formatValue(this.setFilterParams.column, null, value, this.valueFormatter, false);\n return (_a = (formattedValue == null ? _.toStringOrNull(value) : formattedValue)) !== null && _a !== void 0 ? _a : this.translateForSetFilter('blanks');\n }\n applyExcelModeOptions(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 if (params.excelMode && params.defaultToNothingSelected) {\n params.defaultToNothingSelected = false;\n _.doOnce(() => console.warn('AG Grid: The Set Filter Parameter \"defaultToNothingSelected\" value was ignored because it does not work when \"excelMode\" is used.'), 'setFilterExcelModeDefaultToNothingSelect');\n }\n }\n addEventListenersForDataChanges() {\n if (!this.isValuesTakenFromGrid()) {\n return;\n }\n this.addManagedListener(this.eventService, Events.EVENT_CELL_VALUE_CHANGED, (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 syncAfterDataChange() {\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n let promise = this.valueModel.refreshValues();\n return promise.then(() => {\n this.refresh();\n this.onBtApply(false, true);\n });\n }\n setIsLoading(isLoading) {\n _.setDisplayed(this.eFilterLoading, isLoading);\n if (!isLoading) {\n // hard refresh when async data received\n this.hardRefreshVirtualList = true;\n }\n }\n initialiseFilterBodyUi() {\n this.initVirtualList();\n this.initMiniFilter();\n }\n initVirtualList() {\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 const translate = this.localeService.getLocaleTextFunc();\n const filterListName = translate('ariaFilterList', 'Filter List');\n const isTree = !!this.setFilterParams.treeList;\n const virtualList = this.virtualList = this.createBean(new VirtualList('filter', isTree ? 'tree' : 'listbox', filterListName));\n const eSetFilterList = this.getRefElement('eSetFilterList');\n if (isTree) {\n eSetFilterList.classList.add('ag-set-filter-tree-list');\n }\n if (eSetFilterList) {\n eSetFilterList.appendChild(virtualList.getGui());\n }\n const { cellHeight } = this.setFilterParams;\n if (cellHeight != null) {\n virtualList.setRowHeight(cellHeight);\n }\n const componentCreator = (item, listItemElement) => this.createSetListItem(item, isTree, listItemElement);\n virtualList.setComponentCreator(componentCreator);\n const componentUpdater = (item, component) => this.updateSetListItem(item, component);\n virtualList.setComponentUpdater(componentUpdater);\n let model;\n if (this.setFilterParams.suppressSelectAll) {\n model = new ModelWrapper(this.valueModel);\n }\n else {\n model = new ModelWrapperWithSelectAll(this.valueModel, () => this.isSelectAllSelected());\n }\n if (isTree) {\n model = new TreeModelWrapper(model);\n }\n virtualList.setModel(model);\n }\n getSelectAllLabel() {\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 const key = this.valueModel.getMiniFilter() == null || !this.setFilterParams.excelMode ?\n 'selectAll' : 'selectAllSearchResults';\n return this.translateForSetFilter(key);\n }\n createSetListItem(item, isTree, focusWrapper) {\n var _a, _b, _c, _d, _e, _f;\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 const groupsExist = this.valueModel.hasGroups();\n let value;\n let depth;\n let isGroup;\n let hasIndeterminateExpandState;\n let selectedListener;\n let expandedListener;\n if (this.isSetFilterModelTreeItem(item)) {\n depth = item.depth;\n if (item.key === SetFilterDisplayValue.SELECT_ALL) {\n // select all\n value = () => this.getSelectAllLabel();\n isGroup = groupsExist;\n hasIndeterminateExpandState = true;\n selectedListener = (e) => this.onSelectAll(e.isSelected);\n expandedListener = (e) => this.onExpandAll(e.item, e.isExpanded);\n }\n else if (item.children) {\n // group\n value = (_c = (_b = (_a = this.setFilterParams).treeListFormatter) === null || _b === void 0 ? void 0 : _b.call(_a, item.treeKey, item.depth, item.parentTreeKeys)) !== null && _c !== void 0 ? _c : item.treeKey;\n isGroup = true;\n selectedListener = (e) => this.onGroupItemSelected(e.item, e.isSelected);\n expandedListener = (e) => this.onExpandedChanged(e.item, e.isExpanded);\n }\n else {\n // leaf\n value = (_f = (_e = (_d = this.setFilterParams).treeListFormatter) === null || _e === void 0 ? void 0 : _e.call(_d, item.treeKey, item.depth, item.parentTreeKeys)) !== null && _f !== void 0 ? _f : item.treeKey;\n selectedListener = (e) => this.onItemSelected(e.item.key, e.isSelected);\n }\n }\n else {\n if (item === SetFilterDisplayValue.SELECT_ALL) {\n value = () => this.getSelectAllLabel();\n selectedListener = (e) => this.onSelectAll(e.isSelected);\n }\n else {\n value = this.valueModel.getValue(item);\n selectedListener = (e) => this.onItemSelected(e.item, e.isSelected);\n }\n }\n const { isSelected, isExpanded } = this.isSelectedExpanded(item);\n const itemParams = {\n focusWrapper,\n value,\n params: this.setFilterParams,\n translate: (translateKey) => this.translateForSetFilter(translateKey),\n valueFormatter: this.valueFormatter,\n item,\n isSelected,\n isTree,\n depth,\n groupsExist,\n isGroup,\n isExpanded,\n hasIndeterminateExpandState,\n };\n const listItem = this.createBean(new SetFilterListItem(itemParams));\n listItem.addEventListener(SetFilterListItem.EVENT_SELECTION_CHANGED, selectedListener);\n if (expandedListener) {\n listItem.addEventListener(SetFilterListItem.EVENT_EXPANDED_CHANGED, expandedListener);\n }\n return listItem;\n }\n updateSetListItem(item, component) {\n const { isSelected, isExpanded } = this.isSelectedExpanded(item);\n component.refresh(item, isSelected, isExpanded);\n }\n isSelectedExpanded(item) {\n let isSelected;\n let isExpanded;\n if (this.isSetFilterModelTreeItem(item)) {\n isExpanded = item.expanded;\n if (item.key === SetFilterDisplayValue.SELECT_ALL) {\n isSelected = this.isSelectAllSelected();\n }\n else if (item.children) {\n isSelected = this.areAllChildrenSelected(item);\n }\n else {\n isSelected = this.valueModel.isKeySelected(item.key);\n }\n }\n else {\n if (item === SetFilterDisplayValue.SELECT_ALL) {\n isSelected = this.isSelectAllSelected();\n }\n else {\n isSelected = this.valueModel.isKeySelected(item);\n }\n }\n return { isSelected, isExpanded };\n }\n isSetFilterModelTreeItem(item) {\n return (item === null || item === void 0 ? void 0 : item.treeKey) !== undefined;\n }\n initMiniFilter() {\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 const { eMiniFilter, localeService } = this;\n const translate = localeService.getLocaleTextFunc();\n eMiniFilter.setDisplayed(!this.setFilterParams.suppressMiniFilter);\n eMiniFilter.setValue(this.valueModel.getMiniFilter());\n eMiniFilter.onValueChange(() => this.onMiniFilterInput());\n eMiniFilter.setInputAriaLabel(translate('ariaSearchFilterValues', 'Search filter values'));\n this.addManagedListener(eMiniFilter.getInputElement(), 'keydown', e => this.onMiniFilterKeyDown(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 afterGuiAttached(params) {\n if (!this.setFilterParams) {\n throw new Error('Set filter params have not been provided.');\n }\n super.afterGuiAttached(params);\n // collapse all tree list items (if tree list)\n this.resetExpansion();\n this.refreshVirtualList();\n const { eMiniFilter } = this;\n eMiniFilter.setInputPlaceholder(this.translateForSetFilter('searchOoo'));\n if (!params || !params.suppressFocus) {\n eMiniFilter.getFocusableElement().focus();\n }\n }\n afterGuiDetached() {\n var _a, _b;\n super.afterGuiDetached();\n // discard any unapplied UI state (reset to model)\n if ((_a = this.setFilterParams) === null || _a === void 0 ? void 0 : _a.excelMode) {\n this.resetMiniFilter();\n }\n const appliedModel = this.getModel();\n if (((_b = this.setFilterParams) === null || _b === void 0 ? void 0 : _b.excelMode) || !this.areModelsEqual(appliedModel, this.getModelFromUi())) {\n this.resetUiToActiveModel(appliedModel);\n this.showOrHideResults();\n }\n }\n applyModel(source = 'api') {\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 && source !== 'rowDataUpdated' && 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 const result = super.applyModel(source);\n // keep appliedModelKeys in sync with the applied model\n const appliedModel = this.getModel();\n if (appliedModel) {\n this.appliedModelKeys = new Set();\n appliedModel.values.forEach(key => {\n this.appliedModelKeys.add(this.caseFormat(key));\n });\n }\n else {\n this.appliedModelKeys = null;\n }\n this.noAppliedModelKeys = (appliedModel === null || appliedModel === void 0 ? void 0 : appliedModel.values.length) === 0;\n return result;\n }\n isModelValid(model) {\n return this.setFilterParams && this.setFilterParams.excelMode ? model == null || model.values.length > 0 : true;\n }\n doesFilterPass(params) {\n if (!this.setFilterParams || !this.valueModel || !this.appliedModelKeys) {\n return true;\n }\n // if nothing selected, don't need to check value\n if (this.noAppliedModelKeys) {\n return false;\n }\n const { node, data } = params;\n if (this.treeDataTreeList) {\n return this.doesFilterPassForTreeData(node, data);\n }\n if (this.groupingTreeList) {\n return this.doesFilterPassForGrouping(node, data);\n }\n let value = this.getValueFromNode(node, data);\n if (this.convertValuesToStrings) {\n // for backwards compatibility - keeping separate as it will eventually be removed\n return this.doesFilterPassForConvertValuesToString(node, value);\n }\n if (value != null && Array.isArray(value)) {\n if (value.length === 0) {\n return this.appliedModelKeys.has(null);\n }\n return value.some(v => this.isInAppliedModel(this.createKey(v, node)));\n }\n return this.isInAppliedModel(this.createKey(value, node));\n }\n doesFilterPassForConvertValuesToString(node, value) {\n const key = this.createKey(value, node);\n if (key != null && Array.isArray(key)) {\n if (key.length === 0) {\n return this.appliedModelKeys.has(null);\n }\n return key.some(v => this.isInAppliedModel(v));\n }\n return this.isInAppliedModel(key);\n }\n doesFilterPassForTreeData(node, data) {\n var _a;\n if ((_a = node.childrenAfterGroup) === null || _a === void 0 ? void 0 : _a.length) {\n // only perform checking on leaves. The core filtering logic for tree data won't work properly otherwise\n return false;\n }\n return this.isInAppliedModel(this.createKey(this.checkMakeNullDataPath(this.getDataPath(data))));\n }\n doesFilterPassForGrouping(node, data) {\n const dataPath = this.columnModel.getRowGroupColumns().map(groupCol => this.valueService.getKeyForNode(groupCol, node));\n dataPath.push(this.getValueFromNode(node, data));\n return this.isInAppliedModel(this.createKey(this.checkMakeNullDataPath(dataPath)));\n }\n checkMakeNullDataPath(dataPath) {\n if (dataPath) {\n dataPath = dataPath.map(treeKey => _.toStringOrNull(_.makeNull(treeKey)));\n }\n if (dataPath === null || dataPath === void 0 ? void 0 : dataPath.some(treeKey => treeKey == null)) {\n return null;\n }\n return dataPath;\n }\n isInAppliedModel(key) {\n return this.appliedModelKeys.has(this.caseFormat(key));\n }\n getValueFromNode(node, data) {\n const { valueGetter, api, colDef, column, columnApi, context } = this.setFilterParams;\n return valueGetter({\n api,\n colDef,\n column,\n columnApi,\n context,\n data: data,\n getValue: (field) => data[field],\n node: node,\n });\n }\n getKeyCreatorParams(value, node = null) {\n return {\n value,\n colDef: this.setFilterParams.colDef,\n column: this.setFilterParams.column,\n node: node,\n data: node === null || node === void 0 ? void 0 : node.data,\n api: this.setFilterParams.api,\n columnApi: this.setFilterParams.columnApi,\n context: this.setFilterParams.context\n };\n }\n onNewRowsLoaded() {\n if (!this.isValuesTakenFromGrid()) {\n return;\n }\n this.syncAfterDataChange();\n }\n isValuesTakenFromGrid() {\n if (!this.valueModel) {\n return false;\n }\n const valuesType = this.valueModel.getValuesType();\n return 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 values The values to use.\n */\n setFilterValues(values) {\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n this.valueModel.overrideValues(values).then(() => {\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 resetFilterValues() {\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();\n }\n refreshFilterValues() {\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(() => {\n this.refresh();\n this.onUiChanged();\n });\n }\n onAnyFilterChanged() {\n // don't block the current action when updating the values for this filter\n setTimeout(() => {\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(refresh => {\n if (refresh) {\n this.refresh();\n this.showOrHideResults();\n }\n });\n }, 0);\n }\n onMiniFilterInput() {\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 const { applyMiniFilterWhileTyping, readOnly } = this.setFilterParams || {};\n if (!readOnly && applyMiniFilterWhileTyping) {\n this.filterOnAllVisibleValues(false);\n }\n else {\n this.updateUiAfterMiniFilterChange();\n }\n }\n updateUiAfterMiniFilterChange() {\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 const { excelMode, readOnly } = this.setFilterParams || {};\n if (excelMode == null || !!readOnly) {\n this.refresh();\n }\n else if (this.valueModel.getMiniFilter() == null) {\n this.resetUiToActiveModel(this.getModel());\n }\n else {\n this.valueModel.selectAllMatchingMiniFilter(true);\n this.refresh();\n this.onUiChanged();\n }\n this.showOrHideResults();\n }\n showOrHideResults() {\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n const hideResults = this.valueModel.getMiniFilter() != null && this.valueModel.getDisplayedValueCount() < 1;\n _.setDisplayed(this.eNoMatches, hideResults);\n _.setDisplayed(this.eSetFilterList, !hideResults);\n }\n resetMiniFilter() {\n var _a;\n this.eMiniFilter.setValue(null, true);\n (_a = this.valueModel) === null || _a === void 0 ? void 0 : _a.setMiniFilter(null);\n }\n resetUiToActiveModel(currentModel, afterUiUpdatedFunc) {\n // override the default behaviour as we don't always want to clear the mini filter\n this.setModelAndRefresh(currentModel == null ? null : currentModel.values).then(() => {\n this.onUiChanged(false, 'prevent');\n afterUiUpdatedFunc === null || afterUiUpdatedFunc === void 0 ? void 0 : afterUiUpdatedFunc();\n });\n }\n handleCancelEnd(e) {\n this.setMiniFilter(null);\n super.handleCancelEnd(e);\n }\n onMiniFilterKeyDown(e) {\n const { excelMode, readOnly } = this.setFilterParams || {};\n if (e.key === KeyCode.ENTER && !excelMode && !readOnly) {\n this.filterOnAllVisibleValues();\n }\n }\n filterOnAllVisibleValues(applyImmediately = true) {\n const { readOnly } = this.setFilterParams || {};\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 focusRowIfAlive(rowIndex) {\n if (rowIndex == null) {\n return;\n }\n window.setTimeout(() => {\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 onSelectAll(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 this.refreshAfterSelection();\n }\n onGroupItemSelected(item, isSelected) {\n const recursiveGroupSelection = (i) => {\n if (i.children) {\n i.children.forEach(childItem => recursiveGroupSelection(childItem));\n }\n else {\n this.selectItem(i.key, isSelected);\n }\n };\n recursiveGroupSelection(item);\n this.refreshAfterSelection();\n }\n onItemSelected(key, 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 this.selectItem(key, isSelected);\n this.refreshAfterSelection();\n }\n selectItem(key, isSelected) {\n if (isSelected) {\n this.valueModel.selectKey(key);\n }\n else {\n this.valueModel.deselectKey(key);\n }\n }\n onExpandAll(item, isExpanded) {\n const recursiveExpansion = (i) => {\n if (i.filterPasses && i.available && i.children) {\n i.children.forEach(childItem => recursiveExpansion(childItem));\n i.expanded = isExpanded;\n }\n };\n recursiveExpansion(item);\n this.refreshAfterExpansion();\n }\n onExpandedChanged(item, isExpanded) {\n item.expanded = isExpanded;\n this.refreshAfterExpansion();\n }\n refreshAfterExpansion() {\n const focusedRow = this.virtualList.getLastFocusedRow();\n this.valueModel.updateDisplayedValues('expansion');\n this.refresh();\n this.focusRowIfAlive(focusedRow);\n }\n refreshAfterSelection() {\n const focusedRow = this.virtualList.getLastFocusedRow();\n this.refresh();\n this.onUiChanged();\n this.focusRowIfAlive(focusedRow);\n }\n setMiniFilter(newMiniFilter) {\n this.eMiniFilter.setValue(newMiniFilter);\n this.onMiniFilterInput();\n }\n getMiniFilter() {\n return this.valueModel ? this.valueModel.getMiniFilter() : null;\n }\n refresh() {\n if (!this.virtualList) {\n throw new Error('Virtual list has not been created.');\n }\n this.virtualList.refresh(!this.hardRefreshVirtualList);\n if (this.hardRefreshVirtualList) {\n this.hardRefreshVirtualList = false;\n }\n }\n getFilterKeys() {\n return this.valueModel ? this.valueModel.getKeys() : [];\n }\n getFilterValues() {\n return this.valueModel ? this.valueModel.getValues() : [];\n }\n getValues() {\n return this.getFilterKeys();\n }\n refreshVirtualList() {\n if (this.setFilterParams && this.setFilterParams.refreshValuesOnOpen) {\n this.refreshFilterValues();\n }\n else {\n this.refresh();\n }\n }\n translateForSetFilter(key) {\n const translate = this.localeService.getLocaleTextFunc();\n return translate(key, DEFAULT_LOCALE_TEXT[key]);\n }\n isSelectAllSelected() {\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 areAllChildrenSelected(item) {\n const recursiveChildSelectionCheck = (i) => {\n if (i.children) {\n let someTrue = false;\n let someFalse = false;\n const mixed = i.children.some(child => {\n if (!child.filterPasses || !child.available) {\n return false;\n }\n const childSelected = recursiveChildSelectionCheck(child);\n if (childSelected === undefined) {\n return true;\n }\n if (childSelected) {\n someTrue = true;\n }\n else {\n someFalse = true;\n }\n return someTrue && someFalse;\n });\n // returning `undefined` means the checkbox status is indeterminate.\n // if not mixed and some true, all must be true\n return mixed ? undefined : someTrue;\n }\n else {\n return this.valueModel.isKeySelected(i.key);\n }\n };\n if (!this.setFilterParams.defaultToNothingSelected) {\n // everything selected by default\n return recursiveChildSelectionCheck(item);\n }\n else {\n // nothing selected by default\n return this.valueModel.hasSelections() && recursiveChildSelectionCheck(item);\n }\n }\n destroy() {\n if (this.virtualList != null) {\n this.virtualList.destroy();\n this.virtualList = null;\n }\n super.destroy();\n }\n caseFormat(valueToFormat) {\n if (valueToFormat == null || typeof valueToFormat !== 'string') {\n return valueToFormat;\n }\n return this.caseSensitive ? valueToFormat : valueToFormat.toUpperCase();\n }\n resetExpansion() {\n var _a, _b;\n if (!((_a = this.setFilterParams) === null || _a === void 0 ? void 0 : _a.treeList)) {\n return;\n }\n const selectAllItem = (_b = this.valueModel) === null || _b === void 0 ? void 0 : _b.getSelectAllItem();\n if (this.isSetFilterModelTreeItem(selectAllItem)) {\n const recursiveCollapse = (i) => {\n if (i.children) {\n i.children.forEach(childItem => recursiveCollapse(childItem));\n i.expanded = false;\n }\n };\n recursiveCollapse(selectAllItem);\n this.valueModel.updateDisplayedValues('expansion');\n }\n }\n getModelAsString(model) {\n return this.filterModelFormatter.getModelAsString(model, this);\n }\n getPositionableElement() {\n return this.eSetFilterList;\n }\n}\n__decorate$c([\n RefSelector('eMiniFilter')\n], SetFilter.prototype, \"eMiniFilter\", void 0);\n__decorate$c([\n RefSelector('eFilterLoading')\n], SetFilter.prototype, \"eFilterLoading\", void 0);\n__decorate$c([\n RefSelector('eSetFilterList')\n], SetFilter.prototype, \"eSetFilterList\", void 0);\n__decorate$c([\n RefSelector('eFilterNoMatches')\n], SetFilter.prototype, \"eNoMatches\", void 0);\n__decorate$c([\n Autowired('valueFormatterService')\n], SetFilter.prototype, \"valueFormatterService\", void 0);\n__decorate$c([\n Autowired('columnModel')\n], SetFilter.prototype, \"columnModel\", void 0);\n__decorate$c([\n Autowired('valueService')\n], SetFilter.prototype, \"valueService\", void 0);\nclass ModelWrapper {\n constructor(model) {\n this.model = model;\n }\n getRowCount() {\n return this.model.getDisplayedValueCount();\n }\n getRow(index) {\n return this.model.getDisplayedItem(index);\n }\n isRowSelected(index) {\n return this.model.isKeySelected(this.getRow(index));\n }\n areRowsEqual(oldRow, newRow) {\n return oldRow === newRow;\n }\n}\nclass ModelWrapperWithSelectAll {\n constructor(model, isSelectAllSelected) {\n this.model = model;\n this.isSelectAllSelected = isSelectAllSelected;\n }\n getRowCount() {\n return this.model.getDisplayedValueCount() + 1;\n }\n getRow(index) {\n return index === 0 ? this.model.getSelectAllItem() : this.model.getDisplayedItem(index - 1);\n }\n isRowSelected(index) {\n return index === 0 ? this.isSelectAllSelected() : this.model.isKeySelected(this.getRow(index));\n }\n areRowsEqual(oldRow, newRow) {\n return oldRow === newRow;\n }\n}\n// isRowSelected is used by VirtualList to add aria tags for flat lists. We want to suppress this when using trees\nclass TreeModelWrapper {\n constructor(model) {\n this.model = model;\n }\n getRowCount() {\n return this.model.getRowCount();\n }\n getRow(index) {\n return this.model.getRow(index);\n }\n areRowsEqual(oldRow, newRow) {\n if (oldRow == null && newRow == null) {\n return true;\n }\n return oldRow != null && newRow != null && oldRow.treeKey === newRow.treeKey && oldRow.depth === newRow.depth;\n }\n}\n\nvar __decorate$b = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass SetFloatingFilterComp extends Component {\n constructor() {\n super(/* html */ `\n
\n \n
`);\n this.availableValuesListenerAdded = false;\n this.filterModelFormatter = new SetFilterModelFormatter();\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 destroy() {\n super.destroy();\n }\n init(params) {\n const displayName = this.columnModel.getDisplayNameForColumn(params.column, 'header', true);\n const translate = this.localeService.getLocaleTextFunc();\n this.eFloatingFilterText\n .setDisabled(true)\n .setInputAriaLabel(`${displayName} ${translate('ariaFilterInput', 'Filter Input')}`)\n .addGuiEventListener('click', () => params.showParentFilter());\n this.params = params;\n }\n onParentModelChanged(parentModel) {\n this.updateFloatingFilterText(parentModel);\n }\n parentSetFilterInstance(cb) {\n this.params.parentFilterInstance((filter) => {\n if (!(filter instanceof SetFilter)) {\n throw new Error('AG Grid - SetFloatingFilter expects SetFilter as its parent');\n }\n cb(filter);\n });\n }\n addAvailableValuesListener() {\n this.parentSetFilterInstance((setFilter) => {\n const 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, () => this.updateFloatingFilterText());\n });\n this.availableValuesListenerAdded = true;\n }\n updateFloatingFilterText(parentModel) {\n if (!this.availableValuesListenerAdded) {\n this.addAvailableValuesListener();\n }\n this.parentSetFilterInstance((setFilter) => {\n this.eFloatingFilterText.setValue(this.filterModelFormatter.getModelAsString(parentModel, setFilter));\n });\n }\n}\n__decorate$b([\n RefSelector('eFloatingFilterText')\n], SetFloatingFilterComp.prototype, \"eFloatingFilterText\", void 0);\n__decorate$b([\n Autowired('columnModel')\n], SetFloatingFilterComp.prototype, \"columnModel\", void 0);\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nconst VERSION$3 = '30.0.5';\n\nconst SetFilterModule = {\n version: VERSION$3,\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\nvar __decorate$a = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet StatusBarService = class StatusBarService extends BeanStub {\n // tslint:disable-next-line\n constructor() {\n super();\n this.allComponents = {};\n }\n registerStatusPanel(key, component) {\n this.allComponents[key] = component;\n }\n getStatusPanel(key) {\n return this.allComponents[key];\n }\n};\nStatusBarService = __decorate$a([\n Bean('statusBarService')\n], StatusBarService);\n\nvar __decorate$9 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass StatusBar extends Component {\n constructor() {\n super(StatusBar.TEMPLATE);\n }\n postConstruct() {\n var _a;\n const statusPanels = (_a = this.gridOptionsService.get('statusBar')) === null || _a === void 0 ? void 0 : _a.statusPanels;\n if (statusPanels) {\n const leftStatusPanelComponents = statusPanels\n .filter((componentConfig) => componentConfig.align === 'left');\n this.createAndRenderComponents(leftStatusPanelComponents, this.eStatusBarLeft);\n const centerStatusPanelComponents = statusPanels\n .filter((componentConfig) => componentConfig.align === 'center');\n this.createAndRenderComponents(centerStatusPanelComponents, this.eStatusBarCenter);\n const rightStatusPanelComponents = statusPanels\n .filter((componentConfig) => (!componentConfig.align || componentConfig.align === 'right'));\n this.createAndRenderComponents(rightStatusPanelComponents, this.eStatusBarRight);\n }\n else {\n this.setDisplayed(false);\n }\n }\n createAndRenderComponents(statusBarComponents, ePanelComponent) {\n const componentDetails = [];\n statusBarComponents.forEach(componentConfig => {\n const params = {};\n const compDetails = this.userComponentFactory.getStatusPanelCompDetails(componentConfig, params);\n const 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\n });\n });\n AgPromise.all(componentDetails.map((details) => details.promise))\n .then(() => {\n componentDetails.forEach(componentDetail => {\n componentDetail.promise.then((component) => {\n const destroyFunc = () => {\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}\nStatusBar.TEMPLATE = `
\n
\n
\n
\n
`;\n__decorate$9([\n Autowired('userComponentFactory')\n], StatusBar.prototype, \"userComponentFactory\", void 0);\n__decorate$9([\n Autowired('statusBarService')\n], StatusBar.prototype, \"statusBarService\", void 0);\n__decorate$9([\n RefSelector('eStatusBarLeft')\n], StatusBar.prototype, \"eStatusBarLeft\", void 0);\n__decorate$9([\n RefSelector('eStatusBarCenter')\n], StatusBar.prototype, \"eStatusBarCenter\", void 0);\n__decorate$9([\n RefSelector('eStatusBarRight')\n], StatusBar.prototype, \"eStatusBarRight\", void 0);\n__decorate$9([\n PostConstruct\n], StatusBar.prototype, \"postConstruct\", null);\n\nvar __decorate$8 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass NameValueComp extends Component {\n constructor() {\n super(NameValueComp.TEMPLATE);\n }\n setLabel(key, defaultValue) {\n // we want to hide until the first value comes in\n this.setDisplayed(false);\n const localeTextFunc = this.localeService.getLocaleTextFunc();\n this.eLabel.innerHTML = localeTextFunc(key, defaultValue);\n }\n setValue(value) {\n this.eValue.innerHTML = value;\n }\n}\nNameValueComp.TEMPLATE = `
\n : \n \n
`;\n__decorate$8([\n RefSelector('eLabel')\n], NameValueComp.prototype, \"eLabel\", void 0);\n__decorate$8([\n RefSelector('eValue')\n], NameValueComp.prototype, \"eValue\", void 0);\n\nvar __decorate$7 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass TotalAndFilteredRowsComp extends NameValueComp {\n postConstruct() {\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 onDataChanged() {\n const localeTextFunc = this.localeService.getLocaleTextFunc();\n const thousandSeparator = localeTextFunc('thousandSeparator', ',');\n const decimalSeparator = localeTextFunc('decimalSeparator', '.');\n const rowCount = _.formatNumberCommas(this.getFilteredRowCountValue(), thousandSeparator, decimalSeparator);\n const totalRowCount = _.formatNumberCommas(this.getTotalRowCount(), thousandSeparator, decimalSeparator);\n if (rowCount === totalRowCount) {\n this.setValue(rowCount);\n }\n else {\n const localeTextFunc = this.localeService.getLocaleTextFunc();\n this.setValue(`${rowCount} ${localeTextFunc('of', 'of')} ${totalRowCount}`);\n }\n }\n getFilteredRowCountValue() {\n let filteredRowCount = 0;\n this.gridApi.forEachNodeAfterFilter((node) => {\n if (!node.group) {\n filteredRowCount++;\n }\n });\n return filteredRowCount;\n }\n getTotalRowCount() {\n let totalRowCount = 0;\n this.gridApi.forEachNode(node => {\n if (!node.group) {\n totalRowCount++;\n }\n });\n return totalRowCount;\n }\n init() { }\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 destroy() {\n super.destroy();\n }\n}\n__decorate$7([\n Autowired('gridApi')\n], TotalAndFilteredRowsComp.prototype, \"gridApi\", void 0);\n__decorate$7([\n PostConstruct\n], TotalAndFilteredRowsComp.prototype, \"postConstruct\", null);\n\nvar __decorate$6 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass FilteredRowsComp extends NameValueComp {\n postConstruct() {\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 const listener = this.onDataChanged.bind(this);\n this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, listener);\n listener();\n }\n onDataChanged() {\n const totalRowCountValue = this.getTotalRowCountValue();\n const filteredRowCountValue = this.getFilteredRowCountValue();\n const localeTextFunc = this.localeService.getLocaleTextFunc();\n const thousandSeparator = localeTextFunc('thousandSeparator', ',');\n const decimalSeparator = localeTextFunc('decimalSeparator', '.');\n this.setValue(_.formatNumberCommas(filteredRowCountValue, thousandSeparator, decimalSeparator));\n this.setDisplayed(totalRowCountValue !== filteredRowCountValue);\n }\n getTotalRowCountValue() {\n let totalRowCount = 0;\n this.gridApi.forEachNode((node) => totalRowCount += 1);\n return totalRowCount;\n }\n getFilteredRowCountValue() {\n let filteredRowCount = 0;\n this.gridApi.forEachNodeAfterFilter((node) => {\n if (!node.group) {\n filteredRowCount += 1;\n }\n });\n return filteredRowCount;\n }\n init() { }\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 destroy() {\n super.destroy();\n }\n}\n__decorate$6([\n Autowired('gridApi')\n], FilteredRowsComp.prototype, \"gridApi\", void 0);\n__decorate$6([\n PostConstruct\n], FilteredRowsComp.prototype, \"postConstruct\", null);\n\nvar __decorate$5 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass TotalRowsComp extends NameValueComp {\n postConstruct() {\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 onDataChanged() {\n const localeTextFunc = this.localeService.getLocaleTextFunc();\n const thousandSeparator = localeTextFunc('thousandSeparator', ',');\n const decimalSeparator = localeTextFunc('decimalSeparator', '.');\n this.setValue(_.formatNumberCommas(this.getRowCountValue(), thousandSeparator, decimalSeparator));\n }\n getRowCountValue() {\n let totalRowCount = 0;\n this.gridApi.forEachLeafNode((node) => totalRowCount += 1);\n return totalRowCount;\n }\n init() {\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 destroy() {\n super.destroy();\n }\n}\n__decorate$5([\n Autowired('gridApi')\n], TotalRowsComp.prototype, \"gridApi\", void 0);\n__decorate$5([\n PostConstruct\n], TotalRowsComp.prototype, \"postConstruct\", null);\n\nvar __decorate$4 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass SelectedRowsComp extends NameValueComp {\n postConstruct() {\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 this.onRowSelectionChanged();\n const 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 isValidRowModel() {\n // this component is only really useful with client or server side rowmodels\n const rowModelType = this.gridApi.getModel().getType();\n return rowModelType === 'clientSide' || rowModelType === 'serverSide';\n }\n onRowSelectionChanged() {\n const selectedRowCount = this.selectionService.getSelectionCount();\n if (selectedRowCount < 0) {\n this.setValue('?');\n this.setDisplayed(true);\n return;\n }\n const localeTextFunc = this.localeService.getLocaleTextFunc();\n const thousandSeparator = localeTextFunc('thousandSeparator', ',');\n const decimalSeparator = localeTextFunc('decimalSeparator', '.');\n this.setValue(_.formatNumberCommas(selectedRowCount, thousandSeparator, decimalSeparator));\n this.setDisplayed(selectedRowCount > 0);\n }\n init() {\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 destroy() {\n super.destroy();\n }\n}\n__decorate$4([\n Autowired('gridApi')\n], SelectedRowsComp.prototype, \"gridApi\", void 0);\n__decorate$4([\n Autowired('selectionService')\n], SelectedRowsComp.prototype, \"selectionService\", void 0);\n__decorate$4([\n PostConstruct\n], SelectedRowsComp.prototype, \"postConstruct\", null);\n\nvar __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass AggregationComp extends Component {\n constructor() {\n super(AggregationComp.TEMPLATE);\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 destroy() {\n super.destroy();\n }\n postConstruct() {\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 isValidRowModel() {\n // this component is only really useful with client or server side rowmodels\n const rowModelType = this.gridApi.getModel().getType();\n return rowModelType === 'clientSide' || rowModelType === 'serverSide';\n }\n init() {\n }\n setAggregationComponentValue(aggFuncName, value, visible) {\n const statusBarValueComponent = this.getAggregationValueComponent(aggFuncName);\n if (_.exists(statusBarValueComponent) && statusBarValueComponent) {\n const localeTextFunc = this.localeService.getLocaleTextFunc();\n const thousandSeparator = localeTextFunc('thousandSeparator', ',');\n const decimalSeparator = localeTextFunc('decimalSeparator', '.');\n statusBarValueComponent.setValue(_.formatNumberTwoDecimalPlacesAndCommas(value, thousandSeparator, decimalSeparator));\n statusBarValueComponent.setDisplayed(visible);\n }\n }\n getAggregationValueComponent(aggFuncName) {\n // converts user supplied agg name to our reference - eg: sum => sumAggregationComp\n const 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 let statusBarValueComponent = null;\n const statusBar = this.gridOptionsService.get('statusBar');\n const aggregationPanelConfig = _.exists(statusBar) && statusBar ? statusBar.statusPanels.find(panel => 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((func) => 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 onRangeSelectionChanged() {\n const cellRanges = this.rangeService ? this.rangeService.getCellRanges() : undefined;\n let sum = 0;\n let count = 0;\n let numberCount = 0;\n let min = null;\n let max = null;\n const cellsSoFar = {};\n if (cellRanges && !_.missingOrEmpty(cellRanges)) {\n cellRanges.forEach((cellRange) => {\n let currentRow = this.rangeService.getRangeStartRow(cellRange);\n const lastRow = this.rangeService.getRangeEndRow(cellRange);\n while (true) {\n const finishedAllRows = _.missing(currentRow) || !currentRow || this.rowPositionUtils.before(lastRow, currentRow);\n if (finishedAllRows || !currentRow || !cellRange.columns) {\n break;\n }\n cellRange.columns.forEach(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 const 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 const rowNode = this.rowRenderer.getRowNode(currentRow);\n if (_.missing(rowNode)) {\n return;\n }\n let 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 count++;\n // see if value is wrapped, can happen when doing count() or avg() functions\n if (typeof value === 'object' && 'value' in value) {\n value = value.value;\n // ensure that the new value wouldn't have been skipped by the previous check\n if (value === '') {\n return;\n }\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 });\n currentRow = this.cellNavigationService.getRowBelow(currentRow);\n }\n });\n }\n const gotResult = count > 1;\n const 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}\nAggregationComp.TEMPLATE = `
\n \n \n \n \n \n
`;\n__decorate$3([\n Optional('rangeService')\n], AggregationComp.prototype, \"rangeService\", void 0);\n__decorate$3([\n Autowired('valueService')\n], AggregationComp.prototype, \"valueService\", void 0);\n__decorate$3([\n Autowired('cellNavigationService')\n], AggregationComp.prototype, \"cellNavigationService\", void 0);\n__decorate$3([\n Autowired('rowRenderer')\n], AggregationComp.prototype, \"rowRenderer\", void 0);\n__decorate$3([\n Autowired('gridApi')\n], AggregationComp.prototype, \"gridApi\", void 0);\n__decorate$3([\n Autowired('cellPositionUtils')\n], AggregationComp.prototype, \"cellPositionUtils\", void 0);\n__decorate$3([\n Autowired('rowPositionUtils')\n], AggregationComp.prototype, \"rowPositionUtils\", void 0);\n__decorate$3([\n RefSelector('sumAggregationComp')\n], AggregationComp.prototype, \"sumAggregationComp\", void 0);\n__decorate$3([\n RefSelector('countAggregationComp')\n], AggregationComp.prototype, \"countAggregationComp\", void 0);\n__decorate$3([\n RefSelector('minAggregationComp')\n], AggregationComp.prototype, \"minAggregationComp\", void 0);\n__decorate$3([\n RefSelector('maxAggregationComp')\n], AggregationComp.prototype, \"maxAggregationComp\", void 0);\n__decorate$3([\n RefSelector('avgAggregationComp')\n], AggregationComp.prototype, \"avgAggregationComp\", void 0);\n__decorate$3([\n PostConstruct\n], AggregationComp.prototype, \"postConstruct\", null);\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nconst VERSION$2 = '30.0.5';\n\nconst StatusBarModule = {\n version: VERSION$2,\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\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nconst VERSION$1 = '30.0.5';\n\nvar __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst DEFAULT_VIEWPORT_ROW_MODEL_PAGE_SIZE = 5;\nconst DEFAULT_VIEWPORT_ROW_MODEL_BUFFER_SIZE = 5;\nlet ViewportRowModel = class ViewportRowModel extends BeanStub {\n constructor() {\n super(...arguments);\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 }\n // we don't implement as lazy row heights is not supported in this row model\n ensureRowHeightsValid(startPixel, endPixel, startLimitIndex, endLimitIndex) { return false; }\n init() {\n this.rowHeight = this.gridOptionsService.getRowHeightAsNumber();\n this.addManagedListener(this.eventService, Events.EVENT_VIEWPORT_CHANGED, this.onViewportChanged.bind(this));\n }\n start() {\n if (this.gridOptionsService.get('viewportDatasource')) {\n this.setViewportDatasource(this.gridOptionsService.get('viewportDatasource'));\n }\n }\n isLastRowIndexKnown() {\n return true;\n }\n destroyDatasource() {\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 getViewportRowModelPageSize() {\n return _.oneOrGreater(this.gridOptionsService.getNum('viewportRowModelPageSize'), DEFAULT_VIEWPORT_ROW_MODEL_PAGE_SIZE);\n }\n getViewportRowModelBufferSize() {\n return _.zeroOrGreater(this.gridOptionsService.getNum('viewportRowModelBufferSize'), DEFAULT_VIEWPORT_ROW_MODEL_BUFFER_SIZE);\n }\n calculateFirstRow(firstRenderedRow) {\n const bufferSize = this.getViewportRowModelBufferSize();\n const pageSize = this.getViewportRowModelPageSize();\n const afterBuffer = firstRenderedRow - bufferSize;\n if (afterBuffer < 0) {\n return 0;\n }\n return Math.floor(afterBuffer / pageSize) * pageSize;\n }\n calculateLastRow(lastRenderedRow) {\n if (lastRenderedRow === -1) {\n return lastRenderedRow;\n }\n const bufferSize = this.getViewportRowModelBufferSize();\n const pageSize = this.getViewportRowModelPageSize();\n const afterBuffer = lastRenderedRow + bufferSize;\n const result = Math.ceil(afterBuffer / pageSize) * pageSize;\n const lastRowIndex = this.rowCount - 1;\n return Math.min(result, lastRowIndex);\n }\n onViewportChanged(event) {\n const newFirst = this.calculateFirstRow(event.firstRow);\n const 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 purgeRowsNotInViewport() {\n Object.keys(this.rowNodesByIndex).forEach(indexStr => {\n const index = parseInt(indexStr, 10);\n if (index < this.firstRow || index > this.lastRow) {\n if (this.isRowFocused(index)) {\n return;\n }\n delete this.rowNodesByIndex[index];\n }\n });\n }\n isRowFocused(rowIndex) {\n const focusedCell = this.focusService.getFocusCellToUseAfterRefresh();\n if (!focusedCell) {\n return false;\n }\n if (focusedCell.rowPinned != null) {\n return false;\n }\n const hasFocus = focusedCell.rowIndex === rowIndex;\n return hasFocus;\n }\n setViewportDatasource(viewportDatasource) {\n this.destroyDatasource();\n this.viewportDatasource = viewportDatasource;\n this.rowCount = -1;\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 getType() {\n return 'viewport';\n }\n getRow(rowIndex) {\n if (!this.rowNodesByIndex[rowIndex]) {\n this.rowNodesByIndex[rowIndex] = this.createBlankRowNode(rowIndex);\n }\n return this.rowNodesByIndex[rowIndex];\n }\n getRowNode(id) {\n let result;\n this.forEachNode(rowNode => {\n if (rowNode.id === id) {\n result = rowNode;\n }\n });\n return result;\n }\n getRowCount() {\n return this.rowCount === -1 ? 0 : this.rowCount;\n }\n getRowIndexAtPixel(pixel) {\n if (this.rowHeight !== 0) { // avoid divide by zero error\n return Math.floor(pixel / this.rowHeight);\n }\n return 0;\n }\n getRowBounds(index) {\n return {\n rowHeight: this.rowHeight,\n rowTop: this.rowHeight * index\n };\n }\n getTopLevelRowCount() {\n return this.getRowCount();\n }\n getTopLevelRowDisplayedIndex(topLevelIndex) {\n return topLevelIndex;\n }\n isEmpty() {\n return this.rowCount > 0;\n }\n isRowsToRender() {\n return this.rowCount > 0;\n }\n getNodesInRangeForSelection(firstInRange, lastInRange) {\n const firstIndex = _.missing(firstInRange) ? 0 : firstInRange.rowIndex;\n const lastIndex = lastInRange.rowIndex;\n const firstNodeOutOfRange = firstIndex < this.firstRow || firstIndex > this.lastRow;\n const lastNodeOutOfRange = lastIndex < this.firstRow || lastIndex > this.lastRow;\n if (firstNodeOutOfRange || lastNodeOutOfRange) {\n return [];\n }\n const result = [];\n const startIndex = firstIndex <= lastIndex ? firstIndex : lastIndex;\n const endIndex = firstIndex <= lastIndex ? lastIndex : firstIndex;\n for (let i = startIndex; i <= endIndex; i++) {\n result.push(this.rowNodesByIndex[i]);\n }\n return result;\n }\n forEachNode(callback) {\n let callbackCount = 0;\n Object.keys(this.rowNodesByIndex).forEach(indexStr => {\n const index = parseInt(indexStr, 10);\n const rowNode = this.rowNodesByIndex[index];\n callback(rowNode, callbackCount);\n callbackCount++;\n });\n }\n setRowData(rowData) {\n _.iterateObject(rowData, (indexStr, dataItem) => {\n const 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 let 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 createBlankRowNode(rowIndex) {\n const 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 setRowCount(rowCount, keepRenderedRows = false) {\n if (rowCount === this.rowCount) {\n return;\n }\n this.rowCount = rowCount;\n const event = {\n type: Events.EVENT_MODEL_UPDATED,\n newData: false,\n newPage: false,\n keepRenderedRows: keepRenderedRows,\n animate: false\n };\n this.eventService.dispatchEvent(event);\n }\n isRowPresent(rowNode) {\n const foundRowNode = this.getRowNode(rowNode.id);\n return !!foundRowNode;\n }\n};\n__decorate$2([\n Autowired('rowRenderer')\n], ViewportRowModel.prototype, \"rowRenderer\", void 0);\n__decorate$2([\n Autowired('focusService')\n], ViewportRowModel.prototype, \"focusService\", void 0);\n__decorate$2([\n Autowired('beans')\n], ViewportRowModel.prototype, \"beans\", void 0);\n__decorate$2([\n PostConstruct\n], ViewportRowModel.prototype, \"init\", null);\n__decorate$2([\n PreDestroy\n], ViewportRowModel.prototype, \"destroyDatasource\", null);\nViewportRowModel = __decorate$2([\n Bean('rowModel')\n], ViewportRowModel);\n\nconst ViewportRowModelModule = {\n version: VERSION$1,\n moduleName: ModuleNames.ViewportRowModelModule,\n rowModel: 'viewport',\n beans: [ViewportRowModel],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n\nconst 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 opacity: 1;\n}\n\n.ag-sparkline-tooltip-title {\n padding-left: 7px;\n opacity: 1;\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\nconst { extent: extent$3, isNumber: isNumber$3, isString, isStringObject, isDate, createId, Padding } = _Util;\nconst { LinearScale, BandScale: BandScale$4, TimeScale } = _Scale;\n/**\n * Constants to declare the expected nominal zIndex for nodes in a sparkline rendering.\n */\nvar ZINDICIES;\n(function (ZINDICIES) {\n ZINDICIES[ZINDICIES[\"SERIES_FILL_ZINDEX\"] = 50] = \"SERIES_FILL_ZINDEX\";\n ZINDICIES[ZINDICIES[\"AXIS_LINE_ZINDEX\"] = 500] = \"AXIS_LINE_ZINDEX\";\n ZINDICIES[ZINDICIES[\"SERIES_STROKE_ZINDEX\"] = 1000] = \"SERIES_STROKE_ZINDEX\";\n ZINDICIES[ZINDICIES[\"SERIES_LABEL_ZINDEX\"] = 1500] = \"SERIES_LABEL_ZINDEX\";\n ZINDICIES[ZINDICIES[\"CROSSHAIR_ZINDEX\"] = 2000] = \"CROSSHAIR_ZINDEX\";\n ZINDICIES[ZINDICIES[\"SERIES_MARKERS_ZINDEX\"] = 2500] = \"SERIES_MARKERS_ZINDEX\";\n})(ZINDICIES || (ZINDICIES = {}));\nclass SparklineAxis {\n constructor() {\n this.type = 'category';\n this.stroke = 'rgb(204, 214, 235)';\n this.strokeWidth = 1;\n }\n}\nclass Sparkline {\n constructor() {\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.smallestInterval = undefined;\n this.layoutId = 0;\n this.defaultDateFormatter = new Intl.DateTimeFormat('en-US', {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n hour12: false,\n });\n this._onMouseMove = this.onMouseMove.bind(this);\n this._onMouseOut = this.onMouseOut.bind(this);\n const root = new Group();\n this.rootGroup = root;\n const element = document.createElement('div');\n element.setAttribute('class', 'ag-sparkline-wrapper');\n const 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 const 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 }\n set context(value) {\n if (this._context !== value) {\n this._context = value;\n }\n }\n get context() {\n return this._context;\n }\n set container(value) {\n if (this._container !== value) {\n const { parentNode } = this.canvasElement;\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 get container() {\n return this._container;\n }\n set data(value) {\n if (this._data !== value) {\n this._data = value;\n this.processData();\n if (this.mouseMoveEvent && this.highlightedDatum) {\n this.updateHitPoint(this.mouseMoveEvent);\n }\n }\n }\n get data() {\n return this._data;\n }\n set width(value) {\n if (this._width !== value) {\n this._width = value;\n this.scene.resize(value, this.height);\n this.scheduleLayout();\n }\n }\n get width() {\n return this._width;\n }\n set height(value) {\n if (this._height !== value) {\n this._height = value;\n this.scene.resize(this.width, value);\n this.scheduleLayout();\n }\n }\n get height() {\n return this._height;\n }\n /**\n * Generate node data from processed data.\n * Produce data joins.\n * Update selection's nodes using node data.\n */\n update() { }\n // Update y scale based on processed data.\n updateYScale() {\n this.updateYScaleRange();\n this.updateYScaleDomain();\n }\n // Update y scale domain based on processed data.\n updateYScaleDomain() { }\n // Update y scale range based on height and padding (seriesRect).\n updateYScaleRange() {\n const { yScale, seriesRect } = this;\n yScale.range = [seriesRect.height, 0];\n }\n // Update x scale based on processed data.\n updateXScale() {\n const { type } = this.axis;\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 updateXScaleRange() {\n this.xScale.range = [0, this.seriesRect.width];\n }\n // Update x scale domain based on processed data and type of scale.\n updateXScaleDomain() {\n const { xData, xScale } = this;\n let xMinMax;\n if (xScale instanceof LinearScale || xScale instanceof TimeScale) {\n xMinMax = extent$3(xData);\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 getXScale(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$4();\n }\n }\n // Update axis line.\n updateAxisLine() { }\n // Update X and Y scales and the axis line.\n updateAxes() {\n this.updateYScale();\n this.updateXScale();\n this.updateAxisLine();\n }\n // Update horizontal and vertical crosshair lines.\n updateCrosshairs() {\n this.updateXCrosshairLine();\n this.updateYCrosshairLine();\n }\n // Using processed data, generate data that backs visible nodes.\n generateNodeData() {\n return [];\n }\n // Returns persisted node data associated with the sparkline's data.\n getNodeData() {\n return [];\n }\n // Update the selection's nodes.\n updateNodes() { }\n // Update the vertical crosshair line.\n updateXCrosshairLine() { }\n // Update the horizontal crosshair line.\n updateYCrosshairLine() { }\n highlightDatum(closestDatum) {\n this.updateNodes();\n }\n dehighlightDatum() {\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 onMouseMove(event) {\n this.mouseMoveEvent = event;\n this.updateHitPoint(event);\n }\n updateHitPoint(event) {\n var _a, _b, _c;\n const closestDatum = this.pickClosestSeriesNodeDatum(event.offsetX, event.offsetY);\n if (!closestDatum) {\n return;\n }\n const 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 this.scene.render().catch((e) => console.error(`AG Grid - chart rendering failed`, e));\n }\n const tooltipEnabled = (_c = (_b = (_a = this.processedOptions) === null || _a === void 0 ? void 0 : _a.tooltip) === null || _b === void 0 ? void 0 : _b.enabled) !== null && _c !== void 0 ? _c : true;\n if (tooltipEnabled) {\n this.handleTooltip(event, closestDatum);\n }\n }\n /**\n * Dehighlight all nodes and remove tooltip.\n * @param event\n */\n onMouseOut(event) {\n this.dehighlightDatum();\n this.tooltip.toggle(false);\n this.scene.render().catch((e) => console.error(`AG Grid - chart rendering failed`, e));\n }\n // Fetch required values from the data object and process them.\n processData() {\n const { data, yData, xData } = this;\n if (!data || this.invalidData(this.data)) {\n return;\n }\n yData.length = 0;\n xData.length = 0;\n const n = data.length;\n const dataType = this.getDataType(data);\n this.dataType = dataType;\n const { type: xValueType } = this.axis;\n const xType = xValueType !== 'number' && xValueType !== 'time' ? 'category' : xValueType;\n const isContinuousX = xType === 'number' || xType === 'time';\n const setSmallestXInterval = (curr, prev) => {\n if (this.smallestInterval == undefined) {\n this.smallestInterval = { x: Infinity, y: Infinity };\n }\n const { x } = this.smallestInterval;\n const interval = Math.abs(curr - prev);\n if (interval > 0 && interval < x) {\n this.smallestInterval.x = interval;\n }\n };\n let prevX;\n if (dataType === 'number') {\n for (let i = 0; i < n; i++) {\n const xDatum = i;\n const yDatum = data[i];\n const x = this.getDatum(xDatum, xType);\n const y = this.getDatum(yDatum, 'number');\n if (isContinuousX) {\n setSmallestXInterval(x, prevX);\n }\n xData.push(x);\n yData.push(y);\n prevX = x;\n }\n }\n else if (dataType === 'array') {\n for (let i = 0; i < n; i++) {\n const datum = data[i];\n if (Array.isArray(datum)) {\n const xDatum = datum[0];\n const yDatum = datum[1];\n const x = this.getDatum(xDatum, xType);\n const y = this.getDatum(yDatum, 'number');\n if (x == undefined) {\n continue;\n }\n if (isContinuousX) {\n setSmallestXInterval(x, prevX);\n }\n xData.push(x);\n yData.push(y);\n prevX = x;\n }\n }\n }\n else if (dataType === 'object') {\n const { yKey, xKey } = this;\n for (let i = 0; i < n; i++) {\n const datum = data[i];\n if (typeof datum === 'object' && !Array.isArray(datum)) {\n const xDatum = datum[xKey];\n const yDatum = datum[yKey];\n const x = this.getDatum(xDatum, xType);\n const y = this.getDatum(yDatum, 'number');\n if (x == undefined) {\n continue;\n }\n if (isContinuousX) {\n setSmallestXInterval(x, prevX);\n }\n xData.push(x);\n yData.push(y);\n prevX = x;\n }\n }\n }\n this.updateAxes();\n this.immediateLayout();\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 getDataType(data) {\n for (const datum of data) {\n if (datum != undefined) {\n if (isNumber$3(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 /**\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 getDatum(value, type) {\n if ((type === 'number' && isNumber$3(value)) || (type === 'time' && (isNumber$3(value) || isDate(value)))) {\n return value;\n }\n else if (type === 'category') {\n if (isString(value) || isDate(value) || isNumber$3(value)) {\n return { toString: () => String(value) };\n }\n else if (isStringObject(value)) {\n return value;\n }\n }\n }\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 layoutScheduled() {\n return !!this.layoutId;\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 scheduleLayout() {\n if (this.layoutId) {\n cancelAnimationFrame(this.layoutId);\n }\n this.layoutId = requestAnimationFrame(() => {\n this.immediateLayout();\n this.layoutId = 0;\n });\n }\n immediateLayout() {\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.scene.render().catch((e) => console.error(`AG Grid - chart rendering failed`, e));\n }\n setSparklineDimensions() {\n const { width, height, padding, seriesRect, rootGroup } = this;\n const shrunkWidth = width - padding.left - padding.right;\n const 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 pickClosestSeriesNodeDatum(x, y) {\n let minDistance = Infinity;\n let closestDatum;\n const hitPoint = this.rootGroup.transformPoint(x, y);\n const nodeData = this.getNodeData();\n for (let i = 0; i < nodeData.length; i++) {\n const datum = nodeData[i];\n if (!datum.point) {\n return;\n }\n const 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 getDistance(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 handleTooltip(event, datum) {\n var _a, _b;\n const { seriesDatum } = datum;\n const { canvasElement } = this;\n const { clientX, clientY } = event;\n const tooltipOptions = (_a = this.processedOptions) === null || _a === void 0 ? void 0 : _a.tooltip;\n const meta = {\n pageX: clientX,\n pageY: clientY,\n position: {\n xOffset: tooltipOptions === null || tooltipOptions === void 0 ? void 0 : tooltipOptions.xOffset,\n yOffset: tooltipOptions === null || tooltipOptions === void 0 ? void 0 : tooltipOptions.yOffset,\n },\n container: tooltipOptions === null || tooltipOptions === void 0 ? void 0 : tooltipOptions.container,\n };\n // confine tooltip to sparkline width if tooltip container not provided.\n if (meta.container == undefined) {\n meta.container = canvasElement;\n }\n const yValue = seriesDatum.y;\n const xValue = seriesDatum.x;\n // check if tooltip is enabled for this specific data point\n let enabled = (_b = tooltipOptions === null || tooltipOptions === void 0 ? void 0 : tooltipOptions.enabled) !== null && _b !== void 0 ? _b : true;\n const tooltipRenderer = tooltipOptions === null || tooltipOptions === void 0 ? void 0 : tooltipOptions.renderer;\n if (tooltipRenderer) {\n const tooltipRendererResult = tooltipRenderer({\n context: this.context,\n datum: seriesDatum,\n yValue,\n xValue,\n });\n enabled =\n typeof tooltipRendererResult !== 'string' && tooltipRendererResult.enabled !== undefined\n ? tooltipRendererResult.enabled\n : enabled;\n }\n const html = enabled && seriesDatum.y !== undefined && this.getTooltipHtml(datum);\n if (html) {\n this.tooltip.show(meta, html);\n }\n }\n formatNumericDatum(datum) {\n return String(Math.round(datum * 10) / 10);\n }\n // locale.format('%m/%d/%y, %H:%M:%S');\n formatDatum(datum) {\n const 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$3(datum))) {\n return this.defaultDateFormatter.format(datum);\n }\n else {\n return String(datum);\n }\n }\n setupDomEventListeners(chartElement) {\n chartElement.addEventListener('mousemove', this._onMouseMove);\n chartElement.addEventListener('mouseout', this._onMouseOut);\n }\n cleanupDomEventListeners(chartElement) {\n chartElement.removeEventListener('mousemove', this._onMouseMove);\n chartElement.removeEventListener('mouseout', this._onMouseOut);\n }\n invalidData(data) {\n return !data || !Array.isArray(data) || data.length === 0;\n }\n /**\n * Cleanup and remove canvas element from the DOM.\n */\n destroy() {\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}\nSparkline.tooltipDocuments = [];\n\nfunction toTooltipHtml(input, defaults) {\n var _a, _b, _c;\n if (typeof input === 'string') {\n return input;\n }\n defaults = defaults !== null && defaults !== void 0 ? defaults : {};\n const { content = (_a = defaults.content) !== null && _a !== void 0 ? _a : '', title = (_b = defaults.title) !== null && _b !== void 0 ? _b : undefined, color = defaults.color, backgroundColor = defaults.backgroundColor, opacity = (_c = defaults.opacity) !== null && _c !== void 0 ? _c : 1, } = input;\n let titleHtml;\n let 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 let style = `opacity: ${opacity}`;\n if (backgroundColor) {\n style += `; background-color: ${backgroundColor.toLowerCase()}`;\n }\n return `
\n ${titleHtml}\n ${contentHtml}\n
`;\n}\nclass SparklineTooltip {\n constructor() {\n this.element = document.createElement('div');\n const tooltipRoot = document.body;\n tooltipRoot.appendChild(this.element);\n }\n isVisible() {\n const { element } = this;\n if (element.classList) {\n return !element.classList.contains(`${SparklineTooltip.class}-wrapper-hidden`);\n }\n // IE11\n const classes = element.getAttribute('class');\n if (classes) {\n return classes.split(' ').indexOf(`${SparklineTooltip.class}-wrapper-hidden`) < 0;\n }\n return false;\n }\n updateClass(visible) {\n const 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 show(meta, html) {\n var _a, _b, _c, _d;\n this.toggle(false);\n const { element } = this;\n if (html !== undefined) {\n element.innerHTML = html;\n }\n else if (!element.innerHTML) {\n return;\n }\n const xOffset = (_b = (_a = meta.position) === null || _a === void 0 ? void 0 : _a.xOffset) !== null && _b !== void 0 ? _b : 10;\n const yOffset = (_d = (_c = meta.position) === null || _c === void 0 ? void 0 : _c.yOffset) !== null && _d !== void 0 ? _d : 0;\n let left = meta.pageX + xOffset;\n let top = meta.pageY + yOffset;\n const tooltipRect = element.getBoundingClientRect();\n let maxLeft = window.innerWidth - tooltipRect.width;\n if (meta.container) {\n const containerRect = meta.container.getBoundingClientRect();\n maxLeft = containerRect.left + (containerRect.width - tooltipRect.width);\n }\n if (left > maxLeft) {\n left = meta.pageX - element.clientWidth - xOffset;\n }\n if (typeof scrollX !== 'undefined') {\n left += scrollX;\n }\n if (typeof scrollY !== 'undefined') {\n top += scrollY;\n }\n element.style.left = `${Math.round(left)}px`;\n element.style.top = `${Math.round(top)}px`;\n this.toggle(true);\n }\n toggle(visible) {\n this.updateClass(visible);\n }\n destroy() {\n const { parentNode } = this.element;\n if (parentNode) {\n parentNode.removeChild(this.element);\n }\n }\n}\nSparklineTooltip.class = 'ag-sparkline-tooltip';\n\nfunction 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\nfunction getLineDash(lineCap, lineDash = 'solid') {\n const 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 const 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\nconst { extent: extent$2 } = _Util;\nconst { BandScale: BandScale$3 } = _Scale;\nclass SparklineMarker$1 {\n constructor() {\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}\nclass SparklineLine$1 {\n constructor() {\n this.stroke = 'rgb(124, 181, 236)';\n this.strokeWidth = 1;\n }\n}\nclass SparklineCrosshairs$1 {\n constructor() {\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}\nclass AreaSparkline extends Sparkline {\n constructor() {\n super();\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.xAxisLine = new Line();\n this.markers = new Group();\n this.markerSelection = Selection.select(this.markers, () => this.markerFactory());\n this.markerSelectionData = [];\n this.marker = new SparklineMarker$1();\n this.line = new SparklineLine$1();\n this.crosshairs = new SparklineCrosshairs$1();\n this.rootGroup.append(this.areaSparklineGroup);\n this.xAxisLine.zIndex = ZINDICIES.AXIS_LINE_ZINDEX;\n this.fillPath.zIndex = ZINDICIES.SERIES_FILL_ZINDEX;\n this.strokePath.zIndex = ZINDICIES.SERIES_STROKE_ZINDEX;\n this.xCrosshairLine.zIndex = ZINDICIES.CROSSHAIR_ZINDEX;\n this.yCrosshairLine.zIndex = ZINDICIES.CROSSHAIR_ZINDEX;\n this.markers.zIndex = ZINDICIES.SERIES_MARKERS_ZINDEX;\n this.areaSparklineGroup.append([\n this.fillPath,\n this.xAxisLine,\n this.strokePath,\n this.xCrosshairLine,\n this.yCrosshairLine,\n this.markers,\n ]);\n }\n markerFactory() {\n const { shape } = this.marker;\n const MarkerShape = getMarker(shape);\n return new MarkerShape();\n }\n getNodeData() {\n return this.markerSelectionData;\n }\n update() {\n const data = this.generateNodeData();\n if (!data) {\n return;\n }\n const { nodeData, fillData, strokeData } = data;\n this.markerSelectionData = nodeData;\n this.updateSelection(nodeData);\n this.updateNodes();\n this.updateStroke(strokeData);\n this.updateFill(fillData);\n }\n updateYScaleDomain() {\n const { yData, yScale } = this;\n const yMinMax = extent$2(yData);\n let yMin = 0;\n let 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 generateNodeData() {\n const { data, yData, xData, xScale, yScale } = this;\n if (!data) {\n return;\n }\n const continuous = !(xScale instanceof BandScale$3);\n const offsetX = !continuous ? xScale.bandwidth / 2 : 0;\n const n = yData.length;\n const nodeData = [];\n const fillData = [];\n const strokeData = [];\n let firstValidX;\n let lastValidX;\n let previousX;\n let nextX;\n const yZero = yScale.convert(0);\n for (let i = 0; i < n; i++) {\n const yDatum = yData[i];\n const xDatum = xData[i];\n const x = xScale.convert(continuous ? xScale.toDomain(xDatum) : xDatum) + offsetX;\n const y = yDatum === undefined ? NaN : 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(continuous ? xScale.toDomain(xData[i + 1]) : 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, 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, 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, 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, fillData, strokeData };\n }\n updateAxisLine() {\n const { xScale, yScale, axis, xAxisLine } = this;\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 const yZero = yScale.convert(0);\n xAxisLine.translationY = yZero;\n }\n updateSelection(selectionData) {\n this.markerSelection.update(selectionData);\n }\n updateNodes() {\n const { highlightedDatum, highlightStyle, marker } = this;\n const { size: highlightSize, fill: highlightFill, stroke: highlightStroke, strokeWidth: highlightStrokeWidth, } = highlightStyle;\n const markerFormatter = marker.formatter;\n this.markerSelection.each((node, datum, index) => {\n const { point, seriesDatum } = datum;\n if (!point) {\n return;\n }\n const highlighted = datum === highlightedDatum;\n const markerFill = highlighted && highlightFill !== undefined ? highlightFill : marker.fill;\n const markerStroke = highlighted && highlightStroke !== undefined ? highlightStroke : marker.stroke;\n const markerStrokeWidth = highlighted && highlightStrokeWidth !== undefined ? highlightStrokeWidth : marker.strokeWidth;\n const markerSize = highlighted && highlightSize !== undefined ? highlightSize : marker.size;\n let markerFormat;\n if (markerFormatter) {\n const first = index === 0;\n const last = index === this.markerSelectionData.length - 1;\n const min = seriesDatum.y === this.min;\n const max = seriesDatum.y === this.max;\n markerFormat = markerFormatter({\n datum,\n xValue: seriesDatum.x,\n yValue: seriesDatum.y,\n min,\n max,\n first,\n last,\n fill: markerFill,\n stroke: markerStroke,\n strokeWidth: markerStrokeWidth,\n size: markerSize,\n 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 updateStroke(strokeData) {\n const { strokePath, yData, line } = this;\n if (yData.length < 2) {\n return;\n }\n const path = strokePath.path;\n const n = strokeData.length;\n let moveTo = true;\n path.clear();\n for (let i = 0; i < n; i++) {\n const { point, seriesDatum } = strokeData[i];\n const x = point.x;\n const 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 updateFill(areaData) {\n const { fillPath, yData, fill } = this;\n const path = fillPath.path;\n const n = areaData.length;\n path.clear();\n if (yData.length < 2) {\n return;\n }\n for (let i = 0; i < n; i++) {\n const { point } = areaData[i];\n const x = point.x;\n const 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 updateXCrosshairLine() {\n var _a;\n const { yScale, xCrosshairLine, highlightedDatum, crosshairs: { xLine }, } = this;\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 = (_a = xLine.strokeWidth) !== null && _a !== void 0 ? _a : 1;\n xCrosshairLine.lineCap = xLine.lineCap === 'round' || xLine.lineCap === 'square' ? xLine.lineCap : undefined;\n const { lineDash } = xLine;\n xCrosshairLine.lineDash = Array.isArray(lineDash)\n ? lineDash\n : getLineDash(xCrosshairLine.lineCap, xLine.lineDash);\n xCrosshairLine.translationX = highlightedDatum.point.x;\n }\n updateYCrosshairLine() {\n var _a;\n const { xScale, yCrosshairLine, highlightedDatum, crosshairs: { yLine }, } = this;\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 = (_a = yLine.strokeWidth) !== null && _a !== void 0 ? _a : 1;\n yCrosshairLine.lineCap = yLine.lineCap === 'round' || yLine.lineCap === 'square' ? yLine.lineCap : undefined;\n const { lineDash } = yLine;\n yCrosshairLine.lineDash = Array.isArray(lineDash)\n ? lineDash\n : getLineDash(yCrosshairLine.lineCap, yLine.lineDash);\n yCrosshairLine.translationY = highlightedDatum.point.y;\n }\n getTooltipHtml(datum) {\n var _a, _b;\n const { dataType } = this;\n const { seriesDatum } = datum;\n const yValue = seriesDatum.y;\n const xValue = seriesDatum.x;\n const content = this.formatNumericDatum(yValue);\n const title = dataType === 'array' || dataType === 'object' ? this.formatDatum(xValue) : undefined;\n const defaults = {\n content,\n title,\n };\n const tooltipRenderer = (_b = (_a = this.processedOptions) === null || _a === void 0 ? void 0 : _a.tooltip) === null || _b === void 0 ? void 0 : _b.renderer;\n if (tooltipRenderer) {\n return toTooltipHtml(tooltipRenderer({\n context: this.context,\n datum: seriesDatum,\n yValue,\n xValue,\n }), defaults);\n }\n return toTooltipHtml(defaults);\n }\n}\nAreaSparkline.className = 'AreaSparkline';\n\nconst { extent: extent$1 } = _Util;\nconst { BandScale: BandScale$2 } = _Scale;\nclass SparklineMarker {\n constructor() {\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}\nclass SparklineLine {\n constructor() {\n this.stroke = 'rgb(124, 181, 236)';\n this.strokeWidth = 1;\n }\n}\nclass SparklineCrosshairs {\n constructor() {\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}\nclass LineSparkline extends Sparkline {\n constructor() {\n super();\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, () => this.markerFactory());\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.linePath.zIndex = ZINDICIES.SERIES_STROKE_ZINDEX;\n this.xCrosshairLine.zIndex = ZINDICIES.CROSSHAIR_ZINDEX;\n this.yCrosshairLine.zIndex = ZINDICIES.CROSSHAIR_ZINDEX;\n this.markers.zIndex = ZINDICIES.SERIES_MARKERS_ZINDEX;\n this.lineSparklineGroup.append([this.linePath, this.xCrosshairLine, this.yCrosshairLine, this.markers]);\n }\n getNodeData() {\n return this.markerSelectionData;\n }\n markerFactory() {\n const { shape } = this.marker;\n const MarkerShape = getMarker(shape);\n return new MarkerShape();\n }\n /**\n * If marker shape is changed, this method should be called to remove the previous marker nodes selection.\n */\n onMarkerShapeChange() {\n this.markerSelection = this.markerSelection.clear();\n this.scheduleLayout();\n }\n update() {\n const 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 updateYScaleDomain() {\n const { yData, yScale } = this;\n const yMinMax = extent$1(yData);\n let yMin = 0;\n let 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 const padding = Math.abs(yMin * 0.01);\n yMin -= padding;\n yMax += padding;\n }\n yScale.domain = [yMin, yMax];\n }\n generateNodeData() {\n const { data, yData, xData, xScale, yScale } = this;\n if (!data) {\n return;\n }\n const continuous = !(xScale instanceof BandScale$2);\n const offsetX = !continuous ? xScale.bandwidth / 2 : 0;\n const nodeData = [];\n for (let i = 0; i < yData.length; i++) {\n const yDatum = yData[i];\n const xDatum = xData[i];\n if (yDatum == undefined) {\n continue;\n }\n const x = xScale.convert(continuous ? xScale.toDomain(xDatum) : xDatum) + offsetX;\n const y = yDatum === undefined ? NaN : yScale.convert(yDatum);\n nodeData.push({\n seriesDatum: { x: xDatum, y: yDatum },\n point: { x, y },\n });\n }\n return nodeData;\n }\n updateSelection(selectionData) {\n this.markerSelection.update(selectionData);\n }\n updateNodes() {\n const { highlightedDatum, highlightStyle, marker } = this;\n const { size: highlightSize, fill: highlightFill, stroke: highlightStroke, strokeWidth: highlightStrokeWidth, } = highlightStyle;\n const markerFormatter = marker.formatter;\n this.markerSelection.each((node, datum, index) => {\n const highlighted = datum === highlightedDatum;\n const markerFill = highlighted && highlightFill !== undefined ? highlightFill : marker.fill;\n const markerStroke = highlighted && highlightStroke !== undefined ? highlightStroke : marker.stroke;\n const markerStrokeWidth = highlighted && highlightStrokeWidth !== undefined ? highlightStrokeWidth : marker.strokeWidth;\n const markerSize = highlighted && highlightSize !== undefined ? highlightSize : marker.size;\n let markerFormat;\n const { seriesDatum, point } = datum;\n if (markerFormatter) {\n const first = index === 0;\n const last = index === this.markerSelectionData.length - 1;\n const min = seriesDatum.y === this.min;\n const max = seriesDatum.y === this.max;\n markerFormat = markerFormatter({\n datum,\n xValue: seriesDatum.x,\n yValue: seriesDatum.y,\n min,\n max,\n first,\n last,\n fill: markerFill,\n stroke: markerStroke,\n strokeWidth: markerStrokeWidth,\n size: markerSize,\n 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 updateLine() {\n const { linePath, yData, xData, xScale, yScale, line } = this;\n if (yData.length < 2) {\n return;\n }\n const continuous = !(xScale instanceof BandScale$2);\n const path = linePath.path;\n const n = yData.length;\n const offsetX = !continuous ? xScale.bandwidth / 2 : 0;\n let moveTo = true;\n path.clear();\n for (let i = 0; i < n; i++) {\n const xDatum = xData[i];\n const yDatum = yData[i];\n const x = xScale.convert(continuous ? xScale.toDomain(xDatum) : xDatum) + offsetX;\n const y = yDatum === undefined ? NaN : 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 updateXCrosshairLine() {\n var _a;\n const { yScale, xCrosshairLine, highlightedDatum, crosshairs: { xLine }, } = this;\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 = (_a = xLine.strokeWidth) !== null && _a !== void 0 ? _a : 1;\n xCrosshairLine.lineCap = xLine.lineCap === 'round' || xLine.lineCap === 'square' ? xLine.lineCap : undefined;\n const { lineDash } = xLine;\n xCrosshairLine.lineDash = Array.isArray(lineDash)\n ? lineDash\n : getLineDash(xCrosshairLine.lineCap, xLine.lineDash);\n xCrosshairLine.translationX = highlightedDatum.point.x;\n }\n updateYCrosshairLine() {\n var _a;\n const { xScale, yCrosshairLine, highlightedDatum, crosshairs: { yLine }, } = this;\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 = (_a = yLine.strokeWidth) !== null && _a !== void 0 ? _a : 1;\n yCrosshairLine.lineCap = yLine.lineCap === 'round' || yLine.lineCap === 'square' ? yLine.lineCap : undefined;\n const { lineDash } = yLine;\n yCrosshairLine.lineDash = Array.isArray(lineDash)\n ? lineDash\n : getLineDash(yCrosshairLine.lineCap, yLine.lineDash);\n yCrosshairLine.translationY = highlightedDatum.point.y;\n }\n getTooltipHtml(datum) {\n var _a, _b;\n const { dataType } = this;\n const { seriesDatum } = datum;\n const yValue = seriesDatum.y;\n const xValue = seriesDatum.x;\n const content = this.formatNumericDatum(yValue);\n const title = dataType === 'array' || dataType === 'object' ? this.formatDatum(xValue) : undefined;\n const defaults = {\n content,\n title,\n };\n const tooltipRenderer = (_b = (_a = this.processedOptions) === null || _a === void 0 ? void 0 : _a.tooltip) === null || _b === void 0 ? void 0 : _b.renderer;\n if (tooltipRenderer) {\n return toTooltipHtml(tooltipRenderer({\n context: this.context,\n datum: seriesDatum,\n yValue,\n xValue,\n }), defaults);\n }\n return toTooltipHtml(defaults);\n }\n}\nLineSparkline.className = 'LineSparkline';\n\nclass Label {\n constructor() {\n this.enabled = true;\n this.fontSize = 8;\n this.fontFamily = 'Verdana, sans-serif';\n this.fontStyle = undefined;\n this.fontWeight = undefined;\n this.color = 'rgba(70, 70, 70, 1)';\n }\n}\n\nconst { extent } = _Util;\nvar BarColumnNodeTag;\n(function (BarColumnNodeTag) {\n BarColumnNodeTag[BarColumnNodeTag[\"Rect\"] = 0] = \"Rect\";\n BarColumnNodeTag[BarColumnNodeTag[\"Label\"] = 1] = \"Label\";\n})(BarColumnNodeTag || (BarColumnNodeTag = {}));\nvar BarColumnLabelPlacement;\n(function (BarColumnLabelPlacement) {\n BarColumnLabelPlacement[\"InsideBase\"] = \"insideBase\";\n BarColumnLabelPlacement[\"InsideEnd\"] = \"insideEnd\";\n BarColumnLabelPlacement[\"Center\"] = \"center\";\n BarColumnLabelPlacement[\"OutsideEnd\"] = \"outsideEnd\";\n})(BarColumnLabelPlacement || (BarColumnLabelPlacement = {}));\nclass BarColumnLabel extends Label {\n constructor() {\n super(...arguments);\n this.formatter = undefined;\n this.placement = BarColumnLabelPlacement.InsideEnd;\n }\n}\nclass BarColumnSparkline extends Sparkline {\n constructor() {\n super();\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.bandWidth = 0;\n this.sparklineGroup = new Group();\n this.rectGroup = new Group();\n this.labelGroup = new Group();\n this.rectSelection = Selection.select(this.rectGroup, Rect);\n this.labelSelection = Selection.select(this.labelGroup, Text);\n this.nodeSelectionData = [];\n this.label = new BarColumnLabel();\n this.rootGroup.append(this.sparklineGroup);\n this.rectGroup.zIndex = ZINDICIES.SERIES_FILL_ZINDEX;\n this.axisLine.zIndex = ZINDICIES.AXIS_LINE_ZINDEX;\n this.labelGroup.zIndex = ZINDICIES.SERIES_LABEL_ZINDEX;\n this.sparklineGroup.append([this.rectGroup, this.axisLine, this.labelGroup]);\n this.axisLine.lineCap = 'round';\n this.label.enabled = false;\n }\n getNodeData() {\n return this.nodeSelectionData;\n }\n update() {\n this.updateSelections();\n this.updateNodes();\n }\n updateSelections() {\n const nodeData = this.generateNodeData();\n if (!nodeData) {\n return;\n }\n this.nodeSelectionData = nodeData;\n this.updateRectSelection(nodeData);\n this.updateLabelSelection(nodeData);\n }\n updateNodes() {\n this.updateRectNodes();\n this.updateLabelNodes();\n }\n calculateStep(range) {\n var _a;\n const { xScale, paddingInner, paddingOuter, smallestInterval } = this;\n // calculate step\n let domainLength = xScale.domain[1] - xScale.domain[0];\n let intervals = domainLength / ((_a = smallestInterval === null || smallestInterval === void 0 ? void 0 : smallestInterval.x) !== null && _a !== void 0 ? _a : 1) + 1;\n // The number of intervals/bands is used to determine the width of individual bands by dividing the available range.\n // Allow a maximum of 50 bands to ensure the step (width of individual bands + padding) does not fall below a certain number of pixels.\n // If the number of intervals exceeds 50, calculate the step for 50 bands within the given range.\n // This means there could be some overlap of the bands in the sparkline.\n const maxBands = 50;\n const bands = Math.min(intervals, maxBands);\n const gaps = bands - 1; // number of gaps (padding between bands)\n const step = range / Math.max(1, 2 * paddingOuter + gaps * paddingInner + bands); // step width is a combination of band width and gap width\n return step;\n }\n updateYScaleDomain() {\n const { yScale, yData, valueAxisDomain } = this;\n const yMinMax = extent(yData);\n let yMin = 0;\n let 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 updateRectSelection(selectionData) {\n this.rectSelection.update(selectionData);\n }\n updateRectNodes() {\n const { highlightedDatum, formatter: nodeFormatter, fill, stroke, strokeWidth } = this;\n const { fill: highlightFill, stroke: highlightStroke, strokeWidth: highlightStrokeWidth } = this.highlightStyle;\n this.rectSelection.each((node, datum, index) => {\n const highlighted = datum === highlightedDatum;\n const nodeFill = highlighted && highlightFill !== undefined ? highlightFill : fill;\n const nodeStroke = highlighted && highlightStroke !== undefined ? highlightStroke : stroke;\n const nodeStrokeWidth = highlighted && highlightStrokeWidth !== undefined ? highlightStrokeWidth : strokeWidth;\n let nodeFormat;\n const { x, y, width, height, seriesDatum } = datum;\n if (nodeFormatter) {\n const first = index === 0;\n const last = index === this.nodeSelectionData.length - 1;\n const min = seriesDatum.y === this.min;\n const max = seriesDatum.y === this.max;\n nodeFormat = nodeFormatter({\n datum,\n xValue: seriesDatum.x,\n yValue: seriesDatum.y,\n width: width,\n height: height,\n min,\n max,\n first,\n last,\n fill: nodeFill,\n stroke: nodeStroke,\n strokeWidth: nodeStrokeWidth,\n 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 updateLabelSelection(selectionData) {\n this.labelSelection.update(selectionData, (text) => {\n text.tag = BarColumnNodeTag.Label;\n text.pointerEvents = PointerEvents.None;\n });\n }\n updateLabelNodes() {\n const { label: { enabled: labelEnabled, fontStyle, fontWeight, fontSize, fontFamily, color }, } = this;\n this.labelSelection.each((text, datum) => {\n const 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 getTooltipHtml(datum) {\n var _a, _b;\n const { dataType } = this;\n const { seriesDatum } = datum;\n const yValue = seriesDatum.y;\n const xValue = seriesDatum.x;\n const content = this.formatNumericDatum(yValue);\n const title = dataType === 'array' || dataType === 'object' ? this.formatDatum(xValue) : undefined;\n const defaults = {\n content,\n title,\n };\n const tooltipRenderer = (_b = (_a = this.processedOptions) === null || _a === void 0 ? void 0 : _a.tooltip) === null || _b === void 0 ? void 0 : _b.renderer;\n if (tooltipRenderer) {\n return toTooltipHtml(tooltipRenderer({\n context: this.context,\n datum: seriesDatum,\n yValue,\n xValue,\n }), defaults);\n }\n return toTooltipHtml(defaults);\n }\n formatLabelValue(value) {\n return value % 1 !== 0 ? value.toFixed(1) : value.toFixed(0);\n }\n}\n\nconst { isNumber: isNumber$2 } = _Util;\nconst { BandScale: BandScale$1 } = _Scale;\nclass BarSparkline extends BarColumnSparkline {\n updateYScaleRange() {\n const { seriesRect, yScale } = this;\n yScale.range = [0, seriesRect.width];\n }\n updateXScaleRange() {\n const { xScale, seriesRect, paddingOuter, paddingInner } = this;\n if (xScale instanceof BandScale$1) {\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 last band width from the range so that the last band is not clipped\n const step = this.calculateStep(seriesRect.height);\n // PaddingOuter and paddingInner are fractions of the step with values between 0 and 1\n const padding = step * paddingOuter; // left and right outer padding\n this.bandWidth = step * (1 - paddingInner);\n xScale.range = [padding, seriesRect.height - padding - this.bandWidth];\n }\n }\n updateAxisLine() {\n const { yScale, axis, axisLine, seriesRect } = this;\n const { strokeWidth } = axis;\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 const yZero = yScale.convert(0);\n axisLine.translationX = yZero;\n }\n generateNodeData() {\n const { data, yData, xData, xScale, yScale, fill, stroke, strokeWidth, label } = this;\n if (!data) {\n return;\n }\n const { fontStyle: labelFontStyle, fontWeight: labelFontWeight, fontSize: labelFontSize, fontFamily: labelFontFamily, color: labelColor, formatter: labelFormatter, placement: labelPlacement, } = label;\n const nodeData = [];\n const yZero = yScale.convert(0);\n const continuous = !(xScale instanceof BandScale$1);\n for (let i = 0, n = yData.length; i < n; i++) {\n let yDatum = yData[i];\n const xDatum = xData[i];\n const invalidDatum = yDatum === undefined;\n if (invalidDatum) {\n yDatum = 0;\n }\n const y = xScale.convert(continuous ? xScale.toDomain(xDatum) : xDatum);\n const x = Math.min(yDatum === undefined ? NaN : yScale.convert(yDatum), yZero);\n const bottom = Math.max(yDatum === undefined ? NaN : 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 const height = !continuous ? xScale.bandwidth : this.bandWidth;\n const width = bottom - x;\n const midPoint = {\n x: yZero,\n y: y,\n };\n let labelText;\n if (labelFormatter) {\n labelText = labelFormatter({ value: yDatum });\n }\n else {\n labelText = yDatum !== undefined && isNumber$2(yDatum) ? this.formatLabelValue(yDatum) : '';\n }\n const labelY = y + height / 2;\n let labelX;\n const labelTextBaseline = 'middle';\n let labelTextAlign;\n const isPositiveY = yDatum !== undefined && yDatum >= 0;\n const 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 const textSize = HdpiCanvas.getTextSize(labelText, labelFontFamily);\n const textWidth = textSize.width || 20;\n const positiveBoundary = yZero + textWidth;\n const negativeBoundary = yZero - textWidth;\n const 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,\n y,\n width,\n height,\n fill,\n stroke,\n 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 getDistance(p1, p2) {\n return Math.abs(p1.y - p2.y);\n }\n}\nBarSparkline.className = 'BarSparkline';\n\nconst { isNumber: isNumber$1 } = _Util;\nconst { BandScale } = _Scale;\nclass ColumnSparkline extends BarColumnSparkline {\n updateYScaleRange() {\n const { seriesRect, yScale } = this;\n yScale.range = [seriesRect.height, 0];\n }\n updateXScaleRange() {\n const { xScale, seriesRect, paddingOuter, paddingInner } = this;\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 last band width from the range so that the last band is not clipped\n const step = this.calculateStep(seriesRect.width);\n // PaddingOuter and paddingInner are fractions of the step with values between 0 and 1\n const padding = step * paddingOuter; // left and right outer padding\n this.bandWidth = step * (1 - paddingInner);\n xScale.range = [padding, seriesRect.width - padding - this.bandWidth];\n }\n }\n updateAxisLine() {\n const { yScale, axis, axisLine, seriesRect } = this;\n const { strokeWidth } = axis;\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 const yZero = yScale.convert(0);\n axisLine.translationY = yZero;\n }\n generateNodeData() {\n const { data, yData, xData, xScale, yScale, fill, stroke, strokeWidth, label } = this;\n if (!data) {\n return;\n }\n const { fontStyle: labelFontStyle, fontWeight: labelFontWeight, fontSize: labelFontSize, fontFamily: labelFontFamily, color: labelColor, formatter: labelFormatter, placement: labelPlacement, } = label;\n const nodeData = [];\n const yZero = yScale.convert(0);\n const continuous = !(xScale instanceof BandScale);\n for (let i = 0, n = yData.length; i < n; i++) {\n let yDatum = yData[i];\n const xDatum = xData[i];\n const invalidDatum = yDatum === undefined;\n if (invalidDatum) {\n yDatum = 0;\n }\n const y = Math.min(yDatum === undefined ? NaN : yScale.convert(yDatum), yZero);\n const x = xScale.convert(continuous ? xScale.toDomain(xDatum) : xDatum);\n const bottom = Math.max(yDatum === undefined ? NaN : 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 const width = !continuous ? xScale.bandwidth : this.bandWidth;\n const height = bottom - y;\n const midPoint = {\n x: x + width / 2,\n y: yZero,\n };\n let labelText;\n if (labelFormatter) {\n labelText = labelFormatter({ value: yDatum });\n }\n else {\n labelText = yDatum !== undefined && isNumber$1(yDatum) ? this.formatLabelValue(yDatum) : '';\n }\n const labelX = x + width / 2;\n let labelY;\n const labelTextAlign = 'center';\n let labelTextBaseline;\n const isPositiveY = yDatum !== undefined && yDatum >= 0;\n const 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 const textSize = HdpiCanvas.getTextSize(labelText, labelFontFamily);\n const textHeight = textSize.height || 10;\n const positiveBoundary = yZero - textHeight;\n const negativeBoundary = yZero + textHeight;\n const 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,\n y,\n width,\n height,\n fill,\n stroke,\n 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}\nColumnSparkline.className = 'ColumnSparkline';\n\nconst { isNumber } = _Util;\nclass AgSparkline {\n static create(options, tooltip) {\n // avoid mutating user provided options\n options = jsonMerge([options]);\n const 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 sparkline.processedOptions = options;\n return sparkline;\n }\n}\nfunction getSparklineInstance(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}\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 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}\nconst doOnceFlags = {};\n/**\n * If the key was passed before, then doesn't execute the func\n * @param {Function} func\n * @param {string} key\n */\nfunction doOnce(func, key) {\n if (doOnceFlags[key]) {\n return;\n }\n func();\n doOnceFlags[key] = true;\n}\nconst offsetValidator = (property, value, defaultOffset) => {\n if (isNumber(value)) {\n return true;\n }\n const 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(() => console.warn(message), `${property} not a number`);\n return false;\n};\nconst 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 const validator = validators[property];\n const 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\nvar __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass SparklineCellRenderer extends Component {\n constructor() {\n super(SparklineCellRenderer.TEMPLATE);\n }\n init(params) {\n let firstTimeIn = true;\n const updateSparkline = () => {\n const { clientWidth, clientHeight } = this.getGui();\n if (clientWidth === 0 || clientHeight === 0) {\n return;\n }\n if (firstTimeIn) {\n const options = Object.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 const unsubscribeFromResize = this.resizeObserverService.observeResize(this.getGui(), updateSparkline);\n this.addDestroyFunc(() => unsubscribeFromResize());\n }\n refresh(params) {\n if (this.sparkline) {\n this.sparkline.data = params.value;\n return true;\n }\n return false;\n }\n destroy() {\n if (this.sparkline) {\n this.sparkline.destroy();\n }\n super.destroy();\n }\n}\nSparklineCellRenderer.TEMPLATE /* html */ = `
\n \n
`;\n__decorate$1([\n RefSelector('eSparkline')\n], SparklineCellRenderer.prototype, \"eSparkline\", void 0);\n__decorate$1([\n Autowired('resizeObserverService')\n], SparklineCellRenderer.prototype, \"resizeObserverService\", void 0);\n__decorate$1([\n Autowired('sparklineTooltipSingleton')\n], SparklineCellRenderer.prototype, \"sparklineTooltipSingleton\", void 0);\n\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * This 'bean' creates a single sparkline tooltip that is bound to the grid lifecycle.\n */\nlet SparklineTooltipSingleton = class SparklineTooltipSingleton extends BeanStub {\n postConstruct() {\n this.tooltip = new SparklineTooltip();\n }\n getSparklineTooltip() {\n return this.tooltip;\n }\n destroyTooltip() {\n if (this.tooltip) {\n this.tooltip.destroy();\n }\n }\n};\n__decorate([\n PostConstruct\n], SparklineTooltipSingleton.prototype, \"postConstruct\", null);\n__decorate([\n PreDestroy\n], SparklineTooltipSingleton.prototype, \"destroyTooltip\", null);\nSparklineTooltipSingleton = __decorate([\n Bean('sparklineTooltipSingleton')\n], SparklineTooltipSingleton);\n\n// DO NOT UPDATE MANUALLY: Generated from script during build time\nconst VERSION = '30.0.5';\n\nconst SparklinesModule = {\n version: VERSION,\n moduleName: ModuleNames.SparklinesModule,\n beans: [SparklineTooltipSingleton],\n userComponents: [{ componentName: 'agSparklineCellRenderer', componentClass: SparklineCellRenderer }],\n dependantModules: [EnterpriseCoreModule],\n};\n\nconst 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];\nconst AllModules = AllCommunityModules.concat(AllEnterpriseModules);\n\nModuleRegistry.registerModules(AllEnterpriseModules);\n\nexport { AllEnterpriseModules, AllModules, ClipboardModule, ColumnsToolPanelModule, EnterpriseCoreModule, ExcelExportModule, FiltersToolPanelModule, GridChartsModule, GridLicenseManager as LicenseManager, MasterDetailModule, MenuModule, MultiFilter, MultiFilterModule, PivotDropZonePanel, PrimaryColsPanel, RangeSelectionModule, RichSelectModule, RowGroupDropZonePanel, RowGroupingModule, ServerSideRowModelModule, SetFilter, SetFilterModule, SideBarModule, SparklinesModule, StatusBarModule, ToolPanelColDefService, ValuesDropZonePanel, ViewportRowModelModule, __FORCE_MODULE_DETECTION_AG_GRID_CORE_EXT, agCharts, exportMultipleSheetsAsExcel, getMultipleSheetsAsExcel };\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","import baseCreate from './_baseCreate.js';\nimport baseLodash from './_baseLodash.js';\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295;\n\n/**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\nfunction LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n}\n\n// Ensure `LazyWrapper` is an instance of `baseLodash`.\nLazyWrapper.prototype = baseCreate(baseLodash.prototype);\nLazyWrapper.prototype.constructor = LazyWrapper;\n\nexport default LazyWrapper;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","import baseCreate from './_baseCreate.js';\nimport baseLodash from './_baseLodash.js';\n\n/**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\nfunction LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n}\n\nLodashWrapper.prototype = baseCreate(baseLodash.prototype);\nLodashWrapper.prototype.constructor = LodashWrapper;\n\nexport default LodashWrapper;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nexport default apply;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nexport default arrayEach;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n","import baseIndexOf from './_baseIndexOf.js';\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nexport default arrayIncludes;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nexport default arrayReduce;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nexport default arraySome;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignMergeValue;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignValue;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n","import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nexport default baseAssignValue;\n","import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nexport default baseCreate;\n","import baseForOwn from './_baseForOwn.js';\nimport createBaseEach from './_createBaseEach.js';\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nexport default baseEach;\n","import isSymbol from './isSymbol.js';\n\n/**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\nfunction baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n}\n\nexport default baseExtremum;\n","import baseEach from './_baseEach.js';\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\nexport default baseFilter;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nexport default baseFindIndex;\n","import arrayPush from './_arrayPush.js';\nimport isFlattenable from './_isFlattenable.js';\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nexport default baseFlatten;\n","import createBaseFor from './_createBaseFor.js';\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nexport default baseFor;\n","import baseFor from './_baseFor.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nexport default baseForOwn;\n","import castPath from './_castPath.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nexport default baseGet;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nexport default baseHasIn;\n","import baseFindIndex from './_baseFindIndex.js';\nimport baseIsNaN from './_baseIsNaN.js';\nimport strictIndexOf from './_strictIndexOf.js';\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nexport default baseIndexOf;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n","import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n","import Stack from './_Stack.js';\nimport baseIsEqual from './_baseIsEqual.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nexport default baseIsMatch;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nexport default baseIsNaN;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","import baseMatches from './_baseMatches.js';\nimport baseMatchesProperty from './_baseMatchesProperty.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\nimport property from './property.js';\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nexport default baseIteratee;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeys;\n","import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeysIn;\n","/**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\nfunction baseLodash() {\n // No operation performed.\n}\n\nexport default baseLodash;\n","/**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\nfunction baseLt(value, other) {\n return value < other;\n}\n\nexport default baseLt;\n","import baseEach from './_baseEach.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nexport default baseMap;\n","import baseIsMatch from './_baseIsMatch.js';\nimport getMatchData from './_getMatchData.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nexport default baseMatches;\n","import baseIsEqual from './_baseIsEqual.js';\nimport get from './get.js';\nimport hasIn from './hasIn.js';\nimport isKey from './_isKey.js';\nimport isStrictComparable from './_isStrictComparable.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\nimport toKey from './_toKey.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nexport default baseMatchesProperty;\n","import Stack from './_Stack.js';\nimport assignMergeValue from './_assignMergeValue.js';\nimport baseFor from './_baseFor.js';\nimport baseMergeDeep from './_baseMergeDeep.js';\nimport isObject from './isObject.js';\nimport keysIn from './keysIn.js';\nimport safeGet from './_safeGet.js';\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nexport default baseMerge;\n","import assignMergeValue from './_assignMergeValue.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\nimport copyArray from './_copyArray.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport isBuffer from './isBuffer.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isPlainObject from './isPlainObject.js';\nimport isTypedArray from './isTypedArray.js';\nimport safeGet from './_safeGet.js';\nimport toPlainObject from './toPlainObject.js';\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nexport default baseMergeDeep;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default baseProperty;\n","import baseGet from './_baseGet.js';\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nexport default basePropertyDeep;\n","import baseUnset from './_baseUnset.js';\nimport isIndex from './_isIndex.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\nfunction basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n}\n\nexport default basePullAt;\n","/**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\nfunction baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n}\n\nexport default baseReduce;\n","import identity from './identity.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nexport default baseRest;\n","import identity from './identity.js';\nimport metaMap from './_metaMap.js';\n\n/**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\nvar baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n};\n\nexport default baseSetData;\n","import constant from './constant.js';\nimport defineProperty from './_defineProperty.js';\nimport identity from './identity.js';\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nexport default baseSetToString;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nexport default baseSlice;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nexport default baseTrim;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n","import castPath from './_castPath.js';\nimport last from './last.js';\nimport parent from './_parent.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n}\n\nexport default baseUnset;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n","import identity from './identity.js';\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\nexport default castFunction;\n","import isArray from './isArray.js';\nimport isKey from './_isKey.js';\nimport stringToPath from './_stringToPath.js';\nimport toString from './toString.js';\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nexport default castPath;\n","import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nexport default cloneArrayBuffer;\n","import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nexport default cloneBuffer;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n}\n\nexport default composeArgs;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n}\n\nexport default composeArgsRight;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nexport default copyArray;\n","import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nexport default copyObject;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","/**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\nfunction countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n}\n\nexport default countHolders;\n","import baseRest from './_baseRest.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nexport default createAssigner;\n","import isArrayLike from './isArrayLike.js';\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nexport default createBaseEach;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nexport default createBaseFor;\n","import createCtor from './_createCtor.js';\nimport root from './_root.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1;\n\n/**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n}\n\nexport default createBind;\n","import baseCreate from './_baseCreate.js';\nimport isObject from './isObject.js';\n\n/**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n}\n\nexport default createCtor;\n","import apply from './_apply.js';\nimport createCtor from './_createCtor.js';\nimport createHybrid from './_createHybrid.js';\nimport createRecurry from './_createRecurry.js';\nimport getHolder from './_getHolder.js';\nimport replaceHolders from './_replaceHolders.js';\nimport root from './_root.js';\n\n/**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n}\n\nexport default createCurry;\n","import baseIteratee from './_baseIteratee.js';\nimport isArrayLike from './isArrayLike.js';\nimport keys from './keys.js';\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nexport default createFind;\n","import LodashWrapper from './_LodashWrapper.js';\nimport flatRest from './_flatRest.js';\nimport getData from './_getData.js';\nimport getFuncName from './_getFuncName.js';\nimport isArray from './isArray.js';\nimport isLaziable from './_isLaziable.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_CURRY_FLAG = 8,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256;\n\n/**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\nfunction createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n}\n\nexport default createFlow;\n","import composeArgs from './_composeArgs.js';\nimport composeArgsRight from './_composeArgsRight.js';\nimport countHolders from './_countHolders.js';\nimport createCtor from './_createCtor.js';\nimport createRecurry from './_createRecurry.js';\nimport getHolder from './_getHolder.js';\nimport reorder from './_reorder.js';\nimport replaceHolders from './_replaceHolders.js';\nimport root from './_root.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_ARY_FLAG = 128,\n WRAP_FLIP_FLAG = 512;\n\n/**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n}\n\nexport default createHybrid;\n","import apply from './_apply.js';\nimport createCtor from './_createCtor.js';\nimport root from './_root.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1;\n\n/**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n}\n\nexport default createPartial;\n","import isLaziable from './_isLaziable.js';\nimport setData from './_setData.js';\nimport setWrapToString from './_setWrapToString.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64;\n\n/**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n}\n\nexport default createRecurry;\n","import baseSetData from './_baseSetData.js';\nimport createBind from './_createBind.js';\nimport createCurry from './_createCurry.js';\nimport createHybrid from './_createHybrid.js';\nimport createPartial from './_createPartial.js';\nimport getData from './_getData.js';\nimport mergeData from './_mergeData.js';\nimport setData from './_setData.js';\nimport setWrapToString from './_setWrapToString.js';\nimport toInteger from './toInteger.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n}\n\nexport default createWrap;\n","import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nexport default defineProperty;\n","import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nexport default equalArrays;\n","import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nexport default equalByTag;\n","import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nexport default equalObjects;\n","import flatten from './flatten.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nexport default flatRest;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n","import metaMap from './_metaMap.js';\nimport noop from './noop.js';\n\n/**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\nvar getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n};\n\nexport default getData;\n","import realNames from './_realNames.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\nfunction getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n}\n\nexport default getFuncName;\n","/**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\nfunction getHolder(func) {\n var object = func;\n return object.placeholder;\n}\n\nexport default getHolder;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n","import isStrictComparable from './_isStrictComparable.js';\nimport keys from './keys.js';\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nexport default getMatchData;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nexport default getSymbols;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nexport default getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","/** Used to match wrap detail comments. */\nvar reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n/**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\nfunction getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n}\n\nexport default getWrapDetails;\n","import castPath from './_castPath.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isIndex from './_isIndex.js';\nimport isLength from './isLength.js';\nimport toKey from './_toKey.js';\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nexport default hasPath;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n","import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nexport default initCloneObject;\n","/** Used to match wrap detail comments. */\nvar reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/;\n\n/**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\nfunction insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n}\n\nexport default insertWrapDetails;\n","import Symbol from './_Symbol.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nexport default isFlattenable;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","import eq from './eq.js';\nimport isArrayLike from './isArrayLike.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nexport default isIterateeCall;\n","import isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nexport default isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n","import LazyWrapper from './_LazyWrapper.js';\nimport getData from './_getData.js';\nimport getFuncName from './_getFuncName.js';\nimport lodash from './wrapperLodash.js';\n\n/**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\nfunction isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n}\n\nexport default isLaziable;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n","import isObject from './isObject.js';\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nexport default isStrictComparable;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nexport default mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nexport default matchesStrictComparable;\n","import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nexport default memoizeCapped;\n","import composeArgs from './_composeArgs.js';\nimport composeArgsRight from './_composeArgsRight.js';\nimport replaceHolders from './_replaceHolders.js';\n\n/** Used as the internal argument placeholder. */\nvar PLACEHOLDER = '__lodash_placeholder__';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\nfunction mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n}\n\nexport default mergeData;\n","import WeakMap from './_WeakMap.js';\n\n/** Used to store function metadata. */\nvar metaMap = WeakMap && new WeakMap;\n\nexport default metaMap;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default nativeKeysIn;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","import apply from './_apply.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nexport default overRest;\n","import baseGet from './_baseGet.js';\nimport baseSlice from './_baseSlice.js';\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nexport default parent;\n","/** Used to lookup unminified function names. */\nvar realNames = {};\n\nexport default realNames;\n","import copyArray from './_copyArray.js';\nimport isIndex from './_isIndex.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\nfunction reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n}\n\nexport default reorder;\n","/** Used as the internal argument placeholder. */\nvar PLACEHOLDER = '__lodash_placeholder__';\n\n/**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\nfunction replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n}\n\nexport default replaceHolders;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nexport default safeGet;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","import baseSetData from './_baseSetData.js';\nimport shortOut from './_shortOut.js';\n\n/**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\nvar setData = shortOut(baseSetData);\n\nexport default setData;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n","import baseSetToString from './_baseSetToString.js';\nimport shortOut from './_shortOut.js';\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nexport default setToString;\n","import getWrapDetails from './_getWrapDetails.js';\nimport insertWrapDetails from './_insertWrapDetails.js';\nimport setToString from './_setToString.js';\nimport updateWrapDetails from './_updateWrapDetails.js';\n\n/**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\nfunction setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n}\n\nexport default setWrapToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nexport default shortOut;\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nexport default stackSet;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nexport default strictIndexOf;\n","import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nexport default stringToPath;\n","import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nexport default trimmedEndIndex;\n","import arrayEach from './_arrayEach.js';\nimport arrayIncludes from './_arrayIncludes.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n/** Used to associate wrap methods with their bit flags. */\nvar wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n];\n\n/**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\nfunction updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n}\n\nexport default updateWrapDetails;\n","import LazyWrapper from './_LazyWrapper.js';\nimport LodashWrapper from './_LodashWrapper.js';\nimport copyArray from './_copyArray.js';\n\n/**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\nfunction wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n}\n\nexport default wrapperClone;\n","import arrayPush from './_arrayPush.js';\nimport baseFlatten from './_baseFlatten.js';\nimport copyArray from './_copyArray.js';\nimport isArray from './isArray.js';\n\n/**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\nfunction concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n}\n\nexport default concat;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nexport default constant;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import arrayFilter from './_arrayFilter.js';\nimport baseFilter from './_baseFilter.js';\nimport baseIteratee from './_baseIteratee.js';\nimport isArray from './isArray.js';\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate, 3));\n}\n\nexport default filter;\n","import createFind from './_createFind.js';\nimport findIndex from './findIndex.js';\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nexport default find;\n","import baseFindIndex from './_baseFindIndex.js';\nimport baseIteratee from './_baseIteratee.js';\nimport toInteger from './toInteger.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nexport default findIndex;\n","import baseFlatten from './_baseFlatten.js';\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nexport default flatten;\n","import createFlow from './_createFlow.js';\n\n/**\n * Creates a function that returns the result of invoking the given functions\n * with the `this` binding of the created function, where each successive\n * invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flowRight\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flow([_.add, square]);\n * addSquare(1, 2);\n * // => 9\n */\nvar flow = createFlow();\n\nexport default flow;\n","import arrayEach from './_arrayEach.js';\nimport baseEach from './_baseEach.js';\nimport castFunction from './_castFunction.js';\nimport isArray from './isArray.js';\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, castFunction(iteratee));\n}\n\nexport default forEach;\n","import baseGet from './_baseGet.js';\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nexport default get;\n","import baseHasIn from './_baseHasIn.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nexport default hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nexport default identity;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","import isArrayLike from './isArrayLike.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nexport default isArrayLikeObject;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","import baseIsEqual from './_baseIsEqual.js';\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nexport default isEqual;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nexport default last;\n","import arrayMap from './_arrayMap.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseMap from './_baseMap.js';\nimport isArray from './isArray.js';\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nexport default map;\n","import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n","import baseMerge from './_baseMerge.js';\nimport createAssigner from './_createAssigner.js';\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nexport default merge;\n","import baseExtremum from './_baseExtremum.js';\nimport baseLt from './_baseLt.js';\nimport identity from './identity.js';\n\n/**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\nfunction min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n}\n\nexport default min;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nexport default noop;\n","import baseRest from './_baseRest.js';\nimport createWrap from './_createWrap.js';\nimport getHolder from './_getHolder.js';\nimport replaceHolders from './_replaceHolders.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_PARTIAL_FLAG = 32;\n\n/**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\nvar partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n});\n\n// Assign default placeholders.\npartial.placeholder = {};\n\nexport default partial;\n","import baseProperty from './_baseProperty.js';\nimport basePropertyDeep from './_basePropertyDeep.js';\nimport isKey from './_isKey.js';\nimport toKey from './_toKey.js';\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nexport default property;\n","import arrayReduce from './_arrayReduce.js';\nimport baseEach from './_baseEach.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseReduce from './_baseReduce.js';\nimport isArray from './isArray.js';\n\n/**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\nfunction reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n}\n\nexport default reduce;\n","import baseIteratee from './_baseIteratee.js';\nimport basePullAt from './_basePullAt.js';\n\n/**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\nfunction remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = baseIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n}\n\nexport default remove;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n","import toNumber from './toNumber.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nexport default toFinite;\n","import toFinite from './toFinite.js';\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nexport default toInteger;\n","import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nexport default toPlainObject;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import LazyWrapper from './_LazyWrapper.js';\nimport LodashWrapper from './_LodashWrapper.js';\nimport baseLodash from './_baseLodash.js';\nimport isArray from './isArray.js';\nimport isObjectLike from './isObjectLike.js';\nimport wrapperClone from './_wrapperClone.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\nfunction lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n}\n\n// Ensure wrappers are instances of `baseLodash`.\nlodash.prototype = baseLodash.prototype;\nlodash.prototype.constructor = lodash;\n\nexport default lodash;\n","import Duration from \"./duration.js\";\nimport Interval from \"./interval.js\";\nimport Settings from \"./settings.js\";\nimport Info from \"./info.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport FixedOffsetZone from \"./zones/fixedOffsetZone.js\";\nimport Locale from \"./impl/locale.js\";\nimport {\n isUndefined,\n maybeArray,\n isDate,\n isNumber,\n bestBy,\n daysInMonth,\n daysInYear,\n isLeapYear,\n weeksInWeekYear,\n normalizeObject,\n roundTo,\n objToLocalTS,\n padStart,\n} from \"./impl/util.js\";\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\nimport diff from \"./impl/diff.js\";\nimport { parseRFC2822Date, parseISODate, parseHTTPDate, parseSQL } from \"./impl/regexParser.js\";\nimport { parseFromTokens, explainFromTokens } from \"./impl/tokenParser.js\";\nimport {\n gregorianToWeek,\n weekToGregorian,\n gregorianToOrdinal,\n ordinalToGregorian,\n hasInvalidGregorianData,\n hasInvalidWeekData,\n hasInvalidOrdinalData,\n hasInvalidTimeData,\n} from \"./impl/conversions.js\";\nimport * as Formats from \"./impl/formats.js\";\nimport {\n InvalidArgumentError,\n ConflictingSpecificationError,\n InvalidUnitError,\n InvalidDateTimeError,\n} from \"./errors.js\";\nimport Invalid from \"./impl/invalid.js\";\n\nconst INVALID = \"Invalid DateTime\";\nconst MAX_DATE = 8.64e15;\n\nfunction unsupportedZone(zone) {\n return new Invalid(\"unsupported zone\", `the zone \"${zone.name}\" is not supported`);\n}\n\n// we cache week data on the DT object and this intermediates the cache\nfunction possiblyCachedWeekData(dt) {\n if (dt.weekData === null) {\n dt.weekData = gregorianToWeek(dt.c);\n }\n return dt.weekData;\n}\n\n// clone really means, \"make a new object with these modifications\". all \"setters\" really use this\n// to create a new object while only changing some of the properties\nfunction clone(inst, alts) {\n const current = {\n ts: inst.ts,\n zone: inst.zone,\n c: inst.c,\n o: inst.o,\n loc: inst.loc,\n invalid: inst.invalid,\n };\n return new DateTime({ ...current, ...alts, old: current });\n}\n\n// find the right offset a given local time. The o input is our guess, which determines which\n// offset we'll pick in ambiguous cases (e.g. there are two 3 AMs b/c Fallback DST)\nfunction fixOffset(localTS, o, tz) {\n // Our UTC time is just a guess because our offset is just a guess\n let utcGuess = localTS - o * 60 * 1000;\n\n // Test whether the zone matches the offset for this ts\n const o2 = tz.offset(utcGuess);\n\n // If so, offset didn't change and we're done\n if (o === o2) {\n return [utcGuess, o];\n }\n\n // If not, change the ts by the difference in the offset\n utcGuess -= (o2 - o) * 60 * 1000;\n\n // If that gives us the local time we want, we're done\n const o3 = tz.offset(utcGuess);\n if (o2 === o3) {\n return [utcGuess, o2];\n }\n\n // If it's different, we're in a hole time. The offset has changed, but the we don't adjust the time\n return [localTS - Math.min(o2, o3) * 60 * 1000, Math.max(o2, o3)];\n}\n\n// convert an epoch timestamp into a calendar object with the given offset\nfunction tsToObj(ts, offset) {\n ts += offset * 60 * 1000;\n\n const d = new Date(ts);\n\n return {\n year: d.getUTCFullYear(),\n month: d.getUTCMonth() + 1,\n day: d.getUTCDate(),\n hour: d.getUTCHours(),\n minute: d.getUTCMinutes(),\n second: d.getUTCSeconds(),\n millisecond: d.getUTCMilliseconds(),\n };\n}\n\n// convert a calendar object to a epoch timestamp\nfunction objToTS(obj, offset, zone) {\n return fixOffset(objToLocalTS(obj), offset, zone);\n}\n\n// create a new DT instance by adding a duration, adjusting for DSTs\nfunction adjustTime(inst, dur) {\n const oPre = inst.o,\n year = inst.c.year + Math.trunc(dur.years),\n month = inst.c.month + Math.trunc(dur.months) + Math.trunc(dur.quarters) * 3,\n c = {\n ...inst.c,\n year,\n month,\n day:\n Math.min(inst.c.day, daysInMonth(year, month)) +\n Math.trunc(dur.days) +\n Math.trunc(dur.weeks) * 7,\n },\n millisToAdd = Duration.fromObject({\n years: dur.years - Math.trunc(dur.years),\n quarters: dur.quarters - Math.trunc(dur.quarters),\n months: dur.months - Math.trunc(dur.months),\n weeks: dur.weeks - Math.trunc(dur.weeks),\n days: dur.days - Math.trunc(dur.days),\n hours: dur.hours,\n minutes: dur.minutes,\n seconds: dur.seconds,\n milliseconds: dur.milliseconds,\n }).as(\"milliseconds\"),\n localTS = objToLocalTS(c);\n\n let [ts, o] = fixOffset(localTS, oPre, inst.zone);\n\n if (millisToAdd !== 0) {\n ts += millisToAdd;\n // that could have changed the offset by going over a DST, but we want to keep the ts the same\n o = inst.zone.offset(ts);\n }\n\n return { ts, o };\n}\n\n// helper useful in turning the results of parsing into real dates\n// by handling the zone options\nfunction parseDataToDateTime(parsed, parsedZone, opts, format, text, specificOffset) {\n const { setZone, zone } = opts;\n if (parsed && Object.keys(parsed).length !== 0) {\n const interpretationZone = parsedZone || zone,\n inst = DateTime.fromObject(parsed, {\n ...opts,\n zone: interpretationZone,\n specificOffset,\n });\n return setZone ? inst : inst.setZone(zone);\n } else {\n return DateTime.invalid(\n new Invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ${format}`)\n );\n }\n}\n\n// if you want to output a technical format (e.g. RFC 2822), this helper\n// helps handle the details\nfunction toTechFormat(dt, format, allowZ = true) {\n return dt.isValid\n ? Formatter.create(Locale.create(\"en-US\"), {\n allowZ,\n forceSimple: true,\n }).formatDateTimeFromString(dt, format)\n : null;\n}\n\nfunction toISODate(o, extended) {\n const longFormat = o.c.year > 9999 || o.c.year < 0;\n let c = \"\";\n if (longFormat && o.c.year >= 0) c += \"+\";\n c += padStart(o.c.year, longFormat ? 6 : 4);\n\n if (extended) {\n c += \"-\";\n c += padStart(o.c.month);\n c += \"-\";\n c += padStart(o.c.day);\n } else {\n c += padStart(o.c.month);\n c += padStart(o.c.day);\n }\n return c;\n}\n\nfunction toISOTime(\n o,\n extended,\n suppressSeconds,\n suppressMilliseconds,\n includeOffset,\n extendedZone\n) {\n let c = padStart(o.c.hour);\n if (extended) {\n c += \":\";\n c += padStart(o.c.minute);\n if (o.c.second !== 0 || !suppressSeconds) {\n c += \":\";\n }\n } else {\n c += padStart(o.c.minute);\n }\n\n if (o.c.second !== 0 || !suppressSeconds) {\n c += padStart(o.c.second);\n\n if (o.c.millisecond !== 0 || !suppressMilliseconds) {\n c += \".\";\n c += padStart(o.c.millisecond, 3);\n }\n }\n\n if (includeOffset) {\n if (o.isOffsetFixed && o.offset === 0 && !extendedZone) {\n c += \"Z\";\n } else if (o.o < 0) {\n c += \"-\";\n c += padStart(Math.trunc(-o.o / 60));\n c += \":\";\n c += padStart(Math.trunc(-o.o % 60));\n } else {\n c += \"+\";\n c += padStart(Math.trunc(o.o / 60));\n c += \":\";\n c += padStart(Math.trunc(o.o % 60));\n }\n }\n\n if (extendedZone) {\n c += \"[\" + o.zone.ianaName + \"]\";\n }\n return c;\n}\n\n// defaults for unspecified units in the supported calendars\nconst defaultUnitValues = {\n month: 1,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n },\n defaultWeekUnitValues = {\n weekNumber: 1,\n weekday: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n },\n defaultOrdinalUnitValues = {\n ordinal: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n };\n\n// Units in the supported calendars, sorted by bigness\nconst orderedUnits = [\"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\", \"millisecond\"],\n orderedWeekUnits = [\n \"weekYear\",\n \"weekNumber\",\n \"weekday\",\n \"hour\",\n \"minute\",\n \"second\",\n \"millisecond\",\n ],\n orderedOrdinalUnits = [\"year\", \"ordinal\", \"hour\", \"minute\", \"second\", \"millisecond\"];\n\n// standardize case and plurality in units\nfunction normalizeUnit(unit) {\n const normalized = {\n year: \"year\",\n years: \"year\",\n month: \"month\",\n months: \"month\",\n day: \"day\",\n days: \"day\",\n hour: \"hour\",\n hours: \"hour\",\n minute: \"minute\",\n minutes: \"minute\",\n quarter: \"quarter\",\n quarters: \"quarter\",\n second: \"second\",\n seconds: \"second\",\n millisecond: \"millisecond\",\n milliseconds: \"millisecond\",\n weekday: \"weekday\",\n weekdays: \"weekday\",\n weeknumber: \"weekNumber\",\n weeksnumber: \"weekNumber\",\n weeknumbers: \"weekNumber\",\n weekyear: \"weekYear\",\n weekyears: \"weekYear\",\n ordinal: \"ordinal\",\n }[unit.toLowerCase()];\n\n if (!normalized) throw new InvalidUnitError(unit);\n\n return normalized;\n}\n\n// this is a dumbed down version of fromObject() that runs about 60% faster\n// but doesn't do any validation, makes a bunch of assumptions about what units\n// are present, and so on.\nfunction quickDT(obj, opts) {\n const zone = normalizeZone(opts.zone, Settings.defaultZone),\n loc = Locale.fromObject(opts),\n tsNow = Settings.now();\n\n let ts, o;\n\n // assume we have the higher-order units\n if (!isUndefined(obj.year)) {\n for (const u of orderedUnits) {\n if (isUndefined(obj[u])) {\n obj[u] = defaultUnitValues[u];\n }\n }\n\n const invalid = hasInvalidGregorianData(obj) || hasInvalidTimeData(obj);\n if (invalid) {\n return DateTime.invalid(invalid);\n }\n\n const offsetProvis = zone.offset(tsNow);\n [ts, o] = objToTS(obj, offsetProvis, zone);\n } else {\n ts = tsNow;\n }\n\n return new DateTime({ ts, zone, loc, o });\n}\n\nfunction diffRelative(start, end, opts) {\n const round = isUndefined(opts.round) ? true : opts.round,\n format = (c, unit) => {\n c = roundTo(c, round || opts.calendary ? 0 : 2, true);\n const formatter = end.loc.clone(opts).relFormatter(opts);\n return formatter.format(c, unit);\n },\n differ = (unit) => {\n if (opts.calendary) {\n if (!end.hasSame(start, unit)) {\n return end.startOf(unit).diff(start.startOf(unit), unit).get(unit);\n } else return 0;\n } else {\n return end.diff(start, unit).get(unit);\n }\n };\n\n if (opts.unit) {\n return format(differ(opts.unit), opts.unit);\n }\n\n for (const unit of opts.units) {\n const count = differ(unit);\n if (Math.abs(count) >= 1) {\n return format(count, unit);\n }\n }\n return format(start > end ? -0 : 0, opts.units[opts.units.length - 1]);\n}\n\nfunction lastOpts(argList) {\n let opts = {},\n args;\n if (argList.length > 0 && typeof argList[argList.length - 1] === \"object\") {\n opts = argList[argList.length - 1];\n args = Array.from(argList).slice(0, argList.length - 1);\n } else {\n args = Array.from(argList);\n }\n return [opts, args];\n}\n\n/**\n * A DateTime is an immutable data structure representing a specific date and time and accompanying methods. It contains class and instance methods for creating, parsing, interrogating, transforming, and formatting them.\n *\n * A DateTime comprises of:\n * * A timestamp. Each DateTime instance refers to a specific millisecond of the Unix epoch.\n * * A time zone. Each instance is considered in the context of a specific zone (by default the local system's zone).\n * * Configuration properties that effect how output strings are formatted, such as `locale`, `numberingSystem`, and `outputCalendar`.\n *\n * Here is a brief overview of the most commonly used functionality it provides:\n *\n * * **Creation**: To create a DateTime from its components, use one of its factory class methods: {@link DateTime#local}, {@link DateTime#utc}, and (most flexibly) {@link DateTime#fromObject}. To create one from a standard string format, use {@link DateTime#fromISO}, {@link DateTime#fromHTTP}, and {@link DateTime#fromRFC2822}. To create one from a custom string format, use {@link DateTime#fromFormat}. To create one from a native JS date, use {@link DateTime#fromJSDate}.\n * * **Gregorian calendar and time**: To examine the Gregorian properties of a DateTime individually (i.e as opposed to collectively through {@link DateTime#toObject}), use the {@link DateTime#year}, {@link DateTime#month},\n * {@link DateTime#day}, {@link DateTime#hour}, {@link DateTime#minute}, {@link DateTime#second}, {@link DateTime#millisecond} accessors.\n * * **Week calendar**: For ISO week calendar attributes, see the {@link DateTime#weekYear}, {@link DateTime#weekNumber}, and {@link DateTime#weekday} accessors.\n * * **Configuration** See the {@link DateTime#locale} and {@link DateTime#numberingSystem} accessors.\n * * **Transformation**: To transform the DateTime into other DateTimes, use {@link DateTime#set}, {@link DateTime#reconfigure}, {@link DateTime#setZone}, {@link DateTime#setLocale}, {@link DateTime.plus}, {@link DateTime#minus}, {@link DateTime#endOf}, {@link DateTime#startOf}, {@link DateTime#toUTC}, and {@link DateTime#toLocal}.\n * * **Output**: To convert the DateTime to other representations, use the {@link DateTime#toRelative}, {@link DateTime#toRelativeCalendar}, {@link DateTime#toJSON}, {@link DateTime#toISO}, {@link DateTime#toHTTP}, {@link DateTime#toObject}, {@link DateTime#toRFC2822}, {@link DateTime#toString}, {@link DateTime#toLocaleString}, {@link DateTime#toFormat}, {@link DateTime#toMillis} and {@link DateTime#toJSDate}.\n *\n * There's plenty others documented below. In addition, for more information on subtler topics like internationalization, time zones, alternative calendars, validity, and so on, see the external documentation.\n */\nexport default class DateTime {\n /**\n * @access private\n */\n constructor(config) {\n const zone = config.zone || Settings.defaultZone;\n\n let invalid =\n config.invalid ||\n (Number.isNaN(config.ts) ? new Invalid(\"invalid input\") : null) ||\n (!zone.isValid ? unsupportedZone(zone) : null);\n /**\n * @access private\n */\n this.ts = isUndefined(config.ts) ? Settings.now() : config.ts;\n\n let c = null,\n o = null;\n if (!invalid) {\n const unchanged = config.old && config.old.ts === this.ts && config.old.zone.equals(zone);\n\n if (unchanged) {\n [c, o] = [config.old.c, config.old.o];\n } else {\n const ot = zone.offset(this.ts);\n c = tsToObj(this.ts, ot);\n invalid = Number.isNaN(c.year) ? new Invalid(\"invalid input\") : null;\n c = invalid ? null : c;\n o = invalid ? null : ot;\n }\n }\n\n /**\n * @access private\n */\n this._zone = zone;\n /**\n * @access private\n */\n this.loc = config.loc || Locale.create();\n /**\n * @access private\n */\n this.invalid = invalid;\n /**\n * @access private\n */\n this.weekData = null;\n /**\n * @access private\n */\n this.c = c;\n /**\n * @access private\n */\n this.o = o;\n /**\n * @access private\n */\n this.isLuxonDateTime = true;\n }\n\n // CONSTRUCT\n\n /**\n * Create a DateTime for the current instant, in the system's time zone.\n *\n * Use Settings to override these default values if needed.\n * @example DateTime.now().toISO() //~> now in the ISO format\n * @return {DateTime}\n */\n static now() {\n return new DateTime({});\n }\n\n /**\n * Create a local DateTime\n * @param {number} [year] - The calendar year. If omitted (as in, call `local()` with no arguments), the current time will be used\n * @param {number} [month=1] - The month, 1-indexed\n * @param {number} [day=1] - The day of the month, 1-indexed\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\n * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n * @example DateTime.local() //~> now\n * @example DateTime.local({ zone: \"America/New_York\" }) //~> now, in US east coast time\n * @example DateTime.local(2017) //~> 2017-01-01T00:00:00\n * @example DateTime.local(2017, 3) //~> 2017-03-01T00:00:00\n * @example DateTime.local(2017, 3, 12, { locale: \"fr\" }) //~> 2017-03-12T00:00:00, with a French locale\n * @example DateTime.local(2017, 3, 12, 5) //~> 2017-03-12T05:00:00\n * @example DateTime.local(2017, 3, 12, 5, { zone: \"utc\" }) //~> 2017-03-12T05:00:00, in UTC\n * @example DateTime.local(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00\n * @example DateTime.local(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10\n * @example DateTime.local(2017, 3, 12, 5, 45, 10, 765) //~> 2017-03-12T05:45:10.765\n * @return {DateTime}\n */\n static local() {\n const [opts, args] = lastOpts(arguments),\n [year, month, day, hour, minute, second, millisecond] = args;\n return quickDT({ year, month, day, hour, minute, second, millisecond }, opts);\n }\n\n /**\n * Create a DateTime in UTC\n * @param {number} [year] - The calendar year. If omitted (as in, call `utc()` with no arguments), the current time will be used\n * @param {number} [month=1] - The month, 1-indexed\n * @param {number} [day=1] - The day of the month\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\n * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n * @param {Object} options - configuration options for the DateTime\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} [options.outputCalendar] - the output calendar to set on the resulting DateTime instance\n * @param {string} [options.numberingSystem] - the numbering system to set on the resulting DateTime instance\n * @example DateTime.utc() //~> now\n * @example DateTime.utc(2017) //~> 2017-01-01T00:00:00Z\n * @example DateTime.utc(2017, 3) //~> 2017-03-01T00:00:00Z\n * @example DateTime.utc(2017, 3, 12) //~> 2017-03-12T00:00:00Z\n * @example DateTime.utc(2017, 3, 12, 5) //~> 2017-03-12T05:00:00Z\n * @example DateTime.utc(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00Z\n * @example DateTime.utc(2017, 3, 12, 5, 45, { locale: \"fr\" }) //~> 2017-03-12T05:45:00Z with a French locale\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10Z\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10, 765, { locale: \"fr\" }) //~> 2017-03-12T05:45:10.765Z with a French locale\n * @return {DateTime}\n */\n static utc() {\n const [opts, args] = lastOpts(arguments),\n [year, month, day, hour, minute, second, millisecond] = args;\n\n opts.zone = FixedOffsetZone.utcInstance;\n return quickDT({ year, month, day, hour, minute, second, millisecond }, opts);\n }\n\n /**\n * Create a DateTime from a JavaScript Date object. Uses the default zone.\n * @param {Date} date - a JavaScript Date object\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @return {DateTime}\n */\n static fromJSDate(date, options = {}) {\n const ts = isDate(date) ? date.valueOf() : NaN;\n if (Number.isNaN(ts)) {\n return DateTime.invalid(\"invalid input\");\n }\n\n const zoneToUse = normalizeZone(options.zone, Settings.defaultZone);\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n return new DateTime({\n ts: ts,\n zone: zoneToUse,\n loc: Locale.fromObject(options),\n });\n }\n\n /**\n * Create a DateTime from a number of milliseconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n * @param {number} milliseconds - a number of milliseconds since 1970 UTC\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromMillis(milliseconds, options = {}) {\n if (!isNumber(milliseconds)) {\n throw new InvalidArgumentError(\n `fromMillis requires a numerical input, but received a ${typeof milliseconds} with value ${milliseconds}`\n );\n } else if (milliseconds < -MAX_DATE || milliseconds > MAX_DATE) {\n // this isn't perfect because because we can still end up out of range because of additional shifting, but it's a start\n return DateTime.invalid(\"Timestamp out of range\");\n } else {\n return new DateTime({\n ts: milliseconds,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options),\n });\n }\n }\n\n /**\n * Create a DateTime from a number of seconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n * @param {number} seconds - a number of seconds since 1970 UTC\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromSeconds(seconds, options = {}) {\n if (!isNumber(seconds)) {\n throw new InvalidArgumentError(\"fromSeconds requires a numerical input\");\n } else {\n return new DateTime({\n ts: seconds * 1000,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options),\n });\n }\n }\n\n /**\n * Create a DateTime from a JavaScript object with keys like 'year' and 'hour' with reasonable defaults.\n * @param {Object} obj - the object to create the DateTime from\n * @param {number} obj.year - a year, such as 1987\n * @param {number} obj.month - a month, 1-12\n * @param {number} obj.day - a day of the month, 1-31, depending on the month\n * @param {number} obj.ordinal - day of the year, 1-365 or 366\n * @param {number} obj.weekYear - an ISO week year\n * @param {number} obj.weekNumber - an ISO week number, between 1 and 52 or 53, depending on the year\n * @param {number} obj.weekday - an ISO weekday, 1-7, where 1 is Monday and 7 is Sunday\n * @param {number} obj.hour - hour of the day, 0-23\n * @param {number} obj.minute - minute of the hour, 0-59\n * @param {number} obj.second - second of the minute, 0-59\n * @param {number} obj.millisecond - millisecond of the second, 0-999\n * @param {Object} opts - options for creating this DateTime\n * @param {string|Zone} [opts.zone='local'] - interpret the numbers in the context of a particular zone. Can take any value taken as the first argument to setZone()\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromObject({ year: 1982, month: 5, day: 25}).toISODate() //=> '1982-05-25'\n * @example DateTime.fromObject({ year: 1982 }).toISODate() //=> '1982-01-01'\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }) //~> today at 10:26:06\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'utc' }),\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'local' })\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'America/New_York' })\n * @example DateTime.fromObject({ weekYear: 2016, weekNumber: 2, weekday: 3 }).toISODate() //=> '2016-01-13'\n * @return {DateTime}\n */\n static fromObject(obj, opts = {}) {\n obj = obj || {};\n const zoneToUse = normalizeZone(opts.zone, Settings.defaultZone);\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n const tsNow = Settings.now(),\n offsetProvis = !isUndefined(opts.specificOffset)\n ? opts.specificOffset\n : zoneToUse.offset(tsNow),\n normalized = normalizeObject(obj, normalizeUnit),\n containsOrdinal = !isUndefined(normalized.ordinal),\n containsGregorYear = !isUndefined(normalized.year),\n containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\n containsGregor = containsGregorYear || containsGregorMD,\n definiteWeekDef = normalized.weekYear || normalized.weekNumber,\n loc = Locale.fromObject(opts);\n\n // cases:\n // just a weekday -> this week's instance of that weekday, no worries\n // (gregorian data or ordinal) + (weekYear or weekNumber) -> error\n // (gregorian month or day) + ordinal -> error\n // otherwise just use weeks or ordinals or gregorian, depending on what's specified\n\n if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n throw new ConflictingSpecificationError(\n \"Can't mix weekYear/weekNumber units with year/month/day or ordinals\"\n );\n }\n\n if (containsGregorMD && containsOrdinal) {\n throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n }\n\n const useWeekData = definiteWeekDef || (normalized.weekday && !containsGregor);\n\n // configure ourselves to deal with gregorian dates or week stuff\n let units,\n defaultValues,\n objNow = tsToObj(tsNow, offsetProvis);\n if (useWeekData) {\n units = orderedWeekUnits;\n defaultValues = defaultWeekUnitValues;\n objNow = gregorianToWeek(objNow);\n } else if (containsOrdinal) {\n units = orderedOrdinalUnits;\n defaultValues = defaultOrdinalUnitValues;\n objNow = gregorianToOrdinal(objNow);\n } else {\n units = orderedUnits;\n defaultValues = defaultUnitValues;\n }\n\n // set default values for missing stuff\n let foundFirst = false;\n for (const u of units) {\n const v = normalized[u];\n if (!isUndefined(v)) {\n foundFirst = true;\n } else if (foundFirst) {\n normalized[u] = defaultValues[u];\n } else {\n normalized[u] = objNow[u];\n }\n }\n\n // make sure the values we have are in range\n const higherOrderInvalid = useWeekData\n ? hasInvalidWeekData(normalized)\n : containsOrdinal\n ? hasInvalidOrdinalData(normalized)\n : hasInvalidGregorianData(normalized),\n invalid = higherOrderInvalid || hasInvalidTimeData(normalized);\n\n if (invalid) {\n return DateTime.invalid(invalid);\n }\n\n // compute the actual time\n const gregorian = useWeekData\n ? weekToGregorian(normalized)\n : containsOrdinal\n ? ordinalToGregorian(normalized)\n : normalized,\n [tsFinal, offsetFinal] = objToTS(gregorian, offsetProvis, zoneToUse),\n inst = new DateTime({\n ts: tsFinal,\n zone: zoneToUse,\n o: offsetFinal,\n loc,\n });\n\n // gregorian data + weekday serves only to validate\n if (normalized.weekday && containsGregor && obj.weekday !== inst.weekday) {\n return DateTime.invalid(\n \"mismatched weekday\",\n `you can't specify both a weekday of ${normalized.weekday} and a date of ${inst.toISO()}`\n );\n }\n\n return inst;\n }\n\n /**\n * Create a DateTime from an ISO 8601 string\n * @param {string} text - the ISO string\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the time to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} [opts.outputCalendar] - the output calendar to set on the resulting DateTime instance\n * @param {string} [opts.numberingSystem] - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromISO('2016-05-25T09:08:34.123')\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00')\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00', {setZone: true})\n * @example DateTime.fromISO('2016-05-25T09:08:34.123', {zone: 'utc'})\n * @example DateTime.fromISO('2016-W05-4')\n * @return {DateTime}\n */\n static fromISO(text, opts = {}) {\n const [vals, parsedZone] = parseISODate(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"ISO 8601\", text);\n }\n\n /**\n * Create a DateTime from an RFC 2822 string\n * @param {string} text - the RFC 2822 string\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since the offset is always specified in the string itself, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23:12 GMT')\n * @example DateTime.fromRFC2822('Fri, 25 Nov 2016 13:23:12 +0600')\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23 Z')\n * @return {DateTime}\n */\n static fromRFC2822(text, opts = {}) {\n const [vals, parsedZone] = parseRFC2822Date(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"RFC 2822\", text);\n }\n\n /**\n * Create a DateTime from an HTTP header date\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n * @param {string} text - the HTTP header date\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since HTTP dates are always in UTC, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n * @param {boolean} [opts.setZone=false] - override the zone with the fixed-offset zone specified in the string. For HTTP dates, this is always UTC, so this option is equivalent to setting the `zone` option to 'utc', but this option is included for consistency with similar methods.\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromHTTP('Sun, 06 Nov 1994 08:49:37 GMT')\n * @example DateTime.fromHTTP('Sunday, 06-Nov-94 08:49:37 GMT')\n * @example DateTime.fromHTTP('Sun Nov 6 08:49:37 1994')\n * @return {DateTime}\n */\n static fromHTTP(text, opts = {}) {\n const [vals, parsedZone] = parseHTTPDate(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"HTTP\", opts);\n }\n\n /**\n * Create a DateTime from an input string and format string.\n * Defaults to en-US if no locale has been specified, regardless of the system's locale. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/#/parsing?id=table-of-tokens).\n * @param {string} text - the string to parse\n * @param {string} fmt - the format the string is expected to be in (see the link below for the formats)\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromFormat(text, fmt, opts = {}) {\n if (isUndefined(text) || isUndefined(fmt)) {\n throw new InvalidArgumentError(\"fromFormat requires an input string and a format\");\n }\n\n const { locale = null, numberingSystem = null } = opts,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true,\n }),\n [vals, parsedZone, specificOffset, invalid] = parseFromTokens(localeToUse, text, fmt);\n if (invalid) {\n return DateTime.invalid(invalid);\n } else {\n return parseDataToDateTime(vals, parsedZone, opts, `format ${fmt}`, text, specificOffset);\n }\n }\n\n /**\n * @deprecated use fromFormat instead\n */\n static fromString(text, fmt, opts = {}) {\n return DateTime.fromFormat(text, fmt, opts);\n }\n\n /**\n * Create a DateTime from a SQL date, time, or datetime\n * Defaults to en-US if no locale has been specified, regardless of the system's locale\n * @param {string} text - the string to parse\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @example DateTime.fromSQL('2017-05-15')\n * @example DateTime.fromSQL('2017-05-15 09:12:34')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342+06:00')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles', { setZone: true })\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342', { zone: 'America/Los_Angeles' })\n * @example DateTime.fromSQL('09:12:34.342')\n * @return {DateTime}\n */\n static fromSQL(text, opts = {}) {\n const [vals, parsedZone] = parseSQL(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"SQL\", text);\n }\n\n /**\n * Create an invalid DateTime.\n * @param {string} reason - simple string of why this DateTime is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {DateTime}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the DateTime is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDateTimeError(invalid);\n } else {\n return new DateTime({ invalid });\n }\n }\n\n /**\n * Check if an object is an instance of DateTime. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isDateTime(o) {\n return (o && o.isLuxonDateTime) || false;\n }\n\n // INFO\n\n /**\n * Get the value of unit.\n * @param {string} unit - a unit such as 'minute' or 'day'\n * @example DateTime.local(2017, 7, 4).get('month'); //=> 7\n * @example DateTime.local(2017, 7, 4).get('day'); //=> 4\n * @return {number}\n */\n get(unit) {\n return this[unit];\n }\n\n /**\n * Returns whether the DateTime is valid. Invalid DateTimes occur when:\n * * The DateTime was created from invalid calendar information, such as the 13th month or February 30\n * * The DateTime was created by an operation on another invalid date\n * @type {boolean}\n */\n get isValid() {\n return this.invalid === null;\n }\n\n /**\n * Returns an error code if this DateTime is invalid, or null if the DateTime is valid\n * @type {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this DateTime became invalid, or null if the DateTime is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Get the locale of a DateTime, such 'en-GB'. The locale is used when formatting the DateTime\n *\n * @type {string}\n */\n get locale() {\n return this.isValid ? this.loc.locale : null;\n }\n\n /**\n * Get the numbering system of a DateTime, such 'beng'. The numbering system is used when formatting the DateTime\n *\n * @type {string}\n */\n get numberingSystem() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n\n /**\n * Get the output calendar of a DateTime, such 'islamic'. The output calendar is used when formatting the DateTime\n *\n * @type {string}\n */\n get outputCalendar() {\n return this.isValid ? this.loc.outputCalendar : null;\n }\n\n /**\n * Get the time zone associated with this DateTime.\n * @type {Zone}\n */\n get zone() {\n return this._zone;\n }\n\n /**\n * Get the name of the time zone.\n * @type {string}\n */\n get zoneName() {\n return this.isValid ? this.zone.name : null;\n }\n\n /**\n * Get the year\n * @example DateTime.local(2017, 5, 25).year //=> 2017\n * @type {number}\n */\n get year() {\n return this.isValid ? this.c.year : NaN;\n }\n\n /**\n * Get the quarter\n * @example DateTime.local(2017, 5, 25).quarter //=> 2\n * @type {number}\n */\n get quarter() {\n return this.isValid ? Math.ceil(this.c.month / 3) : NaN;\n }\n\n /**\n * Get the month (1-12).\n * @example DateTime.local(2017, 5, 25).month //=> 5\n * @type {number}\n */\n get month() {\n return this.isValid ? this.c.month : NaN;\n }\n\n /**\n * Get the day of the month (1-30ish).\n * @example DateTime.local(2017, 5, 25).day //=> 25\n * @type {number}\n */\n get day() {\n return this.isValid ? this.c.day : NaN;\n }\n\n /**\n * Get the hour of the day (0-23).\n * @example DateTime.local(2017, 5, 25, 9).hour //=> 9\n * @type {number}\n */\n get hour() {\n return this.isValid ? this.c.hour : NaN;\n }\n\n /**\n * Get the minute of the hour (0-59).\n * @example DateTime.local(2017, 5, 25, 9, 30).minute //=> 30\n * @type {number}\n */\n get minute() {\n return this.isValid ? this.c.minute : NaN;\n }\n\n /**\n * Get the second of the minute (0-59).\n * @example DateTime.local(2017, 5, 25, 9, 30, 52).second //=> 52\n * @type {number}\n */\n get second() {\n return this.isValid ? this.c.second : NaN;\n }\n\n /**\n * Get the millisecond of the second (0-999).\n * @example DateTime.local(2017, 5, 25, 9, 30, 52, 654).millisecond //=> 654\n * @type {number}\n */\n get millisecond() {\n return this.isValid ? this.c.millisecond : NaN;\n }\n\n /**\n * Get the week year\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2014, 12, 31).weekYear //=> 2015\n * @type {number}\n */\n get weekYear() {\n return this.isValid ? possiblyCachedWeekData(this).weekYear : NaN;\n }\n\n /**\n * Get the week number of the week year (1-52ish).\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2017, 5, 25).weekNumber //=> 21\n * @type {number}\n */\n get weekNumber() {\n return this.isValid ? possiblyCachedWeekData(this).weekNumber : NaN;\n }\n\n /**\n * Get the day of the week.\n * 1 is Monday and 7 is Sunday\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2014, 11, 31).weekday //=> 4\n * @type {number}\n */\n get weekday() {\n return this.isValid ? possiblyCachedWeekData(this).weekday : NaN;\n }\n\n /**\n * Get the ordinal (meaning the day of the year)\n * @example DateTime.local(2017, 5, 25).ordinal //=> 145\n * @type {number|DateTime}\n */\n get ordinal() {\n return this.isValid ? gregorianToOrdinal(this.c).ordinal : NaN;\n }\n\n /**\n * Get the human readable short month name, such as 'Oct'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).monthShort //=> Oct\n * @type {string}\n */\n get monthShort() {\n return this.isValid ? Info.months(\"short\", { locObj: this.loc })[this.month - 1] : null;\n }\n\n /**\n * Get the human readable long month name, such as 'October'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).monthLong //=> October\n * @type {string}\n */\n get monthLong() {\n return this.isValid ? Info.months(\"long\", { locObj: this.loc })[this.month - 1] : null;\n }\n\n /**\n * Get the human readable short weekday, such as 'Mon'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).weekdayShort //=> Mon\n * @type {string}\n */\n get weekdayShort() {\n return this.isValid ? Info.weekdays(\"short\", { locObj: this.loc })[this.weekday - 1] : null;\n }\n\n /**\n * Get the human readable long weekday, such as 'Monday'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).weekdayLong //=> Monday\n * @type {string}\n */\n get weekdayLong() {\n return this.isValid ? Info.weekdays(\"long\", { locObj: this.loc })[this.weekday - 1] : null;\n }\n\n /**\n * Get the UTC offset of this DateTime in minutes\n * @example DateTime.now().offset //=> -240\n * @example DateTime.utc().offset //=> 0\n * @type {number}\n */\n get offset() {\n return this.isValid ? +this.o : NaN;\n }\n\n /**\n * Get the short human name for the zone's current offset, for example \"EST\" or \"EDT\".\n * Defaults to the system's locale if no locale has been specified\n * @type {string}\n */\n get offsetNameShort() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"short\",\n locale: this.locale,\n });\n } else {\n return null;\n }\n }\n\n /**\n * Get the long human name for the zone's current offset, for example \"Eastern Standard Time\" or \"Eastern Daylight Time\".\n * Defaults to the system's locale if no locale has been specified\n * @type {string}\n */\n get offsetNameLong() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"long\",\n locale: this.locale,\n });\n } else {\n return null;\n }\n }\n\n /**\n * Get whether this zone's offset ever changes, as in a DST.\n * @type {boolean}\n */\n get isOffsetFixed() {\n return this.isValid ? this.zone.isUniversal : null;\n }\n\n /**\n * Get whether the DateTime is in a DST.\n * @type {boolean}\n */\n get isInDST() {\n if (this.isOffsetFixed) {\n return false;\n } else {\n return (\n this.offset > this.set({ month: 1, day: 1 }).offset ||\n this.offset > this.set({ month: 5 }).offset\n );\n }\n }\n\n /**\n * Returns true if this DateTime is in a leap year, false otherwise\n * @example DateTime.local(2016).isInLeapYear //=> true\n * @example DateTime.local(2013).isInLeapYear //=> false\n * @type {boolean}\n */\n get isInLeapYear() {\n return isLeapYear(this.year);\n }\n\n /**\n * Returns the number of days in this DateTime's month\n * @example DateTime.local(2016, 2).daysInMonth //=> 29\n * @example DateTime.local(2016, 3).daysInMonth //=> 31\n * @type {number}\n */\n get daysInMonth() {\n return daysInMonth(this.year, this.month);\n }\n\n /**\n * Returns the number of days in this DateTime's year\n * @example DateTime.local(2016).daysInYear //=> 366\n * @example DateTime.local(2013).daysInYear //=> 365\n * @type {number}\n */\n get daysInYear() {\n return this.isValid ? daysInYear(this.year) : NaN;\n }\n\n /**\n * Returns the number of weeks in this DateTime's year\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2004).weeksInWeekYear //=> 53\n * @example DateTime.local(2013).weeksInWeekYear //=> 52\n * @type {number}\n */\n get weeksInWeekYear() {\n return this.isValid ? weeksInWeekYear(this.weekYear) : NaN;\n }\n\n /**\n * Returns the resolved Intl options for this DateTime.\n * This is useful in understanding the behavior of formatting methods\n * @param {Object} opts - the same options as toLocaleString\n * @return {Object}\n */\n resolvedLocaleOptions(opts = {}) {\n const { locale, numberingSystem, calendar } = Formatter.create(\n this.loc.clone(opts),\n opts\n ).resolvedOptions(this);\n return { locale, numberingSystem, outputCalendar: calendar };\n }\n\n // TRANSFORM\n\n /**\n * \"Set\" the DateTime's zone to UTC. Returns a newly-constructed DateTime.\n *\n * Equivalent to {@link DateTime#setZone}('utc')\n * @param {number} [offset=0] - optionally, an offset from UTC in minutes\n * @param {Object} [opts={}] - options to pass to `setZone()`\n * @return {DateTime}\n */\n toUTC(offset = 0, opts = {}) {\n return this.setZone(FixedOffsetZone.instance(offset), opts);\n }\n\n /**\n * \"Set\" the DateTime's zone to the host's local zone. Returns a newly-constructed DateTime.\n *\n * Equivalent to `setZone('local')`\n * @return {DateTime}\n */\n toLocal() {\n return this.setZone(Settings.defaultZone);\n }\n\n /**\n * \"Set\" the DateTime's zone to specified zone. Returns a newly-constructed DateTime.\n *\n * By default, the setter keeps the underlying time the same (as in, the same timestamp), but the new instance will report different local times and consider DSTs when making computations, as with {@link DateTime#plus}. You may wish to use {@link DateTime#toLocal} and {@link DateTime#toUTC} which provide simple convenience wrappers for commonly used zones.\n * @param {string|Zone} [zone='local'] - a zone identifier. As a string, that can be any IANA zone supported by the host environment, or a fixed-offset name of the form 'UTC+3', or the strings 'local' or 'utc'. You may also supply an instance of a {@link DateTime#Zone} class.\n * @param {Object} opts - options\n * @param {boolean} [opts.keepLocalTime=false] - If true, adjust the underlying time so that the local time stays the same, but in the target zone. You should rarely need this.\n * @return {DateTime}\n */\n setZone(zone, { keepLocalTime = false, keepCalendarTime = false } = {}) {\n zone = normalizeZone(zone, Settings.defaultZone);\n if (zone.equals(this.zone)) {\n return this;\n } else if (!zone.isValid) {\n return DateTime.invalid(unsupportedZone(zone));\n } else {\n let newTS = this.ts;\n if (keepLocalTime || keepCalendarTime) {\n const offsetGuess = zone.offset(this.ts);\n const asObj = this.toObject();\n [newTS] = objToTS(asObj, offsetGuess, zone);\n }\n return clone(this, { ts: newTS, zone });\n }\n }\n\n /**\n * \"Set\" the locale, numberingSystem, or outputCalendar. Returns a newly-constructed DateTime.\n * @param {Object} properties - the properties to set\n * @example DateTime.local(2017, 5, 25).reconfigure({ locale: 'en-GB' })\n * @return {DateTime}\n */\n reconfigure({ locale, numberingSystem, outputCalendar } = {}) {\n const loc = this.loc.clone({ locale, numberingSystem, outputCalendar });\n return clone(this, { loc });\n }\n\n /**\n * \"Set\" the locale. Returns a newly-constructed DateTime.\n * Just a convenient alias for reconfigure({ locale })\n * @example DateTime.local(2017, 5, 25).setLocale('en-GB')\n * @return {DateTime}\n */\n setLocale(locale) {\n return this.reconfigure({ locale });\n }\n\n /**\n * \"Set\" the values of specified units. Returns a newly-constructed DateTime.\n * You can only set units with this method; for \"setting\" metadata, see {@link DateTime#reconfigure} and {@link DateTime#setZone}.\n * @param {Object} values - a mapping of units to numbers\n * @example dt.set({ year: 2017 })\n * @example dt.set({ hour: 8, minute: 30 })\n * @example dt.set({ weekday: 5 })\n * @example dt.set({ year: 2005, ordinal: 234 })\n * @return {DateTime}\n */\n set(values) {\n if (!this.isValid) return this;\n\n const normalized = normalizeObject(values, normalizeUnit),\n settingWeekStuff =\n !isUndefined(normalized.weekYear) ||\n !isUndefined(normalized.weekNumber) ||\n !isUndefined(normalized.weekday),\n containsOrdinal = !isUndefined(normalized.ordinal),\n containsGregorYear = !isUndefined(normalized.year),\n containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\n containsGregor = containsGregorYear || containsGregorMD,\n definiteWeekDef = normalized.weekYear || normalized.weekNumber;\n\n if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n throw new ConflictingSpecificationError(\n \"Can't mix weekYear/weekNumber units with year/month/day or ordinals\"\n );\n }\n\n if (containsGregorMD && containsOrdinal) {\n throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n }\n\n let mixed;\n if (settingWeekStuff) {\n mixed = weekToGregorian({ ...gregorianToWeek(this.c), ...normalized });\n } else if (!isUndefined(normalized.ordinal)) {\n mixed = ordinalToGregorian({ ...gregorianToOrdinal(this.c), ...normalized });\n } else {\n mixed = { ...this.toObject(), ...normalized };\n\n // if we didn't set the day but we ended up on an overflow date,\n // use the last day of the right month\n if (isUndefined(normalized.day)) {\n mixed.day = Math.min(daysInMonth(mixed.year, mixed.month), mixed.day);\n }\n }\n\n const [ts, o] = objToTS(mixed, this.o, this.zone);\n return clone(this, { ts, o });\n }\n\n /**\n * Add a period of time to this DateTime and return the resulting DateTime\n *\n * Adding hours, minutes, seconds, or milliseconds increases the timestamp by the right number of milliseconds. Adding days, months, or years shifts the calendar, accounting for DSTs and leap years along the way. Thus, `dt.plus({ hours: 24 })` may result in a different time than `dt.plus({ days: 1 })` if there's a DST shift in between.\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @example DateTime.now().plus(123) //~> in 123 milliseconds\n * @example DateTime.now().plus({ minutes: 15 }) //~> in 15 minutes\n * @example DateTime.now().plus({ days: 1 }) //~> this time tomorrow\n * @example DateTime.now().plus({ days: -1 }) //~> this time yesterday\n * @example DateTime.now().plus({ hours: 3, minutes: 13 }) //~> in 3 hr, 13 min\n * @example DateTime.now().plus(Duration.fromObject({ hours: 3, minutes: 13 })) //~> in 3 hr, 13 min\n * @return {DateTime}\n */\n plus(duration) {\n if (!this.isValid) return this;\n const dur = Duration.fromDurationLike(duration);\n return clone(this, adjustTime(this, dur));\n }\n\n /**\n * Subtract a period of time to this DateTime and return the resulting DateTime\n * See {@link DateTime#plus}\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n @return {DateTime}\n */\n minus(duration) {\n if (!this.isValid) return this;\n const dur = Duration.fromDurationLike(duration).negate();\n return clone(this, adjustTime(this, dur));\n }\n\n /**\n * \"Set\" this DateTime to the beginning of a unit of time.\n * @param {string} unit - The unit to go to the beginning of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n * @example DateTime.local(2014, 3, 3).startOf('month').toISODate(); //=> '2014-03-01'\n * @example DateTime.local(2014, 3, 3).startOf('year').toISODate(); //=> '2014-01-01'\n * @example DateTime.local(2014, 3, 3).startOf('week').toISODate(); //=> '2014-03-03', weeks always start on Mondays\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('day').toISOTime(); //=> '00:00.000-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('hour').toISOTime(); //=> '05:00:00.000-05:00'\n * @return {DateTime}\n */\n startOf(unit) {\n if (!this.isValid) return this;\n const o = {},\n normalizedUnit = Duration.normalizeUnit(unit);\n switch (normalizedUnit) {\n case \"years\":\n o.month = 1;\n // falls through\n case \"quarters\":\n case \"months\":\n o.day = 1;\n // falls through\n case \"weeks\":\n case \"days\":\n o.hour = 0;\n // falls through\n case \"hours\":\n o.minute = 0;\n // falls through\n case \"minutes\":\n o.second = 0;\n // falls through\n case \"seconds\":\n o.millisecond = 0;\n break;\n case \"milliseconds\":\n break;\n // no default, invalid units throw in normalizeUnit()\n }\n\n if (normalizedUnit === \"weeks\") {\n o.weekday = 1;\n }\n\n if (normalizedUnit === \"quarters\") {\n const q = Math.ceil(this.month / 3);\n o.month = (q - 1) * 3 + 1;\n }\n\n return this.set(o);\n }\n\n /**\n * \"Set\" this DateTime to the end (meaning the last millisecond) of a unit of time\n * @param {string} unit - The unit to go to the end of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n * @example DateTime.local(2014, 3, 3).endOf('month').toISO(); //=> '2014-03-31T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3).endOf('year').toISO(); //=> '2014-12-31T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3).endOf('week').toISO(); // => '2014-03-09T23:59:59.999-05:00', weeks start on Mondays\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('day').toISO(); //=> '2014-03-03T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('hour').toISO(); //=> '2014-03-03T05:59:59.999-05:00'\n * @return {DateTime}\n */\n endOf(unit) {\n return this.isValid\n ? this.plus({ [unit]: 1 })\n .startOf(unit)\n .minus(1)\n : this;\n }\n\n // OUTPUT\n\n /**\n * Returns a string representation of this DateTime formatted according to the specified format string.\n * **You may not want this.** See {@link DateTime#toLocaleString} for a more flexible formatting tool. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/#/formatting?id=table-of-tokens).\n * Defaults to en-US if no locale has been specified, regardless of the system's locale.\n * @param {string} fmt - the format string\n * @param {Object} opts - opts to override the configuration options on this DateTime\n * @example DateTime.now().toFormat('yyyy LLL dd') //=> '2017 Apr 22'\n * @example DateTime.now().setLocale('fr').toFormat('yyyy LLL dd') //=> '2017 avr. 22'\n * @example DateTime.now().toFormat('yyyy LLL dd', { locale: \"fr\" }) //=> '2017 avr. 22'\n * @example DateTime.now().toFormat(\"HH 'hours and' mm 'minutes'\") //=> '20 hours and 55 minutes'\n * @return {string}\n */\n toFormat(fmt, opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.redefaultToEN(opts)).formatDateTimeFromString(this, fmt)\n : INVALID;\n }\n\n /**\n * Returns a localized string representing this date. Accepts the same options as the Intl.DateTimeFormat constructor and any presets defined by Luxon, such as `DateTime.DATE_FULL` or `DateTime.TIME_SIMPLE`.\n * The exact behavior of this method is browser-specific, but in general it will return an appropriate representation\n * of the DateTime in the assigned locale.\n * Defaults to the system's locale if no locale has been specified\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param formatOpts {Object} - Intl.DateTimeFormat constructor options and configuration options\n * @param {Object} opts - opts to override the configuration options on this DateTime\n * @example DateTime.now().toLocaleString(); //=> 4/20/2017\n * @example DateTime.now().setLocale('en-gb').toLocaleString(); //=> '20/04/2017'\n * @example DateTime.now().toLocaleString({ locale: 'en-gb' }); //=> '20/04/2017'\n * @example DateTime.now().toLocaleString(DateTime.DATE_FULL); //=> 'April 20, 2017'\n * @example DateTime.now().toLocaleString(DateTime.TIME_SIMPLE); //=> '11:32 AM'\n * @example DateTime.now().toLocaleString(DateTime.DATETIME_SHORT); //=> '4/20/2017, 11:32 AM'\n * @example DateTime.now().toLocaleString({ weekday: 'long', month: 'long', day: '2-digit' }); //=> 'Thursday, April 20'\n * @example DateTime.now().toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> 'Thu, Apr 20, 11:27 AM'\n * @example DateTime.now().toLocaleString({ hour: '2-digit', minute: '2-digit', hourCycle: 'h23' }); //=> '11:32'\n * @return {string}\n */\n toLocaleString(formatOpts = Formats.DATE_SHORT, opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.clone(opts), formatOpts).formatDateTime(this)\n : INVALID;\n }\n\n /**\n * Returns an array of format \"parts\", meaning individual tokens along with metadata. This is allows callers to post-process individual sections of the formatted output.\n * Defaults to the system's locale if no locale has been specified\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/formatToParts\n * @param opts {Object} - Intl.DateTimeFormat constructor options, same as `toLocaleString`.\n * @example DateTime.now().toLocaleParts(); //=> [\n * //=> { type: 'day', value: '25' },\n * //=> { type: 'literal', value: '/' },\n * //=> { type: 'month', value: '05' },\n * //=> { type: 'literal', value: '/' },\n * //=> { type: 'year', value: '1982' }\n * //=> ]\n */\n toLocaleParts(opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.clone(opts), opts).formatDateTimeParts(this)\n : [];\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.extendedZone=true] - add the time zone format extension\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc(1983, 5, 25).toISO() //=> '1982-05-25T00:00:00.000Z'\n * @example DateTime.now().toISO() //=> '2017-04-22T20:47:05.335-04:00'\n * @example DateTime.now().toISO({ includeOffset: false }) //=> '2017-04-22T20:47:05.335'\n * @example DateTime.now().toISO({ format: 'basic' }) //=> '20170422T204705.335-0400'\n * @return {string}\n */\n toISO({\n format = \"extended\",\n suppressSeconds = false,\n suppressMilliseconds = false,\n includeOffset = true,\n extendedZone = false,\n } = {}) {\n if (!this.isValid) {\n return null;\n }\n\n const ext = format === \"extended\";\n\n let c = toISODate(this, ext);\n c += \"T\";\n c += toISOTime(this, ext, suppressSeconds, suppressMilliseconds, includeOffset, extendedZone);\n return c;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's date component\n * @param {Object} opts - options\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc(1982, 5, 25).toISODate() //=> '1982-05-25'\n * @example DateTime.utc(1982, 5, 25).toISODate({ format: 'basic' }) //=> '19820525'\n * @return {string}\n */\n toISODate({ format = \"extended\" } = {}) {\n if (!this.isValid) {\n return null;\n }\n\n return toISODate(this, format === \"extended\");\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's week date\n * @example DateTime.utc(1982, 5, 25).toISOWeekDate() //=> '1982-W21-2'\n * @return {string}\n */\n toISOWeekDate() {\n return toTechFormat(this, \"kkkk-'W'WW-c\");\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's time component\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.extendedZone=true] - add the time zone format extension\n * @param {boolean} [opts.includePrefix=false] - include the `T` prefix\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime() //=> '07:34:19.361Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34, seconds: 0, milliseconds: 0 }).toISOTime({ suppressSeconds: true }) //=> '07:34Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ format: 'basic' }) //=> '073419.361Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ includePrefix: true }) //=> 'T07:34:19.361Z'\n * @return {string}\n */\n toISOTime({\n suppressMilliseconds = false,\n suppressSeconds = false,\n includeOffset = true,\n includePrefix = false,\n extendedZone = false,\n format = \"extended\",\n } = {}) {\n if (!this.isValid) {\n return null;\n }\n\n let c = includePrefix ? \"T\" : \"\";\n return (\n c +\n toISOTime(\n this,\n format === \"extended\",\n suppressSeconds,\n suppressMilliseconds,\n includeOffset,\n extendedZone\n )\n );\n }\n\n /**\n * Returns an RFC 2822-compatible string representation of this DateTime\n * @example DateTime.utc(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 +0000'\n * @example DateTime.local(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 -0400'\n * @return {string}\n */\n toRFC2822() {\n return toTechFormat(this, \"EEE, dd LLL yyyy HH:mm:ss ZZZ\", false);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in HTTP headers. The output is always expressed in GMT.\n * Specifically, the string conforms to RFC 1123.\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n * @example DateTime.utc(2014, 7, 13).toHTTP() //=> 'Sun, 13 Jul 2014 00:00:00 GMT'\n * @example DateTime.utc(2014, 7, 13, 19).toHTTP() //=> 'Sun, 13 Jul 2014 19:00:00 GMT'\n * @return {string}\n */\n toHTTP() {\n return toTechFormat(this.toUTC(), \"EEE, dd LLL yyyy HH:mm:ss 'GMT'\");\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL Date\n * @example DateTime.utc(2014, 7, 13).toSQLDate() //=> '2014-07-13'\n * @return {string}\n */\n toSQLDate() {\n if (!this.isValid) {\n return null;\n }\n return toISODate(this, true);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL Time\n * @param {Object} opts - options\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.includeOffsetSpace=true] - include the space between the time and the offset, such as '05:15:16.345 -04:00'\n * @example DateTime.utc().toSQL() //=> '05:15:16.345'\n * @example DateTime.now().toSQL() //=> '05:15:16.345 -04:00'\n * @example DateTime.now().toSQL({ includeOffset: false }) //=> '05:15:16.345'\n * @example DateTime.now().toSQL({ includeZone: false }) //=> '05:15:16.345 America/New_York'\n * @return {string}\n */\n toSQLTime({ includeOffset = true, includeZone = false, includeOffsetSpace = true } = {}) {\n let fmt = \"HH:mm:ss.SSS\";\n\n if (includeZone || includeOffset) {\n if (includeOffsetSpace) {\n fmt += \" \";\n }\n if (includeZone) {\n fmt += \"z\";\n } else if (includeOffset) {\n fmt += \"ZZ\";\n }\n }\n\n return toTechFormat(this, fmt, true);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL DateTime\n * @param {Object} opts - options\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.includeOffsetSpace=true] - include the space between the time and the offset, such as '05:15:16.345 -04:00'\n * @example DateTime.utc(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 Z'\n * @example DateTime.local(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 -04:00'\n * @example DateTime.local(2014, 7, 13).toSQL({ includeOffset: false }) //=> '2014-07-13 00:00:00.000'\n * @example DateTime.local(2014, 7, 13).toSQL({ includeZone: true }) //=> '2014-07-13 00:00:00.000 America/New_York'\n * @return {string}\n */\n toSQL(opts = {}) {\n if (!this.isValid) {\n return null;\n }\n\n return `${this.toSQLDate()} ${this.toSQLTime(opts)}`;\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for debugging\n * @return {string}\n */\n toString() {\n return this.isValid ? this.toISO() : INVALID;\n }\n\n /**\n * Returns the epoch milliseconds of this DateTime. Alias of {@link DateTime#toMillis}\n * @return {number}\n */\n valueOf() {\n return this.toMillis();\n }\n\n /**\n * Returns the epoch milliseconds of this DateTime.\n * @return {number}\n */\n toMillis() {\n return this.isValid ? this.ts : NaN;\n }\n\n /**\n * Returns the epoch seconds of this DateTime.\n * @return {number}\n */\n toSeconds() {\n return this.isValid ? this.ts / 1000 : NaN;\n }\n\n /**\n * Returns the epoch seconds (as a whole number) of this DateTime.\n * @return {number}\n */\n toUnixInteger() {\n return this.isValid ? Math.floor(this.ts / 1000) : NaN;\n }\n\n /**\n * Returns an ISO 8601 representation of this DateTime appropriate for use in JSON.\n * @return {string}\n */\n toJSON() {\n return this.toISO();\n }\n\n /**\n * Returns a BSON serializable equivalent to this DateTime.\n * @return {Date}\n */\n toBSON() {\n return this.toJSDate();\n }\n\n /**\n * Returns a JavaScript object with this DateTime's year, month, day, and so on.\n * @param opts - options for generating the object\n * @param {boolean} [opts.includeConfig=false] - include configuration attributes in the output\n * @example DateTime.now().toObject() //=> { year: 2017, month: 4, day: 22, hour: 20, minute: 49, second: 42, millisecond: 268 }\n * @return {Object}\n */\n toObject(opts = {}) {\n if (!this.isValid) return {};\n\n const base = { ...this.c };\n\n if (opts.includeConfig) {\n base.outputCalendar = this.outputCalendar;\n base.numberingSystem = this.loc.numberingSystem;\n base.locale = this.loc.locale;\n }\n return base;\n }\n\n /**\n * Returns a JavaScript Date equivalent to this DateTime.\n * @return {Date}\n */\n toJSDate() {\n return new Date(this.isValid ? this.ts : NaN);\n }\n\n // COMPARE\n\n /**\n * Return the difference between two DateTimes as a Duration.\n * @param {DateTime} otherDateTime - the DateTime to compare this one to\n * @param {string|string[]} [unit=['milliseconds']] - the unit or array of units (such as 'hours' or 'days') to include in the duration.\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @example\n * var i1 = DateTime.fromISO('1982-05-25T09:45'),\n * i2 = DateTime.fromISO('1983-10-14T10:30');\n * i2.diff(i1).toObject() //=> { milliseconds: 43807500000 }\n * i2.diff(i1, 'hours').toObject() //=> { hours: 12168.75 }\n * i2.diff(i1, ['months', 'days']).toObject() //=> { months: 16, days: 19.03125 }\n * i2.diff(i1, ['months', 'days', 'hours']).toObject() //=> { months: 16, days: 19, hours: 0.75 }\n * @return {Duration}\n */\n diff(otherDateTime, unit = \"milliseconds\", opts = {}) {\n if (!this.isValid || !otherDateTime.isValid) {\n return Duration.invalid(\"created by diffing an invalid DateTime\");\n }\n\n const durOpts = { locale: this.locale, numberingSystem: this.numberingSystem, ...opts };\n\n const units = maybeArray(unit).map(Duration.normalizeUnit),\n otherIsLater = otherDateTime.valueOf() > this.valueOf(),\n earlier = otherIsLater ? this : otherDateTime,\n later = otherIsLater ? otherDateTime : this,\n diffed = diff(earlier, later, units, durOpts);\n\n return otherIsLater ? diffed.negate() : diffed;\n }\n\n /**\n * Return the difference between this DateTime and right now.\n * See {@link DateTime#diff}\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units units (such as 'hours' or 'days') to include in the duration\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n diffNow(unit = \"milliseconds\", opts = {}) {\n return this.diff(DateTime.now(), unit, opts);\n }\n\n /**\n * Return an Interval spanning between this DateTime and another DateTime\n * @param {DateTime} otherDateTime - the other end point of the Interval\n * @return {Interval}\n */\n until(otherDateTime) {\n return this.isValid ? Interval.fromDateTimes(this, otherDateTime) : this;\n }\n\n /**\n * Return whether this DateTime is in the same unit of time as another DateTime.\n * Higher-order units must also be identical for this function to return `true`.\n * Note that time zones are **ignored** in this comparison, which compares the **local** calendar time. Use {@link DateTime#setZone} to convert one of the dates if needed.\n * @param {DateTime} otherDateTime - the other DateTime\n * @param {string} unit - the unit of time to check sameness on\n * @example DateTime.now().hasSame(otherDT, 'day'); //~> true if otherDT is in the same current calendar day\n * @return {boolean}\n */\n hasSame(otherDateTime, unit) {\n if (!this.isValid) return false;\n\n const inputMs = otherDateTime.valueOf();\n const adjustedToZone = this.setZone(otherDateTime.zone, { keepLocalTime: true });\n return adjustedToZone.startOf(unit) <= inputMs && inputMs <= adjustedToZone.endOf(unit);\n }\n\n /**\n * Equality check\n * Two DateTimes are equal iff they represent the same millisecond, have the same zone and location, and are both valid.\n * To compare just the millisecond values, use `+dt1 === +dt2`.\n * @param {DateTime} other - the other DateTime\n * @return {boolean}\n */\n equals(other) {\n return (\n this.isValid &&\n other.isValid &&\n this.valueOf() === other.valueOf() &&\n this.zone.equals(other.zone) &&\n this.loc.equals(other.loc)\n );\n }\n\n /**\n * Returns a string representation of a this time relative to now, such as \"in two days\". Can only internationalize if your\n * platform supports Intl.RelativeTimeFormat. Rounds down by default.\n * @param {Object} options - options that affect the output\n * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n * @param {string} [options.style=\"long\"] - the style of units, must be \"long\", \"short\", or \"narrow\"\n * @param {string|string[]} options.unit - use a specific unit or array of units; if omitted, or an array, the method will pick the best unit. Use an array or one of \"years\", \"quarters\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", or \"seconds\"\n * @param {boolean} [options.round=true] - whether to round the numbers in the output.\n * @param {number} [options.padding=0] - padding in milliseconds. This allows you to round up the result if it fits inside the threshold. Don't use in combination with {round: false} because the decimal output will include the padding.\n * @param {string} options.locale - override the locale of this DateTime\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n * @example DateTime.now().plus({ days: 1 }).toRelative() //=> \"in 1 day\"\n * @example DateTime.now().setLocale(\"es\").toRelative({ days: 1 }) //=> \"dentro de 1 día\"\n * @example DateTime.now().plus({ days: 1 }).toRelative({ locale: \"fr\" }) //=> \"dans 23 heures\"\n * @example DateTime.now().minus({ days: 2 }).toRelative() //=> \"2 days ago\"\n * @example DateTime.now().minus({ days: 2 }).toRelative({ unit: \"hours\" }) //=> \"48 hours ago\"\n * @example DateTime.now().minus({ hours: 36 }).toRelative({ round: false }) //=> \"1.5 days ago\"\n */\n toRelative(options = {}) {\n if (!this.isValid) return null;\n const base = options.base || DateTime.fromObject({}, { zone: this.zone }),\n padding = options.padding ? (this < base ? -options.padding : options.padding) : 0;\n let units = [\"years\", \"months\", \"days\", \"hours\", \"minutes\", \"seconds\"];\n let unit = options.unit;\n if (Array.isArray(options.unit)) {\n units = options.unit;\n unit = undefined;\n }\n return diffRelative(base, this.plus(padding), {\n ...options,\n numeric: \"always\",\n units,\n unit,\n });\n }\n\n /**\n * Returns a string representation of this date relative to today, such as \"yesterday\" or \"next month\".\n * Only internationalizes on platforms that supports Intl.RelativeTimeFormat.\n * @param {Object} options - options that affect the output\n * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n * @param {string} options.locale - override the locale of this DateTime\n * @param {string} options.unit - use a specific unit; if omitted, the method will pick the unit. Use one of \"years\", \"quarters\", \"months\", \"weeks\", or \"days\"\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar() //=> \"tomorrow\"\n * @example DateTime.now().setLocale(\"es\").plus({ days: 1 }).toRelative() //=> \"\"mañana\"\n * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar({ locale: \"fr\" }) //=> \"demain\"\n * @example DateTime.now().minus({ days: 2 }).toRelativeCalendar() //=> \"2 days ago\"\n */\n toRelativeCalendar(options = {}) {\n if (!this.isValid) return null;\n\n return diffRelative(options.base || DateTime.fromObject({}, { zone: this.zone }), this, {\n ...options,\n numeric: \"auto\",\n units: [\"years\", \"months\", \"days\"],\n calendary: true,\n });\n }\n\n /**\n * Return the min of several date times\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the minimum\n * @return {DateTime} the min DateTime, or undefined if called with no argument\n */\n static min(...dateTimes) {\n if (!dateTimes.every(DateTime.isDateTime)) {\n throw new InvalidArgumentError(\"min requires all arguments be DateTimes\");\n }\n return bestBy(dateTimes, (i) => i.valueOf(), Math.min);\n }\n\n /**\n * Return the max of several date times\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the maximum\n * @return {DateTime} the max DateTime, or undefined if called with no argument\n */\n static max(...dateTimes) {\n if (!dateTimes.every(DateTime.isDateTime)) {\n throw new InvalidArgumentError(\"max requires all arguments be DateTimes\");\n }\n return bestBy(dateTimes, (i) => i.valueOf(), Math.max);\n }\n\n // MISC\n\n /**\n * Explain how a string would be parsed by fromFormat()\n * @param {string} text - the string to parse\n * @param {string} fmt - the format the string is expected to be in (see description)\n * @param {Object} options - options taken by fromFormat()\n * @return {Object}\n */\n static fromFormatExplain(text, fmt, options = {}) {\n const { locale = null, numberingSystem = null } = options,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true,\n });\n return explainFromTokens(localeToUse, text, fmt);\n }\n\n /**\n * @deprecated use fromFormatExplain instead\n */\n static fromStringExplain(text, fmt, options = {}) {\n return DateTime.fromFormatExplain(text, fmt, options);\n }\n\n // FORMAT PRESETS\n\n /**\n * {@link DateTime#toLocaleString} format like 10/14/1983\n * @type {Object}\n */\n static get DATE_SHORT() {\n return Formats.DATE_SHORT;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Oct 14, 1983'\n * @type {Object}\n */\n static get DATE_MED() {\n return Formats.DATE_MED;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Fri, Oct 14, 1983'\n * @type {Object}\n */\n static get DATE_MED_WITH_WEEKDAY() {\n return Formats.DATE_MED_WITH_WEEKDAY;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'October 14, 1983'\n * @type {Object}\n */\n static get DATE_FULL() {\n return Formats.DATE_FULL;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Tuesday, October 14, 1983'\n * @type {Object}\n */\n static get DATE_HUGE() {\n return Formats.DATE_HUGE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_SIMPLE() {\n return Formats.TIME_SIMPLE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_SECONDS() {\n return Formats.TIME_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_SHORT_OFFSET() {\n return Formats.TIME_WITH_SHORT_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_LONG_OFFSET() {\n return Formats.TIME_WITH_LONG_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_SIMPLE() {\n return Formats.TIME_24_SIMPLE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_SECONDS() {\n return Formats.TIME_24_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 EDT', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_SHORT_OFFSET() {\n return Formats.TIME_24_WITH_SHORT_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 Eastern Daylight Time', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_LONG_OFFSET() {\n return Formats.TIME_24_WITH_LONG_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '10/14/1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_SHORT() {\n return Formats.DATETIME_SHORT;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '10/14/1983, 9:30:33 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_SHORT_WITH_SECONDS() {\n return Formats.DATETIME_SHORT_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Oct 14, 1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED() {\n return Formats.DATETIME_MED;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Oct 14, 1983, 9:30:33 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED_WITH_SECONDS() {\n return Formats.DATETIME_MED_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Fri, 14 Oct 1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED_WITH_WEEKDAY() {\n return Formats.DATETIME_MED_WITH_WEEKDAY;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'October 14, 1983, 9:30 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_FULL() {\n return Formats.DATETIME_FULL;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'October 14, 1983, 9:30:33 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_FULL_WITH_SECONDS() {\n return Formats.DATETIME_FULL_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Friday, October 14, 1983, 9:30 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_HUGE() {\n return Formats.DATETIME_HUGE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Friday, October 14, 1983, 9:30:33 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_HUGE_WITH_SECONDS() {\n return Formats.DATETIME_HUGE_WITH_SECONDS;\n }\n}\n\n/**\n * @private\n */\nexport function friendlyDateTime(dateTimeish) {\n if (DateTime.isDateTime(dateTimeish)) {\n return dateTimeish;\n } else if (dateTimeish && dateTimeish.valueOf && isNumber(dateTimeish.valueOf())) {\n return DateTime.fromJSDate(dateTimeish);\n } else if (dateTimeish && typeof dateTimeish === \"object\") {\n return DateTime.fromObject(dateTimeish);\n } else {\n throw new InvalidArgumentError(\n `Unknown datetime argument: ${dateTimeish}, of type ${typeof dateTimeish}`\n );\n }\n}\n","import { InvalidArgumentError, InvalidDurationError, InvalidUnitError } from \"./errors.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport Invalid from \"./impl/invalid.js\";\nimport Locale from \"./impl/locale.js\";\nimport { parseISODuration, parseISOTimeOnly } from \"./impl/regexParser.js\";\nimport {\n asNumber,\n hasOwnProperty,\n isNumber,\n isUndefined,\n normalizeObject,\n roundTo,\n} from \"./impl/util.js\";\nimport Settings from \"./settings.js\";\n\nconst INVALID = \"Invalid Duration\";\n\n// unit conversion constants\nexport const lowOrderMatrix = {\n weeks: {\n days: 7,\n hours: 7 * 24,\n minutes: 7 * 24 * 60,\n seconds: 7 * 24 * 60 * 60,\n milliseconds: 7 * 24 * 60 * 60 * 1000,\n },\n days: {\n hours: 24,\n minutes: 24 * 60,\n seconds: 24 * 60 * 60,\n milliseconds: 24 * 60 * 60 * 1000,\n },\n hours: { minutes: 60, seconds: 60 * 60, milliseconds: 60 * 60 * 1000 },\n minutes: { seconds: 60, milliseconds: 60 * 1000 },\n seconds: { milliseconds: 1000 },\n },\n casualMatrix = {\n years: {\n quarters: 4,\n months: 12,\n weeks: 52,\n days: 365,\n hours: 365 * 24,\n minutes: 365 * 24 * 60,\n seconds: 365 * 24 * 60 * 60,\n milliseconds: 365 * 24 * 60 * 60 * 1000,\n },\n quarters: {\n months: 3,\n weeks: 13,\n days: 91,\n hours: 91 * 24,\n minutes: 91 * 24 * 60,\n seconds: 91 * 24 * 60 * 60,\n milliseconds: 91 * 24 * 60 * 60 * 1000,\n },\n months: {\n weeks: 4,\n days: 30,\n hours: 30 * 24,\n minutes: 30 * 24 * 60,\n seconds: 30 * 24 * 60 * 60,\n milliseconds: 30 * 24 * 60 * 60 * 1000,\n },\n\n ...lowOrderMatrix,\n },\n daysInYearAccurate = 146097.0 / 400,\n daysInMonthAccurate = 146097.0 / 4800,\n accurateMatrix = {\n years: {\n quarters: 4,\n months: 12,\n weeks: daysInYearAccurate / 7,\n days: daysInYearAccurate,\n hours: daysInYearAccurate * 24,\n minutes: daysInYearAccurate * 24 * 60,\n seconds: daysInYearAccurate * 24 * 60 * 60,\n milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1000,\n },\n quarters: {\n months: 3,\n weeks: daysInYearAccurate / 28,\n days: daysInYearAccurate / 4,\n hours: (daysInYearAccurate * 24) / 4,\n minutes: (daysInYearAccurate * 24 * 60) / 4,\n seconds: (daysInYearAccurate * 24 * 60 * 60) / 4,\n milliseconds: (daysInYearAccurate * 24 * 60 * 60 * 1000) / 4,\n },\n months: {\n weeks: daysInMonthAccurate / 7,\n days: daysInMonthAccurate,\n hours: daysInMonthAccurate * 24,\n minutes: daysInMonthAccurate * 24 * 60,\n seconds: daysInMonthAccurate * 24 * 60 * 60,\n milliseconds: daysInMonthAccurate * 24 * 60 * 60 * 1000,\n },\n ...lowOrderMatrix,\n };\n\n// units ordered by size\nconst orderedUnits = [\n \"years\",\n \"quarters\",\n \"months\",\n \"weeks\",\n \"days\",\n \"hours\",\n \"minutes\",\n \"seconds\",\n \"milliseconds\",\n];\n\nconst reverseUnits = orderedUnits.slice(0).reverse();\n\n// clone really means \"create another instance just like this one, but with these changes\"\nfunction clone(dur, alts, clear = false) {\n // deep merge for vals\n const conf = {\n values: clear ? alts.values : { ...dur.values, ...(alts.values || {}) },\n loc: dur.loc.clone(alts.loc),\n conversionAccuracy: alts.conversionAccuracy || dur.conversionAccuracy,\n };\n return new Duration(conf);\n}\n\nfunction antiTrunc(n) {\n return n < 0 ? Math.floor(n) : Math.ceil(n);\n}\n\n// NB: mutates parameters\nfunction convert(matrix, fromMap, fromUnit, toMap, toUnit) {\n const conv = matrix[toUnit][fromUnit],\n raw = fromMap[fromUnit] / conv,\n sameSign = Math.sign(raw) === Math.sign(toMap[toUnit]),\n // ok, so this is wild, but see the matrix in the tests\n added =\n !sameSign && toMap[toUnit] !== 0 && Math.abs(raw) <= 1 ? antiTrunc(raw) : Math.trunc(raw);\n toMap[toUnit] += added;\n fromMap[fromUnit] -= added * conv;\n}\n\n// NB: mutates parameters\nfunction normalizeValues(matrix, vals) {\n reverseUnits.reduce((previous, current) => {\n if (!isUndefined(vals[current])) {\n if (previous) {\n convert(matrix, vals, previous, vals, current);\n }\n return current;\n } else {\n return previous;\n }\n }, null);\n}\n\n/**\n * A Duration object represents a period of time, like \"2 months\" or \"1 day, 1 hour\". Conceptually, it's just a map of units to their quantities, accompanied by some additional configuration and methods for creating, parsing, interrogating, transforming, and formatting them. They can be used on their own or in conjunction with other Luxon types; for example, you can use {@link DateTime#plus} to add a Duration object to a DateTime, producing another DateTime.\n *\n * Here is a brief overview of commonly used methods and getters in Duration:\n *\n * * **Creation** To create a Duration, use {@link Duration#fromMillis}, {@link Duration#fromObject}, or {@link Duration#fromISO}.\n * * **Unit values** See the {@link Duration#years}, {@link Duration#months}, {@link Duration#weeks}, {@link Duration#days}, {@link Duration#hours}, {@link Duration#minutes}, {@link Duration#seconds}, {@link Duration#milliseconds} accessors.\n * * **Configuration** See {@link Duration#locale} and {@link Duration#numberingSystem} accessors.\n * * **Transformation** To create new Durations out of old ones use {@link Duration#plus}, {@link Duration#minus}, {@link Duration#normalize}, {@link Duration#set}, {@link Duration#reconfigure}, {@link Duration#shiftTo}, and {@link Duration#negate}.\n * * **Output** To convert the Duration into other representations, see {@link Duration#as}, {@link Duration#toISO}, {@link Duration#toFormat}, and {@link Duration#toJSON}\n *\n * There's are more methods documented below. In addition, for more information on subtler topics like internationalization and validity, see the external documentation.\n */\nexport default class Duration {\n /**\n * @private\n */\n constructor(config) {\n const accurate = config.conversionAccuracy === \"longterm\" || false;\n /**\n * @access private\n */\n this.values = config.values;\n /**\n * @access private\n */\n this.loc = config.loc || Locale.create();\n /**\n * @access private\n */\n this.conversionAccuracy = accurate ? \"longterm\" : \"casual\";\n /**\n * @access private\n */\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n this.matrix = accurate ? accurateMatrix : casualMatrix;\n /**\n * @access private\n */\n this.isLuxonDuration = true;\n }\n\n /**\n * Create Duration from a number of milliseconds.\n * @param {number} count of milliseconds\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n static fromMillis(count, opts) {\n return Duration.fromObject({ milliseconds: count }, opts);\n }\n\n /**\n * Create a Duration from a JavaScript object with keys like 'years' and 'hours'.\n * If this object is empty then a zero milliseconds duration is returned.\n * @param {Object} obj - the object to create the DateTime from\n * @param {number} obj.years\n * @param {number} obj.quarters\n * @param {number} obj.months\n * @param {number} obj.weeks\n * @param {number} obj.days\n * @param {number} obj.hours\n * @param {number} obj.minutes\n * @param {number} obj.seconds\n * @param {number} obj.milliseconds\n * @param {Object} [opts=[]] - options for creating this Duration\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n static fromObject(obj, opts = {}) {\n if (obj == null || typeof obj !== \"object\") {\n throw new InvalidArgumentError(\n `Duration.fromObject: argument expected to be an object, got ${\n obj === null ? \"null\" : typeof obj\n }`\n );\n }\n\n return new Duration({\n values: normalizeObject(obj, Duration.normalizeUnit),\n loc: Locale.fromObject(opts),\n conversionAccuracy: opts.conversionAccuracy,\n });\n }\n\n /**\n * Create a Duration from DurationLike.\n *\n * @param {Object | number | Duration} durationLike\n * One of:\n * - object with keys like 'years' and 'hours'.\n * - number representing milliseconds\n * - Duration instance\n * @return {Duration}\n */\n static fromDurationLike(durationLike) {\n if (isNumber(durationLike)) {\n return Duration.fromMillis(durationLike);\n } else if (Duration.isDuration(durationLike)) {\n return durationLike;\n } else if (typeof durationLike === \"object\") {\n return Duration.fromObject(durationLike);\n } else {\n throw new InvalidArgumentError(\n `Unknown duration argument ${durationLike} of type ${typeof durationLike}`\n );\n }\n }\n\n /**\n * Create a Duration from an ISO 8601 duration string.\n * @param {string} text - text to parse\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromISO('P3Y6M1W4DT12H30M5S').toObject() //=> { years: 3, months: 6, weeks: 1, days: 4, hours: 12, minutes: 30, seconds: 5 }\n * @example Duration.fromISO('PT23H').toObject() //=> { hours: 23 }\n * @example Duration.fromISO('P5Y3M').toObject() //=> { years: 5, months: 3 }\n * @return {Duration}\n */\n static fromISO(text, opts) {\n const [parsed] = parseISODuration(text);\n if (parsed) {\n return Duration.fromObject(parsed, opts);\n } else {\n return Duration.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n }\n\n /**\n * Create a Duration from an ISO 8601 time string.\n * @param {string} text - text to parse\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @see https://en.wikipedia.org/wiki/ISO_8601#Times\n * @example Duration.fromISOTime('11:22:33.444').toObject() //=> { hours: 11, minutes: 22, seconds: 33, milliseconds: 444 }\n * @example Duration.fromISOTime('11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('T11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('T1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @return {Duration}\n */\n static fromISOTime(text, opts) {\n const [parsed] = parseISOTimeOnly(text);\n if (parsed) {\n return Duration.fromObject(parsed, opts);\n } else {\n return Duration.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n }\n\n /**\n * Create an invalid Duration.\n * @param {string} reason - simple string of why this datetime is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Duration}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Duration is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDurationError(invalid);\n } else {\n return new Duration({ invalid });\n }\n }\n\n /**\n * @private\n */\n static normalizeUnit(unit) {\n const normalized = {\n year: \"years\",\n years: \"years\",\n quarter: \"quarters\",\n quarters: \"quarters\",\n month: \"months\",\n months: \"months\",\n week: \"weeks\",\n weeks: \"weeks\",\n day: \"days\",\n days: \"days\",\n hour: \"hours\",\n hours: \"hours\",\n minute: \"minutes\",\n minutes: \"minutes\",\n second: \"seconds\",\n seconds: \"seconds\",\n millisecond: \"milliseconds\",\n milliseconds: \"milliseconds\",\n }[unit ? unit.toLowerCase() : unit];\n\n if (!normalized) throw new InvalidUnitError(unit);\n\n return normalized;\n }\n\n /**\n * Check if an object is a Duration. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isDuration(o) {\n return (o && o.isLuxonDuration) || false;\n }\n\n /**\n * Get the locale of a Duration, such 'en-GB'\n * @type {string}\n */\n get locale() {\n return this.isValid ? this.loc.locale : null;\n }\n\n /**\n * Get the numbering system of a Duration, such 'beng'. The numbering system is used when formatting the Duration\n *\n * @type {string}\n */\n get numberingSystem() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n\n /**\n * Returns a string representation of this Duration formatted according to the specified format string. You may use these tokens:\n * * `S` for milliseconds\n * * `s` for seconds\n * * `m` for minutes\n * * `h` for hours\n * * `d` for days\n * * `w` for weeks\n * * `M` for months\n * * `y` for years\n * Notes:\n * * Add padding by repeating the token, e.g. \"yy\" pads the years to two digits, \"hhhh\" pads the hours out to four digits\n * * Tokens can be escaped by wrapping with single quotes.\n * * The duration will be converted to the set of units in the format string using {@link Duration#shiftTo} and the Durations's conversion accuracy setting.\n * @param {string} fmt - the format string\n * @param {Object} opts - options\n * @param {boolean} [opts.floor=true] - floor numerical values\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"y d s\") //=> \"1 6 2\"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"yy dd sss\") //=> \"01 06 002\"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"M S\") //=> \"12 518402000\"\n * @return {string}\n */\n toFormat(fmt, opts = {}) {\n // reverse-compat since 1.2; we always round down now, never up, and we do it by default\n const fmtOpts = {\n ...opts,\n floor: opts.round !== false && opts.floor !== false,\n };\n return this.isValid\n ? Formatter.create(this.loc, fmtOpts).formatDurationFromString(this, fmt)\n : INVALID;\n }\n\n /**\n * Returns a string representation of a Duration with all units included.\n * To modify its behavior use the `listStyle` and any Intl.NumberFormat option, though `unitDisplay` is especially relevant.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat\n * @param opts - On option object to override the formatting. Accepts the same keys as the options parameter of the native `Int.NumberFormat` constructor, as well as `listStyle`.\n * @example\n * ```js\n * var dur = Duration.fromObject({ days: 1, hours: 5, minutes: 6 })\n * dur.toHuman() //=> '1 day, 5 hours, 6 minutes'\n * dur.toHuman({ listStyle: \"long\" }) //=> '1 day, 5 hours, and 6 minutes'\n * dur.toHuman({ unitDisplay: \"short\" }) //=> '1 day, 5 hr, 6 min'\n * ```\n */\n toHuman(opts = {}) {\n const l = orderedUnits\n .map((unit) => {\n const val = this.values[unit];\n if (isUndefined(val)) {\n return null;\n }\n return this.loc\n .numberFormatter({ style: \"unit\", unitDisplay: \"long\", ...opts, unit: unit.slice(0, -1) })\n .format(val);\n })\n .filter((n) => n);\n\n return this.loc\n .listFormatter({ type: \"conjunction\", style: opts.listStyle || \"narrow\", ...opts })\n .format(l);\n }\n\n /**\n * Returns a JavaScript object with this Duration's values.\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toObject() //=> { years: 1, days: 6, seconds: 2 }\n * @return {Object}\n */\n toObject() {\n if (!this.isValid) return {};\n return { ...this.values };\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Duration.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromObject({ years: 3, seconds: 45 }).toISO() //=> 'P3YT45S'\n * @example Duration.fromObject({ months: 4, seconds: 45 }).toISO() //=> 'P4MT45S'\n * @example Duration.fromObject({ months: 5 }).toISO() //=> 'P5M'\n * @example Duration.fromObject({ minutes: 5 }).toISO() //=> 'PT5M'\n * @example Duration.fromObject({ milliseconds: 6 }).toISO() //=> 'PT0.006S'\n * @return {string}\n */\n toISO() {\n // we could use the formatter, but this is an easier way to get the minimum string\n if (!this.isValid) return null;\n\n let s = \"P\";\n if (this.years !== 0) s += this.years + \"Y\";\n if (this.months !== 0 || this.quarters !== 0) s += this.months + this.quarters * 3 + \"M\";\n if (this.weeks !== 0) s += this.weeks + \"W\";\n if (this.days !== 0) s += this.days + \"D\";\n if (this.hours !== 0 || this.minutes !== 0 || this.seconds !== 0 || this.milliseconds !== 0)\n s += \"T\";\n if (this.hours !== 0) s += this.hours + \"H\";\n if (this.minutes !== 0) s += this.minutes + \"M\";\n if (this.seconds !== 0 || this.milliseconds !== 0)\n // this will handle \"floating point madness\" by removing extra decimal places\n // https://stackoverflow.com/questions/588004/is-floating-point-math-broken\n s += roundTo(this.seconds + this.milliseconds / 1000, 3) + \"S\";\n if (s === \"P\") s += \"T0S\";\n return s;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Duration, formatted as a time of day.\n * Note that this will return null if the duration is invalid, negative, or equal to or greater than 24 hours.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Times\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includePrefix=false] - include the `T` prefix\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example Duration.fromObject({ hours: 11 }).toISOTime() //=> '11:00:00.000'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressMilliseconds: true }) //=> '11:00:00'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressSeconds: true }) //=> '11:00'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ includePrefix: true }) //=> 'T11:00:00.000'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ format: 'basic' }) //=> '110000.000'\n * @return {string}\n */\n toISOTime(opts = {}) {\n if (!this.isValid) return null;\n\n const millis = this.toMillis();\n if (millis < 0 || millis >= 86400000) return null;\n\n opts = {\n suppressMilliseconds: false,\n suppressSeconds: false,\n includePrefix: false,\n format: \"extended\",\n ...opts,\n };\n\n const value = this.shiftTo(\"hours\", \"minutes\", \"seconds\", \"milliseconds\");\n\n let fmt = opts.format === \"basic\" ? \"hhmm\" : \"hh:mm\";\n\n if (!opts.suppressSeconds || value.seconds !== 0 || value.milliseconds !== 0) {\n fmt += opts.format === \"basic\" ? \"ss\" : \":ss\";\n if (!opts.suppressMilliseconds || value.milliseconds !== 0) {\n fmt += \".SSS\";\n }\n }\n\n let str = value.toFormat(fmt);\n\n if (opts.includePrefix) {\n str = \"T\" + str;\n }\n\n return str;\n }\n\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in JSON.\n * @return {string}\n */\n toJSON() {\n return this.toISO();\n }\n\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in debugging.\n * @return {string}\n */\n toString() {\n return this.toISO();\n }\n\n /**\n * Returns an milliseconds value of this Duration.\n * @return {number}\n */\n toMillis() {\n return this.as(\"milliseconds\");\n }\n\n /**\n * Returns an milliseconds value of this Duration. Alias of {@link toMillis}\n * @return {number}\n */\n valueOf() {\n return this.toMillis();\n }\n\n /**\n * Make this Duration longer by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n plus(duration) {\n if (!this.isValid) return this;\n\n const dur = Duration.fromDurationLike(duration),\n result = {};\n\n for (const k of orderedUnits) {\n if (hasOwnProperty(dur.values, k) || hasOwnProperty(this.values, k)) {\n result[k] = dur.get(k) + this.get(k);\n }\n }\n\n return clone(this, { values: result }, true);\n }\n\n /**\n * Make this Duration shorter by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n minus(duration) {\n if (!this.isValid) return this;\n\n const dur = Duration.fromDurationLike(duration);\n return this.plus(dur.negate());\n }\n\n /**\n * Scale this Duration by the specified amount. Return a newly-constructed Duration.\n * @param {function} fn - The function to apply to each unit. Arity is 1 or 2: the value of the unit and, optionally, the unit name. Must return a number.\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits(x => x * 2) //=> { hours: 2, minutes: 60 }\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits((x, u) => u === \"hour\" ? x * 2 : x) //=> { hours: 2, minutes: 30 }\n * @return {Duration}\n */\n mapUnits(fn) {\n if (!this.isValid) return this;\n const result = {};\n for (const k of Object.keys(this.values)) {\n result[k] = asNumber(fn(this.values[k], k));\n }\n return clone(this, { values: result }, true);\n }\n\n /**\n * Get the value of unit.\n * @param {string} unit - a unit such as 'minute' or 'day'\n * @example Duration.fromObject({years: 2, days: 3}).get('years') //=> 2\n * @example Duration.fromObject({years: 2, days: 3}).get('months') //=> 0\n * @example Duration.fromObject({years: 2, days: 3}).get('days') //=> 3\n * @return {number}\n */\n get(unit) {\n return this[Duration.normalizeUnit(unit)];\n }\n\n /**\n * \"Set\" the values of specified units. Return a newly-constructed Duration.\n * @param {Object} values - a mapping of units to numbers\n * @example dur.set({ years: 2017 })\n * @example dur.set({ hours: 8, minutes: 30 })\n * @return {Duration}\n */\n set(values) {\n if (!this.isValid) return this;\n\n const mixed = { ...this.values, ...normalizeObject(values, Duration.normalizeUnit) };\n return clone(this, { values: mixed });\n }\n\n /**\n * \"Set\" the locale and/or numberingSystem. Returns a newly-constructed Duration.\n * @example dur.reconfigure({ locale: 'en-GB' })\n * @return {Duration}\n */\n reconfigure({ locale, numberingSystem, conversionAccuracy } = {}) {\n const loc = this.loc.clone({ locale, numberingSystem }),\n opts = { loc };\n\n if (conversionAccuracy) {\n opts.conversionAccuracy = conversionAccuracy;\n }\n\n return clone(this, opts);\n }\n\n /**\n * Return the length of the duration in the specified unit.\n * @param {string} unit - a unit such as 'minutes' or 'days'\n * @example Duration.fromObject({years: 1}).as('days') //=> 365\n * @example Duration.fromObject({years: 1}).as('months') //=> 12\n * @example Duration.fromObject({hours: 60}).as('days') //=> 2.5\n * @return {number}\n */\n as(unit) {\n return this.isValid ? this.shiftTo(unit).get(unit) : NaN;\n }\n\n /**\n * Reduce this Duration to its canonical representation in its current units.\n * @example Duration.fromObject({ years: 2, days: 5000 }).normalize().toObject() //=> { years: 15, days: 255 }\n * @example Duration.fromObject({ hours: 12, minutes: -45 }).normalize().toObject() //=> { hours: 11, minutes: 15 }\n * @return {Duration}\n */\n normalize() {\n if (!this.isValid) return this;\n const vals = this.toObject();\n normalizeValues(this.matrix, vals);\n return clone(this, { values: vals }, true);\n }\n\n /**\n * Convert this Duration into its representation in a different set of units.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).shiftTo('minutes', 'milliseconds').toObject() //=> { minutes: 60, milliseconds: 30000 }\n * @return {Duration}\n */\n shiftTo(...units) {\n if (!this.isValid) return this;\n\n if (units.length === 0) {\n return this;\n }\n\n units = units.map((u) => Duration.normalizeUnit(u));\n\n const built = {},\n accumulated = {},\n vals = this.toObject();\n let lastUnit;\n\n for (const k of orderedUnits) {\n if (units.indexOf(k) >= 0) {\n lastUnit = k;\n\n let own = 0;\n\n // anything we haven't boiled down yet should get boiled to this unit\n for (const ak in accumulated) {\n own += this.matrix[ak][k] * accumulated[ak];\n accumulated[ak] = 0;\n }\n\n // plus anything that's already in this unit\n if (isNumber(vals[k])) {\n own += vals[k];\n }\n\n const i = Math.trunc(own);\n built[k] = i;\n accumulated[k] = (own * 1000 - i * 1000) / 1000;\n\n // plus anything further down the chain that should be rolled up in to this\n for (const down in vals) {\n if (orderedUnits.indexOf(down) > orderedUnits.indexOf(k)) {\n convert(this.matrix, vals, down, built, k);\n }\n }\n // otherwise, keep it in the wings to boil it later\n } else if (isNumber(vals[k])) {\n accumulated[k] = vals[k];\n }\n }\n\n // anything leftover becomes the decimal for the last unit\n // lastUnit must be defined since units is not empty\n for (const key in accumulated) {\n if (accumulated[key] !== 0) {\n built[lastUnit] +=\n key === lastUnit ? accumulated[key] : accumulated[key] / this.matrix[lastUnit][key];\n }\n }\n\n return clone(this, { values: built }, true).normalize();\n }\n\n /**\n * Return the negative of this Duration.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).negate().toObject() //=> { hours: -1, seconds: -30 }\n * @return {Duration}\n */\n negate() {\n if (!this.isValid) return this;\n const negated = {};\n for (const k of Object.keys(this.values)) {\n negated[k] = this.values[k] === 0 ? 0 : -this.values[k];\n }\n return clone(this, { values: negated }, true);\n }\n\n /**\n * Get the years.\n * @type {number}\n */\n get years() {\n return this.isValid ? this.values.years || 0 : NaN;\n }\n\n /**\n * Get the quarters.\n * @type {number}\n */\n get quarters() {\n return this.isValid ? this.values.quarters || 0 : NaN;\n }\n\n /**\n * Get the months.\n * @type {number}\n */\n get months() {\n return this.isValid ? this.values.months || 0 : NaN;\n }\n\n /**\n * Get the weeks\n * @type {number}\n */\n get weeks() {\n return this.isValid ? this.values.weeks || 0 : NaN;\n }\n\n /**\n * Get the days.\n * @type {number}\n */\n get days() {\n return this.isValid ? this.values.days || 0 : NaN;\n }\n\n /**\n * Get the hours.\n * @type {number}\n */\n get hours() {\n return this.isValid ? this.values.hours || 0 : NaN;\n }\n\n /**\n * Get the minutes.\n * @type {number}\n */\n get minutes() {\n return this.isValid ? this.values.minutes || 0 : NaN;\n }\n\n /**\n * Get the seconds.\n * @return {number}\n */\n get seconds() {\n return this.isValid ? this.values.seconds || 0 : NaN;\n }\n\n /**\n * Get the milliseconds.\n * @return {number}\n */\n get milliseconds() {\n return this.isValid ? this.values.milliseconds || 0 : NaN;\n }\n\n /**\n * Returns whether the Duration is invalid. Invalid durations are returned by diff operations\n * on invalid DateTimes or Intervals.\n * @return {boolean}\n */\n get isValid() {\n return this.invalid === null;\n }\n\n /**\n * Returns an error code if this Duration became invalid, or null if the Duration is valid\n * @return {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this Duration became invalid, or null if the Duration is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Equality check\n * Two Durations are equal iff they have the same units and the same values for each unit.\n * @param {Duration} other\n * @return {boolean}\n */\n equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n if (!this.loc.equals(other.loc)) {\n return false;\n }\n\n function eq(v1, v2) {\n // Consider 0 and undefined as equal\n if (v1 === undefined || v1 === 0) return v2 === undefined || v2 === 0;\n return v1 === v2;\n }\n\n for (const u of orderedUnits) {\n if (!eq(this.values[u], other.values[u])) {\n return false;\n }\n }\n return true;\n }\n}\n","// these aren't really private, but nor are they really useful to document\n\n/**\n * @private\n */\nclass LuxonError extends Error {}\n\n/**\n * @private\n */\nexport class InvalidDateTimeError extends LuxonError {\n constructor(reason) {\n super(`Invalid DateTime: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidIntervalError extends LuxonError {\n constructor(reason) {\n super(`Invalid Interval: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidDurationError extends LuxonError {\n constructor(reason) {\n super(`Invalid Duration: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class ConflictingSpecificationError extends LuxonError {}\n\n/**\n * @private\n */\nexport class InvalidUnitError extends LuxonError {\n constructor(unit) {\n super(`Invalid unit ${unit}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidArgumentError extends LuxonError {}\n\n/**\n * @private\n */\nexport class ZoneIsAbstractError extends LuxonError {\n constructor() {\n super(\"Zone is an abstract class\");\n }\n}\n","import {\n integerBetween,\n isLeapYear,\n timeObject,\n daysInYear,\n daysInMonth,\n weeksInWeekYear,\n isInteger,\n} from \"./util.js\";\nimport Invalid from \"./invalid.js\";\n\nconst nonLeapLadder = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334],\n leapLadder = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];\n\nfunction unitOutOfRange(unit, value) {\n return new Invalid(\n \"unit out of range\",\n `you specified ${value} (of type ${typeof value}) as a ${unit}, which is invalid`\n );\n}\n\nfunction dayOfWeek(year, month, day) {\n const d = new Date(Date.UTC(year, month - 1, day));\n\n if (year < 100 && year >= 0) {\n d.setUTCFullYear(d.getUTCFullYear() - 1900);\n }\n\n const js = d.getUTCDay();\n\n return js === 0 ? 7 : js;\n}\n\nfunction computeOrdinal(year, month, day) {\n return day + (isLeapYear(year) ? leapLadder : nonLeapLadder)[month - 1];\n}\n\nfunction uncomputeOrdinal(year, ordinal) {\n const table = isLeapYear(year) ? leapLadder : nonLeapLadder,\n month0 = table.findIndex((i) => i < ordinal),\n day = ordinal - table[month0];\n return { month: month0 + 1, day };\n}\n\n/**\n * @private\n */\n\nexport function gregorianToWeek(gregObj) {\n const { year, month, day } = gregObj,\n ordinal = computeOrdinal(year, month, day),\n weekday = dayOfWeek(year, month, day);\n\n let weekNumber = Math.floor((ordinal - weekday + 10) / 7),\n weekYear;\n\n if (weekNumber < 1) {\n weekYear = year - 1;\n weekNumber = weeksInWeekYear(weekYear);\n } else if (weekNumber > weeksInWeekYear(year)) {\n weekYear = year + 1;\n weekNumber = 1;\n } else {\n weekYear = year;\n }\n\n return { weekYear, weekNumber, weekday, ...timeObject(gregObj) };\n}\n\nexport function weekToGregorian(weekData) {\n const { weekYear, weekNumber, weekday } = weekData,\n weekdayOfJan4 = dayOfWeek(weekYear, 1, 4),\n yearInDays = daysInYear(weekYear);\n\n let ordinal = weekNumber * 7 + weekday - weekdayOfJan4 - 3,\n year;\n\n if (ordinal < 1) {\n year = weekYear - 1;\n ordinal += daysInYear(year);\n } else if (ordinal > yearInDays) {\n year = weekYear + 1;\n ordinal -= daysInYear(weekYear);\n } else {\n year = weekYear;\n }\n\n const { month, day } = uncomputeOrdinal(year, ordinal);\n return { year, month, day, ...timeObject(weekData) };\n}\n\nexport function gregorianToOrdinal(gregData) {\n const { year, month, day } = gregData;\n const ordinal = computeOrdinal(year, month, day);\n return { year, ordinal, ...timeObject(gregData) };\n}\n\nexport function ordinalToGregorian(ordinalData) {\n const { year, ordinal } = ordinalData;\n const { month, day } = uncomputeOrdinal(year, ordinal);\n return { year, month, day, ...timeObject(ordinalData) };\n}\n\nexport function hasInvalidWeekData(obj) {\n const validYear = isInteger(obj.weekYear),\n validWeek = integerBetween(obj.weekNumber, 1, weeksInWeekYear(obj.weekYear)),\n validWeekday = integerBetween(obj.weekday, 1, 7);\n\n if (!validYear) {\n return unitOutOfRange(\"weekYear\", obj.weekYear);\n } else if (!validWeek) {\n return unitOutOfRange(\"week\", obj.week);\n } else if (!validWeekday) {\n return unitOutOfRange(\"weekday\", obj.weekday);\n } else return false;\n}\n\nexport function hasInvalidOrdinalData(obj) {\n const validYear = isInteger(obj.year),\n validOrdinal = integerBetween(obj.ordinal, 1, daysInYear(obj.year));\n\n if (!validYear) {\n return unitOutOfRange(\"year\", obj.year);\n } else if (!validOrdinal) {\n return unitOutOfRange(\"ordinal\", obj.ordinal);\n } else return false;\n}\n\nexport function hasInvalidGregorianData(obj) {\n const validYear = isInteger(obj.year),\n validMonth = integerBetween(obj.month, 1, 12),\n validDay = integerBetween(obj.day, 1, daysInMonth(obj.year, obj.month));\n\n if (!validYear) {\n return unitOutOfRange(\"year\", obj.year);\n } else if (!validMonth) {\n return unitOutOfRange(\"month\", obj.month);\n } else if (!validDay) {\n return unitOutOfRange(\"day\", obj.day);\n } else return false;\n}\n\nexport function hasInvalidTimeData(obj) {\n const { hour, minute, second, millisecond } = obj;\n const validHour =\n integerBetween(hour, 0, 23) ||\n (hour === 24 && minute === 0 && second === 0 && millisecond === 0),\n validMinute = integerBetween(minute, 0, 59),\n validSecond = integerBetween(second, 0, 59),\n validMillisecond = integerBetween(millisecond, 0, 999);\n\n if (!validHour) {\n return unitOutOfRange(\"hour\", hour);\n } else if (!validMinute) {\n return unitOutOfRange(\"minute\", minute);\n } else if (!validSecond) {\n return unitOutOfRange(\"second\", second);\n } else if (!validMillisecond) {\n return unitOutOfRange(\"millisecond\", millisecond);\n } else return false;\n}\n","import Duration from \"../duration.js\";\n\nfunction dayDiff(earlier, later) {\n const utcDayStart = (dt) => dt.toUTC(0, { keepLocalTime: true }).startOf(\"day\").valueOf(),\n ms = utcDayStart(later) - utcDayStart(earlier);\n return Math.floor(Duration.fromMillis(ms).as(\"days\"));\n}\n\nfunction highOrderDiffs(cursor, later, units) {\n const differs = [\n [\"years\", (a, b) => b.year - a.year],\n [\"quarters\", (a, b) => b.quarter - a.quarter],\n [\"months\", (a, b) => b.month - a.month + (b.year - a.year) * 12],\n [\n \"weeks\",\n (a, b) => {\n const days = dayDiff(a, b);\n return (days - (days % 7)) / 7;\n },\n ],\n [\"days\", dayDiff],\n ];\n\n const results = {};\n let lowestOrder, highWater;\n\n for (const [unit, differ] of differs) {\n if (units.indexOf(unit) >= 0) {\n lowestOrder = unit;\n\n let delta = differ(cursor, later);\n highWater = cursor.plus({ [unit]: delta });\n\n if (highWater > later) {\n cursor = cursor.plus({ [unit]: delta - 1 });\n delta -= 1;\n } else {\n cursor = highWater;\n }\n\n results[unit] = delta;\n }\n }\n\n return [cursor, results, highWater, lowestOrder];\n}\n\nexport default function (earlier, later, units, opts) {\n let [cursor, results, highWater, lowestOrder] = highOrderDiffs(earlier, later, units);\n\n const remainingMillis = later - cursor;\n\n const lowerOrderUnits = units.filter(\n (u) => [\"hours\", \"minutes\", \"seconds\", \"milliseconds\"].indexOf(u) >= 0\n );\n\n if (lowerOrderUnits.length === 0) {\n if (highWater < later) {\n highWater = cursor.plus({ [lowestOrder]: 1 });\n }\n\n if (highWater !== cursor) {\n results[lowestOrder] = (results[lowestOrder] || 0) + remainingMillis / (highWater - cursor);\n }\n }\n\n const duration = Duration.fromObject(results, opts);\n\n if (lowerOrderUnits.length > 0) {\n return Duration.fromMillis(remainingMillis, opts)\n .shiftTo(...lowerOrderUnits)\n .plus(duration);\n } else {\n return duration;\n }\n}\n","const numberingSystems = {\n arab: \"[\\u0660-\\u0669]\",\n arabext: \"[\\u06F0-\\u06F9]\",\n bali: \"[\\u1B50-\\u1B59]\",\n beng: \"[\\u09E6-\\u09EF]\",\n deva: \"[\\u0966-\\u096F]\",\n fullwide: \"[\\uFF10-\\uFF19]\",\n gujr: \"[\\u0AE6-\\u0AEF]\",\n hanidec: \"[〇|一|二|三|四|五|六|七|八|九]\",\n khmr: \"[\\u17E0-\\u17E9]\",\n knda: \"[\\u0CE6-\\u0CEF]\",\n laoo: \"[\\u0ED0-\\u0ED9]\",\n limb: \"[\\u1946-\\u194F]\",\n mlym: \"[\\u0D66-\\u0D6F]\",\n mong: \"[\\u1810-\\u1819]\",\n mymr: \"[\\u1040-\\u1049]\",\n orya: \"[\\u0B66-\\u0B6F]\",\n tamldec: \"[\\u0BE6-\\u0BEF]\",\n telu: \"[\\u0C66-\\u0C6F]\",\n thai: \"[\\u0E50-\\u0E59]\",\n tibt: \"[\\u0F20-\\u0F29]\",\n latn: \"\\\\d\",\n};\n\nconst numberingSystemsUTF16 = {\n arab: [1632, 1641],\n arabext: [1776, 1785],\n bali: [6992, 7001],\n beng: [2534, 2543],\n deva: [2406, 2415],\n fullwide: [65296, 65303],\n gujr: [2790, 2799],\n khmr: [6112, 6121],\n knda: [3302, 3311],\n laoo: [3792, 3801],\n limb: [6470, 6479],\n mlym: [3430, 3439],\n mong: [6160, 6169],\n mymr: [4160, 4169],\n orya: [2918, 2927],\n tamldec: [3046, 3055],\n telu: [3174, 3183],\n thai: [3664, 3673],\n tibt: [3872, 3881],\n};\n\nconst hanidecChars = numberingSystems.hanidec.replace(/[\\[|\\]]/g, \"\").split(\"\");\n\nexport function parseDigits(str) {\n let value = parseInt(str, 10);\n if (isNaN(value)) {\n value = \"\";\n for (let i = 0; i < str.length; i++) {\n const code = str.charCodeAt(i);\n\n if (str[i].search(numberingSystems.hanidec) !== -1) {\n value += hanidecChars.indexOf(str[i]);\n } else {\n for (const key in numberingSystemsUTF16) {\n const [min, max] = numberingSystemsUTF16[key];\n if (code >= min && code <= max) {\n value += code - min;\n }\n }\n }\n }\n return parseInt(value, 10);\n } else {\n return value;\n }\n}\n\nexport function digitRegex({ numberingSystem }, append = \"\") {\n return new RegExp(`${numberingSystems[numberingSystem || \"latn\"]}${append}`);\n}\n","import * as Formats from \"./formats.js\";\nimport { pick } from \"./util.js\";\n\nfunction stringify(obj) {\n return JSON.stringify(obj, Object.keys(obj).sort());\n}\n\n/**\n * @private\n */\n\nexport const monthsLong = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n];\n\nexport const monthsShort = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n];\n\nexport const monthsNarrow = [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"];\n\nexport function months(length) {\n switch (length) {\n case \"narrow\":\n return [...monthsNarrow];\n case \"short\":\n return [...monthsShort];\n case \"long\":\n return [...monthsLong];\n case \"numeric\":\n return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\"];\n case \"2-digit\":\n return [\"01\", \"02\", \"03\", \"04\", \"05\", \"06\", \"07\", \"08\", \"09\", \"10\", \"11\", \"12\"];\n default:\n return null;\n }\n}\n\nexport const weekdaysLong = [\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n \"Sunday\",\n];\n\nexport const weekdaysShort = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"];\n\nexport const weekdaysNarrow = [\"M\", \"T\", \"W\", \"T\", \"F\", \"S\", \"S\"];\n\nexport function weekdays(length) {\n switch (length) {\n case \"narrow\":\n return [...weekdaysNarrow];\n case \"short\":\n return [...weekdaysShort];\n case \"long\":\n return [...weekdaysLong];\n case \"numeric\":\n return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\"];\n default:\n return null;\n }\n}\n\nexport const meridiems = [\"AM\", \"PM\"];\n\nexport const erasLong = [\"Before Christ\", \"Anno Domini\"];\n\nexport const erasShort = [\"BC\", \"AD\"];\n\nexport const erasNarrow = [\"B\", \"A\"];\n\nexport function eras(length) {\n switch (length) {\n case \"narrow\":\n return [...erasNarrow];\n case \"short\":\n return [...erasShort];\n case \"long\":\n return [...erasLong];\n default:\n return null;\n }\n}\n\nexport function meridiemForDateTime(dt) {\n return meridiems[dt.hour < 12 ? 0 : 1];\n}\n\nexport function weekdayForDateTime(dt, length) {\n return weekdays(length)[dt.weekday - 1];\n}\n\nexport function monthForDateTime(dt, length) {\n return months(length)[dt.month - 1];\n}\n\nexport function eraForDateTime(dt, length) {\n return eras(length)[dt.year < 0 ? 0 : 1];\n}\n\nexport function formatRelativeTime(unit, count, numeric = \"always\", narrow = false) {\n const units = {\n years: [\"year\", \"yr.\"],\n quarters: [\"quarter\", \"qtr.\"],\n months: [\"month\", \"mo.\"],\n weeks: [\"week\", \"wk.\"],\n days: [\"day\", \"day\", \"days\"],\n hours: [\"hour\", \"hr.\"],\n minutes: [\"minute\", \"min.\"],\n seconds: [\"second\", \"sec.\"],\n };\n\n const lastable = [\"hours\", \"minutes\", \"seconds\"].indexOf(unit) === -1;\n\n if (numeric === \"auto\" && lastable) {\n const isDay = unit === \"days\";\n switch (count) {\n case 1:\n return isDay ? \"tomorrow\" : `next ${units[unit][0]}`;\n case -1:\n return isDay ? \"yesterday\" : `last ${units[unit][0]}`;\n case 0:\n return isDay ? \"today\" : `this ${units[unit][0]}`;\n default: // fall through\n }\n }\n\n const isInPast = Object.is(count, -0) || count < 0,\n fmtValue = Math.abs(count),\n singular = fmtValue === 1,\n lilUnits = units[unit],\n fmtUnit = narrow\n ? singular\n ? lilUnits[1]\n : lilUnits[2] || lilUnits[1]\n : singular\n ? units[unit][0]\n : unit;\n return isInPast ? `${fmtValue} ${fmtUnit} ago` : `in ${fmtValue} ${fmtUnit}`;\n}\n\nexport function formatString(knownFormat) {\n // these all have the offsets removed because we don't have access to them\n // without all the intl stuff this is backfilling\n const filtered = pick(knownFormat, [\n \"weekday\",\n \"era\",\n \"year\",\n \"month\",\n \"day\",\n \"hour\",\n \"minute\",\n \"second\",\n \"timeZoneName\",\n \"hourCycle\",\n ]),\n key = stringify(filtered),\n dateTimeHuge = \"EEEE, LLLL d, yyyy, h:mm a\";\n switch (key) {\n case stringify(Formats.DATE_SHORT):\n return \"M/d/yyyy\";\n case stringify(Formats.DATE_MED):\n return \"LLL d, yyyy\";\n case stringify(Formats.DATE_MED_WITH_WEEKDAY):\n return \"EEE, LLL d, yyyy\";\n case stringify(Formats.DATE_FULL):\n return \"LLLL d, yyyy\";\n case stringify(Formats.DATE_HUGE):\n return \"EEEE, LLLL d, yyyy\";\n case stringify(Formats.TIME_SIMPLE):\n return \"h:mm a\";\n case stringify(Formats.TIME_WITH_SECONDS):\n return \"h:mm:ss a\";\n case stringify(Formats.TIME_WITH_SHORT_OFFSET):\n return \"h:mm a\";\n case stringify(Formats.TIME_WITH_LONG_OFFSET):\n return \"h:mm a\";\n case stringify(Formats.TIME_24_SIMPLE):\n return \"HH:mm\";\n case stringify(Formats.TIME_24_WITH_SECONDS):\n return \"HH:mm:ss\";\n case stringify(Formats.TIME_24_WITH_SHORT_OFFSET):\n return \"HH:mm\";\n case stringify(Formats.TIME_24_WITH_LONG_OFFSET):\n return \"HH:mm\";\n case stringify(Formats.DATETIME_SHORT):\n return \"M/d/yyyy, h:mm a\";\n case stringify(Formats.DATETIME_MED):\n return \"LLL d, yyyy, h:mm a\";\n case stringify(Formats.DATETIME_FULL):\n return \"LLLL d, yyyy, h:mm a\";\n case stringify(Formats.DATETIME_HUGE):\n return dateTimeHuge;\n case stringify(Formats.DATETIME_SHORT_WITH_SECONDS):\n return \"M/d/yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_MED_WITH_SECONDS):\n return \"LLL d, yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_MED_WITH_WEEKDAY):\n return \"EEE, d LLL yyyy, h:mm a\";\n case stringify(Formats.DATETIME_FULL_WITH_SECONDS):\n return \"LLLL d, yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_HUGE_WITH_SECONDS):\n return \"EEEE, LLLL d, yyyy, h:mm:ss a\";\n default:\n return dateTimeHuge;\n }\n}\n","/**\n * @private\n */\n\nconst n = \"numeric\",\n s = \"short\",\n l = \"long\";\n\nexport const DATE_SHORT = {\n year: n,\n month: n,\n day: n,\n};\n\nexport const DATE_MED = {\n year: n,\n month: s,\n day: n,\n};\n\nexport const DATE_MED_WITH_WEEKDAY = {\n year: n,\n month: s,\n day: n,\n weekday: s,\n};\n\nexport const DATE_FULL = {\n year: n,\n month: l,\n day: n,\n};\n\nexport const DATE_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n};\n\nexport const TIME_SIMPLE = {\n hour: n,\n minute: n,\n};\n\nexport const TIME_WITH_SECONDS = {\n hour: n,\n minute: n,\n second: n,\n};\n\nexport const TIME_WITH_SHORT_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n timeZoneName: s,\n};\n\nexport const TIME_WITH_LONG_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n timeZoneName: l,\n};\n\nexport const TIME_24_SIMPLE = {\n hour: n,\n minute: n,\n hourCycle: \"h23\",\n};\n\nexport const TIME_24_WITH_SECONDS = {\n hour: n,\n minute: n,\n second: n,\n hourCycle: \"h23\",\n};\n\nexport const TIME_24_WITH_SHORT_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n hourCycle: \"h23\",\n timeZoneName: s,\n};\n\nexport const TIME_24_WITH_LONG_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n hourCycle: \"h23\",\n timeZoneName: l,\n};\n\nexport const DATETIME_SHORT = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: n,\n};\n\nexport const DATETIME_SHORT_WITH_SECONDS = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: n,\n second: n,\n};\n\nexport const DATETIME_MED = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: n,\n};\n\nexport const DATETIME_MED_WITH_SECONDS = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: n,\n second: n,\n};\n\nexport const DATETIME_MED_WITH_WEEKDAY = {\n year: n,\n month: s,\n day: n,\n weekday: s,\n hour: n,\n minute: n,\n};\n\nexport const DATETIME_FULL = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: n,\n timeZoneName: s,\n};\n\nexport const DATETIME_FULL_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: n,\n second: n,\n timeZoneName: s,\n};\n\nexport const DATETIME_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: n,\n timeZoneName: l,\n};\n\nexport const DATETIME_HUGE_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: n,\n second: n,\n timeZoneName: l,\n};\n","import * as English from \"./english.js\";\nimport * as Formats from \"./formats.js\";\nimport { padStart } from \"./util.js\";\n\nfunction stringifyTokens(splits, tokenToString) {\n let s = \"\";\n for (const token of splits) {\n if (token.literal) {\n s += token.val;\n } else {\n s += tokenToString(token.val);\n }\n }\n return s;\n}\n\nconst macroTokenToFormatOpts = {\n D: Formats.DATE_SHORT,\n DD: Formats.DATE_MED,\n DDD: Formats.DATE_FULL,\n DDDD: Formats.DATE_HUGE,\n t: Formats.TIME_SIMPLE,\n tt: Formats.TIME_WITH_SECONDS,\n ttt: Formats.TIME_WITH_SHORT_OFFSET,\n tttt: Formats.TIME_WITH_LONG_OFFSET,\n T: Formats.TIME_24_SIMPLE,\n TT: Formats.TIME_24_WITH_SECONDS,\n TTT: Formats.TIME_24_WITH_SHORT_OFFSET,\n TTTT: Formats.TIME_24_WITH_LONG_OFFSET,\n f: Formats.DATETIME_SHORT,\n ff: Formats.DATETIME_MED,\n fff: Formats.DATETIME_FULL,\n ffff: Formats.DATETIME_HUGE,\n F: Formats.DATETIME_SHORT_WITH_SECONDS,\n FF: Formats.DATETIME_MED_WITH_SECONDS,\n FFF: Formats.DATETIME_FULL_WITH_SECONDS,\n FFFF: Formats.DATETIME_HUGE_WITH_SECONDS,\n};\n\n/**\n * @private\n */\n\nexport default class Formatter {\n static create(locale, opts = {}) {\n return new Formatter(locale, opts);\n }\n\n static parseFormat(fmt) {\n let current = null,\n currentFull = \"\",\n bracketed = false;\n const splits = [];\n for (let i = 0; i < fmt.length; i++) {\n const c = fmt.charAt(i);\n if (c === \"'\") {\n if (currentFull.length > 0) {\n splits.push({ literal: bracketed, val: currentFull });\n }\n current = null;\n currentFull = \"\";\n bracketed = !bracketed;\n } else if (bracketed) {\n currentFull += c;\n } else if (c === current) {\n currentFull += c;\n } else {\n if (currentFull.length > 0) {\n splits.push({ literal: false, val: currentFull });\n }\n currentFull = c;\n current = c;\n }\n }\n\n if (currentFull.length > 0) {\n splits.push({ literal: bracketed, val: currentFull });\n }\n\n return splits;\n }\n\n static macroTokenToFormatOpts(token) {\n return macroTokenToFormatOpts[token];\n }\n\n constructor(locale, formatOpts) {\n this.opts = formatOpts;\n this.loc = locale;\n this.systemLoc = null;\n }\n\n formatWithSystemDefault(dt, opts) {\n if (this.systemLoc === null) {\n this.systemLoc = this.loc.redefaultToSystem();\n }\n const df = this.systemLoc.dtFormatter(dt, { ...this.opts, ...opts });\n return df.format();\n }\n\n formatDateTime(dt, opts = {}) {\n const df = this.loc.dtFormatter(dt, { ...this.opts, ...opts });\n return df.format();\n }\n\n formatDateTimeParts(dt, opts = {}) {\n const df = this.loc.dtFormatter(dt, { ...this.opts, ...opts });\n return df.formatToParts();\n }\n\n resolvedOptions(dt, opts = {}) {\n const df = this.loc.dtFormatter(dt, { ...this.opts, ...opts });\n return df.resolvedOptions();\n }\n\n num(n, p = 0) {\n // we get some perf out of doing this here, annoyingly\n if (this.opts.forceSimple) {\n return padStart(n, p);\n }\n\n const opts = { ...this.opts };\n\n if (p > 0) {\n opts.padTo = p;\n }\n\n return this.loc.numberFormatter(opts).format(n);\n }\n\n formatDateTimeFromString(dt, fmt) {\n const knownEnglish = this.loc.listingMode() === \"en\",\n useDateTimeFormatter = this.loc.outputCalendar && this.loc.outputCalendar !== \"gregory\",\n string = (opts, extract) => this.loc.extract(dt, opts, extract),\n formatOffset = (opts) => {\n if (dt.isOffsetFixed && dt.offset === 0 && opts.allowZ) {\n return \"Z\";\n }\n\n return dt.isValid ? dt.zone.formatOffset(dt.ts, opts.format) : \"\";\n },\n meridiem = () =>\n knownEnglish\n ? English.meridiemForDateTime(dt)\n : string({ hour: \"numeric\", hourCycle: \"h12\" }, \"dayperiod\"),\n month = (length, standalone) =>\n knownEnglish\n ? English.monthForDateTime(dt, length)\n : string(standalone ? { month: length } : { month: length, day: \"numeric\" }, \"month\"),\n weekday = (length, standalone) =>\n knownEnglish\n ? English.weekdayForDateTime(dt, length)\n : string(\n standalone ? { weekday: length } : { weekday: length, month: \"long\", day: \"numeric\" },\n \"weekday\"\n ),\n maybeMacro = (token) => {\n const formatOpts = Formatter.macroTokenToFormatOpts(token);\n if (formatOpts) {\n return this.formatWithSystemDefault(dt, formatOpts);\n } else {\n return token;\n }\n },\n era = (length) =>\n knownEnglish ? English.eraForDateTime(dt, length) : string({ era: length }, \"era\"),\n tokenToString = (token) => {\n // Where possible: http://cldr.unicode.org/translation/date-time-1/date-time#TOC-Standalone-vs.-Format-Styles\n switch (token) {\n // ms\n case \"S\":\n return this.num(dt.millisecond);\n case \"u\":\n // falls through\n case \"SSS\":\n return this.num(dt.millisecond, 3);\n // seconds\n case \"s\":\n return this.num(dt.second);\n case \"ss\":\n return this.num(dt.second, 2);\n // fractional seconds\n case \"uu\":\n return this.num(Math.floor(dt.millisecond / 10), 2);\n case \"uuu\":\n return this.num(Math.floor(dt.millisecond / 100));\n // minutes\n case \"m\":\n return this.num(dt.minute);\n case \"mm\":\n return this.num(dt.minute, 2);\n // hours\n case \"h\":\n return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12);\n case \"hh\":\n return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12, 2);\n case \"H\":\n return this.num(dt.hour);\n case \"HH\":\n return this.num(dt.hour, 2);\n // offset\n case \"Z\":\n // like +6\n return formatOffset({ format: \"narrow\", allowZ: this.opts.allowZ });\n case \"ZZ\":\n // like +06:00\n return formatOffset({ format: \"short\", allowZ: this.opts.allowZ });\n case \"ZZZ\":\n // like +0600\n return formatOffset({ format: \"techie\", allowZ: this.opts.allowZ });\n case \"ZZZZ\":\n // like EST\n return dt.zone.offsetName(dt.ts, { format: \"short\", locale: this.loc.locale });\n case \"ZZZZZ\":\n // like Eastern Standard Time\n return dt.zone.offsetName(dt.ts, { format: \"long\", locale: this.loc.locale });\n // zone\n case \"z\":\n // like America/New_York\n return dt.zoneName;\n // meridiems\n case \"a\":\n return meridiem();\n // dates\n case \"d\":\n return useDateTimeFormatter ? string({ day: \"numeric\" }, \"day\") : this.num(dt.day);\n case \"dd\":\n return useDateTimeFormatter ? string({ day: \"2-digit\" }, \"day\") : this.num(dt.day, 2);\n // weekdays - standalone\n case \"c\":\n // like 1\n return this.num(dt.weekday);\n case \"ccc\":\n // like 'Tues'\n return weekday(\"short\", true);\n case \"cccc\":\n // like 'Tuesday'\n return weekday(\"long\", true);\n case \"ccccc\":\n // like 'T'\n return weekday(\"narrow\", true);\n // weekdays - format\n case \"E\":\n // like 1\n return this.num(dt.weekday);\n case \"EEE\":\n // like 'Tues'\n return weekday(\"short\", false);\n case \"EEEE\":\n // like 'Tuesday'\n return weekday(\"long\", false);\n case \"EEEEE\":\n // like 'T'\n return weekday(\"narrow\", false);\n // months - standalone\n case \"L\":\n // like 1\n return useDateTimeFormatter\n ? string({ month: \"numeric\", day: \"numeric\" }, \"month\")\n : this.num(dt.month);\n case \"LL\":\n // like 01, doesn't seem to work\n return useDateTimeFormatter\n ? string({ month: \"2-digit\", day: \"numeric\" }, \"month\")\n : this.num(dt.month, 2);\n case \"LLL\":\n // like Jan\n return month(\"short\", true);\n case \"LLLL\":\n // like January\n return month(\"long\", true);\n case \"LLLLL\":\n // like J\n return month(\"narrow\", true);\n // months - format\n case \"M\":\n // like 1\n return useDateTimeFormatter\n ? string({ month: \"numeric\" }, \"month\")\n : this.num(dt.month);\n case \"MM\":\n // like 01\n return useDateTimeFormatter\n ? string({ month: \"2-digit\" }, \"month\")\n : this.num(dt.month, 2);\n case \"MMM\":\n // like Jan\n return month(\"short\", false);\n case \"MMMM\":\n // like January\n return month(\"long\", false);\n case \"MMMMM\":\n // like J\n return month(\"narrow\", false);\n // years\n case \"y\":\n // like 2014\n return useDateTimeFormatter ? string({ year: \"numeric\" }, \"year\") : this.num(dt.year);\n case \"yy\":\n // like 14\n return useDateTimeFormatter\n ? string({ year: \"2-digit\" }, \"year\")\n : this.num(dt.year.toString().slice(-2), 2);\n case \"yyyy\":\n // like 0012\n return useDateTimeFormatter\n ? string({ year: \"numeric\" }, \"year\")\n : this.num(dt.year, 4);\n case \"yyyyyy\":\n // like 000012\n return useDateTimeFormatter\n ? string({ year: \"numeric\" }, \"year\")\n : this.num(dt.year, 6);\n // eras\n case \"G\":\n // like AD\n return era(\"short\");\n case \"GG\":\n // like Anno Domini\n return era(\"long\");\n case \"GGGGG\":\n return era(\"narrow\");\n case \"kk\":\n return this.num(dt.weekYear.toString().slice(-2), 2);\n case \"kkkk\":\n return this.num(dt.weekYear, 4);\n case \"W\":\n return this.num(dt.weekNumber);\n case \"WW\":\n return this.num(dt.weekNumber, 2);\n case \"o\":\n return this.num(dt.ordinal);\n case \"ooo\":\n return this.num(dt.ordinal, 3);\n case \"q\":\n // like 1\n return this.num(dt.quarter);\n case \"qq\":\n // like 01\n return this.num(dt.quarter, 2);\n case \"X\":\n return this.num(Math.floor(dt.ts / 1000));\n case \"x\":\n return this.num(dt.ts);\n default:\n return maybeMacro(token);\n }\n };\n\n return stringifyTokens(Formatter.parseFormat(fmt), tokenToString);\n }\n\n formatDurationFromString(dur, fmt) {\n const tokenToField = (token) => {\n switch (token[0]) {\n case \"S\":\n return \"millisecond\";\n case \"s\":\n return \"second\";\n case \"m\":\n return \"minute\";\n case \"h\":\n return \"hour\";\n case \"d\":\n return \"day\";\n case \"w\":\n return \"week\";\n case \"M\":\n return \"month\";\n case \"y\":\n return \"year\";\n default:\n return null;\n }\n },\n tokenToString = (lildur) => (token) => {\n const mapped = tokenToField(token);\n if (mapped) {\n return this.num(lildur.get(mapped), token.length);\n } else {\n return token;\n }\n },\n tokens = Formatter.parseFormat(fmt),\n realTokens = tokens.reduce(\n (found, { literal, val }) => (literal ? found : found.concat(val)),\n []\n ),\n collapsed = dur.shiftTo(...realTokens.map(tokenToField).filter((t) => t));\n return stringifyTokens(tokens, tokenToString(collapsed));\n }\n}\n","export default class Invalid {\n constructor(reason, explanation) {\n this.reason = reason;\n this.explanation = explanation;\n }\n\n toMessage() {\n if (this.explanation) {\n return `${this.reason}: ${this.explanation}`;\n } else {\n return this.reason;\n }\n }\n}\n","import { padStart, roundTo, hasRelative } from \"./util.js\";\nimport * as English from \"./english.js\";\nimport Settings from \"../settings.js\";\nimport DateTime from \"../datetime.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\n\n// todo - remap caching\n\nlet intlLFCache = {};\nfunction getCachedLF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let dtf = intlLFCache[key];\n if (!dtf) {\n dtf = new Intl.ListFormat(locString, opts);\n intlLFCache[key] = dtf;\n }\n return dtf;\n}\n\nlet intlDTCache = {};\nfunction getCachedDTF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let dtf = intlDTCache[key];\n if (!dtf) {\n dtf = new Intl.DateTimeFormat(locString, opts);\n intlDTCache[key] = dtf;\n }\n return dtf;\n}\n\nlet intlNumCache = {};\nfunction getCachedINF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let inf = intlNumCache[key];\n if (!inf) {\n inf = new Intl.NumberFormat(locString, opts);\n intlNumCache[key] = inf;\n }\n return inf;\n}\n\nlet intlRelCache = {};\nfunction getCachedRTF(locString, opts = {}) {\n const { base, ...cacheKeyOpts } = opts; // exclude `base` from the options\n const key = JSON.stringify([locString, cacheKeyOpts]);\n let inf = intlRelCache[key];\n if (!inf) {\n inf = new Intl.RelativeTimeFormat(locString, opts);\n intlRelCache[key] = inf;\n }\n return inf;\n}\n\nlet sysLocaleCache = null;\nfunction systemLocale() {\n if (sysLocaleCache) {\n return sysLocaleCache;\n } else {\n sysLocaleCache = new Intl.DateTimeFormat().resolvedOptions().locale;\n return sysLocaleCache;\n }\n}\n\nfunction parseLocaleString(localeStr) {\n // I really want to avoid writing a BCP 47 parser\n // see, e.g. https://github.com/wooorm/bcp-47\n // Instead, we'll do this:\n\n // a) if the string has no -u extensions, just leave it alone\n // b) if it does, use Intl to resolve everything\n // c) if Intl fails, try again without the -u\n\n const uIndex = localeStr.indexOf(\"-u-\");\n if (uIndex === -1) {\n return [localeStr];\n } else {\n let options;\n const smaller = localeStr.substring(0, uIndex);\n try {\n options = getCachedDTF(localeStr).resolvedOptions();\n } catch (e) {\n options = getCachedDTF(smaller).resolvedOptions();\n }\n\n const { numberingSystem, calendar } = options;\n // return the smaller one so that we can append the calendar and numbering overrides to it\n return [smaller, numberingSystem, calendar];\n }\n}\n\nfunction intlConfigString(localeStr, numberingSystem, outputCalendar) {\n if (outputCalendar || numberingSystem) {\n localeStr += \"-u\";\n\n if (outputCalendar) {\n localeStr += `-ca-${outputCalendar}`;\n }\n\n if (numberingSystem) {\n localeStr += `-nu-${numberingSystem}`;\n }\n return localeStr;\n } else {\n return localeStr;\n }\n}\n\nfunction mapMonths(f) {\n const ms = [];\n for (let i = 1; i <= 12; i++) {\n const dt = DateTime.utc(2016, i, 1);\n ms.push(f(dt));\n }\n return ms;\n}\n\nfunction mapWeekdays(f) {\n const ms = [];\n for (let i = 1; i <= 7; i++) {\n const dt = DateTime.utc(2016, 11, 13 + i);\n ms.push(f(dt));\n }\n return ms;\n}\n\nfunction listStuff(loc, length, defaultOK, englishFn, intlFn) {\n const mode = loc.listingMode(defaultOK);\n\n if (mode === \"error\") {\n return null;\n } else if (mode === \"en\") {\n return englishFn(length);\n } else {\n return intlFn(length);\n }\n}\n\nfunction supportsFastNumbers(loc) {\n if (loc.numberingSystem && loc.numberingSystem !== \"latn\") {\n return false;\n } else {\n return (\n loc.numberingSystem === \"latn\" ||\n !loc.locale ||\n loc.locale.startsWith(\"en\") ||\n new Intl.DateTimeFormat(loc.intl).resolvedOptions().numberingSystem === \"latn\"\n );\n }\n}\n\n/**\n * @private\n */\n\nclass PolyNumberFormatter {\n constructor(intl, forceSimple, opts) {\n this.padTo = opts.padTo || 0;\n this.floor = opts.floor || false;\n\n const { padTo, floor, ...otherOpts } = opts;\n\n if (!forceSimple || Object.keys(otherOpts).length > 0) {\n const intlOpts = { useGrouping: false, ...opts };\n if (opts.padTo > 0) intlOpts.minimumIntegerDigits = opts.padTo;\n this.inf = getCachedINF(intl, intlOpts);\n }\n }\n\n format(i) {\n if (this.inf) {\n const fixed = this.floor ? Math.floor(i) : i;\n return this.inf.format(fixed);\n } else {\n // to match the browser's numberformatter defaults\n const fixed = this.floor ? Math.floor(i) : roundTo(i, 3);\n return padStart(fixed, this.padTo);\n }\n }\n}\n\n/**\n * @private\n */\n\nclass PolyDateFormatter {\n constructor(dt, intl, opts) {\n this.opts = opts;\n\n let z;\n if (dt.zone.isUniversal) {\n // UTC-8 or Etc/UTC-8 are not part of tzdata, only Etc/GMT+8 and the like.\n // That is why fixed-offset TZ is set to that unless it is:\n // 1. Representing offset 0 when UTC is used to maintain previous behavior and does not become GMT.\n // 2. Unsupported by the browser:\n // - some do not support Etc/\n // - < Etc/GMT-14, > Etc/GMT+12, and 30-minute or 45-minute offsets are not part of tzdata\n const gmtOffset = -1 * (dt.offset / 60);\n const offsetZ = gmtOffset >= 0 ? `Etc/GMT+${gmtOffset}` : `Etc/GMT${gmtOffset}`;\n if (dt.offset !== 0 && IANAZone.create(offsetZ).valid) {\n z = offsetZ;\n this.dt = dt;\n } else {\n // Not all fixed-offset zones like Etc/+4:30 are present in tzdata.\n // So we have to make do. Two cases:\n // 1. The format options tell us to show the zone. We can't do that, so the best\n // we can do is format the date in UTC.\n // 2. The format options don't tell us to show the zone. Then we can adjust them\n // the time and tell the formatter to show it to us in UTC, so that the time is right\n // and the bad zone doesn't show up.\n z = \"UTC\";\n if (opts.timeZoneName) {\n this.dt = dt;\n } else {\n this.dt = dt.offset === 0 ? dt : DateTime.fromMillis(dt.ts + dt.offset * 60 * 1000);\n }\n }\n } else if (dt.zone.type === \"system\") {\n this.dt = dt;\n } else {\n this.dt = dt;\n z = dt.zone.name;\n }\n\n const intlOpts = { ...this.opts };\n if (z) {\n intlOpts.timeZone = z;\n }\n this.dtf = getCachedDTF(intl, intlOpts);\n }\n\n format() {\n return this.dtf.format(this.dt.toJSDate());\n }\n\n formatToParts() {\n return this.dtf.formatToParts(this.dt.toJSDate());\n }\n\n resolvedOptions() {\n return this.dtf.resolvedOptions();\n }\n}\n\n/**\n * @private\n */\nclass PolyRelFormatter {\n constructor(intl, isEnglish, opts) {\n this.opts = { style: \"long\", ...opts };\n if (!isEnglish && hasRelative()) {\n this.rtf = getCachedRTF(intl, opts);\n }\n }\n\n format(count, unit) {\n if (this.rtf) {\n return this.rtf.format(count, unit);\n } else {\n return English.formatRelativeTime(unit, count, this.opts.numeric, this.opts.style !== \"long\");\n }\n }\n\n formatToParts(count, unit) {\n if (this.rtf) {\n return this.rtf.formatToParts(count, unit);\n } else {\n return [];\n }\n }\n}\n\n/**\n * @private\n */\n\nexport default class Locale {\n static fromOpts(opts) {\n return Locale.create(opts.locale, opts.numberingSystem, opts.outputCalendar, opts.defaultToEN);\n }\n\n static create(locale, numberingSystem, outputCalendar, defaultToEN = false) {\n const specifiedLocale = locale || Settings.defaultLocale;\n // the system locale is useful for human readable strings but annoying for parsing/formatting known formats\n const localeR = specifiedLocale || (defaultToEN ? \"en-US\" : systemLocale());\n const numberingSystemR = numberingSystem || Settings.defaultNumberingSystem;\n const outputCalendarR = outputCalendar || Settings.defaultOutputCalendar;\n return new Locale(localeR, numberingSystemR, outputCalendarR, specifiedLocale);\n }\n\n static resetCache() {\n sysLocaleCache = null;\n intlDTCache = {};\n intlNumCache = {};\n intlRelCache = {};\n }\n\n static fromObject({ locale, numberingSystem, outputCalendar } = {}) {\n return Locale.create(locale, numberingSystem, outputCalendar);\n }\n\n constructor(locale, numbering, outputCalendar, specifiedLocale) {\n const [parsedLocale, parsedNumberingSystem, parsedOutputCalendar] = parseLocaleString(locale);\n\n this.locale = parsedLocale;\n this.numberingSystem = numbering || parsedNumberingSystem || null;\n this.outputCalendar = outputCalendar || parsedOutputCalendar || null;\n this.intl = intlConfigString(this.locale, this.numberingSystem, this.outputCalendar);\n\n this.weekdaysCache = { format: {}, standalone: {} };\n this.monthsCache = { format: {}, standalone: {} };\n this.meridiemCache = null;\n this.eraCache = {};\n\n this.specifiedLocale = specifiedLocale;\n this.fastNumbersCached = null;\n }\n\n get fastNumbers() {\n if (this.fastNumbersCached == null) {\n this.fastNumbersCached = supportsFastNumbers(this);\n }\n\n return this.fastNumbersCached;\n }\n\n listingMode() {\n const isActuallyEn = this.isEnglish();\n const hasNoWeirdness =\n (this.numberingSystem === null || this.numberingSystem === \"latn\") &&\n (this.outputCalendar === null || this.outputCalendar === \"gregory\");\n return isActuallyEn && hasNoWeirdness ? \"en\" : \"intl\";\n }\n\n clone(alts) {\n if (!alts || Object.getOwnPropertyNames(alts).length === 0) {\n return this;\n } else {\n return Locale.create(\n alts.locale || this.specifiedLocale,\n alts.numberingSystem || this.numberingSystem,\n alts.outputCalendar || this.outputCalendar,\n alts.defaultToEN || false\n );\n }\n }\n\n redefaultToEN(alts = {}) {\n return this.clone({ ...alts, defaultToEN: true });\n }\n\n redefaultToSystem(alts = {}) {\n return this.clone({ ...alts, defaultToEN: false });\n }\n\n months(length, format = false, defaultOK = true) {\n return listStuff(this, length, defaultOK, English.months, () => {\n const intl = format ? { month: length, day: \"numeric\" } : { month: length },\n formatStr = format ? \"format\" : \"standalone\";\n if (!this.monthsCache[formatStr][length]) {\n this.monthsCache[formatStr][length] = mapMonths((dt) => this.extract(dt, intl, \"month\"));\n }\n return this.monthsCache[formatStr][length];\n });\n }\n\n weekdays(length, format = false, defaultOK = true) {\n return listStuff(this, length, defaultOK, English.weekdays, () => {\n const intl = format\n ? { weekday: length, year: \"numeric\", month: \"long\", day: \"numeric\" }\n : { weekday: length },\n formatStr = format ? \"format\" : \"standalone\";\n if (!this.weekdaysCache[formatStr][length]) {\n this.weekdaysCache[formatStr][length] = mapWeekdays((dt) =>\n this.extract(dt, intl, \"weekday\")\n );\n }\n return this.weekdaysCache[formatStr][length];\n });\n }\n\n meridiems(defaultOK = true) {\n return listStuff(\n this,\n undefined,\n defaultOK,\n () => English.meridiems,\n () => {\n // In theory there could be aribitrary day periods. We're gonna assume there are exactly two\n // for AM and PM. This is probably wrong, but it's makes parsing way easier.\n if (!this.meridiemCache) {\n const intl = { hour: \"numeric\", hourCycle: \"h12\" };\n this.meridiemCache = [DateTime.utc(2016, 11, 13, 9), DateTime.utc(2016, 11, 13, 19)].map(\n (dt) => this.extract(dt, intl, \"dayperiod\")\n );\n }\n\n return this.meridiemCache;\n }\n );\n }\n\n eras(length, defaultOK = true) {\n return listStuff(this, length, defaultOK, English.eras, () => {\n const intl = { era: length };\n\n // This is problematic. Different calendars are going to define eras totally differently. What I need is the minimum set of dates\n // to definitely enumerate them.\n if (!this.eraCache[length]) {\n this.eraCache[length] = [DateTime.utc(-40, 1, 1), DateTime.utc(2017, 1, 1)].map((dt) =>\n this.extract(dt, intl, \"era\")\n );\n }\n\n return this.eraCache[length];\n });\n }\n\n extract(dt, intlOpts, field) {\n const df = this.dtFormatter(dt, intlOpts),\n results = df.formatToParts(),\n matching = results.find((m) => m.type.toLowerCase() === field);\n return matching ? matching.value : null;\n }\n\n numberFormatter(opts = {}) {\n // this forcesimple option is never used (the only caller short-circuits on it, but it seems safer to leave)\n // (in contrast, the rest of the condition is used heavily)\n return new PolyNumberFormatter(this.intl, opts.forceSimple || this.fastNumbers, opts);\n }\n\n dtFormatter(dt, intlOpts = {}) {\n return new PolyDateFormatter(dt, this.intl, intlOpts);\n }\n\n relFormatter(opts = {}) {\n return new PolyRelFormatter(this.intl, this.isEnglish(), opts);\n }\n\n listFormatter(opts = {}) {\n return getCachedLF(this.intl, opts);\n }\n\n isEnglish() {\n return (\n this.locale === \"en\" ||\n this.locale.toLowerCase() === \"en-us\" ||\n new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith(\"en-us\")\n );\n }\n\n equals(other) {\n return (\n this.locale === other.locale &&\n this.numberingSystem === other.numberingSystem &&\n this.outputCalendar === other.outputCalendar\n );\n }\n}\n","import {\n untruncateYear,\n signedOffset,\n parseInteger,\n parseMillis,\n ianaRegex,\n isUndefined,\n parseFloating,\n} from \"./util.js\";\nimport * as English from \"./english.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\n\n/*\n * This file handles parsing for well-specified formats. Here's how it works:\n * Two things go into parsing: a regex to match with and an extractor to take apart the groups in the match.\n * An extractor is just a function that takes a regex match array and returns a { year: ..., month: ... } object\n * parse() does the work of executing the regex and applying the extractor. It takes multiple regex/extractor pairs to try in sequence.\n * Extractors can take a \"cursor\" representing the offset in the match to look at. This makes it easy to combine extractors.\n * combineExtractors() does the work of combining them, keeping track of the cursor through multiple extractions.\n * Some extractions are super dumb and simpleParse and fromStrings help DRY them.\n */\n\nfunction combineRegexes(...regexes) {\n const full = regexes.reduce((f, r) => f + r.source, \"\");\n return RegExp(`^${full}$`);\n}\n\nfunction combineExtractors(...extractors) {\n return (m) =>\n extractors\n .reduce(\n ([mergedVals, mergedZone, cursor], ex) => {\n const [val, zone, next] = ex(m, cursor);\n return [{ ...mergedVals, ...val }, zone || mergedZone, next];\n },\n [{}, null, 1]\n )\n .slice(0, 2);\n}\n\nfunction parse(s, ...patterns) {\n if (s == null) {\n return [null, null];\n }\n\n for (const [regex, extractor] of patterns) {\n const m = regex.exec(s);\n if (m) {\n return extractor(m);\n }\n }\n return [null, null];\n}\n\nfunction simpleParse(...keys) {\n return (match, cursor) => {\n const ret = {};\n let i;\n\n for (i = 0; i < keys.length; i++) {\n ret[keys[i]] = parseInteger(match[cursor + i]);\n }\n return [ret, null, cursor + i];\n };\n}\n\n// ISO and SQL parsing\nconst offsetRegex = /(?:(Z)|([+-]\\d\\d)(?::?(\\d\\d))?)/;\nconst isoExtendedZone = `(?:${offsetRegex.source}?(?:\\\\[(${ianaRegex.source})\\\\])?)?`;\nconst isoTimeBaseRegex = /(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:[.,](\\d{1,30}))?)?)?/;\nconst isoTimeRegex = RegExp(`${isoTimeBaseRegex.source}${isoExtendedZone}`);\nconst isoTimeExtensionRegex = RegExp(`(?:T${isoTimeRegex.source})?`);\nconst isoYmdRegex = /([+-]\\d{6}|\\d{4})(?:-?(\\d\\d)(?:-?(\\d\\d))?)?/;\nconst isoWeekRegex = /(\\d{4})-?W(\\d\\d)(?:-?(\\d))?/;\nconst isoOrdinalRegex = /(\\d{4})-?(\\d{3})/;\nconst extractISOWeekData = simpleParse(\"weekYear\", \"weekNumber\", \"weekDay\");\nconst extractISOOrdinalData = simpleParse(\"year\", \"ordinal\");\nconst sqlYmdRegex = /(\\d{4})-(\\d\\d)-(\\d\\d)/; // dumbed-down version of the ISO one\nconst sqlTimeRegex = RegExp(\n `${isoTimeBaseRegex.source} ?(?:${offsetRegex.source}|(${ianaRegex.source}))?`\n);\nconst sqlTimeExtensionRegex = RegExp(`(?: ${sqlTimeRegex.source})?`);\n\nfunction int(match, pos, fallback) {\n const m = match[pos];\n return isUndefined(m) ? fallback : parseInteger(m);\n}\n\nfunction extractISOYmd(match, cursor) {\n const item = {\n year: int(match, cursor),\n month: int(match, cursor + 1, 1),\n day: int(match, cursor + 2, 1),\n };\n\n return [item, null, cursor + 3];\n}\n\nfunction extractISOTime(match, cursor) {\n const item = {\n hours: int(match, cursor, 0),\n minutes: int(match, cursor + 1, 0),\n seconds: int(match, cursor + 2, 0),\n milliseconds: parseMillis(match[cursor + 3]),\n };\n\n return [item, null, cursor + 4];\n}\n\nfunction extractISOOffset(match, cursor) {\n const local = !match[cursor] && !match[cursor + 1],\n fullOffset = signedOffset(match[cursor + 1], match[cursor + 2]),\n zone = local ? null : FixedOffsetZone.instance(fullOffset);\n return [{}, zone, cursor + 3];\n}\n\nfunction extractIANAZone(match, cursor) {\n const zone = match[cursor] ? IANAZone.create(match[cursor]) : null;\n return [{}, zone, cursor + 1];\n}\n\n// ISO time parsing\n\nconst isoTimeOnly = RegExp(`^T?${isoTimeBaseRegex.source}$`);\n\n// ISO duration parsing\n\nconst isoDuration =\n /^-?P(?:(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)Y)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)M)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)W)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)D)?(?:T(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)H)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)M)?(?:(-?\\d{1,20})(?:[.,](-?\\d{1,20}))?S)?)?)$/;\n\nfunction extractISODuration(match) {\n const [s, yearStr, monthStr, weekStr, dayStr, hourStr, minuteStr, secondStr, millisecondsStr] =\n match;\n\n const hasNegativePrefix = s[0] === \"-\";\n const negativeSeconds = secondStr && secondStr[0] === \"-\";\n\n const maybeNegate = (num, force = false) =>\n num !== undefined && (force || (num && hasNegativePrefix)) ? -num : num;\n\n return [\n {\n years: maybeNegate(parseFloating(yearStr)),\n months: maybeNegate(parseFloating(monthStr)),\n weeks: maybeNegate(parseFloating(weekStr)),\n days: maybeNegate(parseFloating(dayStr)),\n hours: maybeNegate(parseFloating(hourStr)),\n minutes: maybeNegate(parseFloating(minuteStr)),\n seconds: maybeNegate(parseFloating(secondStr), secondStr === \"-0\"),\n milliseconds: maybeNegate(parseMillis(millisecondsStr), negativeSeconds),\n },\n ];\n}\n\n// These are a little braindead. EDT *should* tell us that we're in, say, America/New_York\n// and not just that we're in -240 *right now*. But since I don't think these are used that often\n// I'm just going to ignore that\nconst obsOffsets = {\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n};\n\nfunction fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n const result = {\n year: yearStr.length === 2 ? untruncateYear(parseInteger(yearStr)) : parseInteger(yearStr),\n month: English.monthsShort.indexOf(monthStr) + 1,\n day: parseInteger(dayStr),\n hour: parseInteger(hourStr),\n minute: parseInteger(minuteStr),\n };\n\n if (secondStr) result.second = parseInteger(secondStr);\n if (weekdayStr) {\n result.weekday =\n weekdayStr.length > 3\n ? English.weekdaysLong.indexOf(weekdayStr) + 1\n : English.weekdaysShort.indexOf(weekdayStr) + 1;\n }\n\n return result;\n}\n\n// RFC 2822/5322\nconst rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\\d\\d)(\\d\\d)))$/;\n\nfunction extractRFC2822(match) {\n const [\n ,\n weekdayStr,\n dayStr,\n monthStr,\n yearStr,\n hourStr,\n minuteStr,\n secondStr,\n obsOffset,\n milOffset,\n offHourStr,\n offMinuteStr,\n ] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n\n let offset;\n if (obsOffset) {\n offset = obsOffsets[obsOffset];\n } else if (milOffset) {\n offset = 0;\n } else {\n offset = signedOffset(offHourStr, offMinuteStr);\n }\n\n return [result, new FixedOffsetZone(offset)];\n}\n\nfunction preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^)]*\\)|[\\n\\t]/g, \" \")\n .replace(/(\\s\\s+)/g, \" \")\n .trim();\n}\n\n// http date\n\nconst rfc1123 =\n /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\\d\\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\\d{4}) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n rfc850 =\n /^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\\d\\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n ascii =\n /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \\d|\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) (\\d{4})$/;\n\nfunction extractRFC1123Or850(match) {\n const [, weekdayStr, dayStr, monthStr, yearStr, hourStr, minuteStr, secondStr] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nfunction extractASCII(match) {\n const [, weekdayStr, monthStr, dayStr, hourStr, minuteStr, secondStr, yearStr] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nconst isoYmdWithTimeExtensionRegex = combineRegexes(isoYmdRegex, isoTimeExtensionRegex);\nconst isoWeekWithTimeExtensionRegex = combineRegexes(isoWeekRegex, isoTimeExtensionRegex);\nconst isoOrdinalWithTimeExtensionRegex = combineRegexes(isoOrdinalRegex, isoTimeExtensionRegex);\nconst isoTimeCombinedRegex = combineRegexes(isoTimeRegex);\n\nconst extractISOYmdTimeAndOffset = combineExtractors(\n extractISOYmd,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOWeekTimeAndOffset = combineExtractors(\n extractISOWeekData,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOOrdinalDateAndTime = combineExtractors(\n extractISOOrdinalData,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOTimeAndOffset = combineExtractors(\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\n\n/*\n * @private\n */\n\nexport function parseISODate(s) {\n return parse(\n s,\n [isoYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset],\n [isoWeekWithTimeExtensionRegex, extractISOWeekTimeAndOffset],\n [isoOrdinalWithTimeExtensionRegex, extractISOOrdinalDateAndTime],\n [isoTimeCombinedRegex, extractISOTimeAndOffset]\n );\n}\n\nexport function parseRFC2822Date(s) {\n return parse(preprocessRFC2822(s), [rfc2822, extractRFC2822]);\n}\n\nexport function parseHTTPDate(s) {\n return parse(\n s,\n [rfc1123, extractRFC1123Or850],\n [rfc850, extractRFC1123Or850],\n [ascii, extractASCII]\n );\n}\n\nexport function parseISODuration(s) {\n return parse(s, [isoDuration, extractISODuration]);\n}\n\nconst extractISOTimeOnly = combineExtractors(extractISOTime);\n\nexport function parseISOTimeOnly(s) {\n return parse(s, [isoTimeOnly, extractISOTimeOnly]);\n}\n\nconst sqlYmdWithTimeExtensionRegex = combineRegexes(sqlYmdRegex, sqlTimeExtensionRegex);\nconst sqlTimeCombinedRegex = combineRegexes(sqlTimeRegex);\n\nconst extractISOTimeOffsetAndIANAZone = combineExtractors(\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\n\nexport function parseSQL(s) {\n return parse(\n s,\n [sqlYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset],\n [sqlTimeCombinedRegex, extractISOTimeOffsetAndIANAZone]\n );\n}\n","import { parseMillis, isUndefined, untruncateYear, signedOffset, hasOwnProperty } from \"./util.js\";\nimport Formatter from \"./formatter.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\nimport DateTime from \"../datetime.js\";\nimport { digitRegex, parseDigits } from \"./digits.js\";\nimport { ConflictingSpecificationError } from \"../errors.js\";\n\nconst MISSING_FTP = \"missing Intl.DateTimeFormat.formatToParts support\";\n\nfunction intUnit(regex, post = (i) => i) {\n return { regex, deser: ([s]) => post(parseDigits(s)) };\n}\n\nconst NBSP = String.fromCharCode(160);\nconst spaceOrNBSP = `[ ${NBSP}]`;\nconst spaceOrNBSPRegExp = new RegExp(spaceOrNBSP, \"g\");\n\nfunction fixListRegex(s) {\n // make dots optional and also make them literal\n // make space and non breakable space characters interchangeable\n return s.replace(/\\./g, \"\\\\.?\").replace(spaceOrNBSPRegExp, spaceOrNBSP);\n}\n\nfunction stripInsensitivities(s) {\n return s\n .replace(/\\./g, \"\") // ignore dots that were made optional\n .replace(spaceOrNBSPRegExp, \" \") // interchange space and nbsp\n .toLowerCase();\n}\n\nfunction oneOf(strings, startIndex) {\n if (strings === null) {\n return null;\n } else {\n return {\n regex: RegExp(strings.map(fixListRegex).join(\"|\")),\n deser: ([s]) =>\n strings.findIndex((i) => stripInsensitivities(s) === stripInsensitivities(i)) + startIndex,\n };\n }\n}\n\nfunction offset(regex, groups) {\n return { regex, deser: ([, h, m]) => signedOffset(h, m), groups };\n}\n\nfunction simple(regex) {\n return { regex, deser: ([s]) => s };\n}\n\nfunction escapeToken(value) {\n return value.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\");\n}\n\nfunction unitForToken(token, loc) {\n const one = digitRegex(loc),\n two = digitRegex(loc, \"{2}\"),\n three = digitRegex(loc, \"{3}\"),\n four = digitRegex(loc, \"{4}\"),\n six = digitRegex(loc, \"{6}\"),\n oneOrTwo = digitRegex(loc, \"{1,2}\"),\n oneToThree = digitRegex(loc, \"{1,3}\"),\n oneToSix = digitRegex(loc, \"{1,6}\"),\n oneToNine = digitRegex(loc, \"{1,9}\"),\n twoToFour = digitRegex(loc, \"{2,4}\"),\n fourToSix = digitRegex(loc, \"{4,6}\"),\n literal = (t) => ({ regex: RegExp(escapeToken(t.val)), deser: ([s]) => s, literal: true }),\n unitate = (t) => {\n if (token.literal) {\n return literal(t);\n }\n switch (t.val) {\n // era\n case \"G\":\n return oneOf(loc.eras(\"short\", false), 0);\n case \"GG\":\n return oneOf(loc.eras(\"long\", false), 0);\n // years\n case \"y\":\n return intUnit(oneToSix);\n case \"yy\":\n return intUnit(twoToFour, untruncateYear);\n case \"yyyy\":\n return intUnit(four);\n case \"yyyyy\":\n return intUnit(fourToSix);\n case \"yyyyyy\":\n return intUnit(six);\n // months\n case \"M\":\n return intUnit(oneOrTwo);\n case \"MM\":\n return intUnit(two);\n case \"MMM\":\n return oneOf(loc.months(\"short\", true, false), 1);\n case \"MMMM\":\n return oneOf(loc.months(\"long\", true, false), 1);\n case \"L\":\n return intUnit(oneOrTwo);\n case \"LL\":\n return intUnit(two);\n case \"LLL\":\n return oneOf(loc.months(\"short\", false, false), 1);\n case \"LLLL\":\n return oneOf(loc.months(\"long\", false, false), 1);\n // dates\n case \"d\":\n return intUnit(oneOrTwo);\n case \"dd\":\n return intUnit(two);\n // ordinals\n case \"o\":\n return intUnit(oneToThree);\n case \"ooo\":\n return intUnit(three);\n // time\n case \"HH\":\n return intUnit(two);\n case \"H\":\n return intUnit(oneOrTwo);\n case \"hh\":\n return intUnit(two);\n case \"h\":\n return intUnit(oneOrTwo);\n case \"mm\":\n return intUnit(two);\n case \"m\":\n return intUnit(oneOrTwo);\n case \"q\":\n return intUnit(oneOrTwo);\n case \"qq\":\n return intUnit(two);\n case \"s\":\n return intUnit(oneOrTwo);\n case \"ss\":\n return intUnit(two);\n case \"S\":\n return intUnit(oneToThree);\n case \"SSS\":\n return intUnit(three);\n case \"u\":\n return simple(oneToNine);\n case \"uu\":\n return simple(oneOrTwo);\n case \"uuu\":\n return intUnit(one);\n // meridiem\n case \"a\":\n return oneOf(loc.meridiems(), 0);\n // weekYear (k)\n case \"kkkk\":\n return intUnit(four);\n case \"kk\":\n return intUnit(twoToFour, untruncateYear);\n // weekNumber (W)\n case \"W\":\n return intUnit(oneOrTwo);\n case \"WW\":\n return intUnit(two);\n // weekdays\n case \"E\":\n case \"c\":\n return intUnit(one);\n case \"EEE\":\n return oneOf(loc.weekdays(\"short\", false, false), 1);\n case \"EEEE\":\n return oneOf(loc.weekdays(\"long\", false, false), 1);\n case \"ccc\":\n return oneOf(loc.weekdays(\"short\", true, false), 1);\n case \"cccc\":\n return oneOf(loc.weekdays(\"long\", true, false), 1);\n // offset/zone\n case \"Z\":\n case \"ZZ\":\n return offset(new RegExp(`([+-]${oneOrTwo.source})(?::(${two.source}))?`), 2);\n case \"ZZZ\":\n return offset(new RegExp(`([+-]${oneOrTwo.source})(${two.source})?`), 2);\n // we don't support ZZZZ (PST) or ZZZZZ (Pacific Standard Time) in parsing\n // because we don't have any way to figure out what they are\n case \"z\":\n return simple(/[a-z_+-/]{1,256}?/i);\n default:\n return literal(t);\n }\n };\n\n const unit = unitate(token) || {\n invalidReason: MISSING_FTP,\n };\n\n unit.token = token;\n\n return unit;\n}\n\nconst partTypeStyleToTokenVal = {\n year: {\n \"2-digit\": \"yy\",\n numeric: \"yyyyy\",\n },\n month: {\n numeric: \"M\",\n \"2-digit\": \"MM\",\n short: \"MMM\",\n long: \"MMMM\",\n },\n day: {\n numeric: \"d\",\n \"2-digit\": \"dd\",\n },\n weekday: {\n short: \"EEE\",\n long: \"EEEE\",\n },\n dayperiod: \"a\",\n dayPeriod: \"a\",\n hour: {\n numeric: \"h\",\n \"2-digit\": \"hh\",\n },\n minute: {\n numeric: \"m\",\n \"2-digit\": \"mm\",\n },\n second: {\n numeric: \"s\",\n \"2-digit\": \"ss\",\n },\n};\n\nfunction tokenForPart(part, locale, formatOpts) {\n const { type, value } = part;\n\n if (type === \"literal\") {\n return {\n literal: true,\n val: value,\n };\n }\n\n const style = formatOpts[type];\n\n let val = partTypeStyleToTokenVal[type];\n if (typeof val === \"object\") {\n val = val[style];\n }\n\n if (val) {\n return {\n literal: false,\n val,\n };\n }\n\n return undefined;\n}\n\nfunction buildRegex(units) {\n const re = units.map((u) => u.regex).reduce((f, r) => `${f}(${r.source})`, \"\");\n return [`^${re}$`, units];\n}\n\nfunction match(input, regex, handlers) {\n const matches = input.match(regex);\n\n if (matches) {\n const all = {};\n let matchIndex = 1;\n for (const i in handlers) {\n if (hasOwnProperty(handlers, i)) {\n const h = handlers[i],\n groups = h.groups ? h.groups + 1 : 1;\n if (!h.literal && h.token) {\n all[h.token.val[0]] = h.deser(matches.slice(matchIndex, matchIndex + groups));\n }\n matchIndex += groups;\n }\n }\n return [matches, all];\n } else {\n return [matches, {}];\n }\n}\n\nfunction dateTimeFromMatches(matches) {\n const toField = (token) => {\n switch (token) {\n case \"S\":\n return \"millisecond\";\n case \"s\":\n return \"second\";\n case \"m\":\n return \"minute\";\n case \"h\":\n case \"H\":\n return \"hour\";\n case \"d\":\n return \"day\";\n case \"o\":\n return \"ordinal\";\n case \"L\":\n case \"M\":\n return \"month\";\n case \"y\":\n return \"year\";\n case \"E\":\n case \"c\":\n return \"weekday\";\n case \"W\":\n return \"weekNumber\";\n case \"k\":\n return \"weekYear\";\n case \"q\":\n return \"quarter\";\n default:\n return null;\n }\n };\n\n let zone = null;\n let specificOffset;\n if (!isUndefined(matches.z)) {\n zone = IANAZone.create(matches.z);\n }\n\n if (!isUndefined(matches.Z)) {\n if (!zone) {\n zone = new FixedOffsetZone(matches.Z);\n }\n specificOffset = matches.Z;\n }\n\n if (!isUndefined(matches.q)) {\n matches.M = (matches.q - 1) * 3 + 1;\n }\n\n if (!isUndefined(matches.h)) {\n if (matches.h < 12 && matches.a === 1) {\n matches.h += 12;\n } else if (matches.h === 12 && matches.a === 0) {\n matches.h = 0;\n }\n }\n\n if (matches.G === 0 && matches.y) {\n matches.y = -matches.y;\n }\n\n if (!isUndefined(matches.u)) {\n matches.S = parseMillis(matches.u);\n }\n\n const vals = Object.keys(matches).reduce((r, k) => {\n const f = toField(k);\n if (f) {\n r[f] = matches[k];\n }\n\n return r;\n }, {});\n\n return [vals, zone, specificOffset];\n}\n\nlet dummyDateTimeCache = null;\n\nfunction getDummyDateTime() {\n if (!dummyDateTimeCache) {\n dummyDateTimeCache = DateTime.fromMillis(1555555555555);\n }\n\n return dummyDateTimeCache;\n}\n\nfunction maybeExpandMacroToken(token, locale) {\n if (token.literal) {\n return token;\n }\n\n const formatOpts = Formatter.macroTokenToFormatOpts(token.val);\n\n if (!formatOpts) {\n return token;\n }\n\n const formatter = Formatter.create(locale, formatOpts);\n const parts = formatter.formatDateTimeParts(getDummyDateTime());\n\n const tokens = parts.map((p) => tokenForPart(p, locale, formatOpts));\n\n if (tokens.includes(undefined)) {\n return token;\n }\n\n return tokens;\n}\n\nfunction expandMacroTokens(tokens, locale) {\n return Array.prototype.concat(...tokens.map((t) => maybeExpandMacroToken(t, locale)));\n}\n\n/**\n * @private\n */\n\nexport function explainFromTokens(locale, input, format) {\n const tokens = expandMacroTokens(Formatter.parseFormat(format), locale),\n units = tokens.map((t) => unitForToken(t, locale)),\n disqualifyingUnit = units.find((t) => t.invalidReason);\n\n if (disqualifyingUnit) {\n return { input, tokens, invalidReason: disqualifyingUnit.invalidReason };\n } else {\n const [regexString, handlers] = buildRegex(units),\n regex = RegExp(regexString, \"i\"),\n [rawMatches, matches] = match(input, regex, handlers),\n [result, zone, specificOffset] = matches\n ? dateTimeFromMatches(matches)\n : [null, null, undefined];\n if (hasOwnProperty(matches, \"a\") && hasOwnProperty(matches, \"H\")) {\n throw new ConflictingSpecificationError(\n \"Can't include meridiem when specifying 24-hour format\"\n );\n }\n return { input, tokens, regex, rawMatches, matches, result, zone, specificOffset };\n }\n}\n\nexport function parseFromTokens(locale, input, format) {\n const { result, zone, specificOffset, invalidReason } = explainFromTokens(locale, input, format);\n return [result, zone, specificOffset, invalidReason];\n}\n","/*\n This is just a junk drawer, containing anything used across multiple classes.\n Because Luxon is small(ish), this should stay small and we won't worry about splitting\n it up into, say, parsingUtil.js and basicUtil.js and so on. But they are divided up by feature area.\n*/\n\nimport { InvalidArgumentError } from \"../errors.js\";\n\n/**\n * @private\n */\n\n// TYPES\n\nexport function isUndefined(o) {\n return typeof o === \"undefined\";\n}\n\nexport function isNumber(o) {\n return typeof o === \"number\";\n}\n\nexport function isInteger(o) {\n return typeof o === \"number\" && o % 1 === 0;\n}\n\nexport function isString(o) {\n return typeof o === \"string\";\n}\n\nexport function isDate(o) {\n return Object.prototype.toString.call(o) === \"[object Date]\";\n}\n\n// CAPABILITIES\n\nexport function hasRelative() {\n try {\n return typeof Intl !== \"undefined\" && !!Intl.RelativeTimeFormat;\n } catch (e) {\n return false;\n }\n}\n\n// OBJECTS AND ARRAYS\n\nexport function maybeArray(thing) {\n return Array.isArray(thing) ? thing : [thing];\n}\n\nexport function bestBy(arr, by, compare) {\n if (arr.length === 0) {\n return undefined;\n }\n return arr.reduce((best, next) => {\n const pair = [by(next), next];\n if (!best) {\n return pair;\n } else if (compare(best[0], pair[0]) === best[0]) {\n return best;\n } else {\n return pair;\n }\n }, null)[1];\n}\n\nexport function pick(obj, keys) {\n return keys.reduce((a, k) => {\n a[k] = obj[k];\n return a;\n }, {});\n}\n\nexport function hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n// NUMBERS AND STRINGS\n\nexport function integerBetween(thing, bottom, top) {\n return isInteger(thing) && thing >= bottom && thing <= top;\n}\n\n// x % n but takes the sign of n instead of x\nexport function floorMod(x, n) {\n return x - n * Math.floor(x / n);\n}\n\nexport function padStart(input, n = 2) {\n const isNeg = input < 0;\n let padded;\n if (isNeg) {\n padded = \"-\" + (\"\" + -input).padStart(n, \"0\");\n } else {\n padded = (\"\" + input).padStart(n, \"0\");\n }\n return padded;\n}\n\nexport function parseInteger(string) {\n if (isUndefined(string) || string === null || string === \"\") {\n return undefined;\n } else {\n return parseInt(string, 10);\n }\n}\n\nexport function parseFloating(string) {\n if (isUndefined(string) || string === null || string === \"\") {\n return undefined;\n } else {\n return parseFloat(string);\n }\n}\n\nexport function parseMillis(fraction) {\n // Return undefined (instead of 0) in these cases, where fraction is not set\n if (isUndefined(fraction) || fraction === null || fraction === \"\") {\n return undefined;\n } else {\n const f = parseFloat(\"0.\" + fraction) * 1000;\n return Math.floor(f);\n }\n}\n\nexport function roundTo(number, digits, towardZero = false) {\n const factor = 10 ** digits,\n rounder = towardZero ? Math.trunc : Math.round;\n return rounder(number * factor) / factor;\n}\n\n// DATE BASICS\n\nexport function isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nexport function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\n\nexport function daysInMonth(year, month) {\n const modMonth = floorMod(month - 1, 12) + 1,\n modYear = year + (month - modMonth) / 12;\n\n if (modMonth === 2) {\n return isLeapYear(modYear) ? 29 : 28;\n } else {\n return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][modMonth - 1];\n }\n}\n\n// covert a calendar object to a local timestamp (epoch, but with the offset baked in)\nexport function objToLocalTS(obj) {\n let d = Date.UTC(\n obj.year,\n obj.month - 1,\n obj.day,\n obj.hour,\n obj.minute,\n obj.second,\n obj.millisecond\n );\n\n // for legacy reasons, years between 0 and 99 are interpreted as 19XX; revert that\n if (obj.year < 100 && obj.year >= 0) {\n d = new Date(d);\n d.setUTCFullYear(d.getUTCFullYear() - 1900);\n }\n return +d;\n}\n\nexport function weeksInWeekYear(weekYear) {\n const p1 =\n (weekYear +\n Math.floor(weekYear / 4) -\n Math.floor(weekYear / 100) +\n Math.floor(weekYear / 400)) %\n 7,\n last = weekYear - 1,\n p2 = (last + Math.floor(last / 4) - Math.floor(last / 100) + Math.floor(last / 400)) % 7;\n return p1 === 4 || p2 === 3 ? 53 : 52;\n}\n\nexport function untruncateYear(year) {\n if (year > 99) {\n return year;\n } else return year > 60 ? 1900 + year : 2000 + year;\n}\n\n// PARSING\n\nexport function parseZoneInfo(ts, offsetFormat, locale, timeZone = null) {\n const date = new Date(ts),\n intlOpts = {\n hourCycle: \"h23\",\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n };\n\n if (timeZone) {\n intlOpts.timeZone = timeZone;\n }\n\n const modified = { timeZoneName: offsetFormat, ...intlOpts };\n\n const parsed = new Intl.DateTimeFormat(locale, modified)\n .formatToParts(date)\n .find((m) => m.type.toLowerCase() === \"timezonename\");\n return parsed ? parsed.value : null;\n}\n\n// signedOffset('-5', '30') -> -330\nexport function signedOffset(offHourStr, offMinuteStr) {\n let offHour = parseInt(offHourStr, 10);\n\n // don't || this because we want to preserve -0\n if (Number.isNaN(offHour)) {\n offHour = 0;\n }\n\n const offMin = parseInt(offMinuteStr, 10) || 0,\n offMinSigned = offHour < 0 || Object.is(offHour, -0) ? -offMin : offMin;\n return offHour * 60 + offMinSigned;\n}\n\n// COERCION\n\nexport function asNumber(value) {\n const numericValue = Number(value);\n if (typeof value === \"boolean\" || value === \"\" || Number.isNaN(numericValue))\n throw new InvalidArgumentError(`Invalid unit value ${value}`);\n return numericValue;\n}\n\nexport function normalizeObject(obj, normalizer) {\n const normalized = {};\n for (const u in obj) {\n if (hasOwnProperty(obj, u)) {\n const v = obj[u];\n if (v === undefined || v === null) continue;\n normalized[normalizer(u)] = asNumber(v);\n }\n }\n return normalized;\n}\n\nexport function formatOffset(offset, format) {\n const hours = Math.trunc(Math.abs(offset / 60)),\n minutes = Math.trunc(Math.abs(offset % 60)),\n sign = offset >= 0 ? \"+\" : \"-\";\n\n switch (format) {\n case \"short\":\n return `${sign}${padStart(hours, 2)}:${padStart(minutes, 2)}`;\n case \"narrow\":\n return `${sign}${hours}${minutes > 0 ? `:${minutes}` : \"\"}`;\n case \"techie\":\n return `${sign}${padStart(hours, 2)}${padStart(minutes, 2)}`;\n default:\n throw new RangeError(`Value format ${format} is out of range for property format`);\n }\n}\n\nexport function timeObject(obj) {\n return pick(obj, [\"hour\", \"minute\", \"second\", \"millisecond\"]);\n}\n\nexport const ianaRegex =\n /[A-Za-z_+-]{1,256}(?::?\\/[A-Za-z0-9_+-]{1,256}(?:\\/[A-Za-z0-9_+-]{1,256})?)?/;\n","/**\n * @private\n */\n\nimport Zone from \"../zone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport InvalidZone from \"../zones/invalidZone.js\";\n\nimport { isUndefined, isString, isNumber } from \"./util.js\";\n\nexport function normalizeZone(input, defaultZone) {\n let offset;\n if (isUndefined(input) || input === null) {\n return defaultZone;\n } else if (input instanceof Zone) {\n return input;\n } else if (isString(input)) {\n const lowered = input.toLowerCase();\n if (lowered === \"local\" || lowered === \"system\") return defaultZone;\n else if (lowered === \"utc\" || lowered === \"gmt\") return FixedOffsetZone.utcInstance;\n else return FixedOffsetZone.parseSpecifier(lowered) || IANAZone.create(input);\n } else if (isNumber(input)) {\n return FixedOffsetZone.instance(input);\n } else if (typeof input === \"object\" && input.offset && typeof input.offset === \"number\") {\n // This is dumb, but the instanceof check above doesn't seem to really work\n // so we're duck checking it\n return input;\n } else {\n return new InvalidZone(input);\n }\n}\n","import DateTime from \"./datetime.js\";\nimport Settings from \"./settings.js\";\nimport Locale from \"./impl/locale.js\";\nimport IANAZone from \"./zones/IANAZone.js\";\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\n\nimport { hasRelative } from \"./impl/util.js\";\n\n/**\n * The Info class contains static methods for retrieving general time and date related data. For example, it has methods for finding out if a time zone has a DST, for listing the months in any supported locale, and for discovering which of Luxon features are available in the current environment.\n */\nexport default class Info {\n /**\n * Return whether the specified zone contains a DST.\n * @param {string|Zone} [zone='local'] - Zone to check. Defaults to the environment's local zone.\n * @return {boolean}\n */\n static hasDST(zone = Settings.defaultZone) {\n const proto = DateTime.now().setZone(zone).set({ month: 12 });\n\n return !zone.isUniversal && proto.offset !== proto.set({ month: 6 }).offset;\n }\n\n /**\n * Return whether the specified zone is a valid IANA specifier.\n * @param {string} zone - Zone to check\n * @return {boolean}\n */\n static isValidIANAZone(zone) {\n return IANAZone.isValidZone(zone);\n }\n\n /**\n * Converts the input into a {@link Zone} instance.\n *\n * * If `input` is already a Zone instance, it is returned unchanged.\n * * If `input` is a string containing a valid time zone name, a Zone instance\n * with that name is returned.\n * * If `input` is a string that doesn't refer to a known time zone, a Zone\n * instance with {@link Zone#isValid} == false is returned.\n * * If `input is a number, a Zone instance with the specified fixed offset\n * in minutes is returned.\n * * If `input` is `null` or `undefined`, the default zone is returned.\n * @param {string|Zone|number} [input] - the value to be converted\n * @return {Zone}\n */\n static normalizeZone(input) {\n return normalizeZone(input, Settings.defaultZone);\n }\n\n /**\n * Return an array of standalone month names.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @param {string} [opts.outputCalendar='gregory'] - the calendar\n * @example Info.months()[0] //=> 'January'\n * @example Info.months('short')[0] //=> 'Jan'\n * @example Info.months('numeric')[0] //=> '1'\n * @example Info.months('short', { locale: 'fr-CA' } )[0] //=> 'janv.'\n * @example Info.months('numeric', { locale: 'ar' })[0] //=> '١'\n * @example Info.months('long', { outputCalendar: 'islamic' })[0] //=> 'Rabiʻ I'\n * @return {Array}\n */\n static months(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null, outputCalendar = \"gregory\" } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length);\n }\n\n /**\n * Return an array of format month names.\n * Format months differ from standalone months in that they're meant to appear next to the day of the month. In some languages, that\n * changes the string.\n * See {@link Info#months}\n * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @param {string} [opts.outputCalendar='gregory'] - the calendar\n * @return {Array}\n */\n static monthsFormat(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null, outputCalendar = \"gregory\" } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length, true);\n }\n\n /**\n * Return an array of standalone week names.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {string} [length='long'] - the length of the weekday representation, such as \"narrow\", \"short\", \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @example Info.weekdays()[0] //=> 'Monday'\n * @example Info.weekdays('short')[0] //=> 'Mon'\n * @example Info.weekdays('short', { locale: 'fr-CA' })[0] //=> 'lun.'\n * @example Info.weekdays('short', { locale: 'ar' })[0] //=> 'الاثنين'\n * @return {Array}\n */\n static weekdays(length = \"long\", { locale = null, numberingSystem = null, locObj = null } = {}) {\n return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length);\n }\n\n /**\n * Return an array of format week names.\n * Format weekdays differ from standalone weekdays in that they're meant to appear next to more date information. In some languages, that\n * changes the string.\n * See {@link Info#weekdays}\n * @param {string} [length='long'] - the length of the month representation, such as \"narrow\", \"short\", \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale=null] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @return {Array}\n */\n static weekdaysFormat(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length, true);\n }\n\n /**\n * Return an array of meridiems.\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @example Info.meridiems() //=> [ 'AM', 'PM' ]\n * @example Info.meridiems({ locale: 'my' }) //=> [ 'နံနက်', 'ညနေ' ]\n * @return {Array}\n */\n static meridiems({ locale = null } = {}) {\n return Locale.create(locale).meridiems();\n }\n\n /**\n * Return an array of eras, such as ['BC', 'AD']. The locale can be specified, but the calendar system is always Gregorian.\n * @param {string} [length='short'] - the length of the era representation, such as \"short\" or \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @example Info.eras() //=> [ 'BC', 'AD' ]\n * @example Info.eras('long') //=> [ 'Before Christ', 'Anno Domini' ]\n * @example Info.eras('long', { locale: 'fr' }) //=> [ 'avant Jésus-Christ', 'après Jésus-Christ' ]\n * @return {Array}\n */\n static eras(length = \"short\", { locale = null } = {}) {\n return Locale.create(locale, null, \"gregory\").eras(length);\n }\n\n /**\n * Return the set of available features in this environment.\n * Some features of Luxon are not available in all environments. For example, on older browsers, relative time formatting support is not available. Use this function to figure out if that's the case.\n * Keys:\n * * `relative`: whether this environment supports relative time formatting\n * @example Info.features() //=> { relative: false }\n * @return {Object}\n */\n static features() {\n return { relative: hasRelative() };\n }\n}\n","import DateTime, { friendlyDateTime } from \"./datetime.js\";\nimport Duration from \"./duration.js\";\nimport Settings from \"./settings.js\";\nimport { InvalidArgumentError, InvalidIntervalError } from \"./errors.js\";\nimport Invalid from \"./impl/invalid.js\";\n\nconst INVALID = \"Invalid Interval\";\n\n// checks if the start is equal to or before the end\nfunction validateStartEnd(start, end) {\n if (!start || !start.isValid) {\n return Interval.invalid(\"missing or invalid start\");\n } else if (!end || !end.isValid) {\n return Interval.invalid(\"missing or invalid end\");\n } else if (end < start) {\n return Interval.invalid(\n \"end before start\",\n `The end of an interval must be after its start, but you had start=${start.toISO()} and end=${end.toISO()}`\n );\n } else {\n return null;\n }\n}\n\n/**\n * An Interval object represents a half-open interval of time, where each endpoint is a {@link DateTime}. Conceptually, it's a container for those two endpoints, accompanied by methods for creating, parsing, interrogating, comparing, transforming, and formatting them.\n *\n * Here is a brief overview of the most commonly used methods and getters in Interval:\n *\n * * **Creation** To create an Interval, use {@link Interval#fromDateTimes}, {@link Interval#after}, {@link Interval#before}, or {@link Interval#fromISO}.\n * * **Accessors** Use {@link Interval#start} and {@link Interval#end} to get the start and end.\n * * **Interrogation** To analyze the Interval, use {@link Interval#count}, {@link Interval#length}, {@link Interval#hasSame}, {@link Interval#contains}, {@link Interval#isAfter}, or {@link Interval#isBefore}.\n * * **Transformation** To create other Intervals out of this one, use {@link Interval#set}, {@link Interval#splitAt}, {@link Interval#splitBy}, {@link Interval#divideEqually}, {@link Interval#merge}, {@link Interval#xor}, {@link Interval#union}, {@link Interval#intersection}, or {@link Interval#difference}.\n * * **Comparison** To compare this Interval to another one, use {@link Interval#equals}, {@link Interval#overlaps}, {@link Interval#abutsStart}, {@link Interval#abutsEnd}, {@link Interval#engulfs}\n * * **Output** To convert the Interval into other representations, see {@link Interval#toString}, {@link Interval#toISO}, {@link Interval#toISODate}, {@link Interval#toISOTime}, {@link Interval#toFormat}, and {@link Interval#toDuration}.\n */\nexport default class Interval {\n /**\n * @private\n */\n constructor(config) {\n /**\n * @access private\n */\n this.s = config.start;\n /**\n * @access private\n */\n this.e = config.end;\n /**\n * @access private\n */\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n this.isLuxonInterval = true;\n }\n\n /**\n * Create an invalid Interval.\n * @param {string} reason - simple string of why this Interval is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Interval}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Interval is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidIntervalError(invalid);\n } else {\n return new Interval({ invalid });\n }\n }\n\n /**\n * Create an Interval from a start DateTime and an end DateTime. Inclusive of the start but not the end.\n * @param {DateTime|Date|Object} start\n * @param {DateTime|Date|Object} end\n * @return {Interval}\n */\n static fromDateTimes(start, end) {\n const builtStart = friendlyDateTime(start),\n builtEnd = friendlyDateTime(end);\n\n const validateError = validateStartEnd(builtStart, builtEnd);\n\n if (validateError == null) {\n return new Interval({\n start: builtStart,\n end: builtEnd,\n });\n } else {\n return validateError;\n }\n }\n\n /**\n * Create an Interval from a start DateTime and a Duration to extend to.\n * @param {DateTime|Date|Object} start\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n static after(start, duration) {\n const dur = Duration.fromDurationLike(duration),\n dt = friendlyDateTime(start);\n return Interval.fromDateTimes(dt, dt.plus(dur));\n }\n\n /**\n * Create an Interval from an end DateTime and a Duration to extend backwards to.\n * @param {DateTime|Date|Object} end\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n static before(end, duration) {\n const dur = Duration.fromDurationLike(duration),\n dt = friendlyDateTime(end);\n return Interval.fromDateTimes(dt.minus(dur), dt);\n }\n\n /**\n * Create an Interval from an ISO 8601 string.\n * Accepts `/`, `/`, and `/` formats.\n * @param {string} text - the ISO string to parse\n * @param {Object} [opts] - options to pass {@link DateTime#fromISO} and optionally {@link Duration#fromISO}\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @return {Interval}\n */\n static fromISO(text, opts) {\n const [s, e] = (text || \"\").split(\"/\", 2);\n if (s && e) {\n let start, startIsValid;\n try {\n start = DateTime.fromISO(s, opts);\n startIsValid = start.isValid;\n } catch (e) {\n startIsValid = false;\n }\n\n let end, endIsValid;\n try {\n end = DateTime.fromISO(e, opts);\n endIsValid = end.isValid;\n } catch (e) {\n endIsValid = false;\n }\n\n if (startIsValid && endIsValid) {\n return Interval.fromDateTimes(start, end);\n }\n\n if (startIsValid) {\n const dur = Duration.fromISO(e, opts);\n if (dur.isValid) {\n return Interval.after(start, dur);\n }\n } else if (endIsValid) {\n const dur = Duration.fromISO(s, opts);\n if (dur.isValid) {\n return Interval.before(end, dur);\n }\n }\n }\n return Interval.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n\n /**\n * Check if an object is an Interval. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isInterval(o) {\n return (o && o.isLuxonInterval) || false;\n }\n\n /**\n * Returns the start of the Interval\n * @type {DateTime}\n */\n get start() {\n return this.isValid ? this.s : null;\n }\n\n /**\n * Returns the end of the Interval\n * @type {DateTime}\n */\n get end() {\n return this.isValid ? this.e : null;\n }\n\n /**\n * Returns whether this Interval's end is at least its start, meaning that the Interval isn't 'backwards'.\n * @type {boolean}\n */\n get isValid() {\n return this.invalidReason === null;\n }\n\n /**\n * Returns an error code if this Interval is invalid, or null if the Interval is valid\n * @type {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this Interval became invalid, or null if the Interval is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Returns the length of the Interval in the specified unit.\n * @param {string} unit - the unit (such as 'hours' or 'days') to return the length in.\n * @return {number}\n */\n length(unit = \"milliseconds\") {\n return this.isValid ? this.toDuration(...[unit]).get(unit) : NaN;\n }\n\n /**\n * Returns the count of minutes, hours, days, months, or years included in the Interval, even in part.\n * Unlike {@link Interval#length} this counts sections of the calendar, not periods of time, e.g. specifying 'day'\n * asks 'what dates are included in this interval?', not 'how many days long is this interval?'\n * @param {string} [unit='milliseconds'] - the unit of time to count.\n * @return {number}\n */\n count(unit = \"milliseconds\") {\n if (!this.isValid) return NaN;\n const start = this.start.startOf(unit),\n end = this.end.startOf(unit);\n return Math.floor(end.diff(start, unit).get(unit)) + 1;\n }\n\n /**\n * Returns whether this Interval's start and end are both in the same unit of time\n * @param {string} unit - the unit of time to check sameness on\n * @return {boolean}\n */\n hasSame(unit) {\n return this.isValid ? this.isEmpty() || this.e.minus(1).hasSame(this.s, unit) : false;\n }\n\n /**\n * Return whether this Interval has the same start and end DateTimes.\n * @return {boolean}\n */\n isEmpty() {\n return this.s.valueOf() === this.e.valueOf();\n }\n\n /**\n * Return whether this Interval's start is after the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n isAfter(dateTime) {\n if (!this.isValid) return false;\n return this.s > dateTime;\n }\n\n /**\n * Return whether this Interval's end is before the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n isBefore(dateTime) {\n if (!this.isValid) return false;\n return this.e <= dateTime;\n }\n\n /**\n * Return whether this Interval contains the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n contains(dateTime) {\n if (!this.isValid) return false;\n return this.s <= dateTime && this.e > dateTime;\n }\n\n /**\n * \"Sets\" the start and/or end dates. Returns a newly-constructed Interval.\n * @param {Object} values - the values to set\n * @param {DateTime} values.start - the starting DateTime\n * @param {DateTime} values.end - the ending DateTime\n * @return {Interval}\n */\n set({ start, end } = {}) {\n if (!this.isValid) return this;\n return Interval.fromDateTimes(start || this.s, end || this.e);\n }\n\n /**\n * Split this Interval at each of the specified DateTimes\n * @param {...DateTime} dateTimes - the unit of time to count.\n * @return {Array}\n */\n splitAt(...dateTimes) {\n if (!this.isValid) return [];\n const sorted = dateTimes\n .map(friendlyDateTime)\n .filter((d) => this.contains(d))\n .sort(),\n results = [];\n let { s } = this,\n i = 0;\n\n while (s < this.e) {\n const added = sorted[i] || this.e,\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n i += 1;\n }\n\n return results;\n }\n\n /**\n * Split this Interval into smaller Intervals, each of the specified length.\n * Left over time is grouped into a smaller interval\n * @param {Duration|Object|number} duration - The length of each resulting interval.\n * @return {Array}\n */\n splitBy(duration) {\n const dur = Duration.fromDurationLike(duration);\n\n if (!this.isValid || !dur.isValid || dur.as(\"milliseconds\") === 0) {\n return [];\n }\n\n let { s } = this,\n idx = 1,\n next;\n\n const results = [];\n while (s < this.e) {\n const added = this.start.plus(dur.mapUnits((x) => x * idx));\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n idx += 1;\n }\n\n return results;\n }\n\n /**\n * Split this Interval into the specified number of smaller intervals.\n * @param {number} numberOfParts - The number of Intervals to divide the Interval into.\n * @return {Array}\n */\n divideEqually(numberOfParts) {\n if (!this.isValid) return [];\n return this.splitBy(this.length() / numberOfParts).slice(0, numberOfParts);\n }\n\n /**\n * Return whether this Interval overlaps with the specified Interval\n * @param {Interval} other\n * @return {boolean}\n */\n overlaps(other) {\n return this.e > other.s && this.s < other.e;\n }\n\n /**\n * Return whether this Interval's end is adjacent to the specified Interval's start.\n * @param {Interval} other\n * @return {boolean}\n */\n abutsStart(other) {\n if (!this.isValid) return false;\n return +this.e === +other.s;\n }\n\n /**\n * Return whether this Interval's start is adjacent to the specified Interval's end.\n * @param {Interval} other\n * @return {boolean}\n */\n abutsEnd(other) {\n if (!this.isValid) return false;\n return +other.e === +this.s;\n }\n\n /**\n * Return whether this Interval engulfs the start and end of the specified Interval.\n * @param {Interval} other\n * @return {boolean}\n */\n engulfs(other) {\n if (!this.isValid) return false;\n return this.s <= other.s && this.e >= other.e;\n }\n\n /**\n * Return whether this Interval has the same start and end as the specified Interval.\n * @param {Interval} other\n * @return {boolean}\n */\n equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n return this.s.equals(other.s) && this.e.equals(other.e);\n }\n\n /**\n * Return an Interval representing the intersection of this Interval and the specified Interval.\n * Specifically, the resulting Interval has the maximum start time and the minimum end time of the two Intervals.\n * Returns null if the intersection is empty, meaning, the intervals don't intersect.\n * @param {Interval} other\n * @return {Interval}\n */\n intersection(other) {\n if (!this.isValid) return this;\n const s = this.s > other.s ? this.s : other.s,\n e = this.e < other.e ? this.e : other.e;\n\n if (s >= e) {\n return null;\n } else {\n return Interval.fromDateTimes(s, e);\n }\n }\n\n /**\n * Return an Interval representing the union of this Interval and the specified Interval.\n * Specifically, the resulting Interval has the minimum start time and the maximum end time of the two Intervals.\n * @param {Interval} other\n * @return {Interval}\n */\n union(other) {\n if (!this.isValid) return this;\n const s = this.s < other.s ? this.s : other.s,\n e = this.e > other.e ? this.e : other.e;\n return Interval.fromDateTimes(s, e);\n }\n\n /**\n * Merge an array of Intervals into a equivalent minimal set of Intervals.\n * Combines overlapping and adjacent Intervals.\n * @param {Array} intervals\n * @return {Array}\n */\n static merge(intervals) {\n const [found, final] = intervals\n .sort((a, b) => a.s - b.s)\n .reduce(\n ([sofar, current], item) => {\n if (!current) {\n return [sofar, item];\n } else if (current.overlaps(item) || current.abutsStart(item)) {\n return [sofar, current.union(item)];\n } else {\n return [sofar.concat([current]), item];\n }\n },\n [[], null]\n );\n if (final) {\n found.push(final);\n }\n return found;\n }\n\n /**\n * Return an array of Intervals representing the spans of time that only appear in one of the specified Intervals.\n * @param {Array} intervals\n * @return {Array}\n */\n static xor(intervals) {\n let start = null,\n currentCount = 0;\n const results = [],\n ends = intervals.map((i) => [\n { time: i.s, type: \"s\" },\n { time: i.e, type: \"e\" },\n ]),\n flattened = Array.prototype.concat(...ends),\n arr = flattened.sort((a, b) => a.time - b.time);\n\n for (const i of arr) {\n currentCount += i.type === \"s\" ? 1 : -1;\n\n if (currentCount === 1) {\n start = i.time;\n } else {\n if (start && +start !== +i.time) {\n results.push(Interval.fromDateTimes(start, i.time));\n }\n\n start = null;\n }\n }\n\n return Interval.merge(results);\n }\n\n /**\n * Return an Interval representing the span of time in this Interval that doesn't overlap with any of the specified Intervals.\n * @param {...Interval} intervals\n * @return {Array}\n */\n difference(...intervals) {\n return Interval.xor([this].concat(intervals))\n .map((i) => this.intersection(i))\n .filter((i) => i && !i.isEmpty());\n }\n\n /**\n * Returns a string representation of this Interval appropriate for debugging.\n * @return {string}\n */\n toString() {\n if (!this.isValid) return INVALID;\n return `[${this.s.toISO()} – ${this.e.toISO()})`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Interval.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @param {Object} opts - The same options as {@link DateTime#toISO}\n * @return {string}\n */\n toISO(opts) {\n if (!this.isValid) return INVALID;\n return `${this.s.toISO(opts)}/${this.e.toISO(opts)}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of date of this Interval.\n * The time components are ignored.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @return {string}\n */\n toISODate() {\n if (!this.isValid) return INVALID;\n return `${this.s.toISODate()}/${this.e.toISODate()}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of time of this Interval.\n * The date components are ignored.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @param {Object} opts - The same options as {@link DateTime#toISO}\n * @return {string}\n */\n toISOTime(opts) {\n if (!this.isValid) return INVALID;\n return `${this.s.toISOTime(opts)}/${this.e.toISOTime(opts)}`;\n }\n\n /**\n * Returns a string representation of this Interval formatted according to the specified format string.\n * @param {string} dateFormat - the format string. This string formats the start and end time. See {@link DateTime#toFormat} for details.\n * @param {Object} opts - options\n * @param {string} [opts.separator = ' – '] - a separator to place between the start and end representations\n * @return {string}\n */\n toFormat(dateFormat, { separator = \" – \" } = {}) {\n if (!this.isValid) return INVALID;\n return `${this.s.toFormat(dateFormat)}${separator}${this.e.toFormat(dateFormat)}`;\n }\n\n /**\n * Return a Duration representing the time spanned by this interval.\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units (such as 'hours' or 'days') to include in the duration.\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @example Interval.fromDateTimes(dt1, dt2).toDuration().toObject() //=> { milliseconds: 88489257 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('days').toObject() //=> { days: 1.0241812152777778 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes']).toObject() //=> { hours: 24, minutes: 34.82095 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes', 'seconds']).toObject() //=> { hours: 24, minutes: 34, seconds: 49.257 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('seconds').toObject() //=> { seconds: 88489.257 }\n * @return {Duration}\n */\n toDuration(unit, opts) {\n if (!this.isValid) {\n return Duration.invalid(this.invalidReason);\n }\n return this.e.diff(this.s, unit, opts);\n }\n\n /**\n * Run mapFn on the interval start and end, returning a new Interval from the resulting DateTimes\n * @param {function} mapFn\n * @return {Interval}\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.toUTC())\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.plus({ hours: 2 }))\n */\n mapEndpoints(mapFn) {\n return Interval.fromDateTimes(mapFn(this.s), mapFn(this.e));\n }\n}\n","import DateTime from \"./datetime.js\";\nimport Duration from \"./duration.js\";\nimport Interval from \"./interval.js\";\nimport Info from \"./info.js\";\nimport Zone from \"./zone.js\";\nimport FixedOffsetZone from \"./zones/fixedOffsetZone.js\";\nimport IANAZone from \"./zones/IANAZone.js\";\nimport InvalidZone from \"./zones/invalidZone.js\";\nimport SystemZone from \"./zones/systemZone.js\";\nimport Settings from \"./settings.js\";\n\nconst VERSION = \"2.5.0\";\n\nexport {\n VERSION,\n DateTime,\n Duration,\n Interval,\n Info,\n Zone,\n FixedOffsetZone,\n IANAZone,\n InvalidZone,\n SystemZone,\n Settings,\n};\n","import SystemZone from \"./zones/systemZone.js\";\nimport IANAZone from \"./zones/IANAZone.js\";\nimport Locale from \"./impl/locale.js\";\n\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\n\nlet now = () => Date.now(),\n defaultZone = \"system\",\n defaultLocale = null,\n defaultNumberingSystem = null,\n defaultOutputCalendar = null,\n throwOnInvalid;\n\n/**\n * Settings contains static getters and setters that control Luxon's overall behavior. Luxon is a simple library with few options, but the ones it does have live here.\n */\nexport default class Settings {\n /**\n * Get the callback for returning the current timestamp.\n * @type {function}\n */\n static get now() {\n return now;\n }\n\n /**\n * Set the callback for returning the current timestamp.\n * The function should return a number, which will be interpreted as an Epoch millisecond count\n * @type {function}\n * @example Settings.now = () => Date.now() + 3000 // pretend it is 3 seconds in the future\n * @example Settings.now = () => 0 // always pretend it's Jan 1, 1970 at midnight in UTC time\n */\n static set now(n) {\n now = n;\n }\n\n /**\n * Set the default time zone to create DateTimes in. Does not affect existing instances.\n * Use the value \"system\" to reset this value to the system's time zone.\n * @type {string}\n */\n static set defaultZone(zone) {\n defaultZone = zone;\n }\n\n /**\n * Get the default time zone object currently used to create DateTimes. Does not affect existing instances.\n * The default value is the system's time zone (the one set on the machine that runs this code).\n * @type {Zone}\n */\n static get defaultZone() {\n return normalizeZone(defaultZone, SystemZone.instance);\n }\n\n /**\n * Get the default locale to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultLocale() {\n return defaultLocale;\n }\n\n /**\n * Set the default locale to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultLocale(locale) {\n defaultLocale = locale;\n }\n\n /**\n * Get the default numbering system to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultNumberingSystem() {\n return defaultNumberingSystem;\n }\n\n /**\n * Set the default numbering system to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultNumberingSystem(numberingSystem) {\n defaultNumberingSystem = numberingSystem;\n }\n\n /**\n * Get the default output calendar to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultOutputCalendar() {\n return defaultOutputCalendar;\n }\n\n /**\n * Set the default output calendar to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultOutputCalendar(outputCalendar) {\n defaultOutputCalendar = outputCalendar;\n }\n\n /**\n * Get whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n * @type {boolean}\n */\n static get throwOnInvalid() {\n return throwOnInvalid;\n }\n\n /**\n * Set whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n * @type {boolean}\n */\n static set throwOnInvalid(t) {\n throwOnInvalid = t;\n }\n\n /**\n * Reset Luxon's global caches. Should only be necessary in testing scenarios.\n * @return {void}\n */\n static resetCaches() {\n Locale.resetCache();\n IANAZone.resetCache();\n }\n}\n","import { ZoneIsAbstractError } from \"./errors.js\";\n\n/**\n * @interface\n */\nexport default class Zone {\n /**\n * The type of zone\n * @abstract\n * @type {string}\n */\n get type() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * The name of this zone.\n * @abstract\n * @type {string}\n */\n get name() {\n throw new ZoneIsAbstractError();\n }\n\n get ianaName() {\n return this.name;\n }\n\n /**\n * Returns whether the offset is known to be fixed for the whole year.\n * @abstract\n * @type {boolean}\n */\n get isUniversal() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns the offset's common name (such as EST) at the specified timestamp\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the name\n * @param {Object} opts - Options to affect the format\n * @param {string} opts.format - What style of offset to return. Accepts 'long' or 'short'.\n * @param {string} opts.locale - What locale to return the offset name in.\n * @return {string}\n */\n offsetName(ts, opts) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns the offset's value as a string\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the offset\n * @param {string} format - What style of offset to return.\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n * @return {string}\n */\n formatOffset(ts, format) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return the offset in minutes for this zone at the specified timestamp.\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to compute the offset\n * @return {number}\n */\n offset(ts) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return whether this Zone is equal to another zone\n * @abstract\n * @param {Zone} otherZone - the zone to compare\n * @return {boolean}\n */\n equals(otherZone) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return whether this Zone is valid.\n * @abstract\n * @type {boolean}\n */\n get isValid() {\n throw new ZoneIsAbstractError();\n }\n}\n","import { formatOffset, parseZoneInfo, isUndefined, objToLocalTS } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet dtfCache = {};\nfunction makeDTF(zone) {\n if (!dtfCache[zone]) {\n dtfCache[zone] = new Intl.DateTimeFormat(\"en-US\", {\n hour12: false,\n timeZone: zone,\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n era: \"short\",\n });\n }\n return dtfCache[zone];\n}\n\nconst typeToPos = {\n year: 0,\n month: 1,\n day: 2,\n era: 3,\n hour: 4,\n minute: 5,\n second: 6,\n};\n\nfunction hackyOffset(dtf, date) {\n const formatted = dtf.format(date).replace(/\\u200E/g, \"\"),\n parsed = /(\\d+)\\/(\\d+)\\/(\\d+) (AD|BC),? (\\d+):(\\d+):(\\d+)/.exec(formatted),\n [, fMonth, fDay, fYear, fadOrBc, fHour, fMinute, fSecond] = parsed;\n return [fYear, fMonth, fDay, fadOrBc, fHour, fMinute, fSecond];\n}\n\nfunction partsOffset(dtf, date) {\n const formatted = dtf.formatToParts(date);\n const filled = [];\n for (let i = 0; i < formatted.length; i++) {\n const { type, value } = formatted[i];\n const pos = typeToPos[type];\n\n if (type === \"era\") {\n filled[pos] = value;\n } else if (!isUndefined(pos)) {\n filled[pos] = parseInt(value, 10);\n }\n }\n return filled;\n}\n\nlet ianaZoneCache = {};\n/**\n * A zone identified by an IANA identifier, like America/New_York\n * @implements {Zone}\n */\nexport default class IANAZone extends Zone {\n /**\n * @param {string} name - Zone name\n * @return {IANAZone}\n */\n static create(name) {\n if (!ianaZoneCache[name]) {\n ianaZoneCache[name] = new IANAZone(name);\n }\n return ianaZoneCache[name];\n }\n\n /**\n * Reset local caches. Should only be necessary in testing scenarios.\n * @return {void}\n */\n static resetCache() {\n ianaZoneCache = {};\n dtfCache = {};\n }\n\n /**\n * Returns whether the provided string is a valid specifier. This only checks the string's format, not that the specifier identifies a known zone; see isValidZone for that.\n * @param {string} s - The string to check validity on\n * @example IANAZone.isValidSpecifier(\"America/New_York\") //=> true\n * @example IANAZone.isValidSpecifier(\"Sport~~blorp\") //=> false\n * @deprecated This method returns false for some valid IANA names. Use isValidZone instead.\n * @return {boolean}\n */\n static isValidSpecifier(s) {\n return this.isValidZone(s);\n }\n\n /**\n * Returns whether the provided string identifies a real zone\n * @param {string} zone - The string to check\n * @example IANAZone.isValidZone(\"America/New_York\") //=> true\n * @example IANAZone.isValidZone(\"Fantasia/Castle\") //=> false\n * @example IANAZone.isValidZone(\"Sport~~blorp\") //=> false\n * @return {boolean}\n */\n static isValidZone(zone) {\n if (!zone) {\n return false;\n }\n try {\n new Intl.DateTimeFormat(\"en-US\", { timeZone: zone }).format();\n return true;\n } catch (e) {\n return false;\n }\n }\n\n constructor(name) {\n super();\n /** @private **/\n this.zoneName = name;\n /** @private **/\n this.valid = IANAZone.isValidZone(name);\n }\n\n /** @override **/\n get type() {\n return \"iana\";\n }\n\n /** @override **/\n get name() {\n return this.zoneName;\n }\n\n /** @override **/\n get isUniversal() {\n return false;\n }\n\n /** @override **/\n offsetName(ts, { format, locale }) {\n return parseZoneInfo(ts, format, locale, this.name);\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n\n /** @override **/\n offset(ts) {\n const date = new Date(ts);\n\n if (isNaN(date)) return NaN;\n\n const dtf = makeDTF(this.name);\n let [year, month, day, adOrBc, hour, minute, second] = dtf.formatToParts\n ? partsOffset(dtf, date)\n : hackyOffset(dtf, date);\n\n if (adOrBc === \"BC\") {\n year = -Math.abs(year) + 1;\n }\n\n // because we're using hour12 and https://bugs.chromium.org/p/chromium/issues/detail?id=1025564&can=2&q=%2224%3A00%22%20datetimeformat\n const adjustedHour = hour === 24 ? 0 : hour;\n\n const asUTC = objToLocalTS({\n year,\n month,\n day,\n hour: adjustedHour,\n minute,\n second,\n millisecond: 0,\n });\n\n let asTS = +date;\n const over = asTS % 1000;\n asTS -= over >= 0 ? over : 1000 + over;\n return (asUTC - asTS) / (60 * 1000);\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === \"iana\" && otherZone.name === this.name;\n }\n\n /** @override **/\n get isValid() {\n return this.valid;\n }\n}\n","import { formatOffset, signedOffset } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet singleton = null;\n\n/**\n * A zone with a fixed offset (meaning no DST)\n * @implements {Zone}\n */\nexport default class FixedOffsetZone extends Zone {\n /**\n * Get a singleton instance of UTC\n * @return {FixedOffsetZone}\n */\n static get utcInstance() {\n if (singleton === null) {\n singleton = new FixedOffsetZone(0);\n }\n return singleton;\n }\n\n /**\n * Get an instance with a specified offset\n * @param {number} offset - The offset in minutes\n * @return {FixedOffsetZone}\n */\n static instance(offset) {\n return offset === 0 ? FixedOffsetZone.utcInstance : new FixedOffsetZone(offset);\n }\n\n /**\n * Get an instance of FixedOffsetZone from a UTC offset string, like \"UTC+6\"\n * @param {string} s - The offset string to parse\n * @example FixedOffsetZone.parseSpecifier(\"UTC+6\")\n * @example FixedOffsetZone.parseSpecifier(\"UTC+06\")\n * @example FixedOffsetZone.parseSpecifier(\"UTC-6:00\")\n * @return {FixedOffsetZone}\n */\n static parseSpecifier(s) {\n if (s) {\n const r = s.match(/^utc(?:([+-]\\d{1,2})(?::(\\d{2}))?)?$/i);\n if (r) {\n return new FixedOffsetZone(signedOffset(r[1], r[2]));\n }\n }\n return null;\n }\n\n constructor(offset) {\n super();\n /** @private **/\n this.fixed = offset;\n }\n\n /** @override **/\n get type() {\n return \"fixed\";\n }\n\n /** @override **/\n get name() {\n return this.fixed === 0 ? \"UTC\" : `UTC${formatOffset(this.fixed, \"narrow\")}`;\n }\n\n get ianaName() {\n if (this.fixed === 0) {\n return \"Etc/UTC\";\n } else {\n return `Etc/GMT${formatOffset(-this.fixed, \"narrow\")}`;\n }\n }\n\n /** @override **/\n offsetName() {\n return this.name;\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.fixed, format);\n }\n\n /** @override **/\n get isUniversal() {\n return true;\n }\n\n /** @override **/\n offset() {\n return this.fixed;\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === \"fixed\" && otherZone.fixed === this.fixed;\n }\n\n /** @override **/\n get isValid() {\n return true;\n }\n}\n","import Zone from \"../zone.js\";\n\n/**\n * A zone that failed to parse. You should never need to instantiate this.\n * @implements {Zone}\n */\nexport default class InvalidZone extends Zone {\n constructor(zoneName) {\n super();\n /** @private */\n this.zoneName = zoneName;\n }\n\n /** @override **/\n get type() {\n return \"invalid\";\n }\n\n /** @override **/\n get name() {\n return this.zoneName;\n }\n\n /** @override **/\n get isUniversal() {\n return false;\n }\n\n /** @override **/\n offsetName() {\n return null;\n }\n\n /** @override **/\n formatOffset() {\n return \"\";\n }\n\n /** @override **/\n offset() {\n return NaN;\n }\n\n /** @override **/\n equals() {\n return false;\n }\n\n /** @override **/\n get isValid() {\n return false;\n }\n}\n","import { formatOffset, parseZoneInfo } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet singleton = null;\n\n/**\n * Represents the local zone for this JavaScript environment.\n * @implements {Zone}\n */\nexport default class SystemZone extends Zone {\n /**\n * Get a singleton instance of the local zone\n * @return {SystemZone}\n */\n static get instance() {\n if (singleton === null) {\n singleton = new SystemZone();\n }\n return singleton;\n }\n\n /** @override **/\n get type() {\n return \"system\";\n }\n\n /** @override **/\n get name() {\n return new Intl.DateTimeFormat().resolvedOptions().timeZone;\n }\n\n /** @override **/\n get isUniversal() {\n return false;\n }\n\n /** @override **/\n offsetName(ts, { format, locale }) {\n return parseZoneInfo(ts, format, locale);\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n\n /** @override **/\n offset(ts) {\n return -new Date(ts).getTimezoneOffset();\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === \"system\";\n }\n\n /** @override **/\n get isValid() {\n return true;\n }\n}\n","function mod(n, x) {\n return (n % x + x) % x;\n}\nfunction absFloor(num) {\n return num < 0 ? Math.ceil(num) || 0 : Math.floor(num);\n}\n\nfunction isString(str) {\n return typeof str === 'string';\n}\nfunction isDate(value) {\n return value instanceof Date || Object.prototype.toString.call(value) === '[object Date]';\n}\nfunction isBoolean(value) {\n return value === true || value === false;\n}\nfunction isDateValid(date) {\n return date && date.getTime && !isNaN(date.getTime());\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction isFunction(fn) {\n return (fn instanceof Function ||\n Object.prototype.toString.call(fn) === '[object Function]');\n}\nfunction isNumber(value) {\n return typeof value === 'number' || Object.prototype.toString.call(value) === '[object Number]';\n}\nfunction isArray(input) {\n return (input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]');\n}\nfunction hasOwnProp(a /*object*/, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n}\nfunction isObject(input /*object*/) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (input != null && Object.prototype.toString.call(input) === '[object Object]');\n}\nfunction isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return (Object.getOwnPropertyNames(obj).length === 0);\n }\n let k;\n for (k in obj) {\n // eslint-disable-next-line no-prototype-builtins\n if (obj.hasOwnProperty(k)) {\n return false;\n }\n }\n return true;\n}\nfunction isUndefined(input) {\n return input === void 0;\n}\nfunction toInt(argumentForCoercion) {\n const coercedNumber = +argumentForCoercion;\n let value = 0;\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n return value;\n}\n\nconst aliases = {};\nconst _mapUnits = {\n date: 'day',\n hour: 'hours',\n minute: 'minutes',\n second: 'seconds',\n millisecond: 'milliseconds'\n};\nfunction addUnitAlias(unit, shorthand) {\n const lowerCase = unit.toLowerCase();\n let _unit = unit;\n if (lowerCase in _mapUnits) {\n _unit = _mapUnits[lowerCase];\n }\n aliases[lowerCase] = aliases[`${lowerCase}s`] = aliases[shorthand] = _unit;\n}\nfunction normalizeUnits(units) {\n return isString(units) ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n}\nfunction normalizeObjectUnits(inputObject) {\n const normalizedInput = {};\n let normalizedProp;\n let prop;\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n return normalizedInput;\n}\n\n// place in new Date([array])\nconst YEAR = 0;\nconst MONTH = 1;\nconst DATE = 2;\nconst HOUR = 3;\nconst MINUTE = 4;\nconst SECOND = 5;\nconst MILLISECOND = 6;\nconst WEEK = 7;\nconst WEEKDAY = 8;\n\nfunction zeroFill(num, targetLength, forceSign) {\n const absNumber = `${Math.abs(num)}`;\n const zerosToFill = targetLength - absNumber.length;\n const sign = num >= 0;\n const _sign = sign ? (forceSign ? '+' : '') : '-';\n // todo: this is crazy slow\n const _zeros = Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1);\n return (_sign + _zeros + absNumber);\n}\n\nconst formatFunctions = {};\nconst formatTokenFunctions = {};\nconst formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n// token: 'M'\n// padded: ['MM', 2]\n// ordinal: 'Mo'\n// callback: function () { this.month() + 1 }\nfunction addFormatToken(token, padded, ordinal, callback) {\n if (token) {\n formatTokenFunctions[token] = callback;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(callback.apply(null, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function (date, opts) {\n return opts.locale.ordinal(callback.apply(null, arguments), token);\n };\n }\n}\nfunction makeFormatFunction(format) {\n const array = format.match(formattingTokens);\n const length = array.length;\n const formatArr = new Array(length);\n for (let i = 0; i < length; i++) {\n formatArr[i] = formatTokenFunctions[array[i]]\n ? formatTokenFunctions[array[i]]\n : removeFormattingTokens(array[i]);\n }\n return function (date, locale, isUTC, offset = 0) {\n let output = '';\n for (let j = 0; j < length; j++) {\n output += isFunction(formatArr[j])\n ? formatArr[j].call(null, date, { format, locale, isUTC, offset })\n : formatArr[j];\n }\n return output;\n };\n}\nfunction removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction createUTCDate(y, m, d) {\n // eslint-disable-next-line prefer-rest-params\n const date = new Date(Date.UTC.apply(null, arguments));\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n return date;\n}\nfunction createDate(y, m = 0, d = 1, h = 0, M = 0, s = 0, ms = 0) {\n const date = new Date(y, m, d, h, M, s, ms);\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n return date;\n}\n\nfunction getHours(date, isUTC = false) {\n return isUTC ? date.getUTCHours() : date.getHours();\n}\nfunction getMinutes(date, isUTC = false) {\n return isUTC ? date.getUTCMinutes() : date.getMinutes();\n}\nfunction getSeconds(date, isUTC = false) {\n return isUTC ? date.getUTCSeconds() : date.getSeconds();\n}\nfunction getMilliseconds(date, isUTC = false) {\n return isUTC ? date.getUTCMilliseconds() : date.getMilliseconds();\n}\nfunction getTime(date) {\n return date.getTime();\n}\nfunction getDay(date, isUTC = false) {\n return isUTC ? date.getUTCDay() : date.getDay();\n}\nfunction getDate(date, isUTC = false) {\n return isUTC ? date.getUTCDate() : date.getDate();\n}\nfunction getMonth(date, isUTC = false) {\n return isUTC ? date.getUTCMonth() : date.getMonth();\n}\nfunction getFullYear(date, isUTC = false) {\n return isUTC ? date.getUTCFullYear() : date.getFullYear();\n}\nfunction getUnixTime(date) {\n return Math.floor(date.valueOf() / 1000);\n}\nfunction unix(date) {\n return Math.floor(date.valueOf() / 1000);\n}\nfunction getFirstDayOfMonth(date) {\n return createDate(date.getFullYear(), date.getMonth(), 1, date.getHours(), date.getMinutes(), date.getSeconds());\n}\nfunction daysInMonth$1(date) {\n return _daysInMonth(date.getFullYear(), date.getMonth());\n}\nfunction _daysInMonth(year, month) {\n return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();\n}\nfunction isFirstDayOfWeek(date, firstDayOfWeek) {\n return date.getDay() === Number(firstDayOfWeek);\n}\nfunction isSameMonth(date1, date2) {\n if (!date1 || !date2) {\n return false;\n }\n return isSameYear(date1, date2) && getMonth(date1) === getMonth(date2);\n}\nfunction isSameYear(date1, date2) {\n if (!date1 || !date2) {\n return false;\n }\n return getFullYear(date1) === getFullYear(date2);\n}\nfunction isSameDay$1(date1, date2) {\n if (!date1 || !date2) {\n return false;\n }\n return (isSameYear(date1, date2) &&\n isSameMonth(date1, date2) &&\n getDate(date1) === getDate(date2));\n}\n\nconst match1 = /\\d/; // 0 - 9\nconst match2 = /\\d\\d/; // 00 - 99\nconst match3 = /\\d{3}/; // 000 - 999\nconst match4 = /\\d{4}/; // 0000 - 9999\nconst match6 = /[+-]?\\d{6}/; // -999999 - 999999\nconst match1to2 = /\\d\\d?/; // 0 - 99\nconst match3to4 = /\\d\\d\\d\\d?/; // 999 - 9999\nconst match5to6 = /\\d\\d\\d\\d\\d\\d?/; // 99999 - 999999\nconst match1to3 = /\\d{1,3}/; // 0 - 999\nconst match1to4 = /\\d{1,4}/; // 0 - 9999\nconst match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\nconst matchUnsigned = /\\d+/; // 0 - inf\nconst matchSigned = /[+-]?\\d+/; // -inf - inf\nconst matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\nconst matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\nconst matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n// any word (or two) characters or numbers including two/three word month in arabic.\n// includes scottish gaelic two word and hyphenated months\nconst matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i;\nconst regexes = {};\nfunction addRegexToken(token, regex, strictRegex) {\n if (isFunction(regex)) {\n regexes[token] = regex;\n return;\n }\n regexes[token] = function (isStrict, locale) {\n return (isStrict && strictRegex) ? strictRegex : regex;\n };\n}\nfunction getParseRegexForToken(token, locale) {\n const _strict = false;\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n return regexes[token](_strict, locale);\n}\n// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\nfunction unescapeFormat(str) {\n return regexEscape(str\n .replace('\\\\', '')\n .replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, (matched, p1, p2, p3, p4) => p1 || p2 || p3 || p4));\n}\nfunction regexEscape(str) {\n return str.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n\nconst tokens = {};\nfunction addParseToken(token, callback) {\n const _token = isString(token) ? [token] : token;\n let func = callback;\n if (isNumber(callback)) {\n func = function (input, array, config) {\n array[callback] = toInt(input);\n return config;\n };\n }\n if (isArray(_token) && isFunction(func)) {\n let i;\n for (i = 0; i < _token.length; i++) {\n tokens[_token[i]] = func;\n }\n }\n}\nfunction addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, _token) {\n config._w = config._w || {};\n return callback(input, config._w, config, _token);\n });\n}\nfunction addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n return config;\n}\n\nconst priorities = {};\nfunction addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n}\n/*\nexport function getPrioritizedUnits(unitsObj) {\n const units = [];\n let unit;\n for (unit in unitsObj) {\n if (unitsObj.hasOwnProperty(unit)) {\n units.push({ unit, priority: priorities[unit] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n\n return units;\n}\n*/\n\nfunction initDayOfMonth() {\n // FORMATTING\n addFormatToken('D', ['DD', 2, false], 'Do', function (date, opts) {\n return getDate(date, opts.isUTC)\n .toString(10);\n });\n // ALIASES\n addUnitAlias('date', 'D');\n // PRIOROITY\n addUnitPriority('date', 9);\n // PARSING\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n return locale._dayOfMonthOrdinalParse || locale._ordinalParse;\n });\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array, config) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n return config;\n });\n}\n\nfunction defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false\n };\n}\nfunction getParsingFlags(config) {\n if (config._pf == null) {\n config._pf = defaultParsingFlags();\n }\n return config._pf;\n}\n\n// FORMATTING\nfunction getYear(date, opts) {\n if (opts.locale.getFullYear) {\n return opts.locale.getFullYear(date, opts.isUTC).toString();\n }\n return getFullYear(date, opts.isUTC).toString();\n}\nfunction initYear() {\n addFormatToken('Y', null, null, function (date, opts) {\n const y = getFullYear(date, opts.isUTC);\n return y <= 9999 ? y.toString(10) : `+${y}`;\n });\n addFormatToken(null, ['YY', 2, false], null, function (date, opts) {\n return (getFullYear(date, opts.isUTC) % 100).toString(10);\n });\n addFormatToken(null, ['YYYY', 4, false], null, getYear);\n addFormatToken(null, ['YYYYY', 5, false], null, getYear);\n addFormatToken(null, ['YYYYYY', 6, true], null, getYear);\n // ALIASES\n addUnitAlias('year', 'y');\n // PRIORITIES\n addUnitPriority('year', 1);\n // PARSING\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array, config) {\n array[YEAR] = input.length === 2 ? parseTwoDigitYear(input) : toInt(input);\n return config;\n });\n addParseToken('YY', function (input, array, config) {\n array[YEAR] = parseTwoDigitYear(input);\n return config;\n });\n addParseToken('Y', function (input, array, config) {\n array[YEAR] = parseInt(input, 10);\n return config;\n });\n}\nfunction parseTwoDigitYear(input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n}\nfunction daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\nfunction isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n}\n\n// todo: this is duplicate, source in date-getters.ts\nfunction daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n const modMonth = mod(month, 12);\n const _year = year + (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(_year) ? 29 : 28\n : (31 - modMonth % 7 % 2);\n}\nfunction initMonth() {\n // FORMATTING\n addFormatToken('M', ['MM', 2, false], 'Mo', function (date, opts) {\n return (getMonth(date, opts.isUTC) + 1).toString(10);\n });\n addFormatToken('MMM', null, null, function (date, opts) {\n return opts.locale.monthsShort(date, opts.format, opts.isUTC);\n });\n addFormatToken('MMMM', null, null, function (date, opts) {\n return opts.locale.months(date, opts.format, opts.isUTC);\n });\n // ALIASES\n addUnitAlias('month', 'M');\n // PRIORITY\n addUnitPriority('month', 8);\n // PARSING\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n addParseToken(['M', 'MM'], function (input, array, config) {\n array[MONTH] = toInt(input) - 1;\n return config;\n });\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n const month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n }\n else {\n getParsingFlags(config).invalidMonth = !!input;\n }\n return config;\n });\n}\n\nconst defaultTimeUnit = {\n year: 0,\n month: 0,\n day: 0,\n hour: 0,\n minute: 0,\n seconds: 0\n};\nfunction shiftDate(date, unit) {\n const _unit = Object.assign({}, defaultTimeUnit, unit);\n const year = date.getFullYear() + (_unit.year || 0);\n const month = date.getMonth() + (_unit.month || 0);\n let day = date.getDate() + (_unit.day || 0);\n if (_unit.month && !_unit.day) {\n day = Math.min(day, daysInMonth(year, month));\n }\n return createDate(year, month, day, date.getHours() + (_unit.hour || 0), date.getMinutes() + (_unit.minute || 0), date.getSeconds() + (_unit.seconds || 0));\n}\nfunction setFullDate(date, unit) {\n return createDate(getNum(date.getFullYear(), unit.year), getNum(date.getMonth(), unit.month), 1, // day, to avoid issue with wrong months selection at the end of current month (#5371)\n getNum(date.getHours(), unit.hour), getNum(date.getMinutes(), unit.minute), getNum(date.getSeconds(), unit.seconds), getNum(date.getMilliseconds(), unit.milliseconds));\n}\nfunction getNum(def, num) {\n return isNumber(num) ? num : def;\n}\nfunction setFullYear(date, value, isUTC) {\n const _month = getMonth(date, isUTC);\n const _date = getDate(date, isUTC);\n const _year = getFullYear(date, isUTC);\n if (isLeapYear(_year) && _month === 1 && _date === 29) {\n const _daysInMonth = daysInMonth(value, _month);\n isUTC ? date.setUTCFullYear(value, _month, _daysInMonth) : date.setFullYear(value, _month, _daysInMonth);\n }\n isUTC ? date.setUTCFullYear(value) : date.setFullYear(value);\n return date;\n}\nfunction setMonth(date, value, isUTC) {\n const dayOfMonth = Math.min(getDate(date), daysInMonth(getFullYear(date), value));\n isUTC ? date.setUTCMonth(value, dayOfMonth) : date.setMonth(value, dayOfMonth);\n return date;\n}\nfunction setDay(date, value, isUTC) {\n isUTC ? date.setUTCDate(value) : date.setDate(value);\n return date;\n}\nfunction setHours(date, value, isUTC) {\n isUTC ? date.setUTCHours(value) : date.setHours(value);\n return date;\n}\nfunction setMinutes(date, value, isUTC) {\n isUTC ? date.setUTCMinutes(value) : date.setMinutes(value);\n return date;\n}\nfunction setSeconds(date, value, isUTC) {\n isUTC ? date.setUTCSeconds(value) : date.setSeconds(value);\n return date;\n}\nfunction setMilliseconds(date, value, isUTC) {\n isUTC ? date.setUTCMilliseconds(value) : date.setMilliseconds(value);\n return date;\n}\nfunction setDate(date, value, isUTC) {\n isUTC ? date.setUTCDate(value) : date.setDate(value);\n return date;\n}\nfunction setTime(date, value) {\n date.setTime(value);\n return date;\n}\n\n// fastest way to clone date\n// https://jsperf.com/clone-date-object2\nfunction cloneDate(date) {\n return new Date(date.getTime());\n}\n\nfunction startOf(date, unit, isUTC) {\n const _date = cloneDate(date);\n // the following switch intentionally omits break keywords\n // to utilize falling through the cases.\n switch (unit) {\n case 'year':\n setMonth(_date, 0, isUTC);\n /* falls through */\n case 'quarter':\n case 'month':\n setDate(_date, 1, isUTC);\n /* falls through */\n case 'week':\n case 'isoWeek':\n case 'day':\n case 'date':\n setHours(_date, 0, isUTC);\n /* falls through */\n case 'hours':\n setMinutes(_date, 0, isUTC);\n /* falls through */\n case 'minutes':\n setSeconds(_date, 0, isUTC);\n /* falls through */\n case 'seconds':\n setMilliseconds(_date, 0, isUTC);\n }\n // weeks are a special case\n if (unit === 'week') {\n setLocaleDayOfWeek(_date, 0, { isUTC });\n }\n if (unit === 'isoWeek') {\n setISODayOfWeek(_date, 1);\n }\n // quarters are also special\n if (unit === 'quarter') {\n setMonth(_date, Math.floor(getMonth(_date, isUTC) / 3) * 3, isUTC);\n }\n return _date;\n}\nfunction endOf(date, unit, isUTC) {\n let _unit = unit;\n // 'date' is an alias for 'day', so it should be considered as such.\n if (_unit === 'date') {\n _unit = 'day';\n }\n const start = startOf(date, _unit, isUTC);\n const _step = add(start, 1, _unit === 'isoWeek' ? 'week' : _unit, isUTC);\n const res = subtract(_step, 1, 'milliseconds', isUTC);\n return res;\n}\n\nfunction initDayOfYear() {\n // FORMATTING\n addFormatToken('DDD', ['DDDD', 3, false], 'DDDo', function (date) {\n return getDayOfYear(date)\n .toString(10);\n });\n // ALIASES\n addUnitAlias('dayOfYear', 'DDD');\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n return config;\n });\n}\nfunction getDayOfYear(date, isUTC) {\n const date1 = +startOf(date, 'day', isUTC);\n const date2 = +startOf(date, 'year', isUTC);\n const someDate = date1 - date2;\n const oneDay = 1000 * 60 * 60 * 24;\n return Math.round(someDate / oneDay) + 1;\n}\nfunction setDayOfYear(date, input) {\n const dayOfYear = getDayOfYear(date);\n return add(date, (input - dayOfYear), 'day');\n}\n\n/**\n *\n * @param {number} year\n * @param {number} dow - start-of-first-week\n * @param {number} doy - start-of-year\n * @returns {number}\n */\nfunction firstWeekOffset(year, dow, doy) {\n // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n const fwd = dow - doy + 7;\n // first-week day local weekday -- which local weekday is fwd\n const fwdlw = (createUTCDate(year, 0, fwd).getUTCDay() - dow + 7) % 7;\n return -fwdlw + fwd - 1;\n}\n// https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\nfunction dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n const localWeekday = (7 + weekday - dow) % 7;\n const weekOffset = firstWeekOffset(year, dow, doy);\n const dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset;\n let resYear;\n let resDayOfYear;\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n }\n else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n }\n else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n}\nfunction weekOfYear(date, dow, doy, isUTC) {\n const weekOffset = firstWeekOffset(getFullYear(date, isUTC), dow, doy);\n const week = Math.floor((getDayOfYear(date, isUTC) - weekOffset - 1) / 7) + 1;\n let resWeek;\n let resYear;\n if (week < 1) {\n resYear = getFullYear(date, isUTC) - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n }\n else if (week > weeksInYear(getFullYear(date, isUTC), dow, doy)) {\n resWeek = week - weeksInYear(getFullYear(date, isUTC), dow, doy);\n resYear = getFullYear(date, isUTC) + 1;\n }\n else {\n resYear = getFullYear(date, isUTC);\n resWeek = week;\n }\n return {\n week: resWeek,\n year: resYear\n };\n}\nfunction weeksInYear(year, dow, doy) {\n const weekOffset = firstWeekOffset(year, dow, doy);\n const weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n}\n\nconst MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\nconst defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\nconst defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\nconst defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\nconst defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\nconst defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\nconst defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A'\n};\nconst defaultOrdinal = '%d';\nconst defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\nconst defaultMonthsShortRegex = matchWord;\nconst defaultMonthsRegex = matchWord;\nclass Locale {\n constructor(config) {\n if (config) {\n this.set(config);\n }\n }\n set(config) {\n let confKey;\n for (confKey in config) {\n // eslint-disable-next-line no-prototype-builtins\n if (!config.hasOwnProperty(confKey)) {\n continue;\n }\n const prop = config[confKey];\n const key = (isFunction(prop) ? confKey : `_${confKey}`);\n this[key] = prop;\n }\n this._config = config;\n }\n calendar(key, date, now) {\n const output = this._calendar[key] || this._calendar[\"sameElse\"];\n return isFunction(output) ? output.call(null, date, now) : output;\n }\n longDateFormat(key) {\n const format = this._longDateFormat[key];\n const formatUpper = this._longDateFormat[key.toUpperCase()];\n if (format || !formatUpper) {\n return format;\n }\n this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n return val.slice(1);\n });\n return this._longDateFormat[key];\n }\n get invalidDate() {\n return this._invalidDate;\n }\n set invalidDate(val) {\n this._invalidDate = val;\n }\n ordinal(num, token) {\n return this._ordinal.replace('%d', num.toString(10));\n }\n preparse(str, format) {\n return str;\n }\n getFullYear(date, isUTC = false) {\n return getFullYear(date, isUTC);\n }\n postformat(str) {\n return str;\n }\n relativeTime(num, withoutSuffix, str, isFuture) {\n const output = this._relativeTime[str];\n return (isFunction(output)) ?\n output(num, withoutSuffix, str, isFuture) :\n output.replace(/%d/i, num.toString(10));\n }\n pastFuture(diff, output) {\n const format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n months(date, format, isUTC = false) {\n if (!date) {\n return isArray(this._months)\n ? this._months\n : this._months.standalone;\n }\n if (isArray(this._months)) {\n return this._months[getMonth(date, isUTC)];\n }\n const key = (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone';\n return this._months[key][getMonth(date, isUTC)];\n }\n monthsShort(date, format, isUTC = false) {\n if (!date) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort.standalone;\n }\n if (isArray(this._monthsShort)) {\n return this._monthsShort[getMonth(date, isUTC)];\n }\n const key = MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone';\n return this._monthsShort[key][getMonth(date, isUTC)];\n }\n monthsParse(monthName, format, strict) {\n let date;\n let regex;\n if (this._monthsParseExact) {\n return this.handleMonthStrictParse(monthName, format, strict);\n }\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n let i;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n date = new Date(Date.UTC(2000, i));\n if (strict && !this._longMonthsParse[i]) {\n const _months = this.months(date, '', true).replace('.', '');\n const _shortMonths = this.monthsShort(date, '', true).replace('.', '');\n this._longMonthsParse[i] = new RegExp(`^${_months}$`, 'i');\n this._shortMonthsParse[i] = new RegExp(`^${_shortMonths}$`, 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = `^${this.months(date, '', true)}|^${this.monthsShort(date, '', true)}`;\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // testing the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n }\n if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n }\n if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this.computeMonthsParse();\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n }\n return this._monthsRegex;\n }\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict ?\n this._monthsStrictRegex : this._monthsRegex;\n }\n monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this.computeMonthsParse();\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n }\n return this._monthsShortRegex;\n }\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict ?\n this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n /** Week */\n week(date, isUTC) {\n return weekOfYear(date, this._week.dow, this._week.doy, isUTC).week;\n }\n firstDayOfWeek() {\n return this._week.dow;\n }\n firstDayOfYear() {\n return this._week.doy;\n }\n weekdays(date, format, isUTC) {\n if (!date) {\n return isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays.standalone;\n }\n if (isArray(this._weekdays)) {\n return this._weekdays[getDay(date, isUTC)];\n }\n const _key = this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone';\n return this._weekdays[_key][getDay(date, isUTC)];\n }\n weekdaysMin(date, format, isUTC) {\n return date ? this._weekdaysMin[getDay(date, isUTC)] : this._weekdaysMin;\n }\n weekdaysShort(date, format, isUTC) {\n return date ? this._weekdaysShort[getDay(date, isUTC)] : this._weekdaysShort;\n }\n // proto.weekdaysParse = localeWeekdaysParse;\n weekdaysParse(weekdayName, format, strict) {\n let i;\n let regex;\n if (this._weekdaysParseExact) {\n return this.handleWeekStrictParse(weekdayName, format, strict);\n }\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n // fix: here is the issue\n const date = setDayOfWeek(new Date(Date.UTC(2000, 1)), i, null, true);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(`^${this.weekdays(date, '', true).replace('.', '\\.?')}$`, 'i');\n this._shortWeekdaysParse[i] = new RegExp(`^${this.weekdaysShort(date, '', true).replace('.', '\\.?')}$`, 'i');\n this._minWeekdaysParse[i] = new RegExp(`^${this.weekdaysMin(date, '', true).replace('.', '\\.?')}$`, 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = `^${this.weekdays(date, '', true)}|^${this.weekdaysShort(date, '', true)}|^${this.weekdaysMin(date, '', true)}`;\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n if (!isArray(this._fullWeekdaysParse)\n || !isArray(this._shortWeekdaysParse)\n || !isArray(this._minWeekdaysParse)\n || !isArray(this._weekdaysParse)) {\n return;\n }\n // testing the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n }\n else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n }\n else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n }\n else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n // proto.weekdaysRegex = weekdaysRegex;\n weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this.computeWeekdaysParse();\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n }\n else {\n return this._weekdaysRegex;\n }\n }\n else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = matchWord;\n }\n return this._weekdaysStrictRegex && isStrict ?\n this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n }\n // proto.weekdaysShortRegex = weekdaysShortRegex;\n // proto.weekdaysMinRegex = weekdaysMinRegex;\n weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this.computeWeekdaysParse();\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n }\n else {\n return this._weekdaysShortRegex;\n }\n }\n else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = matchWord;\n }\n return this._weekdaysShortStrictRegex && isStrict ?\n this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n }\n weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this.computeWeekdaysParse();\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n }\n else {\n return this._weekdaysMinRegex;\n }\n }\n else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = matchWord;\n }\n return this._weekdaysMinStrictRegex && isStrict ?\n this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n }\n isPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return input.toLowerCase().charAt(0) === 'p';\n }\n meridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n }\n return isLower ? 'am' : 'AM';\n }\n formatLongDate(key) {\n this._longDateFormat = this._longDateFormat ? this._longDateFormat : defaultLongDateFormat;\n const format = this._longDateFormat[key];\n const formatUpper = this._longDateFormat[key.toUpperCase()];\n if (format || !formatUpper) {\n return format;\n }\n this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, (val) => {\n return val.slice(1);\n });\n return this._longDateFormat[key];\n }\n handleMonthStrictParse(monthName, format, strict) {\n const llc = monthName.toLocaleLowerCase();\n let i;\n let ii;\n let mom;\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = new Date(2000, i);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n if (strict) {\n if (format === 'MMM') {\n ii = this._shortMonthsParse.indexOf(llc);\n return ii !== -1 ? ii : null;\n }\n ii = this._longMonthsParse.indexOf(llc);\n return ii !== -1 ? ii : null;\n }\n if (format === 'MMM') {\n ii = this._shortMonthsParse.indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = this._longMonthsParse.indexOf(llc);\n return ii !== -1 ? ii : null;\n }\n ii = this._longMonthsParse.indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = this._shortMonthsParse.indexOf(llc);\n return ii !== -1 ? ii : null;\n }\n handleWeekStrictParse(weekdayName, format, strict) {\n let ii;\n const llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n let i;\n for (i = 0; i < 7; ++i) {\n const date = setDayOfWeek(new Date(Date.UTC(2000, 1)), i, null, true);\n this._minWeekdaysParse[i] = this.weekdaysMin(date).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(date).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(date, '').toLocaleLowerCase();\n }\n }\n if (!isArray(this._weekdaysParse)\n || !isArray(this._shortWeekdaysParse)\n || !isArray(this._minWeekdaysParse)) {\n return;\n }\n if (strict) {\n if (format === 'dddd') {\n ii = this._weekdaysParse.indexOf(llc);\n return ii !== -1 ? ii : null;\n }\n else if (format === 'ddd') {\n ii = this._shortWeekdaysParse.indexOf(llc);\n return ii !== -1 ? ii : null;\n }\n else {\n ii = this._minWeekdaysParse.indexOf(llc);\n return ii !== -1 ? ii : null;\n }\n }\n else {\n if (format === 'dddd') {\n ii = this._weekdaysParse.indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = this._shortWeekdaysParse.indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = this._minWeekdaysParse.indexOf(llc);\n return ii !== -1 ? ii : null;\n }\n else if (format === 'ddd') {\n ii = this._shortWeekdaysParse.indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = this._weekdaysParse.indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = this._minWeekdaysParse.indexOf(llc);\n return ii !== -1 ? ii : null;\n }\n else {\n ii = this._minWeekdaysParse.indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = this._weekdaysParse.indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = this._shortWeekdaysParse.indexOf(llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n computeMonthsParse() {\n const shortPieces = [];\n const longPieces = [];\n const mixedPieces = [];\n let date;\n let i;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n date = new Date(2000, i);\n shortPieces.push(this.monthsShort(date, ''));\n longPieces.push(this.months(date, ''));\n mixedPieces.push(this.months(date, ''));\n mixedPieces.push(this.monthsShort(date, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n this._monthsRegex = new RegExp(`^(${mixedPieces.join('|')})`, 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(`^(${longPieces.join('|')})`, 'i');\n this._monthsShortStrictRegex = new RegExp(`^(${shortPieces.join('|')})`, 'i');\n }\n computeWeekdaysParse() {\n const minPieces = [];\n const shortPieces = [];\n const longPieces = [];\n const mixedPieces = [];\n let i;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n // let mom = createUTC([2000, 1]).day(i);\n const date = setDayOfWeek(new Date(Date.UTC(2000, 1)), i, null, true);\n const minp = this.weekdaysMin(date);\n const shortp = this.weekdaysShort(date);\n const longp = this.weekdays(date);\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 7; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n this._weekdaysRegex = new RegExp(`^(${mixedPieces.join('|')})`, 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n this._weekdaysStrictRegex = new RegExp(`^(${longPieces.join('|')})`, 'i');\n this._weekdaysShortStrictRegex = new RegExp(`^(${shortPieces.join('|')})`, 'i');\n this._weekdaysMinStrictRegex = new RegExp(`^(${minPieces.join('|')})`, 'i');\n }\n}\nfunction cmpLenRev(a, b) {\n return b.length - a.length;\n}\n\nconst defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n};\n\nconst defaultInvalidDate = 'Invalid date';\nconst defaultLocaleWeek = {\n dow: 0,\n doy: 6 // The week that contains Jan 1st is the first week of the year.\n};\nconst defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\nconst defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n};\nconst baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n week: defaultLocaleWeek,\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n meridiemParse: defaultLocaleMeridiemParse\n};\n\n// compare two arrays, return the number of differences\nfunction compareArrays(array1, array2, dontConvert) {\n const len = Math.min(array1.length, array2.length);\n const lengthDiff = Math.abs(array1.length - array2.length);\n let diffs = 0;\n let i;\n for (i = 0; i < len; i++) {\n if ((dontConvert && array1[i] !== array2[i])\n || (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n}\n\n// FORMATTING\nfunction initWeek() {\n addFormatToken('w', ['ww', 2, false], 'wo', function (date, opts) {\n return getWeek(date, opts.locale)\n .toString(10);\n });\n addFormatToken('W', ['WW', 2, false], 'Wo', function (date) {\n return getISOWeek(date)\n .toString(10);\n });\n // ALIASES\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n // PRIORITIES\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n // PARSING\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n return config;\n });\n // export function getSetWeek (input) {\n // var week = this.localeData().week(this);\n // return input == null ? week : this.add((input - week) * 7, 'd');\n // }\n}\nfunction setWeek(date, input, locale = getLocale()) {\n const week = getWeek(date, locale);\n return add(date, (input - week) * 7, 'day');\n}\nfunction getWeek(date, locale = getLocale(), isUTC) {\n return locale.week(date, isUTC);\n}\n// export function getSetISOWeek (input) {\n// var week = weekOfYear(this, 1, 4).week;\n// return input == null ? week : this.add((input - week) * 7, 'd');\n// }\nfunction setISOWeek(date, input) {\n const week = getISOWeek(date);\n return add(date, (input - week) * 7, 'day');\n}\nfunction getISOWeek(date, isUTC) {\n return weekOfYear(date, 1, 4, isUTC).week;\n}\n\n// FORMATTING\nfunction initWeekYear() {\n addFormatToken(null, ['gg', 2, false], null, function (date, opts) {\n // return this.weekYear() % 100;\n return (getWeekYear(date, opts.locale) % 100).toString();\n });\n addFormatToken(null, ['GG', 2, false], null, function (date) {\n // return this.isoWeekYear() % 100;\n return (getISOWeekYear(date) % 100).toString();\n });\n addWeekYearFormatToken('gggg', _getWeekYearFormatCb);\n addWeekYearFormatToken('ggggg', _getWeekYearFormatCb);\n addWeekYearFormatToken('GGGG', _getISOWeekYearFormatCb);\n addWeekYearFormatToken('GGGGG', _getISOWeekYearFormatCb);\n // ALIASES\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n // PRIORITY\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n // PARSING\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n return config;\n });\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = parseTwoDigitYear(input);\n return config;\n });\n}\nfunction addWeekYearFormatToken(token, getter) {\n addFormatToken(null, [token, token.length, false], null, getter);\n}\nfunction _getWeekYearFormatCb(date, opts) {\n return getWeekYear(date, opts.locale).toString();\n}\nfunction _getISOWeekYearFormatCb(date) {\n return getISOWeekYear(date).toString();\n}\n// MOMENTS\nfunction getSetWeekYear(date, input, locale = getLocale(), isUTC) {\n return getSetWeekYearHelper(date, input, \n // this.week(),\n getWeek(date, locale, isUTC), \n // this.weekday(),\n getLocaleDayOfWeek(date, locale, isUTC), locale.firstDayOfWeek(), locale.firstDayOfYear(), isUTC);\n}\nfunction getWeekYear(date, locale = getLocale(), isUTC) {\n return weekOfYear(date, locale.firstDayOfWeek(), locale.firstDayOfYear(), isUTC).year;\n}\nfunction getSetISOWeekYear(date, input, isUTC) {\n return getSetWeekYearHelper(date, input, getISOWeek(date, isUTC), getISODayOfWeek(date, isUTC), 1, 4);\n}\nfunction getISOWeekYear(date, isUTC) {\n return weekOfYear(date, 1, 4, isUTC).year;\n}\nfunction getISOWeeksInYear(date, isUTC) {\n return weeksInYear(getFullYear(date, isUTC), 1, 4);\n}\nfunction getWeeksInYear(date, isUTC, locale = getLocale()) {\n return weeksInYear(getFullYear(date, isUTC), locale.firstDayOfWeek(), locale.firstDayOfYear());\n}\nfunction getSetWeekYearHelper(date, input, week, weekday, dow, doy, isUTC) {\n if (!input) {\n return getWeekYear(date, void 0, isUTC);\n }\n const weeksTarget = weeksInYear(input, dow, doy);\n const _week = week > weeksTarget ? weeksTarget : week;\n return setWeekAll(date, input, _week, weekday, dow, doy);\n}\nfunction setWeekAll(date, weekYear, week, weekday, dow, doy) {\n const dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n const _date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n setFullYear(date, getFullYear(_date, true), true);\n setMonth(date, getMonth(_date, true), true);\n setDate(date, getDate(_date, true), true);\n return date;\n}\n\n// todo: add support for timezones\nfunction initTimezone() {\n // FORMATTING\n addFormatToken('z', null, null, function (date, opts) {\n return opts.isUTC ? 'UTC' : '';\n });\n addFormatToken('zz', null, null, function (date, opts) {\n return opts.isUTC ? 'Coordinated Universal Time' : '';\n });\n}\n// MOMENTS\nfunction getZoneAbbr(isUTC) {\n return isUTC ? 'UTC' : '';\n}\nfunction getZoneName(isUTC) {\n return isUTC ? 'Coordinated Universal Time' : '';\n}\n\nfunction initTimestamp() {\n // FORMATTING\n addFormatToken('X', null, null, function (date) {\n return unix(date)\n .toString(10);\n });\n addFormatToken('x', null, null, function (date) {\n return date.valueOf()\n .toString(10);\n });\n // PARSING\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n return config;\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n return config;\n });\n}\n\nfunction initSecond() {\n // FORMATTING\n addFormatToken('s', ['ss', 2, false], null, function (date, opts) {\n return getSeconds(date, opts.isUTC)\n .toString(10);\n });\n // ALIASES\n addUnitAlias('second', 's');\n // PRIORITY\n addUnitPriority('second', 15);\n // PARSING\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n}\n\nfunction initQuarter() {\n // FORMATTING\n addFormatToken('Q', null, 'Qo', function (date, opts) {\n return getQuarter(date, opts.isUTC)\n .toString(10);\n });\n // ALIASES\n addUnitAlias('quarter', 'Q');\n // PRIORITY\n addUnitPriority('quarter', 7);\n // PARSING\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array, config) {\n array[MONTH] = (toInt(input) - 1) * 3;\n return config;\n });\n}\n// MOMENTS\nfunction getQuarter(date, isUTC = false) {\n return Math.ceil((getMonth(date, isUTC) + 1) / 3);\n}\nfunction setQuarter(date, quarter, isUTC) {\n return setMonth(date, (quarter - 1) * 3 + getMonth(date, isUTC) % 3, isUTC);\n}\n// export function getSetQuarter(input) {\n// return input == null\n// ? Math.ceil((this.month() + 1) / 3)\n// : this.month((input - 1) * 3 + this.month() % 3);\n// }\n\n// FORMATTING\nfunction addOffsetFormatToken(token, separator) {\n addFormatToken(token, null, null, function (date, config) {\n let offset = getUTCOffset(date, { _isUTC: config.isUTC, _offset: config.offset });\n let sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n });\n}\nfunction initOffset() {\n addOffsetFormatToken('Z', ':');\n addOffsetFormatToken('ZZ', '');\n // PARSING\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n return config;\n });\n}\n// HELPERS\n// timezone chunker\n// '+10:00' > ['10', '00']\n// '-1530' > ['-15', '30']\nconst chunkOffset = /([\\+\\-]|\\d\\d)/gi;\nfunction offsetFromString(matcher, str) {\n const matches = (str || '').match(matcher);\n if (matches === null) {\n return null;\n }\n const chunk = matches[matches.length - 1];\n const parts = chunk.match(chunkOffset) || ['-', '0', '0'];\n const minutes = parseInt(parts[1], 10) * 60 + toInt(parts[2]);\n const _min = parts[0] === '+' ? minutes : -minutes;\n return minutes === 0 ? 0 : _min;\n}\n// Return a moment from input, that is local/utc/zone equivalent to model.\nfunction cloneWithOffset(input, date, config = {}) {\n if (!config._isUTC) {\n return input;\n }\n const res = cloneDate(date);\n // todo: input._d - res._d + ((res._offset || 0) - (input._offset || 0))*60000\n const offsetDiff = (config._offset || 0) * 60000;\n const diff = input.valueOf() - res.valueOf() + offsetDiff;\n // Use low-level api, because this fn is low-level api.\n res.setTime(res.valueOf() + diff);\n // todo: add timezone handling\n // hooks.updateOffset(res, false);\n return res;\n}\nfunction getDateOffset(date) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(date.getTimezoneOffset() / 15) * 15;\n}\n// HOOKS\n// This function will be called whenever a moment is mutated.\n// It is intended to keep the offset in sync with the timezone.\n// todo: it's from moment timezones\n// hooks.updateOffset = function () {\n// };\n// MOMENTS\n// keepLocalTime = true means only change the timezone, without\n// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n// +0200, so we adjust the time as needed, to be valid.\n//\n// Keeping the time actually adds/subtracts (one hour)\n// from the actual represented time. That is why we call updateOffset\n// a second time. In case it wants us to change the offset again\n// _changeInProgress == true case, then we have to adjust, because\n// there is no such time in the given timezone.\nfunction getUTCOffset(date, config = {}) {\n const _offset = config._offset || 0;\n return config._isUTC ? _offset : getDateOffset(date);\n}\nfunction setUTCOffset(date, input, keepLocalTime, keepMinutes, config = {}) {\n const offset = config._offset || 0;\n let localAdjust;\n let _input = input;\n let _date = date;\n if (isString(_input)) {\n _input = offsetFromString(matchShortOffset, _input);\n if (_input === null) {\n return _date;\n }\n }\n else if (isNumber(_input) && Math.abs(_input) < 16 && !keepMinutes) {\n _input = _input * 60;\n }\n if (!config._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(_date);\n }\n config._offset = _input;\n config._isUTC = true;\n if (localAdjust != null) {\n _date = add(_date, localAdjust, 'minutes');\n }\n if (offset !== _input) {\n if (!keepLocalTime || config._changeInProgress) {\n _date = add(_date, _input - offset, 'minutes', config._isUTC);\n // addSubtract(this, createDuration(_input - offset, 'm'), 1, false);\n }\n else if (!config._changeInProgress) {\n config._changeInProgress = true;\n // todo: add timezone handling\n // hooks.updateOffset(this, true);\n config._changeInProgress = null;\n }\n }\n return _date;\n}\n/*\nexport function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n}\n*/\nfunction setOffsetToUTC(date, keepLocalTime) {\n return setUTCOffset(date, 0, keepLocalTime);\n}\nfunction isDaylightSavingTime(date) {\n return (getUTCOffset(date) > getUTCOffset(setMonth(cloneDate(date), 0))\n || getUTCOffset(date) > getUTCOffset(setMonth(cloneDate(date), 5)));\n}\n/*export function setOffsetToLocal(date: Date, isUTC?: boolean, keepLocalTime?: boolean) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n}*/\nfunction setOffsetToParsedOffset(date, input, config = {}) {\n if (config._tzm != null) {\n return setUTCOffset(date, config._tzm, false, true, config);\n }\n if (isString(input)) {\n const tZone = offsetFromString(matchOffset, input);\n if (tZone != null) {\n return setUTCOffset(date, tZone, false, false, config);\n }\n return setUTCOffset(date, 0, true, false, config);\n }\n return date;\n}\nfunction hasAlignedHourOffset(date, input) {\n const _input = input ? getUTCOffset(input, { _isUTC: false }) : 0;\n return (getUTCOffset(date) - _input) % 60 === 0;\n}\n// DEPRECATED\n/*export function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n const c = {};\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n const other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() &&\n compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n}*/\n// in Khronos\n/*export function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n}\n\nexport function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n}\n\nexport function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n}*/\n\nfunction initMinute() {\n // FORMATTING\n addFormatToken('m', ['mm', 2, false], null, function (date, opts) {\n return getMinutes(date, opts.isUTC)\n .toString(10);\n });\n // ALIASES\n addUnitAlias('minute', 'm');\n // PRIORITY\n addUnitPriority('minute', 14);\n // PARSING\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n}\n\n// FORMATTING\nfunction initMillisecond() {\n addFormatToken('S', null, null, function (date, opts) {\n return (~~(getMilliseconds(date, opts.isUTC) / 100)).toString(10);\n });\n addFormatToken(null, ['SS', 2, false], null, function (date, opts) {\n return (~~(getMilliseconds(date, opts.isUTC) / 10)).toString(10);\n });\n addFormatToken(null, ['SSS', 3, false], null, function (date, opts) {\n return (getMilliseconds(date, opts.isUTC)).toString(10);\n });\n addFormatToken(null, ['SSSS', 4, false], null, function (date, opts) {\n return (getMilliseconds(date, opts.isUTC) * 10).toString(10);\n });\n addFormatToken(null, ['SSSSS', 5, false], null, function (date, opts) {\n return (getMilliseconds(date, opts.isUTC) * 100).toString(10);\n });\n addFormatToken(null, ['SSSSSS', 6, false], null, function (date, opts) {\n return (getMilliseconds(date, opts.isUTC) * 1000).toString(10);\n });\n addFormatToken(null, ['SSSSSSS', 7, false], null, function (date, opts) {\n return (getMilliseconds(date, opts.isUTC) * 10000).toString(10);\n });\n addFormatToken(null, ['SSSSSSSS', 8, false], null, function (date, opts) {\n return (getMilliseconds(date, opts.isUTC) * 100000).toString(10);\n });\n addFormatToken(null, ['SSSSSSSSS', 9, false], null, function (date, opts) {\n return (getMilliseconds(date, opts.isUTC) * 1000000).toString(10);\n });\n // ALIASES\n addUnitAlias('millisecond', 'ms');\n // PRIORITY\n addUnitPriority('millisecond', 16);\n // PARSING\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n let token;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n function parseMs(input, array, config) {\n array[MILLISECOND] = toInt(parseFloat(`0.${input}`) * 1000);\n return config;\n }\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n // MOMENTS\n}\n\nfunction initHour() {\n // FORMATTING\n function hFormat(date, isUTC) {\n return getHours(date, isUTC) % 12 || 12;\n }\n function kFormat(date, isUTC) {\n return getHours(date, isUTC) || 24;\n }\n addFormatToken('H', ['HH', 2, false], null, function (date, opts) {\n return getHours(date, opts.isUTC)\n .toString(10);\n });\n addFormatToken('h', ['hh', 2, false], null, function (date, opts) {\n return hFormat(date, opts.isUTC)\n .toString(10);\n });\n addFormatToken('k', ['kk', 2, false], null, function (date, opts) {\n return kFormat(date, opts.isUTC)\n .toString(10);\n });\n addFormatToken('hmm', null, null, function (date, opts) {\n const _h = hFormat(date, opts.isUTC);\n const _mm = zeroFill(getMinutes(date, opts.isUTC), 2);\n return `${_h}${_mm}`;\n });\n addFormatToken('hmmss', null, null, function (date, opts) {\n const _h = hFormat(date, opts.isUTC);\n const _mm = zeroFill(getMinutes(date, opts.isUTC), 2);\n const _ss = zeroFill(getSeconds(date, opts.isUTC), 2);\n return `${_h}${_mm}${_ss}`;\n });\n addFormatToken('Hmm', null, null, function (date, opts) {\n const _H = getHours(date, opts.isUTC);\n const _mm = zeroFill(getMinutes(date, opts.isUTC), 2);\n return `${_H}${_mm}`;\n });\n addFormatToken('Hmmss', null, null, function (date, opts) {\n const _H = getHours(date, opts.isUTC);\n const _mm = zeroFill(getMinutes(date, opts.isUTC), 2);\n const _ss = zeroFill(getSeconds(date, opts.isUTC), 2);\n return `${_H}${_mm}${_ss}`;\n });\n function meridiem(token, lowercase) {\n addFormatToken(token, null, null, function (date, opts) {\n return opts.locale.meridiem(getHours(date, opts.isUTC), getMinutes(date, opts.isUTC), lowercase);\n });\n }\n meridiem('a', true);\n meridiem('A', false);\n // ALIASES\n addUnitAlias('hour', 'h');\n // PRIORITY\n addUnitPriority('hour', 13);\n // PARSING\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n const kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n return config;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n return config;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n return config;\n });\n addParseToken('hmm', function (input, array, config) {\n const pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n return config;\n });\n addParseToken('hmmss', function (input, array, config) {\n const pos1 = input.length - 4;\n const pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n return config;\n });\n addParseToken('Hmm', function (input, array, config) {\n const pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n return config;\n });\n addParseToken('Hmmss', function (input, array, config) {\n const pos1 = input.length - 4;\n const pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n return config;\n });\n}\n\n// internal storage for locale config files\nconst locales = {};\nconst localeFamilies = {};\nlet globalLocale;\nfunction normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n}\n// pick the locale from the array\n// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n// substring from most specific to least,\n// but move to the next array item if it's a more specific variant than the current root\nfunction chooseLocale(names) {\n let next;\n let locale;\n let i = 0;\n while (i < names.length) {\n const split = normalizeLocale(names[i]).split('-');\n let j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n // the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return null;\n}\nfunction mergeConfigs(parentConfig, childConfig) {\n const res = Object.assign({}, parentConfig);\n for (const childProp in childConfig) {\n if (!hasOwnProp(childConfig, childProp)) {\n continue;\n }\n if (isObject(parentConfig[childProp]) && isObject(childConfig[childProp])) {\n res[childProp] = {};\n Object.assign(res[childProp], parentConfig[childProp]);\n Object.assign(res[childProp], childConfig[childProp]);\n }\n else if (childConfig[childProp] != null) {\n res[childProp] = childConfig[childProp];\n }\n else {\n delete res[childProp];\n }\n }\n for (const parentProp in parentConfig) {\n if (hasOwnProp(parentConfig, parentProp) &&\n !hasOwnProp(childConfig, parentProp) &&\n isObject(parentConfig[parentProp])) {\n // make sure changes to properties don't modify parent config\n res[parentProp] = Object.assign({}, res[parentProp]);\n }\n }\n return res;\n}\nfunction loadLocale(name) {\n // no way!\n /* var oldLocale = null;\n // TODO: Find a better way to register and load all the locales in Node\n if (!locales[name] && (typeof module !== 'undefined') &&\n module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n var aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {}\n }*/\n if (!locales[name]) {\n console.error(`Khronos locale error: please load locale \"${name}\" before using it`);\n // throw new Error(`Khronos locale error: please load locale \"${name}\" before using it`);\n }\n return locales[name];\n}\n// This function will load locale and then set the global locale. If\n// no arguments are passed in, it will simply return the current global\n// locale key.\nfunction getSetGlobalLocale(key, values) {\n let data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n }\n else if (isString(key)) {\n data = defineLocale(key, values);\n }\n if (data) {\n globalLocale = data;\n }\n }\n return globalLocale && globalLocale._abbr;\n}\nfunction defineLocale(name, config) {\n if (config === null) {\n // useful for testing\n delete locales[name];\n globalLocale = getLocale('en');\n return null;\n }\n if (!config) {\n return;\n }\n let parentConfig = baseConfig;\n config.abbr = name;\n if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n }\n else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({ name, config });\n return null;\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n return locales[name];\n}\nfunction updateLocale(name, config) {\n let _config = config;\n if (_config != null) {\n let parentConfig = baseConfig;\n // MERGE\n const tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n _config = mergeConfigs(parentConfig, _config);\n const locale = new Locale(_config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n }\n else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n }\n else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n}\n// returns locale data\nfunction getLocale(key) {\n setDefaultLocale();\n if (!key) {\n return globalLocale;\n }\n // let locale;\n const _key = isArray(key) ? key : [key];\n return chooseLocale(_key);\n}\nfunction listLocales() {\n return Object.keys(locales);\n}\nfunction setDefaultLocale() {\n if (locales[`en`]) {\n return undefined;\n }\n getSetGlobalLocale('en', {\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal(num) {\n const b = num % 10;\n const output = toInt((num % 100) / 10) === 1\n ? 'th'\n : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return num + output;\n }\n });\n initWeek();\n initWeekYear();\n initYear();\n initTimezone();\n initTimestamp();\n initSecond();\n initQuarter();\n initOffset();\n initMonth();\n initMinute();\n initMillisecond();\n initHour();\n initDayOfYear();\n initDayOfWeek();\n initDayOfMonth();\n}\n\nconst ordering = ['year', 'quarter', 'month', 'week', 'day', 'hours', 'minutes', 'seconds', 'milliseconds'];\nconst orderingHash = ordering.reduce((mem, order) => {\n mem[order] = true;\n return mem;\n}, {});\nfunction isDurationValid(duration) {\n const durationKeys = Object.keys(duration);\n if (durationKeys\n .some((key) => {\n return (key in orderingHash)\n && duration[key] === null\n || isNaN(duration[key]);\n })) {\n return false;\n }\n // for (let key in duration) {\n // if (!(indexOf.call(ordering, key) !== -1 && (duration[key] == null || !isNaN(duration[key])))) {\n // return false;\n // }\n // }\n let unitHasDecimal = false;\n for (let i = 0; i < ordering.length; ++i) {\n if (duration[ordering[i]]) {\n // only allow non-integers for smallest unit\n if (unitHasDecimal) {\n return false;\n }\n if (duration[ordering[i]] !== toInt(duration[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n return true;\n}\n// export function isValid() {\n// return this._isValid;\n// }\n//\n// export function createInvalid(): Duration {\n// return createDuration(NaN);\n// }\n\nfunction absCeil(number) {\n return number < 0 ? Math.floor(number) : Math.ceil(number);\n}\n\nfunction bubble(dur) {\n let milliseconds = dur._milliseconds;\n let days = dur._days;\n let months = dur._months;\n const data = dur._data;\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0))) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n const seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n const minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n const hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n days += absFloor(hours / 24);\n // convert days to months\n const monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n // 12 months -> 1 year\n const years = absFloor(months / 12);\n months %= 12;\n data.day = days;\n data.month = months;\n data.year = years;\n return dur;\n}\nfunction daysToMonths(day) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return day * 4800 / 146097;\n}\nfunction monthsToDays(month) {\n // the reverse of daysToMonths\n return month * 146097 / 4800;\n}\n\nlet round = Math.round;\nconst thresholds = {\n ss: 44,\n s: 45,\n m: 45,\n h: 22,\n d: 26,\n M: 11 // months to year\n};\n// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\nfunction substituteTimeAgo(str, num, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(num || 1, !!withoutSuffix, str, isFuture);\n}\nfunction relativeTime(posNegDuration, withoutSuffix, locale) {\n const duration = createDuration(posNegDuration).abs();\n const seconds = round(duration.as('s'));\n const minutes = round(duration.as('m'));\n const hours = round(duration.as('h'));\n const days = round(duration.as('d'));\n const months = round(duration.as('M'));\n const years = round(duration.as('y'));\n const a = seconds <= thresholds[\"ss\"] && ['s', seconds] ||\n seconds < thresholds[\"s\"] && ['ss', seconds] ||\n minutes <= 1 && ['m'] ||\n minutes < thresholds[\"m\"] && ['mm', minutes] ||\n hours <= 1 && ['h'] ||\n hours < thresholds[\"h\"] && ['hh', hours] ||\n days <= 1 && ['d'] ||\n days < thresholds[\"d\"] && ['dd', days] ||\n months <= 1 && ['M'] ||\n months < thresholds[\"M\"] && ['MM', months] ||\n years <= 1 && ['y'] || ['yy', years];\n const b = [a[0], a[1], withoutSuffix, +posNegDuration > 0, locale];\n // a[2] = withoutSuffix;\n // a[3] = +posNegDuration > 0;\n // a[4] = locale;\n return substituteTimeAgo.apply(null, b);\n}\n// This function allows you to set the rounding function for relative time strings\nfunction getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof (roundingFunction) === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n}\n// This function allows you to set a threshold for relative time strings\nfunction getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds[\"ss\"] = limit - 1;\n }\n return true;\n}\n// export function humanize(withSuffix) {\n// if (!this.isValid()) {\n// return this.localeData().invalidDate();\n// }\n//\n// const locale = this.localeData();\n// let output = relativeTime(this, !withSuffix, locale);\n//\n// if (withSuffix) {\n// output = locale.pastFuture(+this, output);\n// }\n//\n// return locale.postformat(output);\n// }\n\nclass Duration {\n constructor(duration, config = {}) {\n this._data = {};\n this._locale = getLocale();\n this._locale = config && config._locale || getLocale();\n // const normalizedInput = normalizeObjectUnits(duration);\n const normalizedInput = duration;\n const years = normalizedInput.year || 0;\n const quarters = normalizedInput.quarter || 0;\n const months = normalizedInput.month || 0;\n const weeks = normalizedInput.week || 0;\n const days = normalizedInput.day || 0;\n const hours = normalizedInput.hours || 0;\n const minutes = normalizedInput.minutes || 0;\n const seconds = normalizedInput.seconds || 0;\n const milliseconds = normalizedInput.milliseconds || 0;\n this._isValid = isDurationValid(normalizedInput);\n // representation for dateAddRemove\n this._milliseconds = +milliseconds +\n seconds * 1000 +\n minutes * 60 * 1000 + // 1000 * 60\n hours * 1000 * 60 * 60; // using 1000 * 60 * 60\n // instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days +\n weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months +\n quarters * 3 +\n years * 12;\n // this._data = {};\n // this._locale = getLocale();\n // this._bubble();\n return bubble(this);\n }\n isValid() {\n return this._isValid;\n }\n humanize(withSuffix) {\n // throw new Error(`TODO: implement`);\n if (!this.isValid()) {\n return this.localeData().invalidDate;\n }\n const locale = this.localeData();\n let output = relativeTime(this, !withSuffix, locale);\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n return locale.postformat(output);\n }\n localeData() {\n return this._locale;\n }\n locale(localeKey) {\n if (!localeKey) {\n return this._locale._abbr;\n }\n this._locale = getLocale(localeKey) || this._locale;\n return this;\n }\n abs() {\n const mathAbs = Math.abs;\n const data = this._data;\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.month = mathAbs(data.month);\n data.year = mathAbs(data.year);\n return this;\n }\n as(_units) {\n if (!this.isValid()) {\n return NaN;\n }\n let days;\n let months;\n const milliseconds = this._milliseconds;\n const units = normalizeUnits(_units);\n if (units === 'month' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n return units === 'month' ? months : months / 12;\n }\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hours':\n return days * 24 + milliseconds / 36e5;\n case 'minutes':\n return days * 1440 + milliseconds / 6e4;\n case 'seconds':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'milliseconds':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error(`Unknown unit ${units}`);\n }\n }\n valueOf() {\n if (!this.isValid()) {\n return NaN;\n }\n return (this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6);\n }\n}\nfunction isDuration(obj) {\n return obj instanceof Duration;\n}\n\nfunction isValid(config) {\n if (config._isValid == null) {\n const flags = getParsingFlags(config);\n const parsedParts = Array.prototype.some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n let isNowValid = !isNaN(config._d && config._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n if (config._strict) {\n isNowValid = isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n if (Object.isFrozen == null || !Object.isFrozen(config)) {\n config._isValid = isNowValid;\n }\n else {\n return isNowValid;\n }\n }\n return config._isValid;\n}\nfunction createInvalid(config, flags) {\n config._d = new Date(NaN);\n Object.assign(getParsingFlags(config), flags || { userInvalidated: true });\n return config;\n}\nfunction markInvalid(config) {\n config._isValid = false;\n return config;\n}\n\n// iso 8601 regex\n// 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\nconst extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\nconst basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\nconst tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\nconst isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/, true],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/, true],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/, true],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/, true],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/, true],\n ['YYYYMMDD', /\\d{8}/, true],\n // YYYYMM is NOT allowed by the standard\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/, true],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/, true]\n];\n// iso time formats and regexes\nconst isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/]\n];\nconst aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\nconst obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60\n};\n// RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\nconst rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/;\n// date from iso format\nfunction configFromISO(config) {\n if (!isString(config._i)) {\n return config;\n }\n const input = config._i;\n const match = extendedIsoRegex.exec(input) || basicIsoRegex.exec(input);\n let allowTime;\n let dateFormat;\n let timeFormat;\n let tzFormat;\n if (!match) {\n config._isValid = false;\n return config;\n }\n // getParsingFlags(config).iso = true;\n let i;\n let l;\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return config;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return config;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return config;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n }\n else {\n config._isValid = false;\n return config;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n return configFromStringAndFormat(config);\n}\nfunction extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n const result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10)\n ];\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n return result;\n}\nfunction untruncateYear(yearStr) {\n const year = parseInt(yearStr, 10);\n return year <= 49 ? year + 2000 : year;\n}\nfunction preprocessRFC2822(str) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return str\n .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ').trim();\n}\nfunction checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.\n const weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr);\n const weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n}\nfunction calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n }\n else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n }\n else {\n const hm = parseInt(numOffset, 10);\n const m = hm % 100;\n const h = (hm - m) / 100;\n return h * 60 + m;\n }\n}\n// date and time from ref 2822 format\nfunction configFromRFC2822(config) {\n if (!isString(config._i)) {\n return config;\n }\n const match = rfc2822.exec(preprocessRFC2822(config._i));\n if (!match) {\n return markInvalid(config);\n }\n const parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\n if (!checkWeekday(match[1], parsedArray, config)) {\n return config;\n }\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n getParsingFlags(config).rfc2822 = true;\n return config;\n}\n// date from iso format or fallback\nfunction configFromString(config) {\n if (!isString(config._i)) {\n return config;\n }\n const matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return config;\n }\n // todo: update logic processing\n // isISO -> configFromISO\n // isRFC -> configFromRFC\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n }\n else {\n return config;\n }\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n }\n else {\n return config;\n }\n // Final attempt, use Input Fallback\n // hooks.createFromInputFallback(config);\n return createInvalid(config);\n}\n// hooks.createFromInputFallback = deprecate(\n// 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n// 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n// 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n// 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n// function (config) {\n// config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n// }\n// );\n\n// moment.js\nfunction formatDate(date, format, locale, isUTC, offset = 0) {\n const _locale = getLocale(locale || 'en');\n if (!_locale) {\n throw new Error(`Locale \"${locale}\" is not defined, please add it with \"defineLocale(...)\"`);\n }\n const _format = format || (isUTC ? 'YYYY-MM-DDTHH:mm:ss[Z]' : 'YYYY-MM-DDTHH:mm:ssZ');\n const output = formatMoment(date, _format, _locale, isUTC, offset);\n if (!output) {\n return output;\n }\n return _locale.postformat(output);\n}\n// format date using native date object\nfunction formatMoment(date, _format, locale, isUTC, offset = 0) {\n if (!isDateValid(date)) {\n return locale.invalidDate;\n }\n const format = expandFormat(_format, locale);\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n return formatFunctions[format](date, locale, isUTC, offset);\n}\nfunction expandFormat(_format, locale) {\n let format = _format;\n let i = 5;\n const localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n const replaceLongDateFormatTokens = (input) => {\n return locale.formatLongDate(input) || input;\n };\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n return format;\n}\n\n// Pick the first defined of two or three arguments.\nfunction defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n}\n\nfunction currentDateArray(config) {\n const nowValue = new Date();\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n}\n// convert an array to a date.\n// the array should mirror the parameters below\n// note: all values past the year are optional and will default to the lowest possible value.\n// [year, month, day , hour, minute, second, millisecond]\nfunction configFromArray(config) {\n const input = [];\n let i;\n let date;\n let yearToUse;\n if (config._d) {\n return config;\n }\n const currentDate = currentDateArray(config);\n // compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n // if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n date = new Date(Date.UTC(yearToUse, 0, config._dayOfYear));\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n }\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n // eslint-disable-next-line prefer-spread\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n const expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n // check for mismatching day of week\n if (config._w && typeof config._w[\"d\"] !== 'undefined' && config._w[\"d\"] !== expectedWeekday) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n return config;\n}\nfunction dayOfYearFromWeekInfo(config) {\n let weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n const w = config._w;\n if (w[\"GG\"] != null || w[\"W\"] != null || w[\"E\"] != null) {\n dow = 1;\n doy = 4;\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w[\"GG\"], config._a[YEAR], weekOfYear(new Date(), 1, 4).year);\n week = defaults(w[\"W\"], 1);\n weekday = defaults(w[\"E\"], 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n }\n else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n const curWeek = weekOfYear(new Date(), dow, doy);\n weekYear = defaults(w[\"gg\"], config._a[YEAR], curWeek.year);\n // Default to current week.\n week = defaults(w[\"w\"], curWeek.week);\n if (w[\"d\"] != null) {\n // weekday -- low day numbers are considered next week\n weekday = w[\"d\"];\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n }\n else if (w[\"e\"] != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w[\"e\"] + dow;\n if (w[\"e\"] < 0 || w[\"e\"] > 6) {\n weekdayOverflow = true;\n }\n }\n else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n }\n else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n }\n else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n return config;\n}\n\nfunction checkOverflow(config) {\n let overflow;\n const a = config._a;\n if (a && getParsingFlags(config).overflow === -2) {\n // todo: fix this sh*t\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :\n a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\n a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :\n a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :\n a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n -1;\n if (getParsingFlags(config)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(config)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(config)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n getParsingFlags(config).overflow = overflow;\n }\n return config;\n}\n\n// constant that refers to the ISO standard\n// hooks.ISO_8601 = function () {};\nconst ISO_8601 = 'ISO_8601';\n// constant that refers to the RFC 2822 form\n// hooks.RFC_2822 = function () {};\nconst RFC_2822 = 'RFC_2822';\n// date from string and format string\nfunction configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === ISO_8601) {\n return configFromISO(config);\n }\n if (config._f === RFC_2822) {\n return configFromRFC2822(config);\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n if (isArray(config._f) || (!config._i && config._i !== 0)) {\n return config;\n }\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n let input = config._i.toString();\n let totalParsedInputLength = 0;\n const inputLength = input.length;\n const tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n let i;\n let token;\n let parsedInput;\n let skipped;\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (input.match(getParseRegexForToken(token, config._locale)) || [])[0];\n if (parsedInput) {\n skipped = input.substr(0, input.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n input = input.slice(input.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n }\n else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n }\n else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = inputLength - totalParsedInputLength;\n if (input.length > 0) {\n getParsingFlags(config).unusedInput.push(input);\n }\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = void 0;\n }\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n configFromArray(config);\n return checkOverflow(config);\n}\nfunction meridiemFixWrap(locale, _hour, meridiem) {\n let hour = _hour;\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n }\n if (locale.isPM == null) {\n // this is not supposed to happen\n return hour;\n }\n // Fallback\n const isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n}\n\n// date from string and array of format strings\nfunction configFromStringAndArray(config) {\n let tempConfig;\n let bestMoment;\n let scoreToBeat;\n let currentScore;\n if (!config._f || config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n return createInvalid(config);\n }\n let i;\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n tempConfig = Object.assign({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n if (!isValid(tempConfig)) {\n continue;\n }\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n // or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n getParsingFlags(tempConfig).score = currentScore;\n if (scoreToBeat == null || currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n return Object.assign(config, bestMoment || tempConfig);\n}\n\nfunction configFromObject(config) {\n if (config._d) {\n return config;\n }\n const input = config._i;\n if (isObject(input)) {\n const i = normalizeObjectUnits(input);\n config._a = [i.year, i.month, i.day, i.hours, i.minutes, i.seconds, i.milliseconds]\n // todo: obsolete -> remove it\n .map(obj => isString(obj) ? parseInt(obj, 10) : obj);\n }\n return configFromArray(config);\n}\n\nfunction createFromConfig(config) {\n const res = checkOverflow(prepareConfig(config));\n // todo: remove, in moment.js it's never called cuz of moment constructor\n res._d = new Date(res._d != null ? res._d.getTime() : NaN);\n if (!isValid(Object.assign({}, res, { _isValid: null }))) {\n res._d = new Date(NaN);\n }\n // todo: update offset\n /*if (res._nextDay) {\n // Adding is smart enough around DST\n res._d = add(res._d, 1, 'day');\n res._nextDay = undefined;\n }*/\n return res;\n}\nfunction prepareConfig(config) {\n let input = config._i;\n const format = config._f;\n config._locale = config._locale || getLocale(config._l);\n if (input === null || (format === undefined && input === '')) {\n return createInvalid(config, { nullInput: true });\n }\n if (isString(input)) {\n config._i = input = config._locale.preparse(input, format);\n }\n if (isDate(input)) {\n config._d = cloneDate(input);\n return config;\n }\n // todo: add check for recursion\n if (isArray(format)) {\n configFromStringAndArray(config);\n }\n else if (format) {\n configFromStringAndFormat(config);\n }\n else {\n configFromInput(config);\n }\n if (!isValid(config)) {\n config._d = null;\n }\n return config;\n}\nfunction configFromInput(config) {\n const input = config._i;\n if (isUndefined(input)) {\n config._d = new Date();\n }\n else if (isDate(input)) {\n config._d = cloneDate(input);\n }\n else if (isString(input)) {\n configFromString(config);\n }\n else if (isArray(input) && input.length) {\n const _arr = input.slice(0);\n config._a = _arr.map(obj => isString(obj) ? parseInt(obj, 10) : obj);\n configFromArray(config);\n }\n else if (isObject(input)) {\n configFromObject(config);\n }\n else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n }\n else {\n // hooks.createFromInputFallback(config);\n return createInvalid(config);\n }\n return config;\n}\nfunction createLocalOrUTC(input, format, localeKey, strict, isUTC) {\n const config = {};\n let _input = input;\n // params switch -> skip; testing it well\n // if (localeKey === true || localeKey === false) {\n // strict = localeKey;\n // localeKey = undefined;\n // }\n // todo: fail fast and return not valid date\n if ((isObject(_input) && isObjectEmpty(_input)) || (isArray(_input) && _input.length === 0)) {\n _input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n // config._isAMomentObject = true;\n config._useUTC = config._isUTC = isUTC;\n config._l = localeKey;\n config._i = _input;\n config._f = format;\n config._strict = strict;\n return createFromConfig(config);\n}\n\nfunction parseDate(input, format, localeKey, strict, isUTC) {\n if (isDate(input)) {\n return input;\n }\n const config = createLocalOrUTC(input, format, localeKey, strict, isUTC);\n return config._d;\n}\nfunction utcAsLocal(date) {\n if (!(date instanceof Date)) {\n return null;\n }\n return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n}\n\nfunction absRound(num) {\n return num < 0 ? Math.round(num * -1) * -1 : Math.round(num);\n}\n\nfunction isAfter(date1, date2, units = 'milliseconds') {\n if (!date1 || !date2) {\n return false;\n }\n if (units === 'milliseconds') {\n return date1.valueOf() > date2.valueOf();\n }\n return date2.valueOf() < startOf(date1, units).valueOf();\n}\nfunction isBefore(date1, date2, units = 'milliseconds') {\n if (!date1 || !date2) {\n return false;\n }\n if (units === 'milliseconds') {\n return date1.valueOf() < date2.valueOf();\n }\n return endOf(date1, units).valueOf() < date2.valueOf();\n}\nfunction isDisabledDay(date, daysDisabled) {\n if (typeof daysDisabled === 'undefined' || !daysDisabled || !daysDisabled.length) {\n return false;\n }\n return daysDisabled.some((day) => day === date.getDay());\n}\nfunction isBetween(date, from, to, units, inclusivity = '()') {\n const leftBound = inclusivity[0] === '('\n ? isAfter(date, from, units)\n : !isBefore(date, from, units);\n const rightBound = inclusivity[1] === ')'\n ? isBefore(date, to, units)\n : !isAfter(date, to, units);\n return leftBound && rightBound;\n}\nfunction isSame(date1, date2, units = 'milliseconds') {\n if (!date1 || !date2) {\n return false;\n }\n if (units === 'milliseconds') {\n return date1.valueOf() === date2.valueOf();\n }\n const inputMs = date2.valueOf();\n return (startOf(date1, units).valueOf() <= inputMs &&\n inputMs <= endOf(date1, units).valueOf());\n}\nfunction isSameDay(date1, date2) {\n return (date1.getDay() == date2.getDay());\n}\nfunction isSameOrAfter(date1, date2, units) {\n return isSame(date1, date2, units) || isAfter(date1, date2, units);\n}\nfunction isSameOrBefore(date1, date2, units) {\n return isSame(date1, date2, units) || isBefore(date1, date2, units);\n}\n\n// ASP.NET json date format regex\nconst aspNetRegex = /^(\\-|\\+)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\n// from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n// somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n// and further modified to allow for strings containing both week and day\nconst isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\nfunction createDuration(input, key, config = {}) {\n const duration = convertDuration(input, key);\n // matching against regexp is expensive, do it on demand\n return new Duration(duration, config);\n}\nfunction convertDuration(input, key) {\n // checks for null or undefined\n if (input == null) {\n return {};\n }\n if (isDuration(input)) {\n return {\n milliseconds: input._milliseconds,\n day: input._days,\n month: input._months\n };\n }\n if (isNumber(input)) {\n // duration = {};\n return key ? { [key]: input } : { milliseconds: input };\n }\n if (isString(input)) {\n let match = aspNetRegex.exec(input);\n if (match) {\n const sign = (match[1] === '-') ? -1 : 1;\n return {\n year: 0,\n day: toInt(match[DATE]) * sign,\n hours: toInt(match[HOUR]) * sign,\n minutes: toInt(match[MINUTE]) * sign,\n seconds: toInt(match[SECOND]) * sign,\n // the millisecond decimal point is included in the match\n milliseconds: toInt(absRound(toInt(match[MILLISECOND]) * 1000)) * sign\n };\n }\n match = isoRegex.exec(input);\n if (match) {\n const sign = (match[1] === '-') ? -1 : (match[1] === '+') ? 1 : 1;\n return {\n year: parseIso(match[2], sign),\n month: parseIso(match[3], sign),\n week: parseIso(match[4], sign),\n day: parseIso(match[5], sign),\n hours: parseIso(match[6], sign),\n minutes: parseIso(match[7], sign),\n seconds: parseIso(match[8], sign)\n };\n }\n }\n if (isObject(input) && ('from' in input || 'to' in input)) {\n const diffRes = momentsDifference(parseDate(input.from), parseDate(input.to));\n return {\n milliseconds: diffRes.milliseconds,\n month: diffRes.months\n };\n }\n return input;\n}\n// createDuration.fn = Duration.prototype;\n// createDuration.invalid = invalid;\nfunction parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n const res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n}\nfunction positiveMomentsDifference(base, other) {\n const res = { milliseconds: 0, months: 0 };\n res.months = getMonth(other) - getMonth(base) +\n (getFullYear(other) - getFullYear(base)) * 12;\n const _basePlus = add(cloneDate(base), res.months, 'month');\n if (isAfter(_basePlus, other)) {\n --res.months;\n }\n res.milliseconds = +other - +(add(cloneDate(base), res.months, 'month'));\n return res;\n}\nfunction momentsDifference(base, other) {\n if (!(isDateValid(base) && isDateValid(other))) {\n return { milliseconds: 0, months: 0 };\n }\n let res;\n const _other = cloneWithOffset(other, base, { _offset: base.getTimezoneOffset() });\n if (isBefore(base, _other)) {\n res = positiveMomentsDifference(base, _other);\n }\n else {\n res = positiveMomentsDifference(_other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n return res;\n}\n\nfunction add(date, val, period, isUTC) {\n const dur = createDuration(val, period);\n return addSubtract(date, dur, 1, isUTC);\n}\nfunction subtract(date, val, period, isUTC) {\n const dur = createDuration(val, period);\n return addSubtract(date, dur, -1, isUTC);\n}\nfunction addSubtract(date, duration, isAdding, isUTC) {\n const milliseconds = duration._milliseconds;\n const days = absRound(duration._days);\n const months = absRound(duration._months);\n // todo: add timezones support\n // const _updateOffset = updateOffset == null ? true : updateOffset;\n if (months) {\n setMonth(date, getMonth(date, isUTC) + months * isAdding, isUTC);\n }\n if (days) {\n setDate(date, getDate(date, isUTC) + days * isAdding, isUTC);\n }\n if (milliseconds) {\n setTime(date, getTime(date) + milliseconds * isAdding);\n }\n return cloneDate(date);\n // todo: add timezones support\n // if (_updateOffset) {\n // hooks.updateOffset(date, days || months);\n // }\n}\n\nfunction initDayOfWeek() {\n // FORMATTING\n addFormatToken('d', null, 'do', function (date, opts) {\n return getDay(date, opts.isUTC)\n .toString(10);\n });\n addFormatToken('dd', null, null, function (date, opts) {\n return opts.locale.weekdaysMin(date, opts.format, opts.isUTC);\n });\n addFormatToken('ddd', null, null, function (date, opts) {\n return opts.locale.weekdaysShort(date, opts.format, opts.isUTC);\n });\n addFormatToken('dddd', null, null, function (date, opts) {\n return opts.locale.weekdays(date, opts.format, opts.isUTC);\n });\n addFormatToken('e', null, null, function (date, opts) {\n return getLocaleDayOfWeek(date, opts.locale, opts.isUTC)\n .toString(10);\n // return getDay(date, opts.isUTC).toString(10);\n });\n addFormatToken('E', null, null, function (date, opts) {\n return getISODayOfWeek(date, opts.isUTC)\n .toString(10);\n });\n // ALIASES\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n // PARSING\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n const weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week[\"d\"] = weekday;\n }\n else {\n getParsingFlags(config).invalidWeekday = !!input;\n }\n return config;\n });\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n return config;\n });\n}\n// HELPERS\nfunction parseWeekday(input, locale) {\n if (!isString(input)) {\n return input;\n }\n const _num = parseInt(input, 10);\n if (!isNaN(_num)) {\n return _num;\n }\n const _weekDay = locale.weekdaysParse(input);\n if (isNumber(_weekDay)) {\n return _weekDay;\n }\n return null;\n}\nfunction parseIsoWeekday(input, locale = getLocale()) {\n if (isString(input)) {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNumber(input) && isNaN(input) ? null : input;\n}\n// MOMENTS\nfunction getSetDayOfWeek(date, input, opts) {\n if (!input) {\n return getDayOfWeek(date, opts.isUTC);\n }\n return setDayOfWeek(date, input, opts.locale, opts.isUTC);\n}\nfunction setDayOfWeek(date, input, locale = getLocale(), isUTC) {\n const day = getDay(date, isUTC);\n const _input = parseWeekday(input, locale);\n return add(date, _input - day, 'day');\n}\nfunction getDayOfWeek(date, isUTC) {\n return getDay(date, isUTC);\n}\n/********************************************/\n// todo: utc\n// getSetLocaleDayOfWeek\nfunction getLocaleDayOfWeek(date, locale = getLocale(), isUTC) {\n return (getDay(date, isUTC) + 7 - locale.firstDayOfWeek()) % 7;\n}\nfunction setLocaleDayOfWeek(date, input, opts = {}) {\n const weekday = getLocaleDayOfWeek(date, opts.locale, opts.isUTC);\n return add(date, input - weekday, 'day');\n}\n// getSetISODayOfWeek\nfunction getISODayOfWeek(date, isUTC) {\n return getDay(date, isUTC) || 7;\n}\nfunction setISODayOfWeek(date, input, opts = {}) {\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n const weekday = parseIsoWeekday(input, opts.locale);\n return setDayOfWeek(date, getDayOfWeek(date) % 7 ? weekday : weekday - 7);\n}\n\n//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\nconst symbolMap$1 = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠'\n};\nconst numberMap$1 = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0'\n};\nconst pluralForm = function (num) {\n return num === 0 ? 0 : num === 1 ? 1 : num === 2 ? 2 : num % 100 >= 3 && num % 100 <= 10 ? 3 : num % 100 >= 11 ? 4 : 5;\n};\nconst plurals = {\n s: ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n m: ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n h: ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n d: ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n M: ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n y: ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n};\nconst pluralize = function (u) {\n return function (num, withoutSuffix) {\n const f = pluralForm(num);\n let str = plurals[u][pluralForm(num)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, num.toString());\n };\n};\nconst months$2 = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر'\n];\nconst arLocale = {\n abbr: 'ar',\n months: months$2,\n monthsShort: months$2,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|م/,\n isPM(input) {\n return 'م' === input;\n },\n meridiem(hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n }\n else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y')\n },\n preparse(str) {\n return str.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap$1[match];\n }).replace(/،/g, ',');\n },\n postformat(str) {\n return str.replace(/\\d/g, function (match) {\n return symbolMap$1[match];\n }).replace(/,/g, '،');\n },\n week: {\n dow: 6,\n doy: 12 // The week that contains Jan 1st is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Iskren Ivov Chernev : https://github.com/ichernev\n//! author : Kunal Marwaha : https://github.com/marwahaha\n//! author : Matt Grande : https://github.com/mattgrande\n//! author : Isaac Cambron : https://github.com/icambron\n//! author : Venelin Manchev : https://github.com/vmanchev\nconst bgLocale = {\n abbr: 'bg',\n months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'),\n monthsShort: 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'),\n weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[Днес в] LT',\n nextDay: '[Утре в] LT',\n nextWeek: 'dddd [в] LT',\n lastDay: '[Вчера в] LT',\n lastWeek: function (d) {\n switch (d) {\n case 0:\n case 3:\n case 6:\n return '[В изминалата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[В изминалия] dddd [в] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'след %s',\n past: 'преди %s',\n s: 'няколко секунди',\n ss: '%d секунди',\n m: 'минута',\n mm: '%d минути',\n h: 'час',\n hh: '%d часа',\n d: 'ден',\n dd: '%d дни',\n M: 'месец',\n MM: '%d месеца',\n y: 'година',\n yy: '%d години'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (_num) {\n const number = Number(_num);\n let lastDigit = number % 10, last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n }\n else if (last2Digits === 0) {\n return number + '-ен';\n }\n else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n }\n else if (lastDigit === 1) {\n return number + '-ви';\n }\n else if (lastDigit === 2) {\n return number + '-ри';\n }\n else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n }\n else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1,\n doy: 7 // The week that contains Jan 1st is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Xavier Arbat : https://github.com/XavisaurusRex\nlet monthsShortDot$5 = 'gen._feb._mar._abr._mai._jun._jul._ago._set._oct._nov._des.'.split('_'), monthsShort$7 = 'ene_feb_mar_abr_mai_jun_jul_ago_set_oct_nov_des'.split('_');\nlet monthsParse$6 = [/^gen/i, /^feb/i, /^mar/i, /^abr/i, /^mai/i, /^jun/i, /^jul/i, /^ago/i, /^set/i, /^oct/i, /^nov/i, /^des/i];\nlet monthsRegex$5 = /^(gener|febrer|març|abril|maig|juny|juliol|agost|setembre|octubre|novembre|desembre|gen\\.?|feb\\.?|mar\\.?|abr\\.?|mai\\.?|jun\\.?|jul\\.?|ago\\.?|set\\.?|oct\\.?|nov\\.?|des\\.?)/i;\nconst caLocale = {\n abbr: 'ca',\n months: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),\n monthsShort(date, format, isUTC) {\n if (!date) {\n return monthsShortDot$5;\n }\n if (/-MMM-/.test(format)) {\n return monthsShort$7[getMonth(date, isUTC)];\n }\n return monthsShortDot$5[getMonth(date, isUTC)];\n },\n monthsRegex: monthsRegex$5,\n monthsShortRegex: monthsRegex$5,\n monthsStrictRegex: /^(gener|febrer|març|abril|maig|juny|juliol|agost|setembre|octubre|novembre|desembre)/i,\n monthsShortStrictRegex: /^(gen\\.?|feb\\.?|mar\\.?|abr\\.?|mai\\.?|jun\\.?|jul\\.?|ago\\.?|set\\.?|oct\\.?|nov\\.?|des\\.?)/i,\n monthsParse: monthsParse$6,\n longMonthsParse: monthsParse$6,\n shortMonthsParse: monthsParse$6,\n weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),\n weekdaysShort: 'diu._dil._dim._dix._dij._div._dis.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar: {\n sameDay(date) {\n return '[avui a ' + ('la' + (getHours(date) !== 1) ? 'les' : '') + '] LT';\n },\n nextDay(date) {\n return '[dema a ' + ('la' + (getHours(date) !== 1) ? 'les' : '') + '] LT';\n },\n nextWeek(date) {\n return 'dddd [a ' + ('la' + (getHours(date) !== 1) ? 'les' : '') + '] LT';\n },\n lastDay(date) {\n return '[ahir a ' + ('la' + (getHours(date) !== 1) ? 'les' : '') + '] LT';\n },\n lastWeek(date) {\n return '[el] dddd [' + ('passada la ' + (getHours(date) !== 1) ? 'passades les' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|on|er|rt|é)/,\n ordinal(_num) {\n const num = Number(_num);\n const output = (num > 4) ? 'é' :\n (num === 1 || num === 3) ? 'r' :\n (num === 2) ? 'n' :\n (num === 4) ? 't' : 'é';\n return num + output;\n },\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\nconst months$1 = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_');\nconst monthsShort$6 = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_');\nfunction plural$4(num) {\n return (num > 1) && (num < 5) && (~~(num / 10) !== 1);\n}\nfunction translate$6(num, withoutSuffix, key, isFuture) {\n const result = num + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural$4(num) ? 'sekundy' : 'sekund');\n }\n else {\n return result + 'sekundami';\n }\n // break;\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou');\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural$4(num) ? 'minuty' : 'minut');\n }\n else {\n return result + 'minutami';\n }\n // break;\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural$4(num) ? 'hodiny' : 'hodin');\n }\n else {\n return result + 'hodinami';\n }\n // break;\n case 'd': // a day / in a day / a day ago\n return (withoutSuffix || isFuture) ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural$4(num) ? 'dny' : 'dní');\n }\n else {\n return result + 'dny';\n }\n // break;\n case 'M': // a month / in a month / a month ago\n return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural$4(num) ? 'měsíce' : 'měsíců');\n }\n else {\n return result + 'měsíci';\n }\n // break;\n case 'y': // a year / in a year / a year ago\n return (withoutSuffix || isFuture) ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural$4(num) ? 'roky' : 'let');\n }\n else {\n return result + 'lety';\n }\n // break;\n }\n}\nconst csLocale = {\n abbr: 'cs',\n months: months$1,\n monthsShort: monthsShort$6,\n monthsParse: (function (months, monthsShort) {\n let i, _monthsParse = [];\n for (i = 0; i < 12; i++) {\n // use custom parser to solve problem with July (červenec)\n _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i');\n }\n return _monthsParse;\n }(months$1, monthsShort$6)),\n shortMonthsParse: (function (monthsShort) {\n let i, _shortMonthsParse = [];\n for (i = 0; i < 12; i++) {\n _shortMonthsParse[i] = new RegExp('^' + monthsShort[i] + '$', 'i');\n }\n return _shortMonthsParse;\n }(monthsShort$6)),\n longMonthsParse: (function (months) {\n let i, _longMonthsParse = [];\n for (i = 0; i < 12; i++) {\n _longMonthsParse[i] = new RegExp('^' + months[i] + '$', 'i');\n }\n return _longMonthsParse;\n }(months$1)),\n weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY'\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek(date) {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[v neděli v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve středu v] LT';\n case 4:\n return '[ve čtvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek(date) {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[minulou neděli v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou středu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: 'před %s',\n s: translate$6,\n ss: translate$6,\n m: translate$6,\n mm: translate$6,\n h: translate$6,\n hh: translate$6,\n d: translate$6,\n dd: translate$6,\n M: translate$6,\n MM: translate$6,\n y: translate$6,\n yy: translate$6\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Danish (Denmark) [da]\n//! author : Per Hansen : https://github.com/perhp\nconst daLocale = {\n abbr: 'da',\n months: 'Januar_Februar_Marts_April_Maj_Juni_Juli_August_September_Oktober_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_Maj_Jun_Jul_Aug_Sep_Okt_Nov_Dec'.split('_'),\n weekdays: 'Søndag_Mandag_Tirsdag_Onsdag_Torsdag_Fredag_Lørdag'.split('_'),\n weekdaysShort: 'Søn_Man_Tir_Ons_Tor_Fre_Lør'.split('_'),\n weekdaysMin: 'Sø_Ma_Ti_On_To_Fr_Lø'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm'\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'på dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[i] dddd[s kl.] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'få sekunder',\n m: 'et minut',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dage',\n M: 'en måned',\n MM: '%d måneder',\n y: 'et år',\n yy: '%d år'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\nfunction processRelativeTime$2(num, withoutSuffix, key, isFuture) {\n const format = {\n 'm': ['eine Minute', 'einer Minute'],\n 'h': ['eine Stunde', 'einer Stunde'],\n 'd': ['ein Tag', 'einem Tag'],\n 'dd': [num + ' Tage', num + ' Tagen'],\n 'M': ['ein Monat', 'einem Monat'],\n 'MM': [num + ' Monate', num + ' Monaten'],\n 'y': ['ein Jahr', 'einem Jahr'],\n 'yy': [num + ' Jahre', num + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n}\nconst deLocale = {\n abbr: 'de',\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime$2,\n mm: '%d Minuten',\n h: processRelativeTime$2,\n hh: '%d Stunden',\n d: processRelativeTime$2,\n dd: processRelativeTime$2,\n M: processRelativeTime$2,\n MM: processRelativeTime$2,\n y: processRelativeTime$2,\n yy: processRelativeTime$2\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\nconst enGbLocale = {\n abbr: 'en-gb',\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal(_num) {\n const num = Number(_num);\n const b = num % 10, output = (~~(num % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return num + output;\n },\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\nlet monthsShortDot$4 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'), monthsShort$5 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\nlet monthsParse$5 = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];\nlet monthsRegex$4 = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\nconst esDoLocale = {\n abbr: 'es-do',\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort(date, format, isUTC) {\n if (!date) {\n return monthsShortDot$4;\n }\n else if (/-MMM-/.test(format)) {\n return monthsShort$5[getMonth(date, isUTC)];\n }\n else {\n return monthsShortDot$4[getMonth(date, isUTC)];\n }\n },\n monthsRegex: monthsRegex$4,\n monthsShortRegex: monthsRegex$4,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse$5,\n longMonthsParse: monthsParse$5,\n shortMonthsParse: monthsParse$5,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A'\n },\n calendar: {\n sameDay(date) {\n return '[hoy a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextDay(date) {\n return '[mañana a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextWeek(date) {\n return 'dddd [a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastDay(date) {\n return '[ayer a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastWeek(date) {\n return '[el] dddd [pasado a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\nlet monthsShortDot$3 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'), monthsShort$4 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\nlet monthsParse$4 = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];\nlet monthsRegex$3 = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\nconst esLocale = {\n abbr: 'es',\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort(date, format, isUTC) {\n if (!date) {\n return monthsShortDot$3;\n }\n if (/-MMM-/.test(format)) {\n return monthsShort$4[getMonth(date, isUTC)];\n }\n return monthsShortDot$3[getMonth(date, isUTC)];\n },\n monthsRegex: monthsRegex$3,\n monthsShortRegex: monthsRegex$3,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse$4,\n longMonthsParse: monthsParse$4,\n shortMonthsParse: monthsParse$4,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar: {\n sameDay(date) {\n return '[hoy a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextDay(date) {\n return '[mañana a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextWeek(date) {\n return 'dddd [a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastDay(date) {\n return '[ayer a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastWeek(date) {\n return '[el] dddd [pasado a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Spanish (Puerto Rico) [es-pr]\nlet monthsShortDot$2 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_');\nlet monthsShort$3 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\nconst esPrLocale = {\n abbr: 'es-pr',\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort(date, format, isUTC) {\n if (!date) {\n return monthsShortDot$2;\n }\n else if (/-MMM-/.test(format)) {\n return monthsShort$3[getMonth(date, isUTC)];\n }\n else {\n return monthsShortDot$2[getMonth(date, isUTC)];\n }\n },\n monthsParseExact: true,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A'\n },\n calendar: {\n sameDay(date) {\n return '[hoy a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextDay(date) {\n return '[mañana a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextWeek(date) {\n return 'dddd [a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastDay(date) {\n return '[ayer a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastWeek(date) {\n return '[el] dddd [pasado a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0,\n doy: 6 // The week that contains Jan 1st is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\nlet monthsShortDot$1 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_');\nlet monthsShort$2 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\nconst esUsLocale = {\n abbr: 'es-us',\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort(date, format, isUTC) {\n if (!date) {\n return monthsShortDot$1;\n }\n else if (/-MMM-/.test(format)) {\n return monthsShort$2[getMonth(date, isUTC)];\n }\n else {\n return monthsShortDot$1[getMonth(date, isUTC)];\n }\n },\n monthsParseExact: true,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM [de] D [de] YYYY',\n LLL: 'MMMM [de] D [de] YYYY h:mm A',\n LLLL: 'dddd, MMMM [de] D [de] YYYY h:mm A'\n },\n calendar: {\n sameDay(date) {\n return '[hoy a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextDay(date) {\n return '[mañana a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextWeek(date) {\n return 'dddd [a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastDay(date) {\n return '[ayer a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastWeek(date) {\n return '[el] dddd [pasado a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0,\n doy: 6 // The week that contains Jan 1st is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Chris Gedrim : https://github.com/a90machado\nconst processRelativeTime$1 = function (num, withoutSuffix, key, isFuture) {\n const format = {\n s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [num + 'sekundi', num + 'sekundit'],\n m: ['ühe minuti', 'üks minut'],\n mm: [num + ' minuti', num + ' minutit'],\n h: ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [num + ' tunni', num + ' tundi'],\n d: ['ühe päeva', 'üks päev'],\n M: ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [num + ' kuu', num + ' kuud'],\n y: ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [num + ' aasta', num + ' aastat']\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n};\nconst etLocale = {\n abbr: 'et',\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),\n monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s pärast',\n past: '%s tagasi',\n s: processRelativeTime$1,\n ss: processRelativeTime$1,\n m: processRelativeTime$1,\n mm: processRelativeTime$1,\n h: processRelativeTime$1,\n hh: processRelativeTime$1,\n d: processRelativeTime$1,\n dd: '%d päeva',\n M: processRelativeTime$1,\n MM: processRelativeTime$1,\n y: processRelativeTime$1,\n yy: processRelativeTime$1\n },\n dayOfMonthOrdinalParse: /\\d{1,2}./,\n ordinal: '%d.',\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n// https://github.com/moment/moment/blob/develop/locale/fi.js\nvar numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '), numbersFuture = [\n 'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden',\n numbersPast[7], numbersPast[8], numbersPast[9]\n];\nfunction translate$5(num, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n return isFuture ? 'sekunnin' : 'sekuntia';\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(num, isFuture) + ' ' + result;\n return result;\n}\nfunction verbalNumber(num, isFuture) {\n return num < 10 ? (isFuture ? numbersFuture[num] : numbersPast[num]) : num;\n}\nconst fiLocale = {\n abbr: 'fi',\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),\n monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),\n weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm'\n },\n calendar: {\n sameDay: '[tänään] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s päästä',\n past: '%s sitten',\n s: translate$5,\n ss: translate$5,\n m: translate$5,\n mm: translate$5,\n h: translate$5,\n hh: translate$5,\n d: translate$5,\n dd: translate$5,\n M: translate$5,\n MM: translate$5,\n y: translate$5,\n yy: translate$5\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\nconst frLocale = {\n abbr: 'fr',\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal(_num, period) {\n const num = Number(_num);\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return num + (num === 1 ? 'er' : '');\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return num + (num === 1 ? 'er' : 'e');\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return num + (num === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Darío Beiró : https://github.com/quinobravo\nlet monthsShortDot = 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'), monthsShort$1 = 'xan_feb_mar_abr_mai_xuñ_xul_ago_set_out_nov_dec'.split('_');\nlet monthsParse$3 = [/^xan/i, /^feb/i, /^mar/i, /^abr/i, /^mai/i, /^xuñ/i, /^xul/i, /^ago/i, /^set/i, /^out/i, /^nov/i, /^dec/i];\nlet monthsRegex$2 = /^(xaneiro|febreiro|marzo|abril|maio|xuño|xullo|agosto|setembro|outubro|novembro|decembro|xan\\.?|feb\\.?|mar\\.?|abr\\.?|mai\\.?|xuñ\\.?|xul\\.?|ago\\.?|set\\.?|out\\.?|nov\\.?|dec\\.?)/i;\nconst glLocale = {\n abbr: 'gl',\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'),\n monthsShort(date, format, isUTC) {\n if (!date) {\n return monthsShortDot;\n }\n if (/-MMM-/.test(format)) {\n return monthsShort$1[getMonth(date, isUTC)];\n }\n return monthsShortDot[getMonth(date, isUTC)];\n },\n monthsRegex: monthsRegex$2,\n monthsShortRegex: monthsRegex$2,\n monthsStrictRegex: /^(xaneiro|febreiro|marzo|abril|maio|xuño|xullo|agosto|setembro|outubro|novembro|decembro)/i,\n monthsShortStrictRegex: /^(xan\\.?|feb\\.?|mar\\.?|abr\\.?|mai\\.?|xuñ\\.?|xul\\.?|ago\\.?|set\\.?|out\\.?|nov\\.?|dec\\.?)/i,\n monthsParse: monthsParse$3,\n longMonthsParse: monthsParse$3,\n shortMonthsParse: monthsParse$3,\n weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar: {\n sameDay(date) {\n return '[hoxe á' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextDay(date) {\n return '[mañan á' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextWeek(date) {\n return 'dddd [á' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastDay(date) {\n return '[onte á' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastWeek(date) {\n return '[o] dddd [pasado á' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'fai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\nconst heLocale = {\n abbr: 'he',\n months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'),\n monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),\n weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[היום ב־]LT',\n nextDay: '[מחר ב־]LT',\n nextWeek: 'dddd [בשעה] LT',\n lastDay: '[אתמול ב־]LT',\n lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'בעוד %s',\n past: 'לפני %s',\n s: 'מספר שניות',\n ss: '%d שניות',\n m: 'דקה',\n mm: '%d דקות',\n h: 'שעה',\n hh(num) {\n if (num === 2) {\n return 'שעתיים';\n }\n return num + ' שעות';\n },\n d: 'יום',\n dd(num) {\n if (num === 2) {\n return 'יומיים';\n }\n return num + ' ימים';\n },\n M: 'חודש',\n MM(num) {\n if (num === 2) {\n return 'חודשיים';\n }\n return num + ' חודשים';\n },\n y: 'שנה',\n yy(num) {\n if (num === 2) {\n return 'שנתיים';\n }\n else if (num % 10 === 0 && num !== 10) {\n return num + ' שנה';\n }\n return num + ' שנים';\n }\n },\n meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM(input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem(hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n }\n else if (hour < 10) {\n return 'בבוקר';\n }\n else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n }\n else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n }\n else {\n return 'בערב';\n }\n }\n};\n\n//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\nlet symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०'\n}, numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n};\nconst hiLocale = {\n abbr: 'hi',\n months: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'),\n monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे'\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कुछ ही क्षण',\n ss: '%d सेकंड',\n m: 'एक मिनट',\n mm: '%d मिनट',\n h: 'एक घंटा',\n hh: '%d घंटे',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महीने',\n MM: '%d महीने',\n y: 'एक वर्ष',\n yy: '%d वर्ष'\n },\n preparse(str) {\n return str.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat(str) {\n return str.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n }\n else if (meridiem === 'सुबह') {\n return hour;\n }\n else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n }\n else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem(hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n }\n else if (hour < 10) {\n return 'सुबह';\n }\n else if (hour < 17) {\n return 'दोपहर';\n }\n else if (hour < 20) {\n return 'शाम';\n }\n else {\n return 'रात';\n }\n },\n week: {\n dow: 0,\n doy: 6 // The week that contains Jan 1st is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\nlet weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');\nfunction translate$4(num, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce';\n case 'ss':\n return num + ((isFuture || withoutSuffix) ? ' másodperc' : ' másodperce');\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n}\nfunction week(date, isFuture) {\n return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[getDayOfWeek(date)] + '] LT[-kor]';\n}\nconst huLocale = {\n abbr: 'hu',\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),\n monthsShort: 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'),\n weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm'\n },\n meridiemParse: /de|du/i,\n isPM(input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem(hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n }\n else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek(date) {\n return week(date, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek(date) {\n return week(date, false);\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\n s: translate$4,\n ss: translate$4,\n m: translate$4,\n mm: translate$4,\n h: translate$4,\n hh: translate$4,\n d: translate$4,\n dd: translate$4,\n M: translate$4,\n MM: translate$4,\n y: translate$4,\n yy: translate$4\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Danijel Grmec : https://github.com/cobaltsis\nconst hrLocale = {\n abbr: 'hr',\n months: 'Siječanj_Veljača_Ožujak_Travanj_Svibanj_Lipanj_Srpanj_Kolovoz_Rujan_Listopad_Studeni_Prosinac'.split('_'),\n monthsShort: 'Sij_Velj_Ožu_Tra_Svi_Lip_Srp_Kol_Ruj_Lis_Stu_Pro'.split('_'),\n weekdays: 'Nedjelja_Ponedjeljak_Utorak_Srijeda_Četvrtak_Petak_Subota'.split('_'),\n weekdaysShort: 'Ned_Pon_Uto_Sri_Čet_Pet_Sub'.split('_'),\n weekdaysMin: 'Ne_Po_Ut_Sr_Če_Pe_Su'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Danas u] LT',\n nextDay: '[Sutra u] LT',\n nextWeek: 'dddd [u] LT',\n lastDay: '[Jučer u] LT',\n lastWeek: '[Zadnji] dddd [u] LT',\n sameElse: 'L'\n },\n invalidDate: 'Neispravan datum',\n relativeTime: {\n future: 'za %s',\n past: '%s prije',\n s: 'nekoliko sekundi',\n ss: '%d sekundi',\n m: 'minuta',\n mm: '%d minuta',\n h: 'sat',\n hh: '%d sati',\n d: 'dan',\n dd: '%d dana',\n M: 'mjesec',\n MM: '%d mjeseci',\n y: 'godina',\n yy: '%d godina'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal(_num) {\n const num = Number(_num);\n const b = num % 10, output = (~~(num % 100 / 10) === 1) ? '.' :\n (b === 1) ? '.' :\n (b === 2) ? '.' :\n (b === 3) ? '.' : '.';\n return num + output;\n },\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Indonesia [id]\n//! author : Romy Kusuma : https://github.com/rkusuma\n//! reference: https://github.com/moment/moment/blob/develop/locale/id.js\nconst idLocale = {\n abbr: 'id',\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n }\n else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n }\n else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem(hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n }\n else if (hours < 15) {\n return 'siang';\n }\n else if (hours < 19) {\n return 'sore';\n }\n else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun'\n },\n week: {\n dow: 1,\n doy: 7 // The week that contains Jan 1st is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\nconst itLocale = {\n abbr: 'it',\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek(date) {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future(num) {\n return ((/^[0-9].+$/).test(num.toString(10)) ? 'tra' : 'in') + ' ' + num;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: 'un\\'ora',\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\nconst jaLocale = {\n abbr: 'ja',\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日 HH:mm dddd',\n l: 'YYYY/MM/DD',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日 HH:mm dddd'\n },\n meridiemParse: /午前|午後/i,\n isPM(input) {\n return input === '午後';\n },\n meridiem(hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n }\n else {\n return '午後';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: '[来週]dddd LT',\n lastDay: '[昨日] LT',\n lastWeek: '[前週]dddd LT',\n sameElse: 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}日/,\n ordinal(num, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return num + '日';\n default:\n return num.toString(10);\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '数秒',\n ss: '%d秒',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1日',\n dd: '%d日',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1年',\n yy: '%d年'\n }\n};\n\n//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/irakli-janiashvili\n//! author : Levan Tskipuri : https://github.com/tskipa\nconst kaLocale = {\n abbr: 'ka',\n months: {\n format: 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_'),\n standalone: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_')\n },\n monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays: {\n standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'),\n isFormat: /(წინა|შემდეგ)/\n },\n weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A'\n },\n calendar: {\n sameDay: '[დღეს] LT[-ზე]',\n nextDay: '[ხვალ] LT[-ზე]',\n lastDay: '[გუშინ] LT[-ზე]',\n nextWeek: '[შემდეგ] dddd LT[-ზე]',\n lastWeek: '[წინა] dddd LT-ზე',\n sameElse: 'L'\n },\n relativeTime: {\n future(s) {\n var st = s.toString();\n return (/(წამი|წუთი|საათი|წელი)/).test(st) ?\n st.replace(/ი$/, 'ში') :\n st + 'ში';\n },\n past(s) {\n var st = s.toString();\n if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(st)) {\n return st.replace(/(ი|ე)$/, 'ის წინ');\n }\n if ((/წელი/).test(st)) {\n return st.replace(/წელი$/, 'წლის წინ');\n }\n },\n s: 'რამდენიმე წამი',\n ss: '%d წამი',\n m: 'წუთი',\n mm: '%d წუთი',\n h: 'საათი',\n hh: '%d საათი',\n d: 'დღე',\n dd: '%d დღე',\n M: 'თვე',\n MM: '%d თვე',\n y: 'წელი',\n yy: '%d წელი'\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal(_num, _period) {\n const num = Number(_num);\n if (num === 0) {\n return num.toString();\n }\n if (num === 1) {\n return num + '-ლი';\n }\n if ((num < 20) || (num <= 100 && (num % 20 === 0)) || (num % 100 === 0)) {\n return 'მე-' + num;\n }\n return num + '-ე';\n },\n week: {\n dow: 1,\n doy: 4\n }\n};\n\n// ! moment.js locale configuration\n// ! locale : Kazakh [kk]\n// ! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\nconst suffixes$1 = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші'\n};\nconst kkLocale = {\n abbr: 'kk',\n months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'),\n monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'),\n weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Бүгін сағат] LT',\n nextDay: '[Ертең сағат] LT',\n nextWeek: 'dddd [сағат] LT',\n lastDay: '[Кеше сағат] LT',\n lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s ішінде',\n past: '%s бұрын',\n s: 'бірнеше секунд',\n ss: '%d секунд',\n m: 'бір минут',\n mm: '%d минут',\n h: 'бір сағат',\n hh: '%d сағат',\n d: 'бір күн',\n dd: '%d күн',\n M: 'бір ай',\n MM: '%d ай',\n y: 'бір жыл',\n yy: '%d жыл'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal(_num) {\n const a = _num % 10;\n const b = _num >= 100 ? 100 : null;\n return _num + (suffixes$1[_num] || suffixes$1[a] || suffixes$1[b]);\n },\n week: {\n dow: 1,\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee \nconst koLocale = {\n abbr: 'ko',\n months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'YYYY.MM.DD',\n LL: 'YYYY년 MMMM D일',\n LLL: 'YYYY년 MMMM D일 A h:mm',\n LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n l: 'YYYY.MM.DD',\n ll: 'YYYY년 MMMM D일',\n lll: 'YYYY년 MMMM D일 A h:mm',\n llll: 'YYYY년 MMMM D일 dddd A h:mm'\n },\n calendar: {\n sameDay: '오늘 LT',\n nextDay: '내일 LT',\n nextWeek: 'dddd LT',\n lastDay: '어제 LT',\n lastWeek: '지난주 dddd LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s 후',\n past: '%s 전',\n s: '몇 초',\n ss: '%d초',\n m: '1분',\n mm: '%d분',\n h: '한 시간',\n hh: '%d시간',\n d: '하루',\n dd: '%d일',\n M: '한 달',\n MM: '%d달',\n y: '일 년',\n yy: '%d년'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n ordinal: function (num, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return num + '일';\n case 'M':\n return num + '월';\n case 'w':\n case 'W':\n return num + '주';\n default:\n return num.toString(10);\n }\n },\n meridiemParse: /오전|오후/,\n isPM: function (token) {\n return token === '오후';\n },\n meridiem: function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n }\n};\n\n//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Stanislavas Guk : https://github.com/ixoster\nconst units = {\n ss: 'sekundė_sekundžių_sekundes',\n m: 'minutė_minutės_minutę',\n mm: 'minutės_minučių_minutes',\n h: 'valanda_valandos_valandą',\n hh: 'valandos_valandų_valandas',\n d: 'diena_dienos_dieną',\n dd: 'dienos_dienų_dienas',\n M: 'mėnuo_mėnesio_mėnesį',\n MM: 'mėnesiai_mėnesių_mėnesius',\n y: 'metai_metų_metus',\n yy: 'metai_metų_metus'\n};\nfunction translateSeconds(num, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n }\n else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n}\nfunction translateSingular(num, withoutSuffix, key, isFuture) {\n return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]);\n}\nfunction special(num) {\n return num % 10 === 0 || (num > 10 && num < 20);\n}\nfunction forms(key) {\n return units[key].split('_');\n}\nfunction translate$3(num, withoutSuffix, key, isFuture) {\n let result = num + ' ';\n if (num === 1) {\n return result + translateSingular(num, withoutSuffix, key[0], isFuture);\n }\n else if (withoutSuffix) {\n return result + (special(num) ? forms(key)[1] : forms(key)[0]);\n }\n else {\n if (isFuture) {\n return result + forms(key)[1];\n }\n else {\n return result + (special(num) ? forms(key)[1] : forms(key)[2]);\n }\n }\n}\nconst ltLocale = {\n abbr: 'lt',\n months: {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'),\n standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/\n },\n monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays: {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'),\n standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'),\n isFormat: /dddd HH:mm/\n },\n weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY [m.] MMMM D [d.]',\n LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l: 'YYYY-MM-DD',\n ll: 'YYYY [m.] MMMM D [d.]',\n lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'\n },\n calendar: {\n sameDay: '[Šiandien] LT',\n nextDay: '[Rytoj] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Vakar] LT',\n lastWeek: '[Praėjusį] dddd LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'po %s',\n past: 'prieš %s',\n s: translateSeconds,\n ss: translate$3,\n m: translateSingular,\n mm: translate$3,\n h: translateSingular,\n hh: translate$3,\n d: translateSingular,\n dd: translate$3,\n M: translateSingular,\n MM: translate$3,\n y: translateSingular,\n yy: translate$3\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal(num) {\n return num + '-oji';\n },\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Matiss Janis Aboltins : https://github.com/matissjanis\nconst lvLocale = {\n abbr: 'lv',\n months: 'Janvāris_Februāris_Marts_Aprīlis_Maijs_Jūnijs_Jūlijs_Augusts_Septembris_Oktobris_Novembris_Decembris'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_Mai_Jūn_Jūl_Aug_Sep_Okt_Nov_Dec'.split('_'),\n weekdays: 'Svētdiena_Pirmdiena_Otrdiena_Trešdiena_Ceturtdiena_Piektdiena_Sestdiena'.split('_'),\n weekdaysShort: 'Svētd_Pirmd_Otrd_Trešd_Ceturtd_Piektd_Sestd'.split('_'),\n weekdaysMin: 'Sv_Pi_Ot_Tr_Ce_Pk_Se'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'pēc %s',\n past: 'pirms %s',\n s: 'dažām sekundēm',\n ss: '%d sekundēm',\n m: 'minūtes',\n mm: '%d minūtēm',\n h: 'stundas',\n hh: '%d stundām',\n d: 'dienas',\n dd: '%d dienām',\n M: 'mēneša',\n MM: '%d mēnešiem',\n y: 'gada',\n yy: '%d gadiem'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal(num) {\n return num + '.';\n },\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\nfunction translate$2(num, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n case 'ss':\n return num + (withoutSuffix ? ' секунд' : ' секундын');\n case 'm':\n case 'mm':\n return num + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return num + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return num + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return num + (withoutSuffix ? ' сар' : ' сарын');\n case 'y':\n case 'yy':\n return num + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return num.toString(10);\n }\n}\nconst mnLocale = {\n abbr: 'mn',\n months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split('_'),\n monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split('_'),\n monthsParseExact: true,\n weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm'\n },\n meridiemParse: /ҮӨ|ҮХ/i,\n isPM: function (input) {\n return input === 'ҮХ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ҮӨ';\n }\n else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[Ирэх] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[Өнгөрсөн] dddd LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\n s: translate$2,\n ss: translate$2,\n m: translate$2,\n mm: translate$2,\n h: translate$2,\n hh: translate$2,\n d: translate$2,\n dd: translate$2,\n M: translate$2,\n MM: translate$2,\n y: translate$2,\n yy: translate$2\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function (num, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return num + ' өдөр';\n default:\n return num.toString(10);\n }\n }\n};\n\n//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\nconst nbLocale = {\n abbr: 'nb',\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort: 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm'\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dager',\n M: 'en måned',\n MM: '%d måneder',\n y: 'ett år',\n yy: '%d år'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\nlet monthsShortWithDots$1 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_');\nlet monthsShortWithoutDots$1 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');\nlet monthsParse$2 = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];\nlet monthsRegex$1 = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\nconst nlBeLocale = {\n abbr: 'nl-be',\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n monthsShort(date, format, isUTC) {\n if (!date) {\n return monthsShortWithDots$1;\n }\n else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots$1[getMonth(date, isUTC)];\n }\n else {\n return monthsShortWithDots$1[getMonth(date, isUTC)];\n }\n },\n monthsRegex: monthsRegex$1,\n monthsShortRegex: monthsRegex$1,\n monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n monthsParse: monthsParse$2,\n longMonthsParse: monthsParse$2,\n shortMonthsParse: monthsParse$2,\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal(_num) {\n const num = Number(_num);\n return num + ((num === 1 || num === 8 || num >= 20) ? 'ste' : 'de');\n },\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\nlet monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'), monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');\nlet monthsParse$1 = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];\nlet monthsRegex = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\nconst nlLocale = {\n abbr: 'nl',\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n monthsShort(date, format, isUTC) {\n if (!date) {\n return monthsShortWithDots;\n }\n else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[getMonth(date, isUTC)];\n }\n else {\n return monthsShortWithDots[getMonth(date, isUTC)];\n }\n },\n monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n monthsParse: monthsParse$1,\n longMonthsParse: monthsParse$1,\n shortMonthsParse: monthsParse$1,\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal(_num) {\n const num = Number(_num);\n return num + ((num === 1 || num === 8 || num >= 20) ? 'ste' : 'de');\n },\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\nlet monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_');\nlet monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_');\nfunction plural$3(num) {\n return (num % 10 < 5) && (num % 10 > 1) && ((~~(num / 10) % 10) !== 1);\n}\nfunction translate$1(num, withoutSuffix, key) {\n let result = num + ' ';\n switch (key) {\n case 'ss':\n return result + (plural$3(num) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural$3(num) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural$3(num) ? 'godziny' : 'godzin');\n case 'MM':\n return result + (plural$3(num) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural$3(num) ? 'lata' : 'lat');\n }\n}\nconst plLocale = {\n abbr: 'pl',\n months(date, format, isUTC) {\n if (!date) {\n return monthsNominative;\n }\n else if (format === '') {\n // Hack: if format empty we know this is used to generate\n // RegExp by moment. Give then back both valid forms of months\n // in RegExp ready format.\n return '(' + monthsSubjective[getMonth(date, isUTC)] + '|' + monthsNominative[getMonth(date, isUTC)] + ')';\n }\n else if (/D MMMM/.test(format)) {\n return monthsSubjective[getMonth(date, isUTC)];\n }\n else {\n return monthsNominative[getMonth(date, isUTC)];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),\n weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek(date) {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[W niedzielę o] LT';\n case 2:\n return '[We wtorek o] LT';\n case 3:\n return '[W środę o] LT';\n case 5:\n return '[W piątek o] LT';\n case 6:\n return '[W sobotę o] LT';\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek(date) {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 4:\n return '[W zeszłą czwartek o] LT';\n case 5:\n return '[W zeszłą piątek o] LT';\n case 6:\n return '[W zeszłą sobotę o] LT';\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate$1,\n m: translate$1,\n mm: translate$1,\n h: translate$1,\n hh: translate$1,\n d: '1 dzień',\n dd: '%d dni',\n M: 'miesiąc',\n MM: translate$1,\n y: 'rok',\n yy: translate$1\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\nconst ptBrLocale = {\n abbr: 'pt-br',\n months: 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek(date) {\n return (getDayOfWeek(date) === 0 || getDayOfWeek(date) === 6) ?\n '[Último] dddd [às] LT' : // Saturday + Sunday\n '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'em %s',\n past: '%s atrás',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº'\n};\n\n// ! moment.js locale configuration\n// ! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n// ! author : Earle white: https://github.com/5earle\nfunction relativeTimeWithPlural$2(num, withoutSuffix, key) {\n let format = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n MM: 'luni',\n yy: 'ani'\n };\n let separator = ' ';\n if (num % 100 >= 20 || (num >= 100 && num % 100 === 0)) {\n separator = ' de ';\n }\n return num + separator + format[key];\n}\nconst roLocale = {\n abbr: 'ro',\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),\n monthsShort: 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s în urmă',\n s: 'câteva secunde',\n ss: relativeTimeWithPlural$2,\n m: 'un minut',\n mm: relativeTimeWithPlural$2,\n h: 'o oră',\n hh: relativeTimeWithPlural$2,\n d: 'o zi',\n dd: relativeTimeWithPlural$2,\n M: 'o lună',\n MM: relativeTimeWithPlural$2,\n y: 'un an',\n yy: relativeTimeWithPlural$2\n },\n week: {\n dow: 1,\n doy: 7 // The week that contains Jan 1st is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! Author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\nfunction plural$2(word, num) {\n let forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n}\nfunction relativeTimeWithPlural$1(num, withoutSuffix, key) {\n let format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'час_часа_часов',\n dd: 'день_дня_дней',\n MM: 'месяц_месяца_месяцев',\n yy: 'год_года_лет'\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n }\n return num + ' ' + plural$2(format[key], +num);\n}\nlet monthsParse = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i];\n// http://new.gramota.ru/spravka/rules/139-prop : § 103\n// Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n// CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\nconst ruLocale = {\n abbr: 'ru',\n months: {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'),\n standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_')\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку ?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'),\n standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_')\n },\n weekdays: {\n standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\\] ?dddd/\n },\n weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n // копия предыдущего\n monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n // полные названия с падежами\n monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n // Выражение, которое соотвествует только сокращённым формам\n monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm'\n },\n calendar: {\n sameDay: '[Сегодня в] LT',\n nextDay: '[Завтра в] LT',\n lastDay: '[Вчера в] LT',\n nextWeek(date, now) {\n if (getWeek(now) !== getWeek(date)) {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[В следующее] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd [в] LT';\n }\n }\n else {\n if (getDayOfWeek(date) === 2) {\n return '[Во] dddd [в] LT';\n }\n else {\n return '[В] dddd [в] LT';\n }\n }\n },\n lastWeek(date, now) {\n if (getWeek(now) !== getWeek(date)) {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[В прошлое] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd [в] LT';\n }\n }\n else {\n if (getDayOfWeek(date) === 2) {\n return '[Во] dddd [в] LT';\n }\n else {\n return '[В] dddd [в] LT';\n }\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'несколько секунд',\n ss: relativeTimeWithPlural$1,\n m: relativeTimeWithPlural$1,\n mm: relativeTimeWithPlural$1,\n h: 'час',\n hh: relativeTimeWithPlural$1,\n d: 'день',\n dd: relativeTimeWithPlural$1,\n M: 'месяц',\n MM: relativeTimeWithPlural$1,\n y: 'год',\n yy: relativeTimeWithPlural$1\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM(input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem(hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n }\n else if (hour < 12) {\n return 'утра';\n }\n else if (hour < 17) {\n return 'дня';\n }\n else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal(_num, period) {\n const num = Number(_num);\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return num + '-й';\n case 'D':\n return num + '-го';\n case 'w':\n case 'W':\n return num + '-я';\n default:\n return num.toString(10);\n }\n },\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Jozef Pažin : https://github.com/atiris\nconst months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_');\nconst monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\nfunction plural$1(num) {\n return (num > 1) && (num < 5) && (~~(num / 10) !== 1);\n}\nfunction translate(num, withoutSuffix, key, isFuture) {\n const result = num + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural$1(num) ? 'sekundy' : 'sekúnd');\n }\n else {\n return result + 'sekundami';\n }\n // break;\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou');\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural$1(num) ? 'minúty' : 'minút');\n }\n else {\n return result + 'minútami';\n }\n // break;\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural$1(num) ? 'hodiny' : 'hodín');\n }\n else {\n return result + 'hodinami';\n }\n // break;\n case 'd': // a day / in a day / a day ago\n return (withoutSuffix || isFuture) ? 'deň' : 'dňom';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural$1(num) ? 'dni' : 'dní');\n }\n else {\n return result + 'dňami';\n }\n // break;\n case 'M': // a month / in a month / a month ago\n return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural$1(num) ? 'mesiace' : 'mesiacov');\n }\n else {\n return result + 'mesiacmi';\n }\n // break;\n case 'y': // a year / in a year / a year ago\n return (withoutSuffix || isFuture) ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural$1(num) ? 'roky' : 'rokov');\n }\n else {\n return result + 'rokmi';\n }\n // break;\n }\n}\nconst skLocale = {\n abbr: 'sk',\n months,\n monthsShort,\n weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY'\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek(date) {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo štvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek(date) {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'o %s',\n past: 'pred %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : mihan : https://github.com/mihan\nfunction processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n }\n else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n }\n else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n }\n else {\n result += withoutSuffix || isFuture ? 'sekund' : 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n }\n else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n }\n else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n }\n else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n }\n else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n }\n else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n }\n else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n }\n else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n }\n else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n }\n else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n }\n else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n }\n else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n }\n else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n }\n else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n }\n else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n}\nconst slLocale = {\n abbr: 'sl',\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n nextWeek(date) {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[včeraj ob] LT',\n lastWeek(date) {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'čez %s',\n past: 'pred %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n doy: 7 // The week that contains Jan 1st is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Agon Cecelia : https://github.com/agoncecelia\nconst sqLocale = {\n abbr: 'sq',\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),\n monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays: 'E Dielë_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'),\n weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin: 'Di_He_Ma_Me_En_Pr_Sh'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Sot në] LT',\n nextDay: '[Nesër në] LT',\n nextWeek: 'dddd [në] LT',\n lastDay: '[Dje në] LT',\n lastWeek: 'dddd [e kaluar në] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'në %s',\n past: 'para %sve',\n s: 'disa sekonda',\n ss: '%d sekonda',\n m: 'një minut',\n mm: '%d minuta',\n h: 'një orë',\n hh: '%d orë',\n d: 'një ditë',\n dd: '%d ditë',\n M: 'një muaj',\n MM: '%d muaj',\n y: 'një vit',\n yy: '%d vite'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\nconst svLocale = {\n abbr: 'sv',\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'några sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en månad',\n MM: '%d månader',\n y: 'ett år',\n yy: '%d år'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(e|a)/,\n ordinal(_num) {\n const num = Number(_num);\n let b = num % 10, output = (~~(num % 100 / 10) === 1) ? 'e' :\n (b === 1) ? 'a' :\n (b === 2) ? 'a' :\n (b === 3) ? 'e' : 'e';\n return num + output;\n },\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n// moment.js locale configuration\n// locale : Thai [th]\n// author : Watcharapol Sanitwong : https://github.com/tumit\nconst thLocale = {\n abbr: 'th',\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),\n monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),\n monthsParseExact: true,\n weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm'\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM(input) {\n return input === 'หลังเที่ยง';\n },\n meridiem(hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n }\n else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่อวานนี้ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'อีก %s',\n past: '%sที่แล้ว',\n s: 'ไม่กี่วินาที',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n M: '1 เดือน',\n MM: '%d เดือน',\n y: '1 ปี',\n yy: '%d ปี'\n }\n};\n\n// moment.js locale configuration\n// locale : Thai-Buddhist Era [th-be]\n// author : Watcharapol Sanitwong : https://github.com/tumit\nconst thBeLocale = {\n abbr: 'th-be',\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),\n monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),\n monthsParseExact: true,\n weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm'\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM(input) {\n return input === 'หลังเที่ยง';\n },\n meridiem(hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n }\n else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่อวานนี้ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'อีก %s',\n past: '%sที่แล้ว',\n s: 'ไม่กี่วินาที',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n M: '1 เดือน',\n MM: '%d เดือน',\n y: '1 ปี',\n yy: '%d ปี'\n },\n preparse(str, format) {\n const _format = thBeLocale.longDateFormat[format]\n ? thBeLocale.longDateFormat[format]\n : format;\n // endsWith('YYYY')\n if (_format.indexOf('YYYY', _format.length - 'YYYY'.length) !== -1) {\n const ddMM = str.substr(0, str.length - 4);\n const yyyy = parseInt(str.substr(str.length - 4), 10) - 543;\n return ddMM + yyyy;\n }\n return str;\n },\n getFullYear(date, isUTC = false) {\n return 543 + (isUTC ? date.getUTCFullYear() : date.getFullYear());\n }\n};\n\n//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak Yiğit Kaya: https://github.com/BYK\nlet suffixes = {\n 1: '\\'inci',\n 5: '\\'inci',\n 8: '\\'inci',\n 70: '\\'inci',\n 80: '\\'inci',\n 2: '\\'nci',\n 7: '\\'nci',\n 20: '\\'nci',\n 50: '\\'nci',\n 3: '\\'üncü',\n 4: '\\'üncü',\n 100: '\\'üncü',\n 6: '\\'ncı',\n 9: '\\'uncu',\n 10: '\\'uncu',\n 30: '\\'uncu',\n 60: '\\'ıncı',\n 90: '\\'ıncı'\n};\nconst trLocale = {\n abbr: 'tr',\n months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'),\n monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'),\n weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,\n ordinal(_num) {\n const num = Number(_num);\n if (num === 0) { // special case for zero\n return num + '\\'ıncı';\n }\n let a = num % 10, b = num % 100 - a, c = num >= 100 ? 100 : null;\n return num + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1,\n doy: 7 // The week that contains Jan 1st is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\nfunction plural(word, num) {\n let forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n}\nfunction relativeTimeWithPlural(num, withoutSuffix, key) {\n let format = {\n ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'місяць_місяці_місяців',\n yy: 'рік_роки_років'\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n }\n if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n }\n return num + ' ' + plural(format[key], +num);\n}\nfunction weekdaysCaseReplace(date, format, isUTC) {\n let weekdays = {\n nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'),\n accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'),\n genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_')\n };\n if (!date) {\n return weekdays.nominative;\n }\n let nounCase = (/(\\[[ВвУу]\\]) ?dddd/).test(format) ?\n 'accusative' :\n ((/\\[?(?:минулої|наступної)? ?\\] ?dddd/).test(format) ?\n 'genitive' :\n 'nominative');\n return weekdays[nounCase][getDayOfWeek(date, isUTC)];\n}\nfunction processHoursFunction(str) {\n return function (date) {\n return str + 'о' + (getHours(date) === 11 ? 'б' : '') + '] LT';\n };\n}\nconst ukLocale = {\n abbr: 'uk',\n months: {\n format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'),\n standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_')\n },\n monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY р.',\n LLL: 'D MMMM YYYY р., HH:mm',\n LLLL: 'dddd, D MMMM YYYY р., HH:mm'\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek(date) {\n switch (getDayOfWeek(date)) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [')(date);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [')(date);\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'годину',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'місяць',\n MM: relativeTimeWithPlural,\n y: 'рік',\n yy: relativeTimeWithPlural\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM(input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem(hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n }\n else if (hour < 12) {\n return 'ранку';\n }\n else if (hour < 17) {\n return 'дня';\n }\n else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal(_num, period) {\n const num = Number(_num);\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return num + '-й';\n case 'D':\n return num + '-го';\n default:\n return num.toString();\n }\n },\n week: {\n dow: 1,\n doy: 7 // The week that contains Jan 1st is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Việt Nam [vi]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\nconst viLocale = {\n abbr: 'vi',\n months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'),\n monthsShort: 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'),\n monthsParseExact: true,\n weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'),\n weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /sa|ch/i,\n isPM(input) {\n return /^ch$/i.test(input);\n },\n meridiem(hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n }\n else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [năm] YYYY',\n LLL: 'D MMMM [năm] YYYY HH:mm',\n LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n l: 'DD/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần trước lúc] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s tới',\n past: '%s trước',\n s: 'vài giây',\n ss: '%d giây',\n m: 'một phút',\n mm: '%d phút',\n h: 'một giờ',\n hh: '%d giờ',\n d: 'một ngày',\n dd: '%d ngày',\n M: 'một tháng',\n MM: '%d tháng',\n y: 'một năm',\n yy: '%d năm'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal(_num) {\n return '' + _num;\n },\n week: {\n dow: 1,\n doy: 4 // Tuần chứa ngày 4 tháng 1 là tuần đầu tiên trong năm.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\nconst zhCnLocale = {\n abbr: 'zh-cn',\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日Ah点mm分',\n LLLL: 'YYYY年M月D日ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' ||\n meridiem === '上午') {\n return hour;\n }\n else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem(hour, minute, isLower) {\n let hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n }\n else if (hm < 900) {\n return '早上';\n }\n else if (hm < 1130) {\n return '上午';\n }\n else if (hm < 1230) {\n return '中午';\n }\n else if (hm < 1800) {\n return '下午';\n }\n else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal(_num, period) {\n const num = Number(_num);\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return num + '日';\n case 'M':\n return num + '月';\n case 'w':\n case 'W':\n return num + '周';\n default:\n return num.toString();\n }\n },\n relativeTime: {\n future: '%s内',\n past: '%s前',\n s: '几秒',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 小时',\n hh: '%d 小时',\n d: '1 天',\n dd: '%d 天',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 年',\n yy: '%d 年'\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { add, arLocale, bgLocale, caLocale, csLocale, daLocale, deLocale, defineLocale, enGbLocale, endOf, esDoLocale, esLocale, esPrLocale, esUsLocale, etLocale, fiLocale, formatDate, frLocale, getDay, getFirstDayOfMonth, getFullYear, getLocale, getMonth, getSetGlobalLocale, glLocale, heLocale, hiLocale, hrLocale, huLocale, idLocale, isAfter, isArray, isBefore, isDate, isDateValid, isDisabledDay, isFirstDayOfWeek, isSame, isSameDay$1 as isSameDay, isSameMonth, isSameYear, itLocale, jaLocale, kaLocale, kkLocale, koLocale, listLocales, ltLocale, lvLocale, mnLocale, nbLocale, nlBeLocale, nlLocale, parseDate, plLocale, ptBrLocale, roLocale, ruLocale, setFullDate, shiftDate, skLocale, slLocale, sqLocale, startOf, subtract, svLocale, thBeLocale, thLocale, trLocale, ukLocale, updateLocale, utcAsLocal, viLocale, zhCnLocale };\n","import * as i0 from '@angular/core';\nimport { EventEmitter, Injector, ElementRef, TemplateRef, Injectable } from '@angular/core';\nimport { listenToTriggersV2, registerOutsideClick, registerEscClick } from 'ngx-bootstrap/utils';\nimport * as i1 from 'ngx-bootstrap/positioning';\n\nclass BsComponentRef {\n}\n\n/**\n * @copyright Valor Software\n * @copyright Angular ng-bootstrap team\n */\nclass ContentRef {\n constructor(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nodes, viewRef, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n componentRef) {\n this.nodes = nodes;\n this.viewRef = viewRef;\n this.componentRef = componentRef;\n }\n}\n\n// todo: add delay support\nclass ComponentLoader {\n /**\n * Do not use this directly, it should be instanced via\n * `ComponentLoadFactory.attach`\n * @internal\n */\n constructor(_viewContainerRef, _renderer, _elementRef, _injector, _componentFactoryResolver, _ngZone, _applicationRef, _posService) {\n this._viewContainerRef = _viewContainerRef;\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n this._injector = _injector;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._ngZone = _ngZone;\n this._applicationRef = _applicationRef;\n this._posService = _posService;\n this.onBeforeShow = new EventEmitter();\n this.onShown = new EventEmitter();\n this.onBeforeHide = new EventEmitter();\n this.onHidden = new EventEmitter();\n this._providers = [];\n this._isHiding = false;\n /**\n * A selector used if container element was not found\n */\n this.containerDefaultSelector = 'body';\n this._listenOpts = {};\n this._globalListener = Function.prototype;\n }\n get isShown() {\n if (this._isHiding) {\n return false;\n }\n return !!this._componentRef;\n }\n attach(compType) {\n this._componentFactory = this._componentFactoryResolver\n .resolveComponentFactory(compType);\n return this;\n }\n // todo: add behaviour: to target element, `body`, custom element\n to(container) {\n this.container = container || this.container;\n return this;\n }\n position(opts) {\n if (!opts) {\n return this;\n }\n this.attachment = opts.attachment || this.attachment;\n this._elementRef = opts.target || this._elementRef;\n return this;\n }\n provide(provider) {\n this._providers.push(provider);\n return this;\n }\n // todo: appendChild to element or document.querySelector(this.container)\n show(opts = {}) {\n this._subscribePositioning();\n this._innerComponent = void 0;\n if (!this._componentRef) {\n this.onBeforeShow.emit();\n this._contentRef = this._getContentRef(opts.content, opts.context, opts.initialState);\n const injector = Injector.create({\n providers: this._providers,\n parent: this._injector\n });\n if (!this._componentFactory) {\n return;\n }\n this._componentRef = this._componentFactory.create(injector, this._contentRef.nodes);\n this._applicationRef.attachView(this._componentRef.hostView);\n // this._componentRef = this._viewContainerRef\n // .createComponent(this._componentFactory, 0, injector, this._contentRef.nodes);\n this.instance = this._componentRef.instance;\n Object.assign(this._componentRef.instance, opts);\n if (this.container instanceof ElementRef) {\n this.container.nativeElement.appendChild(this._componentRef.location.nativeElement);\n }\n if (typeof this.container === 'string' && typeof document !== 'undefined') {\n const selectedElement = document.querySelector(this.container) ||\n document.querySelector(this.containerDefaultSelector);\n if (!selectedElement) {\n return;\n }\n selectedElement.appendChild(this._componentRef.location.nativeElement);\n }\n if (!this.container &&\n this._elementRef &&\n this._elementRef.nativeElement.parentElement) {\n this._elementRef.nativeElement.parentElement.appendChild(this._componentRef.location.nativeElement);\n }\n // we need to manually invoke change detection since events registered\n // via\n // Renderer::listen() are not picked up by change detection with the\n // OnPush strategy\n if (this._contentRef.componentRef) {\n this._innerComponent = this._contentRef.componentRef.instance;\n this._contentRef.componentRef.changeDetectorRef.markForCheck();\n this._contentRef.componentRef.changeDetectorRef.detectChanges();\n }\n this._componentRef.changeDetectorRef.markForCheck();\n this._componentRef.changeDetectorRef.detectChanges();\n this.onShown.emit(opts.id ? { id: opts.id } : this._componentRef.instance);\n }\n this._registerOutsideClick();\n return this._componentRef;\n }\n hide(id) {\n var _a, _b, _c, _d, _e, _f;\n if (!this._componentRef) {\n return this;\n }\n this._posService.deletePositionElement(this._componentRef.location);\n this.onBeforeHide.emit(this._componentRef.instance);\n const componentEl = this._componentRef.location.nativeElement;\n (_a = componentEl.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(componentEl);\n (_c = (_b = this._contentRef) === null || _b === void 0 ? void 0 : _b.componentRef) === null || _c === void 0 ? void 0 : _c.destroy();\n if (this._viewContainerRef && ((_d = this._contentRef) === null || _d === void 0 ? void 0 : _d.viewRef)) {\n this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._contentRef.viewRef));\n }\n (_f = (_e = this._contentRef) === null || _e === void 0 ? void 0 : _e.viewRef) === null || _f === void 0 ? void 0 : _f.destroy();\n this._contentRef = void 0;\n this._componentRef = void 0;\n this._removeGlobalListener();\n this.onHidden.emit(id ? { id } : null);\n return this;\n }\n toggle() {\n if (this.isShown) {\n this.hide();\n return;\n }\n this.show();\n }\n dispose() {\n if (this.isShown) {\n this.hide();\n }\n this._unsubscribePositioning();\n if (this._unregisterListenersFn) {\n this._unregisterListenersFn();\n }\n }\n listen(listenOpts) {\n var _a;\n this.triggers = listenOpts.triggers || this.triggers;\n this._listenOpts.outsideClick = listenOpts.outsideClick;\n this._listenOpts.outsideEsc = listenOpts.outsideEsc;\n listenOpts.target = listenOpts.target || ((_a = this._elementRef) === null || _a === void 0 ? void 0 : _a.nativeElement);\n const hide = (this._listenOpts.hide = () => listenOpts.hide ? listenOpts.hide() : void this.hide());\n const show = (this._listenOpts.show = (registerHide) => {\n listenOpts.show ? listenOpts.show(registerHide) : this.show(registerHide);\n registerHide();\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const toggle = (registerHide) => {\n this.isShown ? hide() : show(registerHide);\n };\n if (this._renderer) {\n this._unregisterListenersFn = listenToTriggersV2(this._renderer, {\n target: listenOpts.target,\n triggers: listenOpts.triggers,\n show,\n hide,\n toggle\n });\n }\n return this;\n }\n _removeGlobalListener() {\n if (this._globalListener) {\n this._globalListener();\n this._globalListener = Function.prototype;\n }\n }\n attachInline(vRef, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n template) {\n if (vRef && template) {\n this._inlineViewRef = vRef.createEmbeddedView(template);\n }\n return this;\n }\n _registerOutsideClick() {\n if (!this._componentRef || !this._componentRef.location) {\n return;\n }\n // why: should run after first event bubble\n if (this._listenOpts.outsideClick) {\n const target = this._componentRef.location.nativeElement;\n setTimeout(() => {\n if (this._renderer && this._elementRef) {\n this._globalListener = registerOutsideClick(this._renderer, {\n targets: [target, this._elementRef.nativeElement],\n outsideClick: this._listenOpts.outsideClick,\n hide: () => this._listenOpts.hide && this._listenOpts.hide()\n });\n }\n });\n }\n if (this._listenOpts.outsideEsc && this._renderer && this._elementRef) {\n const target = this._componentRef.location.nativeElement;\n this._globalListener = registerEscClick(this._renderer, {\n targets: [target, this._elementRef.nativeElement],\n outsideEsc: this._listenOpts.outsideEsc,\n hide: () => this._listenOpts.hide && this._listenOpts.hide()\n });\n }\n }\n getInnerComponent() {\n return this._innerComponent;\n }\n _subscribePositioning() {\n if (this._zoneSubscription || !this.attachment) {\n return;\n }\n this.onShown.subscribe(() => {\n var _a;\n this._posService.position({\n element: (_a = this._componentRef) === null || _a === void 0 ? void 0 : _a.location,\n target: this._elementRef,\n attachment: this.attachment,\n appendToBody: this.container === 'body'\n });\n });\n this._zoneSubscription = this._ngZone.onStable.subscribe(() => {\n if (!this._componentRef) {\n return;\n }\n this._posService.calcPosition();\n });\n }\n _unsubscribePositioning() {\n if (!this._zoneSubscription) {\n return;\n }\n this._zoneSubscription.unsubscribe();\n this._zoneSubscription = void 0;\n }\n _getContentRef(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n content, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n context, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n initialState) {\n if (!content) {\n return new ContentRef([]);\n }\n if (content instanceof TemplateRef) {\n if (this._viewContainerRef) {\n const _viewRef = this._viewContainerRef\n .createEmbeddedView(content, context);\n _viewRef.markForCheck();\n return new ContentRef([_viewRef.rootNodes], _viewRef);\n }\n const viewRef = content.createEmbeddedView({});\n this._applicationRef.attachView(viewRef);\n return new ContentRef([viewRef.rootNodes], viewRef);\n }\n if (typeof content === 'function') {\n const contentCmptFactory = this._componentFactoryResolver.resolveComponentFactory(content);\n const modalContentInjector = Injector.create({\n providers: this._providers,\n parent: this._injector\n });\n const componentRef = contentCmptFactory.create(modalContentInjector);\n Object.assign(componentRef.instance, initialState);\n this._applicationRef.attachView(componentRef.hostView);\n return new ContentRef([[componentRef.location.nativeElement]], componentRef.hostView, componentRef);\n }\n const nodes = this._renderer\n ? [this._renderer.createText(`${content}`)]\n : [];\n return new ContentRef([nodes]);\n }\n}\n\nclass ComponentLoaderFactory {\n constructor(_componentFactoryResolver, _ngZone, _injector, _posService, _applicationRef) {\n this._componentFactoryResolver = _componentFactoryResolver;\n this._ngZone = _ngZone;\n this._injector = _injector;\n this._posService = _posService;\n this._applicationRef = _applicationRef;\n }\n /**\n *\n * @param _elementRef\n * @param _viewContainerRef\n * @param _renderer\n */\n createLoader(_elementRef, _viewContainerRef, _renderer) {\n return new ComponentLoader(_viewContainerRef, _renderer, _elementRef, this._injector, this._componentFactoryResolver, this._ngZone, this._applicationRef, this._posService);\n }\n}\nComponentLoaderFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: ComponentLoaderFactory, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.NgZone }, { token: i0.Injector }, { token: i1.PositioningService }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Injectable });\nComponentLoaderFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: ComponentLoaderFactory, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: ComponentLoaderFactory, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.NgZone }, { type: i0.Injector }, { type: i1.PositioningService }, { type: i0.ApplicationRef }]; } });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BsComponentRef, ComponentLoader, ComponentLoaderFactory, ContentRef };\n","import * as i0 from '@angular/core';\nimport { Injectable, Component, Input, EventEmitter, ChangeDetectionStrategy, Output, ViewChild, Directive, forwardRef, Host, NgModule } from '@angular/core';\nimport { filter, map, take, takeUntil, distinctUntilChanged } from 'rxjs/operators';\nimport { isFirstDayOfWeek, getDay, shiftDate, isBefore, endOf, isAfter, startOf, isArray, isSame, getFirstDayOfMonth, formatDate, getLocale, isSameMonth, isSameDay, isDisabledDay, isSameYear, isDateValid, setFullDate, getMonth, getFullYear, isDate, parseDate, utcAsLocal } from 'ngx-bootstrap/chronos';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { Subscription, BehaviorSubject, combineLatest, Subject } from 'rxjs';\nimport { MiniStore, MiniState } from 'ngx-bootstrap/mini-ngrx';\nimport * as i5 from 'ngx-bootstrap/positioning';\nimport { PositioningService } from 'ngx-bootstrap/positioning';\nimport * as i11 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i6 from 'ngx-bootstrap/tooltip';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport * as i7 from 'ngx-bootstrap/timepicker';\nimport { TimepickerActions, TimepickerModule } from 'ngx-bootstrap/timepicker';\nimport * as i2 from 'ngx-bootstrap/component-loader';\nimport { ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';\n\n/**\n * For date range picker there are `BsDaterangepickerConfig` which inherits all properties,\n * except `displayMonths`, for range picker it default to `2`\n */\nclass BsDatepickerConfig {\n constructor() {\n /** sets use adaptive position */\n this.adaptivePosition = false;\n /** sets use UTC date time format */\n this.useUtc = false;\n /** turn on/off animation */\n this.isAnimated = false;\n /**\n * The view that the datepicker should start in\n */\n this.startView = 'day';\n /**\n * If true, returns focus to the datepicker / daterangepicker input after date selection\n */\n this.returnFocusToInput = false;\n /** CSS class which will be applied to datepicker container,\n * usually used to set color theme\n */\n this.containerClass = 'theme-green';\n // DatepickerRenderOptions\n this.displayMonths = 1;\n /**\n * Allows to hide week numbers in datepicker\n */\n this.showWeekNumbers = true;\n this.dateInputFormat = 'L';\n // range picker\n this.rangeSeparator = ' - ';\n /**\n * Date format for date range input field\n */\n this.rangeInputFormat = 'L';\n // DatepickerFormatOptions\n this.monthTitle = 'MMMM';\n this.yearTitle = 'YYYY';\n this.dayLabel = 'D';\n this.monthLabel = 'MMMM';\n this.yearLabel = 'YYYY';\n this.weekNumbers = 'w';\n /**\n * Shows 'today' button\n */\n this.showTodayButton = false;\n /**\n * Shows clear button\n */\n this.showClearButton = false;\n /**\n * Positioning of 'today' button\n */\n this.todayPosition = 'center';\n /**\n * Positioning of 'clear' button\n */\n this.clearPosition = 'right';\n /**\n * Label for 'today' button\n */\n this.todayButtonLabel = 'Today';\n /**\n * Label for 'clear' button\n */\n this.clearButtonLabel = 'Clear';\n /**\n * Label for 'custom range' button\n */\n this.customRangeButtonLabel = 'Custom Range';\n /**\n * Shows timepicker under datepicker\n */\n this.withTimepicker = false;\n /**\n * Set allowed positions of container.\n */\n this.allowedPositions = ['top', 'bottom'];\n }\n}\nBsDatepickerConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDatepickerConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nBsDatepickerConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDatepickerConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDatepickerConfig, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\n\nconst DATEPICKER_ANIMATION_TIMING = '220ms cubic-bezier(0, 0, 0.2, 1)';\nconst datepickerAnimation = trigger('datepickerAnimation', [\n state('animated-down', style({ height: '*', overflow: 'hidden' })),\n transition('* => animated-down', [\n style({ height: 0, overflow: 'hidden' }),\n animate(DATEPICKER_ANIMATION_TIMING)\n ]),\n state('animated-up', style({ height: '*', overflow: 'hidden' })),\n transition('* => animated-up', [\n style({ height: '*', overflow: 'hidden' }),\n animate(DATEPICKER_ANIMATION_TIMING)\n ]),\n transition('* => unanimated', animate('0s'))\n]);\n\nclass BsDatepickerAbstractComponent {\n constructor() {\n this.containerClass = '';\n this.customRanges = [];\n this.chosenRange = [];\n this._daysCalendarSub = new Subscription();\n this.selectedTimeSub = new Subscription();\n }\n set minDate(value) {\n var _a;\n (_a = this._effects) === null || _a === void 0 ? void 0 : _a.setMinDate(value);\n }\n set maxDate(value) {\n var _a;\n (_a = this._effects) === null || _a === void 0 ? void 0 : _a.setMaxDate(value);\n }\n set daysDisabled(value) {\n var _a;\n (_a = this._effects) === null || _a === void 0 ? void 0 : _a.setDaysDisabled(value);\n }\n set datesDisabled(value) {\n var _a;\n (_a = this._effects) === null || _a === void 0 ? void 0 : _a.setDatesDisabled(value);\n }\n set datesEnabled(value) {\n var _a;\n (_a = this._effects) === null || _a === void 0 ? void 0 : _a.setDatesEnabled(value);\n }\n set isDisabled(value) {\n var _a;\n (_a = this._effects) === null || _a === void 0 ? void 0 : _a.setDisabled(value);\n }\n set dateCustomClasses(value) {\n var _a;\n (_a = this._effects) === null || _a === void 0 ? void 0 : _a.setDateCustomClasses(value);\n }\n set dateTooltipTexts(value) {\n var _a;\n (_a = this._effects) === null || _a === void 0 ? void 0 : _a.setDateTooltipTexts(value);\n }\n set daysCalendar$(value) {\n this._daysCalendar$ = value;\n this._daysCalendarSub.unsubscribe();\n this._daysCalendarSub.add(this._daysCalendar$.subscribe(value => {\n this.multipleCalendars = !!value && value.length > 1;\n }));\n }\n get daysCalendar$() {\n return this._daysCalendar$;\n }\n // todo: valorkin fix\n // eslint-disable-next-line @typescript-eslint/no-unused-vars,@typescript-eslint/no-empty-function\n setViewMode(event) { }\n // eslint-disable-next-line\n navigateTo(event) { }\n // eslint-disable-next-line\n dayHoverHandler(event) { }\n // eslint-disable-next-line\n weekHoverHandler(event) { }\n // eslint-disable-next-line\n monthHoverHandler(event) { }\n // eslint-disable-next-line\n yearHoverHandler(event) { }\n // eslint-disable-next-line\n timeSelectHandler(date, index) { }\n // eslint-disable-next-line\n daySelectHandler(day) { }\n // eslint-disable-next-line\n monthSelectHandler(event) { }\n // eslint-disable-next-line\n yearSelectHandler(event) { }\n // eslint-disable-next-line\n setRangeOnCalendar(dates) { }\n // eslint-disable-next-line\n setToday() { }\n // eslint-disable-next-line\n clearDate() { }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _stopPropagation(event) {\n event.stopPropagation();\n }\n}\n\nclass BsDatepickerActions {\n calculate() {\n return { type: BsDatepickerActions.CALCULATE };\n }\n format() {\n return { type: BsDatepickerActions.FORMAT };\n }\n flag() {\n return { type: BsDatepickerActions.FLAG };\n }\n select(date) {\n return {\n type: BsDatepickerActions.SELECT,\n payload: date\n };\n }\n selectTime(date, index) {\n return {\n type: BsDatepickerActions.SELECT_TIME,\n payload: { date, index },\n };\n }\n changeViewMode(event) {\n return {\n type: BsDatepickerActions.CHANGE_VIEWMODE,\n payload: event\n };\n }\n navigateTo(event) {\n return {\n type: BsDatepickerActions.NAVIGATE_TO,\n payload: event\n };\n }\n navigateStep(step) {\n return {\n type: BsDatepickerActions.NAVIGATE_OFFSET,\n payload: step\n };\n }\n setOptions(options) {\n return {\n type: BsDatepickerActions.SET_OPTIONS,\n payload: options\n };\n }\n // date range picker\n selectRange(value) {\n return {\n type: BsDatepickerActions.SELECT_RANGE,\n payload: value\n };\n }\n hoverDay(event) {\n return {\n type: BsDatepickerActions.HOVER,\n payload: event.isHovered ? event.cell.date : null\n };\n }\n minDate(date) {\n return {\n type: BsDatepickerActions.SET_MIN_DATE,\n payload: date\n };\n }\n maxDate(date) {\n return {\n type: BsDatepickerActions.SET_MAX_DATE,\n payload: date\n };\n }\n daysDisabled(days) {\n return {\n type: BsDatepickerActions.SET_DAYSDISABLED,\n payload: days\n };\n }\n datesDisabled(dates) {\n return {\n type: BsDatepickerActions.SET_DATESDISABLED,\n payload: dates\n };\n }\n datesEnabled(dates) {\n return {\n type: BsDatepickerActions.SET_DATESENABLED,\n payload: dates\n };\n }\n isDisabled(value) {\n return {\n type: BsDatepickerActions.SET_IS_DISABLED,\n payload: value\n };\n }\n setDateCustomClasses(value) {\n return {\n type: BsDatepickerActions.SET_DATE_CUSTOM_CLASSES,\n payload: value\n };\n }\n setDateTooltipTexts(value) {\n return {\n type: BsDatepickerActions.SET_DATE_TOOLTIP_TEXTS,\n payload: value\n };\n }\n setLocale(locale) {\n return {\n type: BsDatepickerActions.SET_LOCALE,\n payload: locale\n };\n }\n}\nBsDatepickerActions.CALCULATE = '[datepicker] calculate dates matrix';\nBsDatepickerActions.FORMAT = '[datepicker] format datepicker values';\nBsDatepickerActions.FLAG = '[datepicker] set flags';\nBsDatepickerActions.SELECT = '[datepicker] select date';\nBsDatepickerActions.NAVIGATE_OFFSET = '[datepicker] shift view date';\nBsDatepickerActions.NAVIGATE_TO = '[datepicker] change view date';\nBsDatepickerActions.SET_OPTIONS = '[datepicker] update render options';\nBsDatepickerActions.HOVER = '[datepicker] hover date';\nBsDatepickerActions.CHANGE_VIEWMODE = '[datepicker] switch view mode';\nBsDatepickerActions.SET_MIN_DATE = '[datepicker] set min date';\nBsDatepickerActions.SET_MAX_DATE = '[datepicker] set max date';\nBsDatepickerActions.SET_DAYSDISABLED = '[datepicker] set days disabled';\nBsDatepickerActions.SET_DATESDISABLED = '[datepicker] set dates disabled';\nBsDatepickerActions.SET_DATESENABLED = '[datepicker] set dates enabled';\nBsDatepickerActions.SET_IS_DISABLED = '[datepicker] set is disabled';\nBsDatepickerActions.SET_DATE_CUSTOM_CLASSES = '[datepicker] set date custom classes';\nBsDatepickerActions.SET_DATE_TOOLTIP_TEXTS = '[datepicker] set date tooltip texts';\nBsDatepickerActions.SET_LOCALE = '[datepicker] set datepicker locale';\nBsDatepickerActions.SELECT_TIME = '[datepicker] select time';\nBsDatepickerActions.SELECT_RANGE = '[daterangepicker] select dates range';\nBsDatepickerActions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDatepickerActions, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nBsDatepickerActions.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDatepickerActions, providedIn: 'platform' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDatepickerActions, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'platform' }]\n }] });\n\nclass BsLocaleService {\n constructor() {\n this._defaultLocale = 'en';\n this._locale = new BehaviorSubject(this._defaultLocale);\n this._localeChange = this._locale.asObservable();\n }\n get locale() {\n return this._locale;\n }\n get localeChange() {\n return this._localeChange;\n }\n get currentLocale() {\n return this._locale.getValue();\n }\n use(locale) {\n if (locale === this.currentLocale) {\n return;\n }\n this._locale.next(locale);\n }\n}\nBsLocaleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsLocaleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nBsLocaleService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsLocaleService, providedIn: 'platform' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsLocaleService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'platform' }]\n }] });\n\nclass BsDatepickerEffects {\n constructor(_actions, _localeService) {\n this._actions = _actions;\n this._localeService = _localeService;\n this._subs = [];\n }\n init(_bsDatepickerStore) {\n this._store = _bsDatepickerStore;\n return this;\n }\n /** setters */\n setValue(value) {\n var _a;\n (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.select(value));\n }\n setRangeValue(value) {\n var _a;\n (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.selectRange(value));\n }\n setMinDate(value) {\n var _a;\n (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.minDate(value));\n return this;\n }\n setMaxDate(value) {\n var _a;\n (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.maxDate(value));\n return this;\n }\n setDaysDisabled(value) {\n var _a;\n (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.daysDisabled(value));\n return this;\n }\n setDatesDisabled(value) {\n var _a;\n (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.datesDisabled(value));\n return this;\n }\n setDatesEnabled(value) {\n var _a;\n (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.datesEnabled(value));\n return this;\n }\n setDisabled(value) {\n var _a;\n (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.isDisabled(value));\n return this;\n }\n setDateCustomClasses(value) {\n var _a;\n (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.setDateCustomClasses(value));\n return this;\n }\n setDateTooltipTexts(value) {\n var _a;\n (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.setDateTooltipTexts(value));\n return this;\n }\n /* Set rendering options */\n setOptions(_config) {\n var _a;\n const _options = Object.assign({ locale: this._localeService.currentLocale }, _config);\n (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.setOptions(_options));\n return this;\n }\n /** view to mode bindings */\n setBindings(container) {\n if (!this._store) {\n return this;\n }\n container.selectedTime = this._store.select(state => state.selectedTime)\n .pipe(filter(times => !!times));\n container.daysCalendar$ = this._store.select(state => state.flaggedMonths)\n .pipe(filter(months => !!months));\n // month calendar\n container.monthsCalendar = this._store.select(state => state.flaggedMonthsCalendar)\n .pipe(filter(months => !!months));\n // year calendar\n container.yearsCalendar = this._store.select(state => state.yearsCalendarFlagged)\n .pipe(filter(years => !!years));\n container.viewMode = this._store.select(state => { var _a; return (_a = state.view) === null || _a === void 0 ? void 0 : _a.mode; });\n container.options$ = combineLatest([\n this._store.select(state => state.showWeekNumbers),\n this._store.select(state => state.displayMonths)\n ])\n .pipe(map((latest) => ({\n showWeekNumbers: latest[0],\n displayMonths: latest[1]\n })));\n return this;\n }\n /** event handlers */\n setEventHandlers(container) {\n container.setViewMode = (event) => {\n var _a;\n (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.changeViewMode(event));\n };\n container.navigateTo = (event) => {\n var _a;\n (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.navigateStep(event.step));\n };\n container.dayHoverHandler = (event) => {\n var _a;\n const _cell = event.cell;\n if (_cell.isOtherMonth || _cell.isDisabled) {\n return;\n }\n (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.hoverDay(event));\n _cell.isHovered = event.isHovered;\n };\n container.monthHoverHandler = (event) => {\n event.cell.isHovered = event.isHovered;\n };\n container.yearHoverHandler = (event) => {\n event.cell.isHovered = event.isHovered;\n };\n return this;\n }\n registerDatepickerSideEffects() {\n if (!this._store) {\n return this;\n }\n this._subs.push(this._store.select(state => state.view).subscribe(() => {\n var _a;\n (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.calculate());\n }));\n // format calendar values on month model change\n this._subs.push(this._store\n .select(state => state.monthsModel)\n .pipe(filter(monthModel => !!monthModel))\n .subscribe(() => { var _a; return (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.format()); }));\n // flag day values\n this._subs.push(this._store\n .select(state => state.formattedMonths)\n .pipe(filter(month => !!month))\n .subscribe(() => { var _a; return (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.flag()); }));\n // flag day values\n this._subs.push(this._store\n .select(state => state.selectedDate)\n .pipe(filter(selectedDate => !!selectedDate))\n .subscribe(() => { var _a; return (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.flag()); }));\n // flag for date range picker\n this._subs.push(this._store\n .select(state => state.selectedRange)\n .pipe(filter(selectedRange => !!selectedRange))\n .subscribe(() => { var _a; return (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.flag()); }));\n // monthsCalendar\n this._subs.push(this._store\n .select(state => state.monthsCalendar)\n .subscribe(() => { var _a; return (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.flag()); }));\n // years calendar\n this._subs.push(this._store\n .select(state => state.yearsCalendarModel)\n .pipe(filter(state => !!state))\n .subscribe(() => { var _a; return (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.flag()); }));\n // on hover\n this._subs.push(this._store\n .select(state => state.hoveredDate)\n .pipe(filter(hoveredDate => !!hoveredDate))\n .subscribe(() => { var _a; return (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.flag()); }));\n // date custom classes\n this._subs.push(this._store\n .select(state => state.dateCustomClasses)\n .pipe(filter(dateCustomClasses => !!dateCustomClasses))\n .subscribe(() => { var _a; return (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.flag()); }));\n // date tooltip texts\n this._subs.push(this._store\n .select(state => state.dateTooltipTexts)\n .pipe(filter(dateTooltipTexts => !!dateTooltipTexts))\n .subscribe(() => { var _a; return (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.flag()); }));\n // on locale change\n this._subs.push(this._localeService.localeChange\n .subscribe(locale => { var _a; return (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.setLocale(locale)); }));\n return this;\n }\n destroy() {\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n }\n}\nBsDatepickerEffects.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDatepickerEffects, deps: [{ token: BsDatepickerActions }, { token: BsLocaleService }], target: i0.ɵɵFactoryTarget.Injectable });\nBsDatepickerEffects.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDatepickerEffects, providedIn: 'platform' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDatepickerEffects, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'platform' }]\n }], ctorParameters: function () { return [{ type: BsDatepickerActions }, { type: BsLocaleService }]; } });\n\nconst defaultMonthOptions = {\n width: 7,\n height: 6\n};\nconst dayInMilliseconds = 24 * 60 * 60 * 1000;\n\nclass BsDatepickerState {\n constructor() {\n // DatepickerRenderOptions\n this.showWeekNumbers = true;\n this.displayMonths = 1;\n }\n}\nconst _initialView = { date: new Date(), mode: 'day' };\nconst initialDatepickerState = Object.assign(new BsDatepickerConfig(), {\n locale: 'en',\n view: _initialView,\n selectedRange: [],\n selectedTime: [],\n monthViewOptions: defaultMonthOptions\n});\n\nfunction getStartingDayOfCalendar(date, options) {\n if (isFirstDayOfWeek(date, options.firstDayOfWeek)) {\n return date;\n }\n const weekDay = getDay(date);\n const offset = calculateDateOffset(weekDay, options.firstDayOfWeek);\n return shiftDate(date, { day: -offset });\n}\nfunction calculateDateOffset(weekday, startingDayOffset) {\n const _startingDayOffset = Number(startingDayOffset);\n if (isNaN(_startingDayOffset)) {\n return 0;\n }\n if (_startingDayOffset === 0) {\n return weekday;\n }\n const offset = weekday - _startingDayOffset % 7;\n return offset < 0 ? offset + 7 : offset;\n}\nfunction isMonthDisabled(date, min, max) {\n const minBound = min && isBefore(endOf(date, 'month'), min, 'day');\n const maxBound = max && isAfter(startOf(date, 'month'), max, 'day');\n return minBound || maxBound || false;\n}\nfunction isYearDisabled(date, min, max) {\n const minBound = min && isBefore(endOf(date, 'year'), min, 'day');\n const maxBound = max && isAfter(startOf(date, 'year'), max, 'day');\n return minBound || maxBound || false;\n}\nfunction isDisabledDate(date, datesDisabled, unit) {\n if (!datesDisabled || !isArray(datesDisabled) || !datesDisabled.length) {\n return false;\n }\n if (unit && unit === 'year' && !datesDisabled[0].getDate()) {\n return datesDisabled.some((dateDisabled) => isSame(date, dateDisabled, 'year'));\n }\n return datesDisabled.some((dateDisabled) => isSame(date, dateDisabled, 'date'));\n}\nfunction isEnabledDate(date, datesEnabled, unit) {\n if (!datesEnabled || !isArray(datesEnabled) || !datesEnabled.length) {\n return false;\n }\n return !datesEnabled.some((enabledDate) => isSame(date, enabledDate, unit || 'date'));\n}\nfunction getYearsCalendarInitialDate(state, calendarIndex = 0) {\n const model = state && state.yearsCalendarModel && state.yearsCalendarModel[calendarIndex];\n return (model === null || model === void 0 ? void 0 : model.years[0]) && model.years[0][0] && model.years[0][0].date;\n}\nfunction checkRangesWithMaxDate(ranges, maxDate) {\n if (!ranges)\n return ranges;\n if (!maxDate)\n return ranges;\n if (!ranges.length && !ranges[0].value)\n return ranges;\n ranges.forEach((item) => {\n if (!item || !item.value)\n return ranges;\n if (item.value instanceof Date)\n return ranges;\n if (!(item.value instanceof Array && item.value.length))\n return ranges;\n item.value = compareDateWithMaxDateHelper(item.value, maxDate);\n return ranges;\n });\n return ranges;\n}\nfunction checkBsValue(date, maxDate) {\n if (!date)\n return date;\n if (!maxDate)\n return date;\n if (date instanceof Array && !date.length)\n return date;\n if (date instanceof Date)\n return date;\n return compareDateWithMaxDateHelper(date, maxDate);\n}\nfunction compareDateWithMaxDateHelper(date, maxDate) {\n if (date instanceof Array) {\n const editedValues = date.map(item => {\n if (!item)\n return item;\n if (isAfter(item, maxDate, 'date'))\n item = maxDate;\n return item;\n });\n return editedValues;\n }\n return date;\n}\nfunction setCurrentTimeOnDateSelect(value) {\n if (!value)\n return value;\n return setCurrentTimeHelper(value);\n}\nfunction setDateRangesCurrentTimeOnDateSelect(value) {\n if (!(value === null || value === void 0 ? void 0 : value.length))\n return value;\n value.map((date) => {\n if (!date) {\n return date;\n }\n return setCurrentTimeHelper(date);\n });\n return value;\n}\nfunction setCurrentTimeHelper(date) {\n const now = new Date();\n date.setMilliseconds(now.getMilliseconds());\n date.setSeconds(now.getSeconds());\n date.setMinutes(now.getMinutes());\n date.setHours(now.getHours());\n return date;\n}\n\nfunction createMatrix(options, fn) {\n let prevValue = options.initialDate;\n const matrix = new Array(options.height);\n for (let i = 0; i < options.height; i++) {\n matrix[i] = new Array(options.width);\n for (let j = 0; j < options.width; j++) {\n matrix[i][j] = fn(prevValue);\n prevValue = shiftDate(prevValue, options.shift);\n }\n }\n return matrix;\n}\n\n// user and model input should handle parsing and validating input values\nfunction calcDaysCalendar(startingDate, options) {\n const firstDay = getFirstDayOfMonth(startingDate);\n const initialDate = getStartingDayOfCalendar(firstDay, options);\n // todo test\n const matrixOptions = {\n width: options.width || 0,\n height: options.height || 0,\n initialDate,\n shift: { day: 1 }\n };\n const daysMatrix = createMatrix(matrixOptions, date => date);\n return {\n daysMatrix,\n month: firstDay\n };\n}\n\nfunction formatDaysCalendar(daysCalendar, formatOptions, monthIndex) {\n return {\n month: daysCalendar.month,\n monthTitle: formatDate(daysCalendar.month, formatOptions.monthTitle, formatOptions.locale),\n yearTitle: formatDate(daysCalendar.month, formatOptions.yearTitle, formatOptions.locale),\n weekNumbers: getWeekNumbers(daysCalendar.daysMatrix, formatOptions.weekNumbers, formatOptions.locale),\n weekdays: getShiftedWeekdays(formatOptions.locale),\n weeks: daysCalendar.daysMatrix.map((week, weekIndex) => ({\n days: week.map((date, dayIndex) => ({\n date,\n label: formatDate(date, formatOptions.dayLabel, formatOptions.locale),\n monthIndex,\n weekIndex,\n dayIndex\n }))\n })),\n hideLeftArrow: false,\n hideRightArrow: false,\n disableLeftArrow: false,\n disableRightArrow: false\n };\n}\nfunction getWeekNumbers(daysMatrix, format, locale) {\n return daysMatrix.map((days) => (days[0] ? formatDate(days[0], format, locale) : ''));\n}\nfunction getShiftedWeekdays(locale) {\n const _locale = getLocale(locale);\n const weekdays = _locale.weekdaysShort();\n const firstDayOfWeek = _locale.firstDayOfWeek();\n return [...weekdays.slice(firstDayOfWeek), ...weekdays.slice(0, firstDayOfWeek)];\n}\n\nfunction flagDaysCalendar(formattedMonth, options) {\n formattedMonth.weeks.forEach((week) => {\n week.days.forEach((day, dayIndex) => {\n // datepicker\n const isOtherMonth = !isSameMonth(day.date, formattedMonth.month);\n const isHovered = !isOtherMonth && isSameDay(day.date, options.hoveredDate);\n // date range picker\n const isSelectionStart = !isOtherMonth &&\n options.selectedRange &&\n isSameDay(day.date, options.selectedRange[0]);\n const isSelectionEnd = !isOtherMonth &&\n options.selectedRange &&\n isSameDay(day.date, options.selectedRange[1]);\n const isSelected = (!isOtherMonth && isSameDay(day.date, options.selectedDate)) ||\n isSelectionStart ||\n isSelectionEnd;\n const isInRange = !isOtherMonth &&\n options.selectedRange &&\n isDateInRange(day.date, options.selectedRange, options.hoveredDate);\n const isDisabled = options.isDisabled ||\n isBefore(day.date, options.minDate, 'day') ||\n isAfter(day.date, options.maxDate, 'day') ||\n isDisabledDay(day.date, options.daysDisabled) ||\n isDisabledDate(day.date, options.datesDisabled) ||\n isEnabledDate(day.date, options.datesEnabled);\n const currentDate = new Date();\n const isToday = !isOtherMonth && isSameDay(day.date, currentDate);\n const customClasses = options.dateCustomClasses && options.dateCustomClasses\n .map(dcc => isSameDay(day.date, dcc.date) ? dcc.classes : [])\n .reduce((previousValue, currentValue) => previousValue.concat(currentValue), [])\n .join(' ')\n || '';\n const tooltipText = options.dateTooltipTexts && options.dateTooltipTexts\n .map(tt => isSameDay(day.date, tt.date) ? tt.tooltipText : '')\n .reduce((previousValue, currentValue) => {\n previousValue.push(currentValue);\n return previousValue;\n }, [])\n .join(' ')\n || '';\n // decide update or not\n const newDay = Object.assign({}, day, {\n isOtherMonth,\n isHovered,\n isSelected,\n isSelectionStart,\n isSelectionEnd,\n isInRange,\n isDisabled,\n isToday,\n customClasses,\n tooltipText\n });\n if (day.isOtherMonth !== newDay.isOtherMonth ||\n day.isHovered !== newDay.isHovered ||\n day.isSelected !== newDay.isSelected ||\n day.isSelectionStart !== newDay.isSelectionStart ||\n day.isSelectionEnd !== newDay.isSelectionEnd ||\n day.isDisabled !== newDay.isDisabled ||\n day.isInRange !== newDay.isInRange ||\n day.customClasses !== newDay.customClasses ||\n day.tooltipText !== newDay.tooltipText) {\n week.days[dayIndex] = newDay;\n }\n });\n });\n // todo: add check for linked calendars\n formattedMonth.hideLeftArrow =\n options.isDisabled ||\n (!!options.monthIndex && options.monthIndex > 0 && options.monthIndex !== options.displayMonths);\n formattedMonth.hideRightArrow =\n options.isDisabled ||\n ((!!options.monthIndex || options.monthIndex === 0) && !!options.displayMonths && options.monthIndex < options.displayMonths &&\n options.monthIndex + 1 !== options.displayMonths);\n formattedMonth.disableLeftArrow = isMonthDisabled(shiftDate(formattedMonth.month, { month: -1 }), options.minDate, options.maxDate);\n formattedMonth.disableRightArrow = isMonthDisabled(shiftDate(formattedMonth.month, { month: 1 }), options.minDate, options.maxDate);\n return formattedMonth;\n}\nfunction isDateInRange(date, selectedRange, hoveredDate) {\n if (!date || !selectedRange || !selectedRange[0]) {\n return false;\n }\n if (selectedRange[1]) {\n return date > selectedRange[0] && date <= selectedRange[1];\n }\n if (hoveredDate) {\n return date > selectedRange[0] && date <= hoveredDate;\n }\n return false;\n}\n\nfunction canSwitchMode(mode, minMode) {\n return minMode ? mode >= minMode : true;\n}\n\nconst height$1 = 4;\nconst width$1 = 3;\nconst shift$1 = { month: 1 };\nfunction formatMonthsCalendar(viewDate, formatOptions) {\n const initialDate = startOf(viewDate, 'year');\n const matrixOptions = { width: width$1, height: height$1, initialDate, shift: shift$1 };\n const monthMatrix = createMatrix(matrixOptions, date => ({\n date,\n label: formatDate(date, formatOptions.monthLabel, formatOptions.locale)\n }));\n return {\n months: monthMatrix,\n monthTitle: '',\n yearTitle: formatDate(viewDate, formatOptions.yearTitle, formatOptions.locale),\n hideRightArrow: false,\n hideLeftArrow: false,\n disableRightArrow: false,\n disableLeftArrow: false\n };\n}\n\nfunction flagMonthsCalendar(monthCalendar, options) {\n monthCalendar.months.forEach((months, rowIndex) => {\n months.forEach((month, monthIndex) => {\n let isSelected;\n const isHovered = isSameMonth(month.date, options.hoveredMonth);\n const isDisabled = options.isDisabled ||\n isDisabledDate(month.date, options.datesDisabled) ||\n isEnabledDate(month.date, options.datesEnabled, 'month') ||\n isMonthDisabled(month.date, options.minDate, options.maxDate);\n if (!options.selectedDate && options.selectedRange) {\n isSelected = isSameMonth(month.date, options.selectedRange[0]);\n if (!isSelected) {\n isSelected = isSameMonth(month.date, options.selectedRange[1]);\n }\n }\n else {\n isSelected = isSameMonth(month.date, options.selectedDate);\n }\n const newMonth = Object.assign(/*{},*/ month, {\n isHovered,\n isDisabled,\n isSelected\n });\n if (month.isHovered !== newMonth.isHovered ||\n month.isDisabled !== newMonth.isDisabled ||\n month.isSelected !== newMonth.isSelected) {\n monthCalendar.months[rowIndex][monthIndex] = newMonth;\n }\n });\n });\n // todo: add check for linked calendars\n monthCalendar.hideLeftArrow =\n !!options.monthIndex && options.monthIndex > 0 && options.monthIndex !== options.displayMonths;\n monthCalendar.hideRightArrow =\n (!!options.monthIndex || options.monthIndex === 0)\n && (!!options.displayMonths || options.displayMonths === 0)\n && options.monthIndex < options.displayMonths\n && options.monthIndex + 1 !== options.displayMonths;\n monthCalendar.disableLeftArrow = isYearDisabled(shiftDate(monthCalendar.months[0][0].date, { year: -1 }), options.minDate, options.maxDate);\n monthCalendar.disableRightArrow = isYearDisabled(shiftDate(monthCalendar.months[0][0].date, { year: 1 }), options.minDate, options.maxDate);\n return monthCalendar;\n}\n\nconst height = 4;\nconst width = 4;\nconst yearsPerCalendar = height * width;\nconst initialYearShift = (Math.floor(yearsPerCalendar / 2) - 1) * -1;\nconst shift = { year: 1 };\nfunction formatYearsCalendar(viewDate, formatOptions, previousInitialDate) {\n const initialDate = calculateInitialDate(viewDate, previousInitialDate);\n const matrixOptions = { width, height, initialDate, shift };\n const yearsMatrix = createMatrix(matrixOptions, date => ({\n date,\n label: formatDate(date, formatOptions.yearLabel, formatOptions.locale)\n }));\n const yearTitle = formatYearRangeTitle(yearsMatrix, formatOptions);\n return {\n years: yearsMatrix,\n monthTitle: '',\n yearTitle,\n hideLeftArrow: false,\n hideRightArrow: false,\n disableLeftArrow: false,\n disableRightArrow: false\n };\n}\nfunction calculateInitialDate(viewDate, previousInitialDate) {\n if (previousInitialDate\n && viewDate.getFullYear() >= previousInitialDate.getFullYear()\n && viewDate.getFullYear() < previousInitialDate.getFullYear() + yearsPerCalendar) {\n return previousInitialDate;\n }\n return shiftDate(viewDate, { year: initialYearShift });\n}\nfunction formatYearRangeTitle(yearsMatrix, formatOptions) {\n const from = formatDate(yearsMatrix[0][0].date, formatOptions.yearTitle, formatOptions.locale);\n const to = formatDate(yearsMatrix[height - 1][width - 1].date, formatOptions.yearTitle, formatOptions.locale);\n return `${from} - ${to}`;\n}\n\nfunction flagYearsCalendar(yearsCalendar, options) {\n yearsCalendar.years.forEach((years, rowIndex) => {\n years.forEach((year, yearIndex) => {\n let isSelected;\n const isHovered = isSameYear(year.date, options.hoveredYear);\n const isDisabled = options.isDisabled ||\n isDisabledDate(year.date, options.datesDisabled, 'year') ||\n isEnabledDate(year.date, options.datesEnabled, 'year') ||\n isYearDisabled(year.date, options.minDate, options.maxDate);\n if (!options.selectedDate && options.selectedRange) {\n isSelected = isSameYear(year.date, options.selectedRange[0]);\n if (!isSelected) {\n isSelected = isSameYear(year.date, options.selectedRange[1]);\n }\n }\n else {\n isSelected = isSameYear(year.date, options.selectedDate);\n }\n const newMonth = Object.assign(/*{},*/ year, { isHovered, isDisabled, isSelected });\n if (year.isHovered !== newMonth.isHovered ||\n year.isDisabled !== newMonth.isDisabled ||\n year.isSelected !== newMonth.isSelected) {\n yearsCalendar.years[rowIndex][yearIndex] = newMonth;\n }\n });\n });\n // todo: add check for linked calendars\n yearsCalendar.hideLeftArrow =\n !!options.yearIndex && options.yearIndex > 0 && options.yearIndex !== options.displayMonths;\n yearsCalendar.hideRightArrow =\n !!options.yearIndex && !!options.displayMonths &&\n options.yearIndex < options.displayMonths &&\n options.yearIndex + 1 !== options.displayMonths;\n yearsCalendar.disableLeftArrow = isYearDisabled(shiftDate(yearsCalendar.years[0][0].date, { year: -1 }), options.minDate, options.maxDate);\n const i = yearsCalendar.years.length - 1;\n const j = yearsCalendar.years[i].length - 1;\n yearsCalendar.disableRightArrow = isYearDisabled(shiftDate(yearsCalendar.years[i][j].date, { year: 1 }), options.minDate, options.maxDate);\n return yearsCalendar;\n}\n\nfunction copyTime(sourceDate, time) {\n if (!sourceDate || !isNaN(sourceDate.getTime())) {\n return;\n }\n sourceDate.setHours(time.getHours());\n sourceDate.setMinutes(time.getMinutes());\n sourceDate.setSeconds(time.getSeconds());\n sourceDate.setMilliseconds(time.getMilliseconds());\n}\n\nfunction bsDatepickerReducer(state = initialDatepickerState, action) {\n var _a;\n switch (action.type) {\n case BsDatepickerActions.CALCULATE: {\n return calculateReducer(state);\n }\n case BsDatepickerActions.FORMAT: {\n return formatReducer(state);\n }\n case BsDatepickerActions.FLAG: {\n return flagReducer(state);\n }\n case BsDatepickerActions.NAVIGATE_OFFSET: {\n return navigateOffsetReducer(state, action);\n }\n case BsDatepickerActions.NAVIGATE_TO: {\n const payload = action.payload;\n if (!state.view || !payload.unit) {\n return state;\n }\n const date = setFullDate(state.view.date, payload.unit);\n let newState;\n let mode;\n if (canSwitchMode(payload.viewMode, state.minMode)) {\n mode = payload.viewMode;\n newState = { view: { date, mode } };\n }\n else {\n mode = state.view.mode;\n newState = { selectedDate: date, view: { date, mode } };\n }\n return Object.assign({}, state, newState);\n }\n case BsDatepickerActions.CHANGE_VIEWMODE: {\n if (!canSwitchMode(action.payload, state.minMode) || !state.view) {\n return state;\n }\n const date = state.view.date;\n const mode = action.payload;\n const newState = { view: { date, mode } };\n return Object.assign({}, state, newState);\n }\n case BsDatepickerActions.HOVER: {\n return Object.assign({}, state, { hoveredDate: action.payload });\n }\n case BsDatepickerActions.SELECT: {\n if (!state.view) {\n return state;\n }\n const newState = {\n selectedDate: action.payload,\n view: state.view\n };\n if (Array.isArray(state.selectedTime)) {\n const _time = state.selectedTime[0];\n if (newState.selectedDate && _time) {\n copyTime(newState.selectedDate, _time);\n }\n }\n const mode = state.view.mode;\n const _date = action.payload || state.view.date;\n const date = getViewDate(_date, state.minDate, state.maxDate);\n newState.view = { mode, date };\n return Object.assign({}, state, newState);\n }\n case BsDatepickerActions.SELECT_TIME: {\n const { date, index } = action.payload;\n const selectedTime = state.selectedTime ? [...state.selectedTime] : [];\n selectedTime[index] = date;\n return Object.assign({}, state, { selectedTime });\n }\n case BsDatepickerActions.SET_OPTIONS: {\n if (!state.view) {\n return state;\n }\n const newState = action.payload;\n // preserve view mode\n const mode = newState.minMode ? newState.minMode : state.view.mode;\n const _viewDate = isDateValid(newState.value) && newState.value\n || isArray(newState.value) && isDateValid(newState.value[0]) && newState.value[0]\n || state.view.date;\n const date = getViewDate(_viewDate, newState.minDate, newState.maxDate);\n newState.view = { mode, date };\n // update selected value\n if (newState.value) {\n // if new value is array we work with date range\n if (isArray(newState.value)) {\n newState.selectedRange = newState.value;\n newState.selectedTime = newState.value.map((i) => i);\n }\n // if new value is a date -> datepicker\n if (newState.value instanceof Date) {\n newState.selectedDate = newState.value;\n newState.selectedTime = [newState.value];\n }\n // provided value is not supported :)\n // need to report it somehow\n }\n return Object.assign({}, state, newState);\n }\n // date range picker\n case BsDatepickerActions.SELECT_RANGE: {\n if (!state.view) {\n return state;\n }\n const newState = {\n selectedRange: action.payload,\n view: state.view\n };\n (_a = newState.selectedRange) === null || _a === void 0 ? void 0 : _a.forEach((dte, index) => {\n if (Array.isArray(state.selectedTime)) {\n const _time = state.selectedTime[index];\n if (_time) {\n copyTime(dte, _time);\n }\n }\n });\n const mode = state.view.mode;\n const _date = action.payload && action.payload[0] || state.view.date;\n const date = getViewDate(_date, state.minDate, state.maxDate);\n newState.view = { mode, date };\n return Object.assign({}, state, newState);\n }\n case BsDatepickerActions.SET_MIN_DATE: {\n return Object.assign({}, state, {\n minDate: action.payload\n });\n }\n case BsDatepickerActions.SET_MAX_DATE: {\n return Object.assign({}, state, {\n maxDate: action.payload\n });\n }\n case BsDatepickerActions.SET_IS_DISABLED: {\n return Object.assign({}, state, {\n isDisabled: action.payload\n });\n }\n case BsDatepickerActions.SET_DATE_CUSTOM_CLASSES: {\n return Object.assign({}, state, {\n dateCustomClasses: action.payload\n });\n }\n case BsDatepickerActions.SET_DATE_TOOLTIP_TEXTS: {\n return Object.assign({}, state, {\n dateTooltipTexts: action.payload\n });\n }\n default:\n return state;\n }\n}\nfunction calculateReducer(state) {\n if (!state.view) {\n return state;\n }\n // how many calendars\n let displayMonths;\n if (state.displayOneMonthRange &&\n isDisplayOneMonth(state.view.date, state.minDate, state.maxDate)) {\n displayMonths = 1;\n }\n else {\n displayMonths = state.displayMonths || 1;\n }\n // use selected date on initial rendering if set\n let viewDate = state.view.date;\n if (state.view.mode === 'day' && state.monthViewOptions) {\n if (state.showPreviousMonth && state.selectedRange && state.selectedRange.length === 0) {\n viewDate = shiftDate(viewDate, { month: -1 });\n }\n state.monthViewOptions.firstDayOfWeek = getLocale(state.locale).firstDayOfWeek();\n let monthsModel = new Array(displayMonths);\n for (let monthIndex = 0; monthIndex < displayMonths; monthIndex++) {\n // todo: for unlinked calendars it will be harder\n monthsModel[monthIndex] = calcDaysCalendar(viewDate, state.monthViewOptions);\n viewDate = shiftDate(viewDate, { month: 1 });\n }\n // Check if parameter enabled and check if it's not months navigation event\n if (state.preventChangeToNextMonth && state.flaggedMonths && state.hoveredDate) {\n const viewMonth = calcDaysCalendar(state.view.date, state.monthViewOptions);\n // Check if viewed right month same as in flaggedMonths state, then override months model with flaggedMonths\n if (state.flaggedMonths.length && state.flaggedMonths[1].month.getMonth() === viewMonth.month.getMonth()) {\n monthsModel = state.flaggedMonths\n .map(item => {\n if (state.monthViewOptions) {\n return calcDaysCalendar(item.month, state.monthViewOptions);\n }\n return null;\n })\n .filter(item => item !== null);\n }\n }\n return Object.assign({}, state, { monthsModel });\n }\n if (state.view.mode === 'month') {\n const monthsCalendar = new Array(displayMonths);\n for (let calendarIndex = 0; calendarIndex < displayMonths; calendarIndex++) {\n // todo: for unlinked calendars it will be harder\n monthsCalendar[calendarIndex] = formatMonthsCalendar(viewDate, getFormatOptions(state));\n viewDate = shiftDate(viewDate, { year: 1 });\n }\n return Object.assign({}, state, { monthsCalendar });\n }\n if (state.view.mode === 'year') {\n const yearsCalendarModel = new Array(displayMonths);\n for (let calendarIndex = 0; calendarIndex < displayMonths; calendarIndex++) {\n // todo: for unlinked calendars it will be harder\n yearsCalendarModel[calendarIndex] = formatYearsCalendar(viewDate, getFormatOptions(state), state.minMode === 'year' ? getYearsCalendarInitialDate(state, calendarIndex) : undefined);\n viewDate = shiftDate(viewDate, { year: yearsPerCalendar });\n }\n return Object.assign({}, state, { yearsCalendarModel });\n }\n return state;\n}\nfunction formatReducer(state) {\n if (!state.view) {\n return state;\n }\n if (state.view.mode === 'day' && state.monthsModel) {\n const formattedMonths = state.monthsModel.map((month, monthIndex) => formatDaysCalendar(month, getFormatOptions(state), monthIndex));\n return Object.assign({}, state, { formattedMonths });\n }\n // how many calendars\n const displayMonths = state.displayMonths || 1;\n // check initial rendering\n // use selected date on initial rendering if set\n let viewDate = state.view.date;\n if (state.view.mode === 'month') {\n const monthsCalendar = new Array(displayMonths);\n for (let calendarIndex = 0; calendarIndex < displayMonths; calendarIndex++) {\n // todo: for unlinked calendars it will be harder\n monthsCalendar[calendarIndex] = formatMonthsCalendar(viewDate, getFormatOptions(state));\n viewDate = shiftDate(viewDate, { year: 1 });\n }\n return Object.assign({}, state, { monthsCalendar });\n }\n if (state.view.mode === 'year') {\n const yearsCalendarModel = new Array(displayMonths);\n for (let calendarIndex = 0; calendarIndex < displayMonths; calendarIndex++) {\n // todo: for unlinked calendars it will be harder\n yearsCalendarModel[calendarIndex] = formatYearsCalendar(viewDate, getFormatOptions(state));\n viewDate = shiftDate(viewDate, { year: 16 });\n }\n return Object.assign({}, state, { yearsCalendarModel });\n }\n return state;\n}\nfunction flagReducer(state) {\n if (!state.view) {\n return state;\n }\n const displayMonths = isDisplayOneMonth(state.view.date, state.minDate, state.maxDate) ? 1 : state.displayMonths;\n if (state.formattedMonths && state.view.mode === 'day') {\n const flaggedMonths = state.formattedMonths.map((formattedMonth, monthIndex) => flagDaysCalendar(formattedMonth, {\n isDisabled: state.isDisabled,\n minDate: state.minDate,\n maxDate: state.maxDate,\n daysDisabled: state.daysDisabled,\n datesDisabled: state.datesDisabled,\n datesEnabled: state.datesEnabled,\n hoveredDate: state.hoveredDate,\n selectedDate: state.selectedDate,\n selectedRange: state.selectedRange,\n displayMonths,\n dateCustomClasses: state.dateCustomClasses,\n dateTooltipTexts: state.dateTooltipTexts,\n monthIndex\n }));\n return Object.assign({}, state, { flaggedMonths });\n }\n if (state.view.mode === 'month' && state.monthsCalendar) {\n const flaggedMonthsCalendar = state.monthsCalendar.map((formattedMonth, monthIndex) => flagMonthsCalendar(formattedMonth, {\n isDisabled: state.isDisabled,\n minDate: state.minDate,\n maxDate: state.maxDate,\n hoveredMonth: state.hoveredMonth,\n selectedDate: state.selectedDate,\n datesDisabled: state.datesDisabled,\n datesEnabled: state.datesEnabled,\n selectedRange: state.selectedRange,\n displayMonths,\n monthIndex\n }));\n return Object.assign({}, state, { flaggedMonthsCalendar });\n }\n if (state.view.mode === 'year' && state.yearsCalendarModel) {\n const yearsCalendarFlagged = state.yearsCalendarModel.map((formattedMonth, yearIndex) => flagYearsCalendar(formattedMonth, {\n isDisabled: state.isDisabled,\n minDate: state.minDate,\n maxDate: state.maxDate,\n hoveredYear: state.hoveredYear,\n selectedDate: state.selectedDate,\n datesDisabled: state.datesDisabled,\n datesEnabled: state.datesEnabled,\n selectedRange: state.selectedRange,\n displayMonths,\n yearIndex\n }));\n return Object.assign({}, state, { yearsCalendarFlagged });\n }\n return state;\n}\nfunction navigateOffsetReducer(state, action) {\n if (!state.view) {\n return state;\n }\n const date = shiftViewDate(state, action);\n if (!date) {\n return state;\n }\n const newState = {\n view: {\n mode: state.view.mode,\n date\n }\n };\n return Object.assign({}, state, newState);\n}\nfunction shiftViewDate(state, action) {\n if (!state.view) {\n return undefined;\n }\n if (state.view.mode === 'year' && state.minMode === 'year') {\n const initialDate = getYearsCalendarInitialDate(state, 0);\n if (initialDate) {\n const middleDate = shiftDate(initialDate, { year: -initialYearShift });\n return shiftDate(middleDate, action.payload);\n }\n }\n return shiftDate(startOf(state.view.date, 'month'), action.payload);\n}\nfunction getFormatOptions(state) {\n return {\n locale: state.locale,\n monthTitle: state.monthTitle,\n yearTitle: state.yearTitle,\n dayLabel: state.dayLabel,\n monthLabel: state.monthLabel,\n yearLabel: state.yearLabel,\n weekNumbers: state.weekNumbers\n };\n}\n/**\n * if view date is provided (bsValue|ngModel) it should be shown\n * if view date is not provider:\n * if minDate>currentDate (default view value), show minDate\n * if maxDate{{ title }}
`, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsCurrentDateViewComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'bs-current-date',\n template: `
{{ title }}
`\n }]\n }], propDecorators: { title: [{\n type: Input\n }] } });\n\nclass BsTimepickerViewComponent {\n constructor() {\n this.ampm = 'ok';\n this.hours = 0;\n this.minutes = 0;\n }\n}\nBsTimepickerViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsTimepickerViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nBsTimepickerViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.1\", type: BsTimepickerViewComponent, selector: \"bs-timepicker\", ngImport: i0, template: `\n
\n
\n \n \n \n
\n
\n \n \n \n
\n \n
\n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsTimepickerViewComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'bs-timepicker',\n template: `\n
\n
\n \n \n \n
\n
\n \n \n \n
\n \n
\n `\n }]\n }] });\n\nclass BsCalendarLayoutComponent {\n}\nBsCalendarLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsCalendarLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nBsCalendarLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.1\", type: BsCalendarLayoutComponent, selector: \"bs-calendar-layout\", ngImport: i0, template: `\n \n \n\n \n
\n \n
\n\n
\n \n
\n\n \n \n `, isInline: true, components: [{ type: BsCurrentDateViewComponent, selector: \"bs-current-date\", inputs: [\"title\"] }, { type: BsTimepickerViewComponent, selector: \"bs-timepicker\" }], directives: [{ type: i11.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsCalendarLayoutComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'bs-calendar-layout',\n template: `\n \n \n\n \n
\n \n
\n\n
\n \n
\n\n \n \n `\n }]\n }] });\n\nclass BsDatepickerNavigationViewComponent {\n constructor() {\n this.onNavigate = new EventEmitter();\n this.onViewMode = new EventEmitter();\n }\n navTo(down) {\n this.onNavigate.emit(down ? BsNavigationDirection.DOWN : BsNavigationDirection.UP);\n }\n view(viewMode) {\n this.onViewMode.emit(viewMode);\n }\n}\nBsDatepickerNavigationViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDatepickerNavigationViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nBsDatepickerNavigationViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.1\", type: BsDatepickerNavigationViewComponent, selector: \"bs-datepicker-navigation-view\", inputs: { calendar: \"calendar\" }, outputs: { onNavigate: \"onNavigate\", onViewMode: \"onViewMode\" }, ngImport: i0, template: `\n \n\n \n ​ \n\n \n \n\n ​ \n\n \n\n ​ \n\n \n `, isInline: true, directives: [{ type: i11.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDatepickerNavigationViewComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'bs-datepicker-navigation-view',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n \n\n \n ​ \n\n \n \n\n ​ \n\n \n\n ​ \n\n \n `\n }]\n }], propDecorators: { calendar: [{\n type: Input\n }], onNavigate: [{\n type: Output\n }], onViewMode: [{\n type: Output\n }] } });\n\nclass BsDatepickerDayDecoratorComponent {\n constructor(_config, _elRef, _renderer) {\n this._config = _config;\n this._elRef = _elRef;\n this._renderer = _renderer;\n this.day = { date: new Date(), label: '' };\n }\n ngOnInit() {\n var _a, _b, _c;\n if (((_a = this.day) === null || _a === void 0 ? void 0 : _a.isToday) && this._config && this._config.customTodayClass) {\n this._renderer.addClass(this._elRef.nativeElement, this._config.customTodayClass);\n }\n if (typeof ((_b = this.day) === null || _b === void 0 ? void 0 : _b.customClasses) === 'string') {\n (_c = this.day) === null || _c === void 0 ? void 0 : _c.customClasses.split(' ').filter((className) => className).forEach((className) => {\n this._renderer.addClass(this._elRef.nativeElement, className);\n });\n }\n }\n}\nBsDatepickerDayDecoratorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDatepickerDayDecoratorComponent, deps: [{ token: BsDatepickerConfig }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nBsDatepickerDayDecoratorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.1\", type: BsDatepickerDayDecoratorComponent, selector: \"[bsDatepickerDayDecorator]\", inputs: { day: \"day\" }, host: { properties: { \"class.disabled\": \"day.isDisabled\", \"class.is-highlighted\": \"day.isHovered\", \"class.is-other-month\": \"day.isOtherMonth\", \"class.is-active-other-month\": \"day.isOtherMonthHovered\", \"class.in-range\": \"day.isInRange\", \"class.select-start\": \"day.isSelectionStart\", \"class.select-end\": \"day.isSelectionEnd\", \"class.selected\": \"day.isSelected\" } }, ngImport: i0, template: `{{ day && day.label || '' }}`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDatepickerDayDecoratorComponent, decorators: [{\n type: Component,\n args: [{\n selector: '[bsDatepickerDayDecorator]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.disabled]': 'day.isDisabled',\n '[class.is-highlighted]': 'day.isHovered',\n '[class.is-other-month]': 'day.isOtherMonth',\n '[class.is-active-other-month]': 'day.isOtherMonthHovered',\n '[class.in-range]': 'day.isInRange',\n '[class.select-start]': 'day.isSelectionStart',\n '[class.select-end]': 'day.isSelectionEnd',\n '[class.selected]': 'day.isSelected'\n },\n template: `{{ day && day.label || '' }}`\n }]\n }], ctorParameters: function () { return [{ type: BsDatepickerConfig }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { day: [{\n type: Input\n }] } });\n\nclass BsDaysCalendarViewComponent {\n constructor(_config) {\n this._config = _config;\n this.onNavigate = new EventEmitter();\n this.onViewMode = new EventEmitter();\n this.onSelect = new EventEmitter();\n this.onHover = new EventEmitter();\n this.onHoverWeek = new EventEmitter();\n this.isiOS = (/iPad|iPhone|iPod/.test(navigator.platform) ||\n (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1));\n if (this._config.dateTooltipTexts && this._config.dateTooltipTexts.length > 0) {\n this.isShowTooltip = true;\n }\n }\n navigateTo(event) {\n const step = BsNavigationDirection.DOWN === event ? -1 : 1;\n this.onNavigate.emit({ step: { month: step } });\n }\n changeViewMode(event) {\n this.onViewMode.emit(event);\n }\n selectDay(event) {\n this.onSelect.emit(event);\n }\n selectWeek(week) {\n if (!this._config.selectWeek && !this._config.selectWeekDateRange) {\n return;\n }\n if (week.days.length === 0) {\n return;\n }\n if (this._config.selectWeek && week.days[0]\n && !week.days[0].isDisabled\n && this._config.selectFromOtherMonth) {\n this.onSelect.emit(week.days[0]);\n return;\n }\n const selectedDay = week.days.find((day) => {\n return this._config.selectFromOtherMonth\n ? !day.isDisabled\n : !day.isOtherMonth && !day.isDisabled;\n });\n this.onSelect.emit(selectedDay);\n if (this._config.selectWeekDateRange) {\n const days = week.days.slice(0);\n const lastDayOfRange = days.reverse().find((day) => {\n return this._config.selectFromOtherMonth\n ? !day.isDisabled\n : !day.isOtherMonth && !day.isDisabled;\n });\n this.onSelect.emit(lastDayOfRange);\n }\n }\n weekHoverHandler(cell, isHovered) {\n if (!this._config.selectWeek && !this._config.selectWeekDateRange) {\n return;\n }\n const hasActiveDays = cell.days.find((day) => {\n return this._config.selectFromOtherMonth\n ? !day.isDisabled\n : !day.isOtherMonth && !day.isDisabled;\n });\n if (hasActiveDays) {\n cell.isHovered = isHovered;\n this.isWeekHovered = isHovered;\n this.onHoverWeek.emit(cell);\n }\n }\n hoverDay(cell, isHovered) {\n if (this._config.selectFromOtherMonth && cell.isOtherMonth) {\n cell.isOtherMonthHovered = isHovered;\n }\n if (this._config.dateTooltipTexts) {\n cell.tooltipText = '';\n this._config.dateTooltipTexts.forEach((dateData) => {\n if (isSameDay(dateData.date, cell.date)) {\n cell.tooltipText = dateData.tooltipText;\n return;\n }\n });\n }\n this.onHover.emit({ cell, isHovered });\n }\n}\nBsDaysCalendarViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDaysCalendarViewComponent, deps: [{ token: BsDatepickerConfig }], target: i0.ɵɵFactoryTarget.Component });\nBsDaysCalendarViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.1\", type: BsDaysCalendarViewComponent, selector: \"bs-days-calendar-view\", inputs: { calendar: \"calendar\", options: \"options\" }, outputs: { onNavigate: \"onNavigate\", onViewMode: \"onViewMode\", onSelect: \"onSelect\", onHover: \"onHover\", onHoverWeek: \"onHoverWeek\" }, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ calendar.weekdays[i] }}\n
\n {{ calendar.weekNumbers[i] }}\n {{ calendar.weekNumbers[i] }}\n \n\n \n {{ day.label }} 3\n \n {{ day.label }} 2\n\n \n {{ day.label }} 1\n
\n\n
\n `, isInline: true, components: [{ type: BsCalendarLayoutComponent, selector: \"bs-calendar-layout\" }, { type: BsDatepickerNavigationViewComponent, selector: \"bs-datepicker-navigation-view\", inputs: [\"calendar\"], outputs: [\"onNavigate\", \"onViewMode\"] }, { type: BsDatepickerDayDecoratorComponent, selector: \"[bsDatepickerDayDecorator]\", inputs: [\"day\"] }], directives: [{ type: i11.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i11.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i6.TooltipDirective, selector: \"[tooltip], [tooltipHtml]\", inputs: [\"adaptivePosition\", \"tooltip\", \"placement\", \"triggers\", \"container\", \"containerClass\", \"boundariesElement\", \"isOpen\", \"isDisabled\", \"delay\", \"tooltipHtml\", \"tooltipPlacement\", \"tooltipIsOpen\", \"tooltipEnable\", \"tooltipAppendToBody\", \"tooltipAnimation\", \"tooltipClass\", \"tooltipContext\", \"tooltipPopupDelay\", \"tooltipFadeDuration\", \"tooltipTrigger\"], outputs: [\"tooltipChange\", \"onShown\", \"onHidden\", \"tooltipStateChanged\"], exportAs: [\"bs-tooltip\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDaysCalendarViewComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'bs-days-calendar-view',\n // changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ calendar.weekdays[i] }}\n
\n {{ calendar.weekNumbers[i] }}\n {{ calendar.weekNumbers[i] }}\n \n\n \n {{ day.label }} 3\n \n {{ day.label }} 2\n\n \n {{ day.label }} 1\n
\n\n
\n `\n }]\n }], ctorParameters: function () { return [{ type: BsDatepickerConfig }]; }, propDecorators: { calendar: [{\n type: Input\n }], options: [{\n type: Input\n }], onNavigate: [{\n type: Output\n }], onViewMode: [{\n type: Output\n }], onSelect: [{\n type: Output\n }], onHover: [{\n type: Output\n }], onHoverWeek: [{\n type: Output\n }] } });\n\nclass BsMonthCalendarViewComponent {\n constructor() {\n this.onNavigate = new EventEmitter();\n this.onViewMode = new EventEmitter();\n this.onSelect = new EventEmitter();\n this.onHover = new EventEmitter();\n }\n navigateTo(event) {\n const step = BsNavigationDirection.DOWN === event ? -1 : 1;\n this.onNavigate.emit({ step: { year: step } });\n }\n viewMonth(month) {\n this.onSelect.emit(month);\n }\n hoverMonth(cell, isHovered) {\n this.onHover.emit({ cell, isHovered });\n }\n changeViewMode(event) {\n this.onViewMode.emit(event);\n }\n}\nBsMonthCalendarViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsMonthCalendarViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nBsMonthCalendarViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.1\", type: BsMonthCalendarViewComponent, selector: \"bs-month-calendar-view\", inputs: { calendar: \"calendar\" }, outputs: { onNavigate: \"onNavigate\", onViewMode: \"onViewMode\", onSelect: \"onSelect\", onHover: \"onHover\" }, ngImport: i0, template: `\n \n \n\n \n \n \n \n \n \n
\n {{ month.label }}\n
\n
\n `, isInline: true, components: [{ type: BsCalendarLayoutComponent, selector: \"bs-calendar-layout\" }, { type: BsDatepickerNavigationViewComponent, selector: \"bs-datepicker-navigation-view\", inputs: [\"calendar\"], outputs: [\"onNavigate\", \"onViewMode\"] }], directives: [{ type: i11.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsMonthCalendarViewComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'bs-month-calendar-view',\n template: `\n \n \n\n \n \n \n \n \n \n
\n {{ month.label }}\n
\n
\n `\n }]\n }], propDecorators: { calendar: [{\n type: Input\n }], onNavigate: [{\n type: Output\n }], onViewMode: [{\n type: Output\n }], onSelect: [{\n type: Output\n }], onHover: [{\n type: Output\n }] } });\n\nclass BsYearsCalendarViewComponent {\n constructor() {\n this.onNavigate = new EventEmitter();\n this.onViewMode = new EventEmitter();\n this.onSelect = new EventEmitter();\n this.onHover = new EventEmitter();\n }\n navigateTo(event) {\n const step = BsNavigationDirection.DOWN === event ? -1 : 1;\n this.onNavigate.emit({ step: { year: step * yearsPerCalendar } });\n }\n viewYear(year) {\n this.onSelect.emit(year);\n }\n hoverYear(cell, isHovered) {\n this.onHover.emit({ cell, isHovered });\n }\n changeViewMode(event) {\n this.onViewMode.emit(event);\n }\n}\nBsYearsCalendarViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsYearsCalendarViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nBsYearsCalendarViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.1\", type: BsYearsCalendarViewComponent, selector: \"bs-years-calendar-view\", inputs: { calendar: \"calendar\" }, outputs: { onNavigate: \"onNavigate\", onViewMode: \"onViewMode\", onSelect: \"onSelect\", onHover: \"onHover\" }, ngImport: i0, template: `\n \n \n\n \n \n \n \n \n \n
\n {{ year.label }}\n
\n
\n `, isInline: true, components: [{ type: BsCalendarLayoutComponent, selector: \"bs-calendar-layout\" }, { type: BsDatepickerNavigationViewComponent, selector: \"bs-datepicker-navigation-view\", inputs: [\"calendar\"], outputs: [\"onNavigate\", \"onViewMode\"] }], directives: [{ type: i11.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsYearsCalendarViewComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'bs-years-calendar-view',\n template: `\n \n \n\n \n \n \n \n \n \n
\n {{ year.label }}\n
\n
\n `\n }]\n }], propDecorators: { calendar: [{\n type: Input\n }], onNavigate: [{\n type: Output\n }], onViewMode: [{\n type: Output\n }], onSelect: [{\n type: Output\n }], onHover: [{\n type: Output\n }] } });\n\nclass BsCustomDatesViewComponent {\n constructor() {\n this.onSelect = new EventEmitter();\n }\n selectFromRanges(range) {\n this.onSelect.emit(range);\n }\n}\nBsCustomDatesViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsCustomDatesViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nBsCustomDatesViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.1\", type: BsCustomDatesViewComponent, selector: \"bs-custom-date-view\", inputs: { ranges: \"ranges\", selectedRange: \"selectedRange\", customRangeLabel: \"customRangeLabel\" }, outputs: { onSelect: \"onSelect\" }, ngImport: i0, template: `\n
\n \n
\n `, isInline: true, directives: [{ type: i11.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsCustomDatesViewComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'bs-custom-date-view',\n template: `\n
\n \n
\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { ranges: [{\n type: Input\n }], selectedRange: [{\n type: Input\n }], customRangeLabel: [{\n type: Input\n }], onSelect: [{\n type: Output\n }] } });\n\nclass BsDatepickerContainerComponent extends BsDatepickerAbstractComponent {\n constructor(_renderer, _config, _store, _element, _actions, _effects, _positionService) {\n super();\n this._config = _config;\n this._store = _store;\n this._element = _element;\n this._actions = _actions;\n this._positionService = _positionService;\n this.valueChange = new EventEmitter();\n this.animationState = 'void';\n this.isRangePicker = false;\n this._subs = [];\n this._effects = _effects;\n _renderer.setStyle(_element.nativeElement, 'display', 'block');\n _renderer.setStyle(_element.nativeElement, 'position', 'absolute');\n }\n set value(value) {\n var _a;\n (_a = this._effects) === null || _a === void 0 ? void 0 : _a.setValue(value);\n }\n ngOnInit() {\n var _a, _b;\n this._positionService.setOptions({\n modifiers: {\n flip: {\n enabled: this._config.adaptivePosition\n },\n preventOverflow: {\n enabled: this._config.adaptivePosition\n }\n },\n allowedPositions: this._config.allowedPositions\n });\n (_a = this._positionService.event$) === null || _a === void 0 ? void 0 : _a.pipe(take(1)).subscribe(() => {\n this._positionService.disable();\n if (this._config.isAnimated) {\n this.animationState = this.isTopPosition ? 'animated-up' : 'animated-down';\n return;\n }\n this.animationState = 'unanimated';\n });\n this.isOtherMonthsActive = this._config.selectFromOtherMonth;\n this.containerClass = this._config.containerClass;\n this.showTodayBtn = this._config.showTodayButton;\n this.todayBtnLbl = this._config.todayButtonLabel;\n this.todayPos = this._config.todayPosition;\n this.showClearBtn = this._config.showClearButton;\n this.clearBtnLbl = this._config.clearButtonLabel;\n this.clearPos = this._config.clearPosition;\n this.customRangeBtnLbl = this._config.customRangeButtonLabel;\n this.withTimepicker = this._config.withTimepicker;\n (_b = this._effects) === null || _b === void 0 ? void 0 : _b.init(this._store).setOptions(this._config).setBindings(this).setEventHandlers(this).registerDatepickerSideEffects();\n // todo: move it somewhere else\n // on selected date change\n this._subs.push(this._store.select((state) => state.selectedDate).subscribe((date) => this.valueChange.emit(date)));\n this._store.dispatch(this._actions.changeViewMode(this._config.startView));\n }\n ngAfterViewInit() {\n var _a, _b;\n this.selectedTimeSub.add((_a = this.selectedTime) === null || _a === void 0 ? void 0 : _a.subscribe((val) => {\n var _a;\n if (Array.isArray(val) && val.length >= 1) {\n (_a = this.startTimepicker) === null || _a === void 0 ? void 0 : _a.writeValue(val[0]);\n }\n }));\n (_b = this.startTimepicker) === null || _b === void 0 ? void 0 : _b.registerOnChange((val) => {\n this.timeSelectHandler(val, 0);\n });\n }\n get isTopPosition() {\n return this._element.nativeElement.classList.contains('top');\n }\n positionServiceEnable() {\n this._positionService.enable();\n }\n timeSelectHandler(date, index) {\n this._store.dispatch(this._actions.selectTime(date, index));\n }\n daySelectHandler(day) {\n if (!day) {\n return;\n }\n const isDisabled = this.isOtherMonthsActive ? day.isDisabled : (day.isOtherMonth || day.isDisabled);\n if (isDisabled) {\n return;\n }\n this._store.dispatch(this._actions.select(day.date));\n }\n monthSelectHandler(day) {\n if (!day || day.isDisabled) {\n return;\n }\n this._store.dispatch(this._actions.navigateTo({\n unit: {\n month: getMonth(day.date),\n year: getFullYear(day.date)\n },\n viewMode: 'day'\n }));\n }\n yearSelectHandler(day) {\n if (!day || day.isDisabled) {\n return;\n }\n this._store.dispatch(this._actions.navigateTo({\n unit: {\n year: getFullYear(day.date)\n },\n viewMode: 'month'\n }));\n }\n setToday() {\n this._store.dispatch(this._actions.select(new Date()));\n }\n clearDate() {\n this._store.dispatch(this._actions.select(undefined));\n }\n ngOnDestroy() {\n var _a;\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n this.selectedTimeSub.unsubscribe();\n (_a = this._effects) === null || _a === void 0 ? void 0 : _a.destroy();\n }\n}\nBsDatepickerContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDatepickerContainerComponent, deps: [{ token: i0.Renderer2 }, { token: BsDatepickerConfig }, { token: BsDatepickerStore }, { token: i0.ElementRef }, { token: BsDatepickerActions }, { token: BsDatepickerEffects }, { token: i5.PositioningService }], target: i0.ɵɵFactoryTarget.Component });\nBsDatepickerContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.1\", type: BsDatepickerContainerComponent, selector: \"bs-datepicker-container\", host: { attributes: { \"role\": \"dialog\", \"aria-label\": \"calendar\" }, listeners: { \"click\": \"_stopPropagation($event)\" }, classAttribute: \"bottom\" }, providers: [BsDatepickerStore, BsDatepickerEffects], viewQueries: [{ propertyName: \"startTimepicker\", first: true, predicate: [\"startTP\"], descendants: true }], usesInheritance: true, ngImport: i0, template: \"\\n
\\n
\\n \\n
\\n \\n \\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n\\n \\n
\\n \\n \\n
\\n\\n \\n
\\n \\n \\n
\\n
\\n\\n \\n
\\n \\n \\n
\\n\\n
\\n
\\n \\n
\\n\\n
\\n \\n
\\n
\\n\\n
\\n\\n \\n
0\\\">\\n \\n \\n
\\n
\\n\", components: [{ type: BsDaysCalendarViewComponent, selector: \"bs-days-calendar-view\", inputs: [\"calendar\", \"options\"], outputs: [\"onNavigate\", \"onViewMode\", \"onSelect\", \"onHover\", \"onHoverWeek\"] }, { type: i7.TimepickerComponent, selector: \"timepicker\", inputs: [\"hourStep\", \"minuteStep\", \"secondsStep\", \"readonlyInput\", \"disabled\", \"mousewheel\", \"arrowkeys\", \"showSpinners\", \"showMeridian\", \"showMinutes\", \"showSeconds\", \"meridians\", \"min\", \"max\", \"hoursPlaceholder\", \"minutesPlaceholder\", \"secondsPlaceholder\"], outputs: [\"isValid\", \"meridianChange\"] }, { type: BsMonthCalendarViewComponent, selector: \"bs-month-calendar-view\", inputs: [\"calendar\"], outputs: [\"onNavigate\", \"onViewMode\", \"onSelect\", \"onHover\"] }, { type: BsYearsCalendarViewComponent, selector: \"bs-years-calendar-view\", inputs: [\"calendar\"], outputs: [\"onNavigate\", \"onViewMode\", \"onSelect\", \"onHover\"] }, { type: BsCustomDatesViewComponent, selector: \"bs-custom-date-view\", inputs: [\"ranges\", \"selectedRange\", \"customRangeLabel\"], outputs: [\"onSelect\"] }], directives: [{ type: i11.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i11.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i11.NgSwitch, selector: \"[ngSwitch]\", inputs: [\"ngSwitch\"] }, { type: i11.NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: [\"ngSwitchCase\"] }, { type: i11.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], pipes: { \"async\": i11.AsyncPipe }, animations: [datepickerAnimation] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDatepickerContainerComponent, decorators: [{\n type: Component,\n args: [{ selector: 'bs-datepicker-container', providers: [BsDatepickerStore, BsDatepickerEffects], host: {\n class: 'bottom',\n '(click)': '_stopPropagation($event)',\n role: 'dialog',\n 'aria-label': 'calendar'\n }, animations: [datepickerAnimation], template: \"\\n
\\n
\\n \\n
\\n \\n \\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n\\n \\n
\\n \\n \\n
\\n\\n \\n
\\n \\n \\n
\\n
\\n\\n \\n
\\n \\n \\n
\\n\\n
\\n
\\n \\n
\\n\\n
\\n \\n
\\n
\\n\\n
\\n\\n \\n
0\\\">\\n \\n \\n
\\n
\\n\" }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: BsDatepickerConfig }, { type: BsDatepickerStore }, { type: i0.ElementRef }, { type: BsDatepickerActions }, { type: BsDatepickerEffects }, { type: i5.PositioningService }]; }, propDecorators: { startTimepicker: [{\n type: ViewChild,\n args: ['startTP']\n }] } });\n\nclass BsDatepickerDirective {\n constructor(_config, _elementRef, _renderer, _viewContainerRef, cis) {\n this._config = _config;\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n /**\n * Placement of a datepicker. Accepts: \"top\", \"bottom\", \"left\", \"right\"\n */\n this.placement = 'bottom';\n /**\n * Specifies events that should trigger. Supports a space separated list of\n * event names.\n */\n this.triggers = 'click';\n /**\n * Close datepicker on outside click\n */\n this.outsideClick = true;\n /**\n * A selector specifying the element the datepicker should be appended to.\n */\n this.container = 'body';\n this.outsideEsc = true;\n this.isDestroy$ = new Subject();\n /**\n * Indicates whether datepicker's content is enabled or not\n */\n this.isDisabled = false;\n /**\n * Emits when datepicker value has been changed\n */\n this.bsValueChange = new EventEmitter();\n this._subs = [];\n this._dateInputFormat$ = new Subject();\n // todo: assign only subset of fields\n Object.assign(this, this._config);\n this._datepicker = cis.createLoader(_elementRef, _viewContainerRef, _renderer);\n this.onShown = this._datepicker.onShown;\n this.onHidden = this._datepicker.onHidden;\n this.isOpen$ = new BehaviorSubject(this.isOpen);\n }\n /**\n * Returns whether or not the datepicker is currently being shown\n */\n get isOpen() {\n return this._datepicker.isShown;\n }\n set isOpen(value) {\n this.isOpen$.next(value);\n }\n /**\n * Initial value of datepicker\n */\n set bsValue(value) {\n var _a;\n if (this._bsValue && value && this._bsValue.getTime() === value.getTime()) {\n return;\n }\n if (!this._bsValue && value && !this._config.withTimepicker) {\n const now = new Date();\n copyTime(value, now);\n }\n if (value && ((_a = this.bsConfig) === null || _a === void 0 ? void 0 : _a.initCurrentTime)) {\n value = setCurrentTimeOnDateSelect(value);\n }\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n get dateInputFormat$() {\n return this._dateInputFormat$;\n }\n ngOnInit() {\n this._datepicker.listen({\n outsideClick: this.outsideClick,\n outsideEsc: this.outsideEsc,\n triggers: this.triggers,\n show: () => this.show()\n });\n this.setConfig();\n }\n ngOnChanges(changes) {\n var _a, _b, _c, _d;\n if (changes[\"bsConfig\"]) {\n if (((_a = changes[\"bsConfig\"].currentValue) === null || _a === void 0 ? void 0 : _a.initCurrentTime) && ((_b = changes[\"bsConfig\"].currentValue) === null || _b === void 0 ? void 0 : _b.initCurrentTime) !== ((_c = changes[\"bsConfig\"].previousValue) === null || _c === void 0 ? void 0 : _c.initCurrentTime) && this._bsValue) {\n this._bsValue = setCurrentTimeOnDateSelect(this._bsValue);\n this.bsValueChange.emit(this._bsValue);\n }\n this.setConfig();\n this._dateInputFormat$.next(this.bsConfig && this.bsConfig.dateInputFormat);\n }\n if (!this._datepickerRef || !this._datepickerRef.instance) {\n return;\n }\n if (changes[\"minDate\"]) {\n this._datepickerRef.instance.minDate = this.minDate;\n }\n if (changes[\"maxDate\"]) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n }\n if (changes[\"daysDisabled\"]) {\n this._datepickerRef.instance.daysDisabled = this.daysDisabled;\n }\n if (changes[\"datesDisabled\"]) {\n this._datepickerRef.instance.datesDisabled = this.datesDisabled;\n }\n if (changes[\"datesEnabled\"]) {\n this._datepickerRef.instance.datesEnabled = this.datesEnabled;\n }\n if (changes[\"isDisabled\"]) {\n if ((_d = this._elementRef) === null || _d === void 0 ? void 0 : _d.nativeElement) {\n this._elementRef.nativeElement.setAttribute('readonly', this.isDisabled);\n }\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n }\n if (changes[\"dateCustomClasses\"]) {\n this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;\n }\n if (changes[\"dateTooltipTexts\"]) {\n this._datepickerRef.instance.dateTooltipTexts = this.dateTooltipTexts;\n }\n }\n initSubscribes() {\n // if date changes from external source (model -> view)\n this._subs.push(this.bsValueChange.subscribe((value) => {\n if (this._datepickerRef) {\n this._datepickerRef.instance.value = value;\n }\n }));\n // if date changes from picker (view -> model)\n if (this._datepickerRef) {\n this._subs.push(this._datepickerRef.instance.valueChange.subscribe((value) => {\n this.bsValue = value;\n this.hide();\n }));\n }\n }\n ngAfterViewInit() {\n this.isOpen$.pipe(filter(isOpen => isOpen !== this.isOpen), takeUntil(this.isDestroy$))\n .subscribe(() => this.toggle());\n }\n /**\n * Opens an element’s datepicker. This is considered a “manual” triggering of\n * the datepicker.\n */\n show() {\n if (this._datepicker.isShown) {\n return;\n }\n this.setConfig();\n this._datepickerRef = this._datepicker\n .provide({ provide: BsDatepickerConfig, useValue: this._config })\n .attach(BsDatepickerContainerComponent)\n .to(this.container)\n .position({ attachment: this.placement })\n .show({ placement: this.placement });\n this.initSubscribes();\n }\n /**\n * Closes an element’s datepicker. This is considered a “manual” triggering of\n * the datepicker.\n */\n hide() {\n if (this.isOpen) {\n this._datepicker.hide();\n }\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n if (this._config.returnFocusToInput) {\n this._renderer.selectRootElement(this._elementRef.nativeElement).focus();\n }\n }\n /**\n * Toggles an element’s datepicker. This is considered a “manual” triggering\n * of the datepicker.\n */\n toggle() {\n if (this.isOpen) {\n return this.hide();\n }\n this.show();\n }\n /**\n * Set config for datepicker\n */\n setConfig() {\n var _a;\n this._config = Object.assign({}, this._config, this.bsConfig, {\n value: checkBsValue(this._bsValue, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\n isDisabled: this.isDisabled,\n minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\n maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,\n daysDisabled: this.daysDisabled || this.bsConfig && this.bsConfig.daysDisabled,\n dateCustomClasses: this.dateCustomClasses || this.bsConfig && this.bsConfig.dateCustomClasses,\n dateTooltipTexts: this.dateTooltipTexts || this.bsConfig && this.bsConfig.dateTooltipTexts,\n datesDisabled: this.datesDisabled || this.bsConfig && this.bsConfig.datesDisabled,\n datesEnabled: this.datesEnabled || this.bsConfig && this.bsConfig.datesEnabled,\n minMode: this.minMode || this.bsConfig && this.bsConfig.minMode,\n initCurrentTime: (_a = this.bsConfig) === null || _a === void 0 ? void 0 : _a.initCurrentTime\n });\n }\n unsubscribeSubscriptions() {\n var _a;\n if ((_a = this._subs) === null || _a === void 0 ? void 0 : _a.length) {\n this._subs.map(sub => sub.unsubscribe());\n this._subs.length = 0;\n }\n }\n ngOnDestroy() {\n this._datepicker.dispose();\n this.isOpen$.next(false);\n if (this.isDestroy$) {\n this.isDestroy$.next(null);\n this.isDestroy$.complete();\n }\n this.unsubscribeSubscriptions();\n }\n}\nBsDatepickerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDatepickerDirective, deps: [{ token: BsDatepickerConfig }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }, { token: i2.ComponentLoaderFactory }], target: i0.ɵɵFactoryTarget.Directive });\nBsDatepickerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.1.1\", type: BsDatepickerDirective, selector: \"[bsDatepicker]\", inputs: { placement: \"placement\", triggers: \"triggers\", outsideClick: \"outsideClick\", container: \"container\", outsideEsc: \"outsideEsc\", isDisabled: \"isDisabled\", minDate: \"minDate\", maxDate: \"maxDate\", minMode: \"minMode\", daysDisabled: \"daysDisabled\", datesDisabled: \"datesDisabled\", datesEnabled: \"datesEnabled\", dateCustomClasses: \"dateCustomClasses\", dateTooltipTexts: \"dateTooltipTexts\", isOpen: \"isOpen\", bsValue: \"bsValue\", bsConfig: \"bsConfig\" }, outputs: { onShown: \"onShown\", onHidden: \"onHidden\", bsValueChange: \"bsValueChange\" }, exportAs: [\"bsDatepicker\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDatepickerDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[bsDatepicker]',\n exportAs: 'bsDatepicker'\n }]\n }], ctorParameters: function () { return [{ type: BsDatepickerConfig }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ViewContainerRef }, { type: i2.ComponentLoaderFactory }]; }, propDecorators: { placement: [{\n type: Input\n }], triggers: [{\n type: Input\n }], outsideClick: [{\n type: Input\n }], container: [{\n type: Input\n }], outsideEsc: [{\n type: Input\n }], onShown: [{\n type: Output\n }], onHidden: [{\n type: Output\n }], isDisabled: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], minMode: [{\n type: Input\n }], daysDisabled: [{\n type: Input\n }], datesDisabled: [{\n type: Input\n }], datesEnabled: [{\n type: Input\n }], dateCustomClasses: [{\n type: Input\n }], dateTooltipTexts: [{\n type: Input\n }], bsValueChange: [{\n type: Output\n }], isOpen: [{\n type: Input\n }], bsValue: [{\n type: Input\n }], bsConfig: [{\n type: Input\n }] } });\n\nclass BsDatepickerInlineConfig extends BsDatepickerConfig {\n}\nBsDatepickerInlineConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDatepickerInlineConfig, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nBsDatepickerInlineConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDatepickerInlineConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDatepickerInlineConfig, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\n\nclass BsDatepickerInlineContainerComponent extends BsDatepickerContainerComponent {\n constructor(_renderer, _config, _store, _element, _actions, _effects, _positioningService) {\n super(_renderer, _config, _store, _element, _actions, _effects, _positioningService);\n _renderer.setStyle(_element.nativeElement, 'display', 'inline-block');\n _renderer.setStyle(_element.nativeElement, 'position', 'static');\n }\n}\nBsDatepickerInlineContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDatepickerInlineContainerComponent, deps: [{ token: i0.Renderer2 }, { token: BsDatepickerConfig }, { token: BsDatepickerStore }, { token: i0.ElementRef }, { token: BsDatepickerActions }, { token: BsDatepickerEffects }, { token: i5.PositioningService }], target: i0.ɵɵFactoryTarget.Component });\nBsDatepickerInlineContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.1\", type: BsDatepickerInlineContainerComponent, selector: \"bs-datepicker-inline-container\", host: { listeners: { \"click\": \"_stopPropagation($event)\" } }, providers: [BsDatepickerStore, BsDatepickerEffects], usesInheritance: true, ngImport: i0, template: \"\\n
\\n
\\n \\n
\\n \\n \\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n\\n \\n
\\n \\n \\n
\\n\\n \\n
\\n \\n \\n
\\n
\\n\\n \\n
\\n \\n \\n
\\n\\n
\\n
\\n \\n
\\n\\n
\\n \\n
\\n
\\n\\n
\\n\\n \\n
0\\\">\\n \\n \\n
\\n
\\n\", components: [{ type: BsDaysCalendarViewComponent, selector: \"bs-days-calendar-view\", inputs: [\"calendar\", \"options\"], outputs: [\"onNavigate\", \"onViewMode\", \"onSelect\", \"onHover\", \"onHoverWeek\"] }, { type: i7.TimepickerComponent, selector: \"timepicker\", inputs: [\"hourStep\", \"minuteStep\", \"secondsStep\", \"readonlyInput\", \"disabled\", \"mousewheel\", \"arrowkeys\", \"showSpinners\", \"showMeridian\", \"showMinutes\", \"showSeconds\", \"meridians\", \"min\", \"max\", \"hoursPlaceholder\", \"minutesPlaceholder\", \"secondsPlaceholder\"], outputs: [\"isValid\", \"meridianChange\"] }, { type: BsMonthCalendarViewComponent, selector: \"bs-month-calendar-view\", inputs: [\"calendar\"], outputs: [\"onNavigate\", \"onViewMode\", \"onSelect\", \"onHover\"] }, { type: BsYearsCalendarViewComponent, selector: \"bs-years-calendar-view\", inputs: [\"calendar\"], outputs: [\"onNavigate\", \"onViewMode\", \"onSelect\", \"onHover\"] }, { type: BsCustomDatesViewComponent, selector: \"bs-custom-date-view\", inputs: [\"ranges\", \"selectedRange\", \"customRangeLabel\"], outputs: [\"onSelect\"] }], directives: [{ type: i11.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i11.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i11.NgSwitch, selector: \"[ngSwitch]\", inputs: [\"ngSwitch\"] }, { type: i11.NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: [\"ngSwitchCase\"] }, { type: i11.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], pipes: { \"async\": i11.AsyncPipe }, animations: [datepickerAnimation] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDatepickerInlineContainerComponent, decorators: [{\n type: Component,\n args: [{ selector: 'bs-datepicker-inline-container', providers: [BsDatepickerStore, BsDatepickerEffects], host: {\n '(click)': '_stopPropagation($event)'\n }, animations: [datepickerAnimation], template: \"\\n
\\n
\\n \\n
\\n \\n \\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n\\n \\n
\\n \\n \\n
\\n\\n \\n
\\n \\n \\n
\\n
\\n\\n \\n
\\n \\n \\n
\\n\\n
\\n
\\n \\n
\\n\\n
\\n \\n
\\n
\\n\\n
\\n\\n \\n
0\\\">\\n \\n \\n
\\n
\\n\" }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: BsDatepickerConfig }, { type: BsDatepickerStore }, { type: i0.ElementRef }, { type: BsDatepickerActions }, { type: BsDatepickerEffects }, { type: i5.PositioningService }]; } });\n\nclass BsDatepickerInlineDirective {\n constructor(_config, _elementRef, _renderer, _viewContainerRef, cis) {\n this._config = _config;\n this._elementRef = _elementRef;\n /**\n * Indicates whether datepicker is enabled or not\n */\n this.isDisabled = false;\n /**\n * Emits when datepicker value has been changed\n */\n this.bsValueChange = new EventEmitter();\n this._subs = [];\n // todo: assign only subset of fields\n Object.assign(this, this._config);\n this._datepicker = cis.createLoader(_elementRef, _viewContainerRef, _renderer);\n }\n /**\n * Initial value of datepicker\n */\n set bsValue(value) {\n var _a;\n if (this._bsValue === value) {\n return;\n }\n if (!this._bsValue && value && !this._config.withTimepicker) {\n const now = new Date();\n copyTime(value, now);\n }\n if (value && ((_a = this.bsConfig) === null || _a === void 0 ? void 0 : _a.initCurrentTime)) {\n value = setCurrentTimeOnDateSelect(value);\n }\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n ngOnInit() {\n this.setConfig();\n this.initSubscribes();\n }\n initSubscribes() {\n this.unsubscribeSubscriptions();\n this._subs.push(this.bsValueChange.subscribe((value) => {\n if (this._datepickerRef) {\n this._datepickerRef.instance.value = value;\n }\n }));\n if (this._datepickerRef) {\n this._subs.push(this._datepickerRef.instance.valueChange.subscribe((value) => {\n this.bsValue = value;\n }));\n }\n }\n unsubscribeSubscriptions() {\n var _a;\n if ((_a = this._subs) === null || _a === void 0 ? void 0 : _a.length) {\n this._subs.map(sub => sub.unsubscribe());\n this._subs.length = 0;\n }\n }\n ngOnChanges(changes) {\n var _a, _b, _c;\n if (changes[\"bsConfig\"]) {\n if (((_a = changes[\"bsConfig\"].currentValue) === null || _a === void 0 ? void 0 : _a.initCurrentTime) && ((_b = changes[\"bsConfig\"].currentValue) === null || _b === void 0 ? void 0 : _b.initCurrentTime) !== ((_c = changes[\"bsConfig\"].previousValue) === null || _c === void 0 ? void 0 : _c.initCurrentTime) && this._bsValue) {\n this._bsValue = setCurrentTimeOnDateSelect(this._bsValue);\n this.bsValueChange.emit(this._bsValue);\n }\n }\n if (!this._datepickerRef || !this._datepickerRef.instance) {\n return;\n }\n if (changes[\"minDate\"]) {\n this._datepickerRef.instance.minDate = this.minDate;\n }\n if (changes[\"maxDate\"]) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n }\n if (changes[\"datesDisabled\"]) {\n this._datepickerRef.instance.datesDisabled = this.datesDisabled;\n }\n if (changes[\"datesEnabled\"]) {\n this._datepickerRef.instance.datesEnabled = this.datesEnabled;\n this._datepickerRef.instance.value = this._bsValue;\n }\n if (changes[\"isDisabled\"]) {\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n }\n if (changes[\"dateCustomClasses\"]) {\n this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;\n }\n if (changes[\"dateTooltipTexts\"]) {\n this._datepickerRef.instance.dateTooltipTexts = this.dateTooltipTexts;\n }\n this.setConfig();\n }\n /**\n * Set config for datepicker\n */\n setConfig() {\n var _a;\n if (this._datepicker) {\n this._datepicker.hide();\n }\n this._config = Object.assign({}, this._config, this.bsConfig, {\n value: checkBsValue(this._bsValue, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\n isDisabled: this.isDisabled,\n minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\n maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,\n dateCustomClasses: this.dateCustomClasses || this.bsConfig && this.bsConfig.dateCustomClasses,\n dateTooltipTexts: this.dateTooltipTexts || this.bsConfig && this.bsConfig.dateTooltipTexts,\n datesDisabled: this.datesDisabled || this.bsConfig && this.bsConfig.datesDisabled,\n datesEnabled: this.datesEnabled || this.bsConfig && this.bsConfig.datesEnabled,\n initCurrentTime: (_a = this.bsConfig) === null || _a === void 0 ? void 0 : _a.initCurrentTime\n });\n this._datepickerRef = this._datepicker\n .provide({ provide: BsDatepickerConfig, useValue: this._config })\n .attach(BsDatepickerInlineContainerComponent)\n .to(this._elementRef)\n .show();\n this.initSubscribes();\n }\n ngOnDestroy() {\n this._datepicker.dispose();\n this.unsubscribeSubscriptions();\n }\n}\nBsDatepickerInlineDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDatepickerInlineDirective, deps: [{ token: BsDatepickerInlineConfig }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }, { token: i2.ComponentLoaderFactory }], target: i0.ɵɵFactoryTarget.Directive });\nBsDatepickerInlineDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.1.1\", type: BsDatepickerInlineDirective, selector: \"bs-datepicker-inline\", inputs: { bsConfig: \"bsConfig\", isDisabled: \"isDisabled\", minDate: \"minDate\", maxDate: \"maxDate\", dateCustomClasses: \"dateCustomClasses\", dateTooltipTexts: \"dateTooltipTexts\", datesEnabled: \"datesEnabled\", datesDisabled: \"datesDisabled\", bsValue: \"bsValue\" }, outputs: { bsValueChange: \"bsValueChange\" }, exportAs: [\"bsDatepickerInline\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDatepickerInlineDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'bs-datepicker-inline',\n exportAs: 'bsDatepickerInline'\n }]\n }], ctorParameters: function () { return [{ type: BsDatepickerInlineConfig }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ViewContainerRef }, { type: i2.ComponentLoaderFactory }]; }, propDecorators: { bsConfig: [{\n type: Input\n }], isDisabled: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], dateCustomClasses: [{\n type: Input\n }], dateTooltipTexts: [{\n type: Input\n }], datesEnabled: [{\n type: Input\n }], datesDisabled: [{\n type: Input\n }], bsValueChange: [{\n type: Output\n }], bsValue: [{\n type: Input\n }] } });\n\nclass BsDaterangepickerInlineConfig extends BsDatepickerConfig {\n constructor() {\n super(...arguments);\n // DatepickerRenderOptions\n this.displayMonths = 2;\n /** turn on/off animation */\n this.isAnimated = false;\n }\n}\nBsDaterangepickerInlineConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDaterangepickerInlineConfig, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nBsDaterangepickerInlineConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDaterangepickerInlineConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDaterangepickerInlineConfig, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\n\nclass BsDaterangepickerContainerComponent extends BsDatepickerAbstractComponent {\n constructor(_renderer, _config, _store, _element, _actions, _effects, _positionService) {\n super();\n this._config = _config;\n this._store = _store;\n this._element = _element;\n this._actions = _actions;\n this._positionService = _positionService;\n this.valueChange = new EventEmitter();\n this.animationState = 'void';\n this._rangeStack = [];\n this.chosenRange = [];\n this._subs = [];\n this.isRangePicker = true;\n this._effects = _effects;\n this.customRanges = this._config.ranges || [];\n this.customRangeBtnLbl = this._config.customRangeButtonLabel;\n _renderer.setStyle(_element.nativeElement, 'display', 'block');\n _renderer.setStyle(_element.nativeElement, 'position', 'absolute');\n }\n set value(value) {\n var _a;\n (_a = this._effects) === null || _a === void 0 ? void 0 : _a.setRangeValue(value);\n }\n ngOnInit() {\n var _a, _b;\n this._positionService.setOptions({\n modifiers: {\n flip: {\n enabled: this._config.adaptivePosition\n },\n preventOverflow: {\n enabled: this._config.adaptivePosition\n }\n },\n allowedPositions: this._config.allowedPositions\n });\n (_a = this._positionService.event$) === null || _a === void 0 ? void 0 : _a.pipe(take(1)).subscribe(() => {\n this._positionService.disable();\n if (this._config.isAnimated) {\n this.animationState = this.isTopPosition ? 'animated-up' : 'animated-down';\n return;\n }\n this.animationState = 'unanimated';\n });\n this.containerClass = this._config.containerClass;\n this.isOtherMonthsActive = this._config.selectFromOtherMonth;\n this.withTimepicker = this._config.withTimepicker;\n (_b = this._effects) === null || _b === void 0 ? void 0 : _b.init(this._store).setOptions(this._config).setBindings(this).setEventHandlers(this).registerDatepickerSideEffects();\n // todo: move it somewhere else\n // on selected date change\n this._subs.push(this._store\n .select(state => state.selectedRange)\n .subscribe(dateRange => {\n this.valueChange.emit(dateRange);\n this.chosenRange = dateRange || [];\n }));\n }\n ngAfterViewInit() {\n var _a, _b, _c;\n this.selectedTimeSub.add((_a = this.selectedTime) === null || _a === void 0 ? void 0 : _a.subscribe((val) => {\n var _a, _b;\n if (Array.isArray(val) && val.length >= 2) {\n (_a = this.startTimepicker) === null || _a === void 0 ? void 0 : _a.writeValue(val[0]);\n (_b = this.endTimepicker) === null || _b === void 0 ? void 0 : _b.writeValue(val[1]);\n }\n }));\n (_b = this.startTimepicker) === null || _b === void 0 ? void 0 : _b.registerOnChange((val) => {\n this.timeSelectHandler(val, 0);\n });\n (_c = this.endTimepicker) === null || _c === void 0 ? void 0 : _c.registerOnChange((val) => {\n this.timeSelectHandler(val, 1);\n });\n }\n get isTopPosition() {\n return this._element.nativeElement.classList.contains('top');\n }\n positionServiceEnable() {\n this._positionService.enable();\n }\n timeSelectHandler(date, index) {\n this._store.dispatch(this._actions.selectTime(date, index));\n }\n daySelectHandler(day) {\n if (!day) {\n return;\n }\n const isDisabled = this.isOtherMonthsActive ? day.isDisabled : (day.isOtherMonth || day.isDisabled);\n if (isDisabled) {\n return;\n }\n this.rangesProcessing(day);\n }\n monthSelectHandler(day) {\n if (!day || day.isDisabled) {\n return;\n }\n day.isSelected = true;\n if (this._config.minMode !== 'month') {\n if (day.isDisabled) {\n return;\n }\n this._store.dispatch(this._actions.navigateTo({\n unit: {\n month: getMonth(day.date),\n year: getFullYear(day.date)\n },\n viewMode: 'day'\n }));\n return;\n }\n this.rangesProcessing(day);\n }\n yearSelectHandler(day) {\n if (!day || day.isDisabled) {\n return;\n }\n day.isSelected = true;\n if (this._config.minMode !== 'year') {\n if (day.isDisabled) {\n return;\n }\n this._store.dispatch(this._actions.navigateTo({\n unit: {\n year: getFullYear(day.date)\n },\n viewMode: 'month'\n }));\n return;\n }\n this.rangesProcessing(day);\n }\n rangesProcessing(day) {\n // if only one date is already selected\n // and user clicks on previous date\n // start selection from new date\n // but if new date is after initial one\n // than finish selection\n if (this._rangeStack.length === 1) {\n this._rangeStack =\n day.date >= this._rangeStack[0]\n ? [this._rangeStack[0], day.date]\n : [day.date];\n }\n if (this._config.maxDateRange) {\n this.setMaxDateRangeOnCalendar(day.date);\n }\n if (this._rangeStack.length === 0) {\n this._rangeStack = [day.date];\n if (this._config.maxDateRange) {\n this.setMaxDateRangeOnCalendar(day.date);\n }\n }\n this._store.dispatch(this._actions.selectRange(this._rangeStack));\n if (this._rangeStack.length === 2) {\n this._rangeStack = [];\n }\n }\n ngOnDestroy() {\n var _a;\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n this.selectedTimeSub.unsubscribe();\n (_a = this._effects) === null || _a === void 0 ? void 0 : _a.destroy();\n }\n setRangeOnCalendar(dates) {\n if (dates) {\n this._rangeStack = dates.value instanceof Date ? [dates.value] : dates.value;\n }\n this._store.dispatch(this._actions.selectRange(this._rangeStack));\n }\n setMaxDateRangeOnCalendar(currentSelection) {\n var _a;\n let maxDateRange = new Date(currentSelection);\n if (this._config.maxDate) {\n const maxDateValueInMilliseconds = this._config.maxDate.getTime();\n const maxDateRangeInMilliseconds = currentSelection.getTime() + ((this._config.maxDateRange || 0) * dayInMilliseconds);\n maxDateRange = maxDateRangeInMilliseconds > maxDateValueInMilliseconds ?\n new Date(this._config.maxDate) :\n new Date(maxDateRangeInMilliseconds);\n }\n else {\n maxDateRange.setDate(currentSelection.getDate() + (this._config.maxDateRange || 0));\n }\n (_a = this._effects) === null || _a === void 0 ? void 0 : _a.setMaxDate(maxDateRange);\n }\n}\nBsDaterangepickerContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDaterangepickerContainerComponent, deps: [{ token: i0.Renderer2 }, { token: BsDatepickerConfig }, { token: BsDatepickerStore }, { token: i0.ElementRef }, { token: BsDatepickerActions }, { token: BsDatepickerEffects }, { token: i5.PositioningService }], target: i0.ɵɵFactoryTarget.Component });\nBsDaterangepickerContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.1\", type: BsDaterangepickerContainerComponent, selector: \"bs-daterangepicker-container\", host: { attributes: { \"role\": \"dialog\", \"aria-label\": \"calendar\" }, listeners: { \"click\": \"_stopPropagation($event)\" }, classAttribute: \"bottom\" }, providers: [BsDatepickerStore, BsDatepickerEffects], viewQueries: [{ propertyName: \"startTimepicker\", first: true, predicate: [\"startTP\"], descendants: true }, { propertyName: \"endTimepicker\", first: true, predicate: [\"endTP\"], descendants: true }], usesInheritance: true, ngImport: i0, template: \"\\n
\\n
\\n \\n
\\n \\n \\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n\\n \\n
\\n \\n \\n
\\n\\n \\n
\\n \\n \\n
\\n
\\n\\n \\n
\\n \\n \\n
\\n\\n
\\n
\\n \\n
\\n\\n
\\n \\n
\\n
\\n\\n
\\n\\n \\n
0\\\">\\n \\n \\n
\\n
\\n\", components: [{ type: BsDaysCalendarViewComponent, selector: \"bs-days-calendar-view\", inputs: [\"calendar\", \"options\"], outputs: [\"onNavigate\", \"onViewMode\", \"onSelect\", \"onHover\", \"onHoverWeek\"] }, { type: i7.TimepickerComponent, selector: \"timepicker\", inputs: [\"hourStep\", \"minuteStep\", \"secondsStep\", \"readonlyInput\", \"disabled\", \"mousewheel\", \"arrowkeys\", \"showSpinners\", \"showMeridian\", \"showMinutes\", \"showSeconds\", \"meridians\", \"min\", \"max\", \"hoursPlaceholder\", \"minutesPlaceholder\", \"secondsPlaceholder\"], outputs: [\"isValid\", \"meridianChange\"] }, { type: BsMonthCalendarViewComponent, selector: \"bs-month-calendar-view\", inputs: [\"calendar\"], outputs: [\"onNavigate\", \"onViewMode\", \"onSelect\", \"onHover\"] }, { type: BsYearsCalendarViewComponent, selector: \"bs-years-calendar-view\", inputs: [\"calendar\"], outputs: [\"onNavigate\", \"onViewMode\", \"onSelect\", \"onHover\"] }, { type: BsCustomDatesViewComponent, selector: \"bs-custom-date-view\", inputs: [\"ranges\", \"selectedRange\", \"customRangeLabel\"], outputs: [\"onSelect\"] }], directives: [{ type: i11.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i11.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i11.NgSwitch, selector: \"[ngSwitch]\", inputs: [\"ngSwitch\"] }, { type: i11.NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: [\"ngSwitchCase\"] }, { type: i11.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], pipes: { \"async\": i11.AsyncPipe }, animations: [datepickerAnimation] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDaterangepickerContainerComponent, decorators: [{\n type: Component,\n args: [{ selector: 'bs-daterangepicker-container', providers: [BsDatepickerStore, BsDatepickerEffects], host: {\n class: 'bottom',\n '(click)': '_stopPropagation($event)',\n role: 'dialog',\n 'aria-label': 'calendar'\n }, animations: [datepickerAnimation], template: \"\\n
\\n
\\n \\n
\\n \\n \\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n\\n \\n
\\n \\n \\n
\\n\\n \\n
\\n \\n \\n
\\n
\\n\\n \\n
\\n \\n \\n
\\n\\n
\\n
\\n \\n
\\n\\n
\\n \\n
\\n
\\n\\n
\\n\\n \\n
0\\\">\\n \\n \\n
\\n
\\n\" }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: BsDatepickerConfig }, { type: BsDatepickerStore }, { type: i0.ElementRef }, { type: BsDatepickerActions }, { type: BsDatepickerEffects }, { type: i5.PositioningService }]; }, propDecorators: { startTimepicker: [{\n type: ViewChild,\n args: ['startTP']\n }], endTimepicker: [{\n type: ViewChild,\n args: ['endTP']\n }] } });\n\nclass BsDaterangepickerInlineContainerComponent extends BsDaterangepickerContainerComponent {\n constructor(_renderer, _config, _store, _element, _actions, _effects, _positioningService) {\n super(_renderer, _config, _store, _element, _actions, _effects, _positioningService);\n _renderer.setStyle(_element.nativeElement, 'display', 'inline-block');\n _renderer.setStyle(_element.nativeElement, 'position', 'static');\n }\n}\nBsDaterangepickerInlineContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDaterangepickerInlineContainerComponent, deps: [{ token: i0.Renderer2 }, { token: BsDatepickerConfig }, { token: BsDatepickerStore }, { token: i0.ElementRef }, { token: BsDatepickerActions }, { token: BsDatepickerEffects }, { token: i5.PositioningService }], target: i0.ɵɵFactoryTarget.Component });\nBsDaterangepickerInlineContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.1\", type: BsDaterangepickerInlineContainerComponent, selector: \"bs-daterangepicker-inline-container\", host: { listeners: { \"click\": \"_stopPropagation($event)\" } }, providers: [BsDatepickerStore, BsDatepickerEffects], usesInheritance: true, ngImport: i0, template: \"\\n
\\n
\\n \\n
\\n \\n \\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n\\n \\n
\\n \\n \\n
\\n\\n \\n
\\n \\n \\n
\\n
\\n\\n \\n
\\n \\n \\n
\\n\\n
\\n
\\n \\n
\\n\\n
\\n \\n
\\n
\\n\\n
\\n\\n \\n
0\\\">\\n \\n \\n
\\n
\\n\", components: [{ type: BsDaysCalendarViewComponent, selector: \"bs-days-calendar-view\", inputs: [\"calendar\", \"options\"], outputs: [\"onNavigate\", \"onViewMode\", \"onSelect\", \"onHover\", \"onHoverWeek\"] }, { type: i7.TimepickerComponent, selector: \"timepicker\", inputs: [\"hourStep\", \"minuteStep\", \"secondsStep\", \"readonlyInput\", \"disabled\", \"mousewheel\", \"arrowkeys\", \"showSpinners\", \"showMeridian\", \"showMinutes\", \"showSeconds\", \"meridians\", \"min\", \"max\", \"hoursPlaceholder\", \"minutesPlaceholder\", \"secondsPlaceholder\"], outputs: [\"isValid\", \"meridianChange\"] }, { type: BsMonthCalendarViewComponent, selector: \"bs-month-calendar-view\", inputs: [\"calendar\"], outputs: [\"onNavigate\", \"onViewMode\", \"onSelect\", \"onHover\"] }, { type: BsYearsCalendarViewComponent, selector: \"bs-years-calendar-view\", inputs: [\"calendar\"], outputs: [\"onNavigate\", \"onViewMode\", \"onSelect\", \"onHover\"] }, { type: BsCustomDatesViewComponent, selector: \"bs-custom-date-view\", inputs: [\"ranges\", \"selectedRange\", \"customRangeLabel\"], outputs: [\"onSelect\"] }], directives: [{ type: i11.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i11.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i11.NgSwitch, selector: \"[ngSwitch]\", inputs: [\"ngSwitch\"] }, { type: i11.NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: [\"ngSwitchCase\"] }, { type: i11.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], pipes: { \"async\": i11.AsyncPipe }, animations: [datepickerAnimation] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDaterangepickerInlineContainerComponent, decorators: [{\n type: Component,\n args: [{ selector: 'bs-daterangepicker-inline-container', providers: [BsDatepickerStore, BsDatepickerEffects], host: {\n '(click)': '_stopPropagation($event)'\n }, animations: [datepickerAnimation], template: \"\\n
\\n
\\n \\n
\\n \\n \\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n\\n \\n
\\n \\n \\n
\\n\\n \\n
\\n \\n \\n
\\n
\\n\\n \\n
\\n \\n \\n
\\n\\n
\\n
\\n \\n
\\n\\n
\\n \\n
\\n
\\n\\n
\\n\\n \\n
0\\\">\\n \\n \\n
\\n
\\n\" }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: BsDatepickerConfig }, { type: BsDatepickerStore }, { type: i0.ElementRef }, { type: BsDatepickerActions }, { type: BsDatepickerEffects }, { type: i5.PositioningService }]; } });\n\nclass BsDaterangepickerInlineDirective {\n constructor(_config, _elementRef, _renderer, _viewContainerRef, cis) {\n this._config = _config;\n this._elementRef = _elementRef;\n /**\n * Indicates whether datepicker is enabled or not\n */\n this.isDisabled = false;\n /**\n * Emits when daterangepicker value has been changed\n */\n this.bsValueChange = new EventEmitter();\n this._subs = [];\n // todo: assign only subset of fields\n Object.assign(this, this._config);\n this._datepicker = cis.createLoader(_elementRef, _viewContainerRef, _renderer);\n }\n /**\n * Initial value of datepicker\n */\n set bsValue(value) {\n var _a;\n if (this._bsValue === value) {\n return;\n }\n if (value && ((_a = this.bsConfig) === null || _a === void 0 ? void 0 : _a.initCurrentTime)) {\n value = setDateRangesCurrentTimeOnDateSelect(value);\n }\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n ngOnInit() {\n this.setConfig();\n this.initSubscribes();\n }\n ngOnChanges(changes) {\n if (changes[\"bsConfig\"]) {\n if (changes[\"bsConfig\"].currentValue.initCurrentTime && changes[\"bsConfig\"].currentValue.initCurrentTime !== changes[\"bsConfig\"].previousValue.initCurrentTime && this._bsValue) {\n this._bsValue = setDateRangesCurrentTimeOnDateSelect(this._bsValue);\n this.bsValueChange.emit(this._bsValue);\n }\n }\n if (!this._datepickerRef || !this._datepickerRef.instance) {\n return;\n }\n if (changes[\"minDate\"]) {\n this._datepickerRef.instance.minDate = this.minDate;\n }\n if (changes[\"maxDate\"]) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n }\n if (changes[\"datesEnabled\"]) {\n this._datepickerRef.instance.datesEnabled = this.datesEnabled;\n this._datepickerRef.instance.value = this._bsValue;\n }\n if (changes[\"datesDisabled\"]) {\n this._datepickerRef.instance.datesDisabled = this.datesDisabled;\n }\n if (changes[\"daysDisabled\"]) {\n this._datepickerRef.instance.daysDisabled = this.daysDisabled;\n }\n if (changes[\"isDisabled\"]) {\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n }\n if (changes[\"dateCustomClasses\"]) {\n this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;\n }\n this.setConfig();\n }\n /**\n * Set config for datepicker\n */\n setConfig() {\n var _a;\n if (this._datepicker) {\n this._datepicker.hide();\n }\n this._config = Object.assign({}, this._config, this.bsConfig, {\n value: checkBsValue(this._bsValue, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\n isDisabled: this.isDisabled,\n minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\n maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,\n daysDisabled: this.daysDisabled || this.bsConfig && this.bsConfig.daysDisabled,\n dateCustomClasses: this.dateCustomClasses || this.bsConfig && this.bsConfig.dateCustomClasses,\n datesDisabled: this.datesDisabled || this.bsConfig && this.bsConfig.datesDisabled,\n datesEnabled: this.datesEnabled || this.bsConfig && this.bsConfig.datesEnabled,\n ranges: checkRangesWithMaxDate(this.bsConfig && this.bsConfig.ranges, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\n maxDateRange: this.bsConfig && this.bsConfig.maxDateRange,\n initCurrentTime: (_a = this.bsConfig) === null || _a === void 0 ? void 0 : _a.initCurrentTime\n });\n this._datepickerRef = this._datepicker\n .provide({ provide: BsDatepickerConfig, useValue: this._config })\n .attach(BsDaterangepickerInlineContainerComponent)\n .to(this._elementRef)\n .show();\n this.initSubscribes();\n }\n initSubscribes() {\n this.unsubscribeSubscriptions();\n // if date changes from external source (model -> view)\n this._subs.push(this.bsValueChange.subscribe((value) => {\n if (this._datepickerRef) {\n this._datepickerRef.instance.value = value;\n }\n }));\n // if date changes from picker (view -> model)\n if (this._datepickerRef) {\n this._subs.push(this._datepickerRef.instance.valueChange\n .pipe(filter((range) => range && range[0] && !!range[1]))\n .subscribe((value) => {\n this.bsValue = value;\n }));\n }\n }\n unsubscribeSubscriptions() {\n var _a;\n if ((_a = this._subs) === null || _a === void 0 ? void 0 : _a.length) {\n this._subs.map(sub => sub.unsubscribe());\n this._subs.length = 0;\n }\n }\n ngOnDestroy() {\n this._datepicker.dispose();\n this.unsubscribeSubscriptions();\n }\n}\nBsDaterangepickerInlineDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDaterangepickerInlineDirective, deps: [{ token: BsDaterangepickerInlineConfig }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }, { token: i2.ComponentLoaderFactory }], target: i0.ɵɵFactoryTarget.Directive });\nBsDaterangepickerInlineDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.1.1\", type: BsDaterangepickerInlineDirective, selector: \"bs-daterangepicker-inline\", inputs: { bsValue: \"bsValue\", bsConfig: \"bsConfig\", isDisabled: \"isDisabled\", minDate: \"minDate\", maxDate: \"maxDate\", dateCustomClasses: \"dateCustomClasses\", daysDisabled: \"daysDisabled\", datesDisabled: \"datesDisabled\", datesEnabled: \"datesEnabled\" }, outputs: { bsValueChange: \"bsValueChange\" }, exportAs: [\"bsDaterangepickerInline\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDaterangepickerInlineDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'bs-daterangepicker-inline',\n exportAs: 'bsDaterangepickerInline'\n }]\n }], ctorParameters: function () { return [{ type: BsDaterangepickerInlineConfig }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ViewContainerRef }, { type: i2.ComponentLoaderFactory }]; }, propDecorators: { bsValue: [{\n type: Input\n }], bsConfig: [{\n type: Input\n }], isDisabled: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], dateCustomClasses: [{\n type: Input\n }], daysDisabled: [{\n type: Input\n }], datesDisabled: [{\n type: Input\n }], datesEnabled: [{\n type: Input\n }], bsValueChange: [{\n type: Output\n }] } });\n\nconst BS_DATEPICKER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => BsDatepickerInputDirective),\n multi: true\n};\nconst BS_DATEPICKER_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => BsDatepickerInputDirective),\n multi: true\n};\nclass BsDatepickerInputDirective {\n constructor(_picker, _localeService, _renderer, _elRef, changeDetection) {\n this._picker = _picker;\n this._localeService = _localeService;\n this._renderer = _renderer;\n this._elRef = _elRef;\n this.changeDetection = changeDetection;\n this._onChange = Function.prototype;\n this._onTouched = Function.prototype;\n this._validatorChange = Function.prototype;\n this._subs = new Subscription();\n }\n ngOnInit() {\n const setBsValue = (value) => {\n this._setInputValue(value);\n if (this._value !== value) {\n this._value = value;\n this._onChange(value);\n this._onTouched();\n }\n this.changeDetection.markForCheck();\n };\n // if value set via [bsValue] it will not get into value change\n if (this._picker._bsValue) {\n setBsValue(this._picker._bsValue);\n }\n // update input value on datepicker value update\n this._subs.add(this._picker.bsValueChange.subscribe(setBsValue));\n // update input value on locale change\n this._subs.add(this._localeService.localeChange.subscribe(() => {\n this._setInputValue(this._value);\n }));\n this._subs.add(this._picker.dateInputFormat$.pipe(distinctUntilChanged()).subscribe(() => {\n this._setInputValue(this._value);\n }));\n }\n ngOnDestroy() {\n this._subs.unsubscribe();\n }\n onKeydownEvent(event) {\n if (event.keyCode === 13 || event.code === 'Enter') {\n this.hide();\n }\n }\n _setInputValue(value) {\n const initialDate = !value ? ''\n : formatDate(value, this._picker._config.dateInputFormat, this._localeService.currentLocale);\n this._renderer.setProperty(this._elRef.nativeElement, 'value', initialDate);\n }\n onChange(event) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.writeValue(event.target.value);\n this._onChange(this._value);\n if (this._picker._config.returnFocusToInput) {\n this._renderer.selectRootElement(this._elRef.nativeElement).focus();\n }\n this._onTouched();\n }\n validate(c) {\n const _value = c.value;\n if (_value === null || _value === undefined || _value === '') {\n return null;\n }\n if (isDate(_value)) {\n const _isDateValid = isDateValid(_value);\n if (!_isDateValid) {\n return { bsDate: { invalid: _value } };\n }\n if (this._picker && this._picker.minDate && isBefore(_value, this._picker.minDate, 'date')) {\n this.writeValue(this._picker.minDate);\n return { bsDate: { minDate: this._picker.minDate } };\n }\n if (this._picker && this._picker.maxDate && isAfter(_value, this._picker.maxDate, 'date')) {\n this.writeValue(this._picker.maxDate);\n return { bsDate: { maxDate: this._picker.maxDate } };\n }\n }\n return null;\n }\n registerOnValidatorChange(fn) {\n this._validatorChange = fn;\n }\n writeValue(value) {\n if (!value) {\n this._value = void 0;\n }\n else {\n const _localeKey = this._localeService.currentLocale;\n const _locale = getLocale(_localeKey);\n if (!_locale) {\n throw new Error(`Locale \"${_localeKey}\" is not defined, please add it with \"defineLocale(...)\"`);\n }\n this._value = parseDate(value, this._picker._config.dateInputFormat, this._localeService.currentLocale);\n if (this._picker._config.useUtc) {\n this._value = utcAsLocal(this._value);\n }\n }\n this._picker.bsValue = this._value;\n }\n setDisabledState(isDisabled) {\n this._picker.isDisabled = isDisabled;\n if (isDisabled) {\n this._renderer.setAttribute(this._elRef.nativeElement, 'disabled', 'disabled');\n return;\n }\n this._renderer.removeAttribute(this._elRef.nativeElement, 'disabled');\n }\n registerOnChange(fn) {\n this._onChange = fn;\n }\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n onBlur() {\n this._onTouched();\n }\n hide() {\n this._picker.hide();\n this._renderer.selectRootElement(this._elRef.nativeElement).blur();\n if (this._picker._config.returnFocusToInput) {\n this._renderer.selectRootElement(this._elRef.nativeElement).focus();\n }\n }\n}\nBsDatepickerInputDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDatepickerInputDirective, deps: [{ token: BsDatepickerDirective, host: true }, { token: BsLocaleService }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });\nBsDatepickerInputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.1.1\", type: BsDatepickerInputDirective, selector: \"input[bsDatepicker]\", host: { listeners: { \"change\": \"onChange($event)\", \"keyup.esc\": \"hide()\", \"keydown\": \"onKeydownEvent($event)\", \"blur\": \"onBlur()\" } }, providers: [BS_DATEPICKER_VALUE_ACCESSOR, BS_DATEPICKER_VALIDATOR], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDatepickerInputDirective, decorators: [{\n type: Directive,\n args: [{\n selector: `input[bsDatepicker]`,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '(change)': 'onChange($event)',\n '(keyup.esc)': 'hide()',\n '(keydown)': 'onKeydownEvent($event)',\n '(blur)': 'onBlur()'\n },\n providers: [BS_DATEPICKER_VALUE_ACCESSOR, BS_DATEPICKER_VALIDATOR]\n }]\n }], ctorParameters: function () {\n return [{ type: BsDatepickerDirective, decorators: [{\n type: Host\n }] }, { type: BsLocaleService }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }];\n } });\n\nclass BsDaterangepickerConfig extends BsDatepickerConfig {\n constructor() {\n super(...arguments);\n // DatepickerRenderOptions\n this.displayMonths = 2;\n }\n}\nBsDaterangepickerConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDaterangepickerConfig, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nBsDaterangepickerConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDaterangepickerConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDaterangepickerConfig, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\n\nclass BsDaterangepickerDirective {\n constructor(_config, _elementRef, _renderer, _viewContainerRef, cis) {\n this._config = _config;\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n /**\n * Placement of a daterangepicker. Accepts: \"top\", \"bottom\", \"left\", \"right\"\n */\n this.placement = 'bottom';\n /**\n * Specifies events that should trigger. Supports a space separated list of\n * event names.\n */\n this.triggers = 'click';\n /**\n * Close daterangepicker on outside click\n */\n this.outsideClick = true;\n /**\n * A selector specifying the element the daterangepicker should be appended to.\n */\n this.container = 'body';\n this.outsideEsc = true;\n this.isDestroy$ = new Subject();\n /**\n * Indicates whether daterangepicker's content is enabled or not\n */\n this.isDisabled = false;\n /**\n * Emits when daterangepicker value has been changed\n */\n this.bsValueChange = new EventEmitter();\n this._subs = [];\n this._rangeInputFormat$ = new Subject();\n this._datepicker = cis.createLoader(_elementRef, _viewContainerRef, _renderer);\n Object.assign(this, _config);\n this.onShown = this._datepicker.onShown;\n this.onHidden = this._datepicker.onHidden;\n this.isOpen$ = new BehaviorSubject(this.isOpen);\n }\n /**\n * Returns whether or not the daterangepicker is currently being shown\n */\n get isOpen() {\n return this._datepicker.isShown;\n }\n set isOpen(value) {\n this.isOpen$.next(value);\n }\n /**\n * Initial value of daterangepicker\n */\n set bsValue(value) {\n var _a;\n if (this._bsValue === value) {\n return;\n }\n if (value && ((_a = this.bsConfig) === null || _a === void 0 ? void 0 : _a.initCurrentTime)) {\n value = setDateRangesCurrentTimeOnDateSelect(value);\n }\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n get rangeInputFormat$() {\n return this._rangeInputFormat$;\n }\n ngOnInit() {\n this.isDestroy$ = new Subject();\n this._datepicker.listen({\n outsideClick: this.outsideClick,\n outsideEsc: this.outsideEsc,\n triggers: this.triggers,\n show: () => this.show()\n });\n this.setConfig();\n }\n ngOnChanges(changes) {\n var _a, _b, _c, _d;\n if (changes[\"bsConfig\"]) {\n if (((_a = changes[\"bsConfig\"].currentValue) === null || _a === void 0 ? void 0 : _a.initCurrentTime) && ((_b = changes[\"bsConfig\"].currentValue) === null || _b === void 0 ? void 0 : _b.initCurrentTime) !== ((_c = changes[\"bsConfig\"].previousValue) === null || _c === void 0 ? void 0 : _c.initCurrentTime) && this._bsValue) {\n this._bsValue = setDateRangesCurrentTimeOnDateSelect(this._bsValue);\n this.bsValueChange.emit(this._bsValue);\n }\n this.setConfig();\n this._rangeInputFormat$.next(changes[\"bsConfig\"].currentValue && changes[\"bsConfig\"].currentValue.rangeInputFormat);\n }\n if (!this._datepickerRef || !this._datepickerRef.instance) {\n return;\n }\n if (changes[\"minDate\"]) {\n this._datepickerRef.instance.minDate = this.minDate;\n }\n if (changes[\"maxDate\"]) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n }\n if (changes[\"datesDisabled\"]) {\n this._datepickerRef.instance.datesDisabled = this.datesDisabled;\n }\n if (changes[\"datesEnabled\"]) {\n this._datepickerRef.instance.datesEnabled = this.datesEnabled;\n }\n if (changes[\"daysDisabled\"]) {\n this._datepickerRef.instance.daysDisabled = this.daysDisabled;\n }\n if (changes[\"isDisabled\"]) {\n if ((_d = this._elementRef) === null || _d === void 0 ? void 0 : _d.nativeElement) {\n this._elementRef.nativeElement.setAttribute('readonly', this.isDisabled);\n }\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n }\n if (changes[\"dateCustomClasses\"]) {\n this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;\n }\n }\n ngAfterViewInit() {\n this.isOpen$.pipe(filter(isOpen => isOpen !== this.isOpen), takeUntil(this.isDestroy$))\n .subscribe(() => this.toggle());\n }\n /**\n * Opens an element’s datepicker. This is considered a “manual” triggering of\n * the datepicker.\n */\n show() {\n if (this._datepicker.isShown) {\n return;\n }\n this.setConfig();\n this._datepickerRef = this._datepicker\n .provide({ provide: BsDatepickerConfig, useValue: this._config })\n .attach(BsDaterangepickerContainerComponent)\n .to(this.container)\n .position({ attachment: this.placement })\n .show({ placement: this.placement });\n this.initSubscribes();\n }\n initSubscribes() {\n // if date changes from external source (model -> view)\n this._subs.push(this.bsValueChange.subscribe((value) => {\n if (this._datepickerRef) {\n this._datepickerRef.instance.value = value;\n }\n }));\n // if date changes from picker (view -> model)\n if (this._datepickerRef) {\n this._subs.push(this._datepickerRef.instance.valueChange\n .pipe(filter((range) => range && range[0] && !!range[1]))\n .subscribe((value) => {\n this.bsValue = value;\n this.hide();\n }));\n }\n }\n /**\n * Set config for daterangepicker\n */\n setConfig() {\n var _a;\n this._config = Object.assign({}, this._config, this.bsConfig, {\n value: checkBsValue(this._bsValue, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\n isDisabled: this.isDisabled,\n minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\n maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,\n daysDisabled: this.daysDisabled || this.bsConfig && this.bsConfig.daysDisabled,\n dateCustomClasses: this.dateCustomClasses || this.bsConfig && this.bsConfig.dateCustomClasses,\n datesDisabled: this.datesDisabled || this.bsConfig && this.bsConfig.datesDisabled,\n datesEnabled: this.datesEnabled || this.bsConfig && this.bsConfig.datesEnabled,\n ranges: checkRangesWithMaxDate(this.bsConfig && this.bsConfig.ranges, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\n maxDateRange: this.bsConfig && this.bsConfig.maxDateRange,\n initCurrentTime: (_a = this.bsConfig) === null || _a === void 0 ? void 0 : _a.initCurrentTime\n });\n }\n /**\n * Closes an element’s datepicker. This is considered a “manual” triggering of\n * the datepicker.\n */\n hide() {\n if (this.isOpen) {\n this._datepicker.hide();\n }\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n if (this._config.returnFocusToInput) {\n this._renderer.selectRootElement(this._elementRef.nativeElement).focus();\n }\n }\n /**\n * Toggles an element’s datepicker. This is considered a “manual” triggering\n * of the datepicker.\n */\n toggle() {\n if (this.isOpen) {\n return this.hide();\n }\n this.show();\n }\n unsubscribeSubscriptions() {\n var _a;\n if ((_a = this._subs) === null || _a === void 0 ? void 0 : _a.length) {\n this._subs.map(sub => sub.unsubscribe());\n this._subs.length = 0;\n }\n }\n ngOnDestroy() {\n this._datepicker.dispose();\n this.isOpen$.next(false);\n if (this.isDestroy$) {\n this.isDestroy$.next(null);\n this.isDestroy$.complete();\n }\n this.unsubscribeSubscriptions();\n }\n}\nBsDaterangepickerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDaterangepickerDirective, deps: [{ token: BsDaterangepickerConfig }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }, { token: i2.ComponentLoaderFactory }], target: i0.ɵɵFactoryTarget.Directive });\nBsDaterangepickerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.1.1\", type: BsDaterangepickerDirective, selector: \"[bsDaterangepicker]\", inputs: { placement: \"placement\", triggers: \"triggers\", outsideClick: \"outsideClick\", container: \"container\", outsideEsc: \"outsideEsc\", isOpen: \"isOpen\", bsValue: \"bsValue\", bsConfig: \"bsConfig\", isDisabled: \"isDisabled\", minDate: \"minDate\", maxDate: \"maxDate\", dateCustomClasses: \"dateCustomClasses\", daysDisabled: \"daysDisabled\", datesDisabled: \"datesDisabled\", datesEnabled: \"datesEnabled\" }, outputs: { onShown: \"onShown\", onHidden: \"onHidden\", bsValueChange: \"bsValueChange\" }, exportAs: [\"bsDaterangepicker\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDaterangepickerDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[bsDaterangepicker]',\n exportAs: 'bsDaterangepicker'\n }]\n }], ctorParameters: function () { return [{ type: BsDaterangepickerConfig }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ViewContainerRef }, { type: i2.ComponentLoaderFactory }]; }, propDecorators: { placement: [{\n type: Input\n }], triggers: [{\n type: Input\n }], outsideClick: [{\n type: Input\n }], container: [{\n type: Input\n }], outsideEsc: [{\n type: Input\n }], isOpen: [{\n type: Input\n }], onShown: [{\n type: Output\n }], onHidden: [{\n type: Output\n }], bsValue: [{\n type: Input\n }], bsConfig: [{\n type: Input\n }], isDisabled: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], dateCustomClasses: [{\n type: Input\n }], daysDisabled: [{\n type: Input\n }], datesDisabled: [{\n type: Input\n }], datesEnabled: [{\n type: Input\n }], bsValueChange: [{\n type: Output\n }] } });\n\nconst BS_DATERANGEPICKER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => BsDaterangepickerInputDirective),\n multi: true\n};\nconst BS_DATERANGEPICKER_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => BsDaterangepickerInputDirective),\n multi: true\n};\nclass BsDaterangepickerInputDirective {\n constructor(_picker, _localeService, _renderer, _elRef, changeDetection) {\n this._picker = _picker;\n this._localeService = _localeService;\n this._renderer = _renderer;\n this._elRef = _elRef;\n this.changeDetection = changeDetection;\n this._onChange = Function.prototype;\n this._onTouched = Function.prototype;\n this._validatorChange = Function.prototype;\n this._subs = new Subscription();\n }\n ngOnInit() {\n const setBsValue = (value) => {\n this._setInputValue(value);\n if (this._value !== value) {\n this._value = value;\n this._onChange(value);\n this._onTouched();\n }\n this.changeDetection.markForCheck();\n };\n // if value set via [bsValue] it will not get into value change\n if (this._picker._bsValue) {\n setBsValue(this._picker._bsValue);\n }\n // update input value on datepicker value update\n this._subs.add(this._picker.bsValueChange.subscribe((value) => {\n this._setInputValue(value);\n if (this._value !== value) {\n this._value = value;\n this._onChange(value);\n this._onTouched();\n }\n this.changeDetection.markForCheck();\n }));\n // update input value on locale change\n this._subs.add(this._localeService.localeChange.subscribe(() => {\n this._setInputValue(this._value);\n }));\n this._subs.add(\n // update input value on format change\n this._picker.rangeInputFormat$.pipe(distinctUntilChanged()).subscribe(() => {\n this._setInputValue(this._value);\n }));\n }\n ngOnDestroy() {\n this._subs.unsubscribe();\n }\n onKeydownEvent(event) {\n if (event.keyCode === 13 || event.code === 'Enter') {\n this.hide();\n }\n }\n _setInputValue(date) {\n let range = '';\n if (date) {\n const start = !date[0] ? ''\n : formatDate(date[0], this._picker._config.rangeInputFormat, this._localeService.currentLocale);\n const end = !date[1] ? ''\n : formatDate(date[1], this._picker._config.rangeInputFormat, this._localeService.currentLocale);\n range = (start && end) ? start + this._picker._config.rangeSeparator + end : '';\n }\n this._renderer.setProperty(this._elRef.nativeElement, 'value', range);\n }\n onChange(event) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.writeValue(event.target.value);\n this._onChange(this._value);\n if (this._picker._config.returnFocusToInput) {\n this._renderer.selectRootElement(this._elRef.nativeElement).focus();\n }\n this._onTouched();\n }\n validate(c) {\n let _value = c.value;\n const errors = [];\n if (_value === null || _value === undefined || !isArray(_value)) {\n return null;\n }\n _value = _value.slice().sort((a, b) => a.getTime() - b.getTime());\n const _isFirstDateValid = isDateValid(_value[0]);\n const _isSecondDateValid = isDateValid(_value[1]);\n if (!_isFirstDateValid) {\n return { bsDate: { invalid: _value[0] } };\n }\n if (!_isSecondDateValid) {\n return { bsDate: { invalid: _value[1] } };\n }\n if (this._picker && this._picker.minDate && isBefore(_value[0], this._picker.minDate, 'date')) {\n _value[0] = this._picker.minDate;\n errors.push({ bsDate: { minDate: this._picker.minDate } });\n }\n if (this._picker && this._picker.maxDate && isAfter(_value[1], this._picker.maxDate, 'date')) {\n _value[1] = this._picker.maxDate;\n errors.push({ bsDate: { maxDate: this._picker.maxDate } });\n }\n if (errors.length > 0) {\n this.writeValue(_value);\n return errors;\n }\n return null;\n }\n registerOnValidatorChange(fn) {\n this._validatorChange = fn;\n }\n writeValue(value) {\n if (!value) {\n this._value = void 0;\n }\n else {\n const _localeKey = this._localeService.currentLocale;\n const _locale = getLocale(_localeKey);\n if (!_locale) {\n throw new Error(`Locale \"${_localeKey}\" is not defined, please add it with \"defineLocale(...)\"`);\n }\n let _input = [];\n if (typeof value === 'string') {\n const trimmedSeparator = this._picker._config.rangeSeparator.trim();\n if (value.replace(/[^-]/g, '').length > 1) {\n _input = value.split(this._picker._config.rangeSeparator);\n }\n else {\n _input = value\n .split(trimmedSeparator.length > 0 ? trimmedSeparator : this._picker._config.rangeSeparator)\n .map(_val => _val.trim());\n }\n }\n if (Array.isArray(value)) {\n _input = value;\n }\n this._value = _input\n .map((_val) => {\n if (this._picker._config.useUtc) {\n return utcAsLocal(parseDate(_val, this._picker._config.rangeInputFormat, this._localeService.currentLocale));\n }\n return parseDate(_val, this._picker._config.rangeInputFormat, this._localeService.currentLocale);\n })\n .map((date) => (isNaN(date.valueOf()) ? void 0 : date));\n }\n this._picker.bsValue = this._value;\n }\n setDisabledState(isDisabled) {\n this._picker.isDisabled = isDisabled;\n if (isDisabled) {\n this._renderer.setAttribute(this._elRef.nativeElement, 'disabled', 'disabled');\n return;\n }\n this._renderer.removeAttribute(this._elRef.nativeElement, 'disabled');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnChange(fn) {\n this._onChange = fn;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n onBlur() {\n this._onTouched();\n }\n hide() {\n this._picker.hide();\n this._renderer.selectRootElement(this._elRef.nativeElement).blur();\n if (this._picker._config.returnFocusToInput) {\n this._renderer.selectRootElement(this._elRef.nativeElement).focus();\n }\n }\n}\nBsDaterangepickerInputDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDaterangepickerInputDirective, deps: [{ token: BsDaterangepickerDirective, host: true }, { token: BsLocaleService }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });\nBsDaterangepickerInputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.1.1\", type: BsDaterangepickerInputDirective, selector: \"input[bsDaterangepicker]\", host: { listeners: { \"change\": \"onChange($event)\", \"keyup.esc\": \"hide()\", \"keydown\": \"onKeydownEvent($event)\", \"blur\": \"onBlur()\" } }, providers: [BS_DATERANGEPICKER_VALUE_ACCESSOR, BS_DATERANGEPICKER_VALIDATOR], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDaterangepickerInputDirective, decorators: [{\n type: Directive,\n args: [{\n selector: `input[bsDaterangepicker]`,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '(change)': 'onChange($event)',\n '(keyup.esc)': 'hide()',\n '(keydown)': 'onKeydownEvent($event)',\n '(blur)': 'onBlur()'\n },\n providers: [BS_DATERANGEPICKER_VALUE_ACCESSOR, BS_DATERANGEPICKER_VALIDATOR]\n }]\n }], ctorParameters: function () {\n return [{ type: BsDaterangepickerDirective, decorators: [{\n type: Host\n }] }, { type: BsLocaleService }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }];\n } });\n\nclass BsDatepickerModule {\n static forRoot() {\n return {\n ngModule: BsDatepickerModule,\n providers: [\n ComponentLoaderFactory,\n PositioningService,\n BsDatepickerStore,\n BsDatepickerActions,\n BsDatepickerEffects,\n BsLocaleService,\n TimepickerActions\n ]\n };\n }\n}\nBsDatepickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDatepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nBsDatepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDatepickerModule, declarations: [BsCalendarLayoutComponent,\n BsCurrentDateViewComponent,\n BsCustomDatesViewComponent,\n BsDatepickerDayDecoratorComponent,\n BsDatepickerNavigationViewComponent,\n BsDaysCalendarViewComponent,\n BsMonthCalendarViewComponent,\n BsTimepickerViewComponent,\n BsYearsCalendarViewComponent,\n BsDatepickerContainerComponent,\n BsDatepickerDirective,\n BsDatepickerInlineContainerComponent,\n BsDatepickerInlineDirective,\n BsDatepickerInputDirective,\n BsDaterangepickerContainerComponent,\n BsDaterangepickerDirective,\n BsDaterangepickerInlineContainerComponent,\n BsDaterangepickerInlineDirective,\n BsDaterangepickerInputDirective], imports: [CommonModule, TooltipModule, TimepickerModule], exports: [BsDatepickerContainerComponent,\n BsDatepickerDirective,\n BsDatepickerInlineContainerComponent,\n BsDatepickerInlineDirective,\n BsDatepickerInputDirective,\n BsDaterangepickerContainerComponent,\n BsDaterangepickerDirective,\n BsDaterangepickerInlineContainerComponent,\n BsDaterangepickerInlineDirective,\n BsDaterangepickerInputDirective] });\nBsDatepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDatepickerModule, imports: [[CommonModule, TooltipModule, TimepickerModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDatepickerModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, TooltipModule, TimepickerModule],\n declarations: [\n BsCalendarLayoutComponent,\n BsCurrentDateViewComponent,\n BsCustomDatesViewComponent,\n BsDatepickerDayDecoratorComponent,\n BsDatepickerNavigationViewComponent,\n BsDaysCalendarViewComponent,\n BsMonthCalendarViewComponent,\n BsTimepickerViewComponent,\n BsYearsCalendarViewComponent,\n BsDatepickerContainerComponent,\n BsDatepickerDirective,\n BsDatepickerInlineContainerComponent,\n BsDatepickerInlineDirective,\n BsDatepickerInputDirective,\n BsDaterangepickerContainerComponent,\n BsDaterangepickerDirective,\n BsDaterangepickerInlineContainerComponent,\n BsDaterangepickerInlineDirective,\n BsDaterangepickerInputDirective\n ],\n entryComponents: [\n BsDatepickerContainerComponent,\n BsDaterangepickerContainerComponent,\n BsDatepickerInlineContainerComponent,\n BsDaterangepickerInlineContainerComponent\n ],\n exports: [\n BsDatepickerContainerComponent,\n BsDatepickerDirective,\n BsDatepickerInlineContainerComponent,\n BsDatepickerInlineDirective,\n BsDatepickerInputDirective,\n BsDaterangepickerContainerComponent,\n BsDaterangepickerDirective,\n BsDaterangepickerInlineContainerComponent,\n BsDaterangepickerInlineDirective,\n BsDaterangepickerInputDirective\n ]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BsDatepickerConfig, BsDatepickerContainerComponent, BsDatepickerDirective, BsDatepickerInlineConfig, BsDatepickerInlineContainerComponent, BsDatepickerInlineDirective, BsDatepickerInputDirective, BsDatepickerModule, BsDaterangepickerConfig, BsDaterangepickerContainerComponent, BsDaterangepickerDirective, BsDaterangepickerInlineConfig, BsDaterangepickerInlineContainerComponent, BsDaterangepickerInlineDirective, BsDaterangepickerInputDirective, BsLocaleService };\n","import * as i0 from '@angular/core';\nimport { EventEmitter, Injectable, Component, ChangeDetectionStrategy, Directive, Input, Output, HostListener, HostBinding, NgModule } from '@angular/core';\nimport { filter } from 'rxjs/operators';\nimport { isBs3 } from 'ngx-bootstrap/utils';\nimport * as i2 from '@angular/animations';\nimport { style, animate } from '@angular/animations';\nimport * as i3 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i1 from 'ngx-bootstrap/component-loader';\nimport { ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\nimport { PositioningService } from 'ngx-bootstrap/positioning';\n\nconst DROPDOWN_ANIMATION_TIMING = '220ms cubic-bezier(0, 0, 0.2, 1)';\nconst dropdownAnimation = [\n style({ height: 0, overflow: 'hidden' }),\n animate(DROPDOWN_ANIMATION_TIMING, style({ height: '*', overflow: 'hidden' }))\n];\n\nclass BsDropdownState {\n constructor() {\n this.direction = 'down';\n this.autoClose = true;\n this.insideClick = false;\n this.isAnimated = false;\n this.stopOnClickPropagation = false;\n this.isOpenChange = new EventEmitter();\n this.isDisabledChange = new EventEmitter();\n this.toggleClick = new EventEmitter();\n this.counts = 0;\n this.dropdownMenu = new Promise(resolve => {\n this.resolveDropdownMenu = resolve;\n });\n }\n}\nBsDropdownState.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDropdownState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nBsDropdownState.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDropdownState, providedIn: 'platform' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDropdownState, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'platform' }]\n }], ctorParameters: function () { return []; } });\n\n// todo: revert ngClass to [class] when false positive angular-cli issue is fixed\n// [class.dropdown]=\"direction === 'down'\"-->\nclass BsDropdownContainerComponent {\n constructor(_state, cd, _renderer, _element, _builder) {\n this._state = _state;\n this.cd = cd;\n this._renderer = _renderer;\n this._element = _element;\n this.isOpen = false;\n this._factoryDropDownAnimation = _builder.build(dropdownAnimation);\n this._subscription = _state.isOpenChange.subscribe((value) => {\n this.isOpen = value;\n const dropdown = this._element.nativeElement.querySelector('.dropdown-menu');\n this._renderer.addClass(this._element.nativeElement.querySelector('div'), 'open');\n if (dropdown && !isBs3()) {\n this._renderer.addClass(dropdown, 'show');\n if (dropdown.classList.contains('dropdown-menu-right') || dropdown.classList.contains('dropdown-menu-end')) {\n this._renderer.setStyle(dropdown, 'left', 'auto');\n this._renderer.setStyle(dropdown, 'right', '0');\n }\n if (this.direction === 'up') {\n this._renderer.setStyle(dropdown, 'top', 'auto');\n this._renderer.setStyle(dropdown, 'transform', 'translateY(-101%)');\n }\n }\n if (dropdown && this._state.isAnimated) {\n this._factoryDropDownAnimation.create(dropdown)\n .play();\n }\n this.cd.markForCheck();\n this.cd.detectChanges();\n });\n }\n get direction() {\n return this._state.direction;\n }\n /** @internal */\n _contains(el) {\n return this._element.nativeElement.contains(el);\n }\n ngOnDestroy() {\n this._subscription.unsubscribe();\n }\n}\nBsDropdownContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDropdownContainerComponent, deps: [{ token: BsDropdownState }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i2.AnimationBuilder }], target: i0.ɵɵFactoryTarget.Component });\nBsDropdownContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.1\", type: BsDropdownContainerComponent, selector: \"bs-dropdown-container\", host: { styleAttribute: \"display:block;position: absolute;z-index: 1040\" }, ngImport: i0, template: `\n
\n
\n `, isInline: true, directives: [{ type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDropdownContainerComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'bs-dropdown-container',\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n style: 'display:block;position: absolute;z-index: 1040'\n },\n template: `\n
\n
\n `\n }]\n }], ctorParameters: function () { return [{ type: BsDropdownState }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i2.AnimationBuilder }]; } });\n\n/** Default dropdown configuration */\nclass BsDropdownConfig {\n constructor() {\n /** default dropdown auto closing behavior */\n this.autoClose = true;\n /** default dropdown auto closing behavior */\n this.insideClick = false;\n /** turn on/off animation */\n this.isAnimated = false;\n /** value true of stopOnClickPropagation allows event stopPropagation*/\n this.stopOnClickPropagation = false;\n }\n}\nBsDropdownConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDropdownConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nBsDropdownConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDropdownConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDropdownConfig, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\n\nclass BsDropdownDirective {\n constructor(_elementRef, _renderer, _viewContainerRef, _cis, _state, _config, _builder) {\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._viewContainerRef = _viewContainerRef;\n this._cis = _cis;\n this._state = _state;\n this._config = _config;\n /**\n * This attribute indicates that the dropdown should be opened upwards\n */\n this.dropup = false;\n // todo: move to component loader\n this._isInlineOpen = false;\n this._isDisabled = false;\n this._subscriptions = [];\n this._isInited = false;\n // set initial dropdown state from config\n this._state.autoClose = this._config.autoClose;\n this._state.insideClick = this._config.insideClick;\n this._state.isAnimated = this._config.isAnimated;\n this._state.stopOnClickPropagation = this._config.stopOnClickPropagation;\n this._factoryDropDownAnimation = _builder.build(dropdownAnimation);\n // create dropdown component loader\n this._dropdown = this._cis\n .createLoader(this._elementRef, this._viewContainerRef, this._renderer)\n .provide({ provide: BsDropdownState, useValue: this._state });\n this.onShown = this._dropdown.onShown;\n this.onHidden = this._dropdown.onHidden;\n this.isOpenChange = this._state.isOpenChange;\n }\n /**\n * Indicates that dropdown will be closed on item or document click,\n * and after pressing ESC\n */\n set autoClose(value) {\n this._state.autoClose = value;\n }\n get autoClose() {\n return this._state.autoClose;\n }\n /**\n * Indicates that dropdown will be animated\n */\n set isAnimated(value) {\n this._state.isAnimated = value;\n }\n get isAnimated() {\n return this._state.isAnimated;\n }\n /**\n * This attribute indicates that the dropdown shouldn't close on inside click when autoClose is set to true\n */\n set insideClick(value) {\n this._state.insideClick = value;\n }\n get insideClick() {\n return this._state.insideClick;\n }\n /**\n * Disables dropdown toggle and hides dropdown menu if opened\n */\n set isDisabled(value) {\n this._isDisabled = value;\n this._state.isDisabledChange.emit(value);\n if (value) {\n this.hide();\n }\n }\n get isDisabled() {\n return this._isDisabled;\n }\n /**\n * Returns whether or not the popover is currently being shown\n */\n get isOpen() {\n if (this._showInline) {\n return this._isInlineOpen;\n }\n return this._dropdown.isShown;\n }\n set isOpen(value) {\n if (value) {\n this.show();\n }\n else {\n this.hide();\n }\n }\n get isBs4() {\n return !isBs3();\n }\n get _showInline() {\n return !this.container;\n }\n ngOnInit() {\n // fix: seems there are an issue with `routerLinkActive`\n // which result in duplicated call ngOnInit without call to ngOnDestroy\n // read more: https://github.com/valor-software/ngx-bootstrap/issues/1885\n if (this._isInited) {\n return;\n }\n this._isInited = true;\n // attach DOM listeners\n this._dropdown.listen({\n // because of dropdown inline mode\n outsideClick: false,\n triggers: this.triggers,\n show: () => this.show()\n });\n // toggle visibility on toggle element click\n this._subscriptions.push(this._state.toggleClick.subscribe((value) => this.toggle(value)));\n // hide dropdown if set disabled while opened\n this._subscriptions.push(this._state.isDisabledChange\n .pipe(filter((value) => value))\n .subscribe(( /*value: boolean*/) => this.hide()));\n }\n /**\n * Opens an element’s popover. This is considered a “manual” triggering of\n * the popover.\n */\n show() {\n if (this.isOpen || this.isDisabled) {\n return;\n }\n if (this._showInline) {\n if (!this._inlinedMenu) {\n this._state.dropdownMenu.then((dropdownMenu) => {\n this._dropdown.attachInline(dropdownMenu.viewContainer, dropdownMenu.templateRef);\n this._inlinedMenu = this._dropdown._inlineViewRef;\n this.addBs4Polyfills();\n if (this._inlinedMenu) {\n this._renderer.addClass(this._inlinedMenu.rootNodes[0].parentNode, 'open');\n }\n this.playAnimation();\n })\n // swallow errors\n .catch();\n }\n this.addBs4Polyfills();\n this._isInlineOpen = true;\n this.onShown.emit(true);\n this._state.isOpenChange.emit(true);\n this.playAnimation();\n return;\n }\n this._state.dropdownMenu.then(dropdownMenu => {\n // check direction in which dropdown should be opened\n const _dropup = this.dropup ||\n (typeof this.dropup !== 'undefined' && this.dropup);\n this._state.direction = _dropup ? 'up' : 'down';\n const _placement = this.placement || (_dropup ? 'top start' : 'bottom start');\n // show dropdown\n this._dropdown\n .attach(BsDropdownContainerComponent)\n .to(this.container)\n .position({ attachment: _placement })\n .show({\n content: dropdownMenu.templateRef,\n placement: _placement\n });\n this._state.isOpenChange.emit(true);\n })\n // swallow error\n .catch();\n }\n /**\n * Closes an element’s popover. This is considered a “manual” triggering of\n * the popover.\n */\n hide() {\n if (!this.isOpen) {\n return;\n }\n if (this._showInline) {\n this.removeShowClass();\n this.removeDropupStyles();\n this._isInlineOpen = false;\n this.onHidden.emit(true);\n }\n else {\n this._dropdown.hide();\n }\n this._state.isOpenChange.emit(false);\n }\n /**\n * Toggles an element’s popover. This is considered a “manual” triggering of\n * the popover. With parameter true allows toggling, with parameter false\n * only hides opened dropdown. Parameter usage will be removed in ngx-bootstrap v3\n */\n toggle(value) {\n if (this.isOpen || !value) {\n return this.hide();\n }\n return this.show();\n }\n /** @internal */\n _contains(event) {\n // todo: valorkin fix typings\n return this._elementRef.nativeElement.contains(event.target) ||\n (this._dropdown.instance && this._dropdown.instance._contains(event.target));\n }\n navigationClick(event) {\n const ref = this._elementRef.nativeElement.querySelector('.dropdown-menu');\n if (!ref) {\n return;\n }\n const firstActive = this._elementRef.nativeElement.ownerDocument.activeElement;\n const allRef = ref.querySelectorAll('.dropdown-item');\n switch (event.keyCode) {\n case 38:\n if (this._state.counts > 0) {\n allRef[--this._state.counts].focus();\n }\n break;\n case 40:\n if (this._state.counts + 1 < allRef.length) {\n if (firstActive.classList !== allRef[this._state.counts].classList) {\n allRef[this._state.counts].focus();\n }\n else {\n allRef[++this._state.counts].focus();\n }\n }\n break;\n default:\n }\n event.preventDefault();\n }\n ngOnDestroy() {\n // clean up subscriptions and destroy dropdown\n for (const sub of this._subscriptions) {\n sub.unsubscribe();\n }\n this._dropdown.dispose();\n }\n addBs4Polyfills() {\n if (!isBs3()) {\n this.addShowClass();\n this.checkRightAlignment();\n this.addDropupStyles();\n }\n }\n playAnimation() {\n if (this._state.isAnimated && this._inlinedMenu) {\n setTimeout(() => {\n if (this._inlinedMenu) {\n this._factoryDropDownAnimation.create(this._inlinedMenu.rootNodes[0]).play();\n }\n });\n }\n }\n addShowClass() {\n if (this._inlinedMenu && this._inlinedMenu.rootNodes[0]) {\n this._renderer.addClass(this._inlinedMenu.rootNodes[0], 'show');\n }\n }\n removeShowClass() {\n if (this._inlinedMenu && this._inlinedMenu.rootNodes[0]) {\n this._renderer.removeClass(this._inlinedMenu.rootNodes[0], 'show');\n }\n }\n checkRightAlignment() {\n if (this._inlinedMenu && this._inlinedMenu.rootNodes[0]) {\n const isRightAligned = this._inlinedMenu.rootNodes[0].classList.contains('dropdown-menu-right') || this._inlinedMenu.rootNodes[0].classList.contains('dropdown-menu-end');\n this._renderer.setStyle(this._inlinedMenu.rootNodes[0], 'left', isRightAligned ? 'auto' : '0');\n this._renderer.setStyle(this._inlinedMenu.rootNodes[0], 'right', isRightAligned ? '0' : 'auto');\n }\n }\n addDropupStyles() {\n if (this._inlinedMenu && this._inlinedMenu.rootNodes[0]) {\n // a little hack to not break support of bootstrap 4 beta\n this._renderer.setStyle(this._inlinedMenu.rootNodes[0], 'top', this.dropup ? 'auto' : '100%');\n this._renderer.setStyle(this._inlinedMenu.rootNodes[0], 'transform', this.dropup ? 'translateY(-101%)' : 'translateY(0)');\n this._renderer.setStyle(this._inlinedMenu.rootNodes[0], 'bottom', 'auto');\n }\n }\n removeDropupStyles() {\n if (this._inlinedMenu && this._inlinedMenu.rootNodes[0]) {\n this._renderer.removeStyle(this._inlinedMenu.rootNodes[0], 'top');\n this._renderer.removeStyle(this._inlinedMenu.rootNodes[0], 'transform');\n this._renderer.removeStyle(this._inlinedMenu.rootNodes[0], 'bottom');\n }\n }\n}\nBsDropdownDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDropdownDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }, { token: i1.ComponentLoaderFactory }, { token: BsDropdownState }, { token: BsDropdownConfig }, { token: i2.AnimationBuilder }], target: i0.ɵɵFactoryTarget.Directive });\nBsDropdownDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.1.1\", type: BsDropdownDirective, selector: \"[bsDropdown], [dropdown]\", inputs: { placement: \"placement\", triggers: \"triggers\", container: \"container\", dropup: \"dropup\", autoClose: \"autoClose\", isAnimated: \"isAnimated\", insideClick: \"insideClick\", isDisabled: \"isDisabled\", isOpen: \"isOpen\" }, outputs: { isOpenChange: \"isOpenChange\", onShown: \"onShown\", onHidden: \"onHidden\" }, host: { listeners: { \"keydown.arrowDown\": \"navigationClick($event)\", \"keydown.arrowUp\": \"navigationClick($event)\" }, properties: { \"class.dropup\": \"dropup\", \"class.open\": \"isOpen\", \"class.show\": \"isOpen && isBs4\" } }, providers: [BsDropdownState], exportAs: [\"bs-dropdown\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDropdownDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[bsDropdown], [dropdown]',\n exportAs: 'bs-dropdown',\n providers: [BsDropdownState],\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[class.dropup]': 'dropup',\n '[class.open]': 'isOpen',\n '[class.show]': 'isOpen && isBs4'\n }\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ViewContainerRef }, { type: i1.ComponentLoaderFactory }, { type: BsDropdownState }, { type: BsDropdownConfig }, { type: i2.AnimationBuilder }]; }, propDecorators: { placement: [{\n type: Input\n }], triggers: [{\n type: Input\n }], container: [{\n type: Input\n }], dropup: [{\n type: Input\n }], autoClose: [{\n type: Input\n }], isAnimated: [{\n type: Input\n }], insideClick: [{\n type: Input\n }], isDisabled: [{\n type: Input\n }], isOpen: [{\n type: Input\n }], isOpenChange: [{\n type: Output\n }], onShown: [{\n type: Output\n }], onHidden: [{\n type: Output\n }], navigationClick: [{\n type: HostListener,\n args: ['keydown.arrowDown', ['$event']]\n }, {\n type: HostListener,\n args: ['keydown.arrowUp', ['$event']]\n }] } });\n\nclass BsDropdownMenuDirective {\n constructor(_state, _viewContainer, _templateRef) {\n _state.resolveDropdownMenu({\n templateRef: _templateRef,\n viewContainer: _viewContainer\n });\n }\n}\nBsDropdownMenuDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDropdownMenuDirective, deps: [{ token: BsDropdownState }, { token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nBsDropdownMenuDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.1.1\", type: BsDropdownMenuDirective, selector: \"[bsDropdownMenu],[dropdownMenu]\", exportAs: [\"bs-dropdown-menu\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDropdownMenuDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[bsDropdownMenu],[dropdownMenu]',\n exportAs: 'bs-dropdown-menu'\n }]\n }], ctorParameters: function () { return [{ type: BsDropdownState }, { type: i0.ViewContainerRef }, { type: i0.TemplateRef }]; } });\n\nclass BsDropdownToggleDirective {\n constructor(_changeDetectorRef, _dropdown, _element, _renderer, _state) {\n this._changeDetectorRef = _changeDetectorRef;\n this._dropdown = _dropdown;\n this._element = _element;\n this._renderer = _renderer;\n this._state = _state;\n this.isOpen = false;\n this._subscriptions = [];\n // sync is open value with state\n this._subscriptions.push(this._state.isOpenChange.subscribe((value) => {\n this.isOpen = value;\n if (value) {\n this._documentClickListener = this._renderer.listen('document', 'click', (event) => {\n if (this._state.autoClose && event.button !== 2 &&\n !this._element.nativeElement.contains(event.target) &&\n !(this._state.insideClick && this._dropdown._contains(event))) {\n this._state.toggleClick.emit(false);\n this._changeDetectorRef.detectChanges();\n }\n });\n this._escKeyUpListener = this._renderer.listen(this._element.nativeElement, 'keyup.esc', () => {\n if (this._state.autoClose) {\n this._state.toggleClick.emit(false);\n this._changeDetectorRef.detectChanges();\n }\n });\n }\n else {\n this._documentClickListener && this._documentClickListener();\n this._escKeyUpListener && this._escKeyUpListener();\n }\n }));\n // populate disabled state\n this._subscriptions.push(this._state.isDisabledChange\n .subscribe((value) => this.isDisabled = value || void 0));\n }\n onClick(event) {\n if (this._state.stopOnClickPropagation) {\n event.stopPropagation();\n }\n if (this.isDisabled) {\n return;\n }\n this._state.toggleClick.emit(true);\n }\n ngOnDestroy() {\n if (this._documentClickListener) {\n this._documentClickListener();\n }\n if (this._escKeyUpListener) {\n this._escKeyUpListener();\n }\n for (const sub of this._subscriptions) {\n sub.unsubscribe();\n }\n }\n}\nBsDropdownToggleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDropdownToggleDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: BsDropdownDirective }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: BsDropdownState }], target: i0.ɵɵFactoryTarget.Directive });\nBsDropdownToggleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.1.1\", type: BsDropdownToggleDirective, selector: \"[bsDropdownToggle],[dropdownToggle]\", host: { listeners: { \"click\": \"onClick($event)\" }, properties: { \"attr.aria-haspopup\": \"true\", \"attr.disabled\": \"this.isDisabled\", \"attr.aria-expanded\": \"this.isOpen\" } }, exportAs: [\"bs-dropdown-toggle\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDropdownToggleDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[bsDropdownToggle],[dropdownToggle]',\n exportAs: 'bs-dropdown-toggle',\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[attr.aria-haspopup]': 'true'\n }\n }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: BsDropdownDirective }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: BsDropdownState }]; }, propDecorators: { isDisabled: [{\n type: HostBinding,\n args: ['attr.disabled']\n }], isOpen: [{\n type: HostBinding,\n args: ['attr.aria-expanded']\n }], onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] } });\n\nclass BsDropdownModule {\n static forRoot() {\n return {\n ngModule: BsDropdownModule,\n providers: [\n ComponentLoaderFactory,\n PositioningService,\n BsDropdownState\n ]\n };\n }\n}\nBsDropdownModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDropdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nBsDropdownModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDropdownModule, declarations: [BsDropdownMenuDirective,\n BsDropdownToggleDirective,\n BsDropdownContainerComponent,\n BsDropdownDirective], imports: [CommonModule], exports: [BsDropdownMenuDirective,\n BsDropdownToggleDirective,\n BsDropdownDirective] });\nBsDropdownModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDropdownModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsDropdownModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n declarations: [\n BsDropdownMenuDirective,\n BsDropdownToggleDirective,\n BsDropdownContainerComponent,\n BsDropdownDirective\n ],\n exports: [\n BsDropdownMenuDirective,\n BsDropdownToggleDirective,\n BsDropdownDirective\n ],\n entryComponents: [BsDropdownContainerComponent]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BsDropdownConfig, BsDropdownContainerComponent, BsDropdownDirective, BsDropdownMenuDirective, BsDropdownModule, BsDropdownState, BsDropdownToggleDirective };\n","import * as i0 from '@angular/core';\nimport { Injectable, PLATFORM_ID, Inject, Directive, Input, NgModule } from '@angular/core';\nimport { isPlatformBrowser, DOCUMENT, CommonModule } from '@angular/common';\nimport { take } from 'rxjs/operators';\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/** Injectable that ensures only the most recently enabled FocusTrap is active. */\nclass FocusTrapManager {\n constructor() {\n // A stack of the FocusTraps on the page. Only the FocusTrap at the\n // top of the stack is active.\n this._focusTrapStack = [];\n }\n /**\n * Disables the FocusTrap at the top of the stack, and then pushes\n * the new FocusTrap onto the stack.\n */\n register(focusTrap) {\n // Dedupe focusTraps that register multiple times.\n this._focusTrapStack = this._focusTrapStack.filter((ft) => ft !== focusTrap);\n let stack = this._focusTrapStack;\n if (stack.length) {\n stack[stack.length - 1]._disable();\n }\n stack.push(focusTrap);\n focusTrap._enable();\n }\n /**\n * Removes the FocusTrap from the stack, and activates the\n * FocusTrap that is the new top of the stack.\n */\n deregister(focusTrap) {\n focusTrap._disable();\n const stack = this._focusTrapStack;\n const i = stack.indexOf(focusTrap);\n if (i !== -1) {\n stack.splice(i, 1);\n if (stack.length) {\n stack[stack.length - 1]._enable();\n }\n }\n }\n}\nFocusTrapManager.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: FocusTrapManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nFocusTrapManager.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: FocusTrapManager, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: FocusTrapManager, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\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// Whether the current platform supports the V8 Break Iterator. The V8 check\n// is necessary to detect all Blink based browsers.\nlet hasV8BreakIterator;\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/components/issues/15687\ntry {\n hasV8BreakIterator = (typeof Intl !== 'undefined' && Intl.v8BreakIterator);\n}\ncatch (_a) {\n hasV8BreakIterator = false;\n}\n/**\n * Service to detect the current platform by comparing the userAgent strings and\n * checking browser-specific global properties.\n */\nclass Platform {\n constructor(_platformId) {\n this._platformId = _platformId;\n // We want to use the Angular platform check because if the Document is shimmed\n // without the navigator, the following checks will fail. This is preferred because\n // sometimes the Document may be shimmed without the user's knowledge or intention\n /** Whether the Angular application is being rendered in the browser. */\n this.isBrowser = this._platformId ?\n isPlatformBrowser(this._platformId) : typeof document === 'object' && !!document;\n /** Whether the current browser is Microsoft Edge. */\n this.EDGE = this.isBrowser && /(edge)/i.test(navigator.userAgent);\n /** Whether the current rendering engine is Microsoft Trident. */\n this.TRIDENT = this.isBrowser && /(msie|trident)/i.test(navigator.userAgent);\n // EdgeHTML and Trident mock Blink specific things and need to be excluded from this check.\n /** Whether the current rendering engine is Blink. */\n this.BLINK = this.isBrowser && (!!(window.chrome || hasV8BreakIterator) &&\n typeof CSS !== 'undefined' && !this.EDGE && !this.TRIDENT);\n // Webkit is part of the userAgent in EdgeHTML, Blink and Trident. Therefore we need to\n // ensure that Webkit runs standalone and is not used as another engine's base.\n /** Whether the current rendering engine is WebKit. */\n this.WEBKIT = this.isBrowser &&\n /AppleWebKit/i.test(navigator.userAgent) && !this.BLINK && !this.EDGE && !this.TRIDENT;\n /** Whether the current platform is Apple iOS. */\n this.IOS = this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) &&\n !('MSStream' in window);\n // It's difficult to detect the plain Gecko engine, because most of the browsers identify\n // them self as Gecko-like browsers and modify the userAgent's according to that.\n // Since we only cover one explicit Firefox case, we can simply check for Firefox\n // instead of having an unstable check for Gecko.\n /** Whether the current browser is Firefox. */\n this.FIREFOX = this.isBrowser && /(firefox|minefield)/i.test(navigator.userAgent);\n /** Whether the current platform is Android. */\n // Trident on mobile adds the android platform to the userAgent to trick detections.\n this.ANDROID = this.isBrowser && /android/i.test(navigator.userAgent) && !this.TRIDENT;\n // Safari browsers will include the Safari keyword in their userAgent. Some browsers may fake\n // this and just place the Safari keyword in the userAgent. To be more safe about Safari every\n // Safari browser should also use Webkit as its layout engine.\n /** Whether the current browser is Safari. */\n this.SAFARI = this.isBrowser && /safari/i.test(navigator.userAgent) && this.WEBKIT;\n }\n}\nPlatform.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: Platform, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });\nPlatform.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: Platform, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: Platform, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }];\n } });\n\n/**\n * Configuration for the isFocusable method.\n */\nclass IsFocusableConfig {\n constructor() {\n /**\n * Whether to count an element as focusable even if it is not currently visible.\n */\n this.ignoreVisibility = false;\n }\n}\n// The InteractivityChecker leans heavily on the ally.js accessibility utilities.\n// Methods like `isTabbable` are only covering specific edge-cases for the browsers which are\n// supported.\n/**\n * Utility for checking the interactivity of an element, such as whether is is focusable or\n * tabbable.\n */\nclass InteractivityChecker {\n constructor(_platform) {\n this._platform = _platform;\n }\n /**\n * Gets whether an element is disabled.\n *\n * @param element Element to be checked.\n * @returns Whether the element is disabled.\n */\n isDisabled(element) {\n // This does not capture some cases, such as a non-form control with a disabled attribute or\n // a form control inside of a disabled form, but should capture the most common cases.\n return element.hasAttribute('disabled');\n }\n /**\n * Gets whether an element is visible for the purposes of interactivity.\n *\n * This will capture states like `display: none` and `visibility: hidden`, but not things like\n * being clipped by an `overflow: hidden` parent or being outside the viewport.\n *\n * @returns Whether the element is visible.\n */\n isVisible(element) {\n return hasGeometry(element) && getComputedStyle(element).visibility === 'visible';\n }\n /**\n * Gets whether an element can be reached via Tab key.\n * Assumes that the element has already been checked with isFocusable.\n *\n * @param element Element to be checked.\n * @returns Whether the element is tabbable.\n */\n isTabbable(element) {\n // Nothing is tabbable on the server 😎\n if (!this._platform.isBrowser) {\n return false;\n }\n const frameElement = getFrameElement(getWindow(element));\n if (frameElement) {\n // Frame elements inherit their tabindex onto all child elements.\n if (getTabIndexValue(frameElement) === -1) {\n return false;\n }\n // Browsers disable tabbing to an element inside of an invisible frame.\n if (!this.isVisible(frameElement)) {\n return false;\n }\n }\n let nodeName = element.nodeName.toLowerCase();\n let tabIndexValue = getTabIndexValue(element);\n if (element.hasAttribute('contenteditable')) {\n return tabIndexValue !== -1;\n }\n if (nodeName === 'iframe' || nodeName === 'object') {\n // The frame or object's content may be tabbable depending on the content, but it's\n // not possibly to reliably detect the content of the frames. We always consider such\n // elements as non-tabbable.\n return false;\n }\n // In iOS, the browser only considers some specific elements as tabbable.\n if (this._platform.WEBKIT && this._platform.IOS && !isPotentiallyTabbableIOS(element)) {\n return false;\n }\n if (nodeName === 'audio') {\n // Audio elements without controls enabled are never tabbable, regardless\n // of the tabindex attribute explicitly being set.\n if (!element.hasAttribute('controls')) {\n return false;\n }\n // Audio elements with controls are by default tabbable unless the\n // tabindex attribute is set to `-1` explicitly.\n return tabIndexValue !== -1;\n }\n if (nodeName === 'video') {\n // For all video elements, if the tabindex attribute is set to `-1`, the video\n // is not tabbable. Note: We cannot rely on the default `HTMLElement.tabIndex`\n // property as that one is set to `-1` in Chrome, Edge and Safari v13.1. The\n // tabindex attribute is the source of truth here.\n if (tabIndexValue === -1) {\n return false;\n }\n // If the tabindex is explicitly set, and not `-1` (as per check before), the\n // video element is always tabbable (regardless of whether it has controls or not).\n if (tabIndexValue !== null) {\n return true;\n }\n // Otherwise (when no explicit tabindex is set), a video is only tabbable if it\n // has controls enabled. Firefox is special as videos are always tabbable regardless\n // of whether there are controls or not.\n return this._platform.FIREFOX || element.hasAttribute('controls');\n }\n return element.tabIndex >= 0;\n }\n /**\n * Gets whether an element can be focused by the user.\n *\n * @param element Element to be checked.\n * @param config The config object with options to customize this method's behavior\n * @returns Whether the element is focusable.\n */\n isFocusable(element, config) {\n // Perform checks in order of left to most expensive.\n // Again, naive approach that does not capture many edge cases and browser quirks.\n return isPotentiallyFocusable(element) && !this.isDisabled(element) &&\n ((config === null || config === void 0 ? void 0 : config.ignoreVisibility) || this.isVisible(element));\n }\n}\nInteractivityChecker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: InteractivityChecker, deps: [{ token: Platform }], target: i0.ɵɵFactoryTarget.Injectable });\nInteractivityChecker.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: InteractivityChecker, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: InteractivityChecker, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: Platform }]; } });\n/**\n * Returns the frame element from a window object. Since browsers like MS Edge throw errors if\n * the frameElement property is being accessed from a different host address, this property\n * should be accessed carefully.\n */\nfunction getFrameElement(window) {\n try {\n return window.frameElement;\n }\n catch (_a) {\n return null;\n }\n}\n/** Checks whether the specified element has any geometry / rectangles. */\nfunction hasGeometry(element) {\n // Use logic from jQuery to check for an invisible element.\n // See https://github.com/jquery/jquery/blob/master/src/css/hiddenVisibleSelectors.js#L12\n return !!(element.offsetWidth || element.offsetHeight ||\n (typeof element.getClientRects === 'function' && element.getClientRects().length));\n}\n/** Gets whether an element's */\nfunction isNativeFormElement(element) {\n let nodeName = element.nodeName.toLowerCase();\n return nodeName === 'input' ||\n nodeName === 'select' ||\n nodeName === 'button' ||\n nodeName === 'textarea';\n}\n/** Gets whether an element is an ``. */\nfunction isHiddenInput(element) {\n return isInputElement(element) && element.type == 'hidden';\n}\n/** Gets whether an element is an anchor that has an href attribute. */\nfunction isAnchorWithHref(element) {\n return isAnchorElement(element) && element.hasAttribute('href');\n}\n/** Gets whether an element is an input element. */\nfunction isInputElement(element) {\n return element.nodeName.toLowerCase() == 'input';\n}\n/** Gets whether an element is an anchor element. */\nfunction isAnchorElement(element) {\n return element.nodeName.toLowerCase() == 'a';\n}\n/** Gets whether an element has a valid tabindex. */\nfunction hasValidTabIndex(element) {\n if (!element.hasAttribute('tabindex') || element.tabIndex === undefined) {\n return false;\n }\n let tabIndex = element.getAttribute('tabindex');\n // IE11 parses tabindex=\"\" as the value \"-32768\"\n if (tabIndex == '-32768') {\n return false;\n }\n return !!(tabIndex && !isNaN(parseInt(tabIndex, 10)));\n}\n/**\n * Returns the parsed tabindex from the element attributes instead of returning the\n * evaluated tabindex from the browsers defaults.\n */\nfunction getTabIndexValue(element) {\n if (!hasValidTabIndex(element)) {\n return null;\n }\n // See browser issue in Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054\n const tabIndex = parseInt(element.getAttribute('tabindex') || '', 10);\n return isNaN(tabIndex) ? -1 : tabIndex;\n}\n/** Checks whether the specified element is potentially tabbable on iOS */\nfunction isPotentiallyTabbableIOS(element) {\n let nodeName = element.nodeName.toLowerCase();\n let inputType = nodeName === 'input' && element.type;\n return inputType === 'text'\n || inputType === 'password'\n || nodeName === 'select'\n || nodeName === 'textarea';\n}\n/**\n * Gets whether an element is potentially focusable without taking current visible/disabled state\n * into account.\n */\nfunction isPotentiallyFocusable(element) {\n // Inputs are potentially focusable *unless* they're type=\"hidden\".\n if (isHiddenInput(element)) {\n return false;\n }\n return isNativeFormElement(element) ||\n isAnchorWithHref(element) ||\n element.hasAttribute('contenteditable') ||\n hasValidTabIndex(element);\n}\n/** Gets the parent window of a DOM node with regards of being inside of an iframe. */\nfunction getWindow(node) {\n // ownerDocument is null if `node` itself *is* a document.\n return node.ownerDocument && node.ownerDocument.defaultView || window;\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/** Coerces a data-bound value (typically a string) to a boolean. */\nfunction coerceBooleanProperty(value) {\n return value != null && `${value}` !== 'false';\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 * Class that allows for trapping focus within a DOM element.\n *\n * This class currently uses a relatively simple approach to focus trapping.\n * It assumes that the tab order is the same as DOM order, which is not necessarily true.\n * Things like `tabIndex > 0`, flex `order`, and shadow roots can cause the two to misalign.\n *\n * @deprecated Use `ConfigurableFocusTrap` instead.\n * @breaking-change for 11.0.0 Remove this class.\n */\nclass FocusTrap {\n constructor(_element, _checker, _ngZone, _document, deferAnchors = false) {\n this._element = _element;\n this._checker = _checker;\n this._ngZone = _ngZone;\n this._document = _document;\n this._hasAttached = false;\n // Event listeners for the anchors. Need to be regular functions so that we can unbind them later.\n this.startAnchorListener = () => this.focusLastTabbableElement();\n this.endAnchorListener = () => this.focusFirstTabbableElement();\n this._enabled = true;\n if (!deferAnchors) {\n this.attachAnchors();\n }\n }\n /** Whether the focus trap is active. */\n get enabled() {\n return this._enabled;\n }\n set enabled(value) {\n this._enabled = value;\n if (this._startAnchor && this._endAnchor) {\n this._toggleAnchorTabIndex(value, this._startAnchor);\n this._toggleAnchorTabIndex(value, this._endAnchor);\n }\n }\n /** Destroys the focus trap by cleaning up the anchors. */\n destroy() {\n const startAnchor = this._startAnchor;\n const endAnchor = this._endAnchor;\n if (startAnchor) {\n startAnchor.removeEventListener('focus', this.startAnchorListener);\n if (startAnchor.parentNode) {\n startAnchor.parentNode.removeChild(startAnchor);\n }\n }\n if (endAnchor) {\n endAnchor.removeEventListener('focus', this.endAnchorListener);\n if (endAnchor.parentNode) {\n endAnchor.parentNode.removeChild(endAnchor);\n }\n }\n this._startAnchor = this._endAnchor = null;\n this._hasAttached = false;\n }\n /**\n * Inserts the anchors into the DOM. This is usually done automatically\n * in the constructor, but can be deferred for cases like directives with `*ngIf`.\n * @returns Whether the focus trap managed to attach successfuly. This may not be the case\n * if the target element isn't currently in the DOM.\n */\n attachAnchors() {\n // If we're not on the browser, there can be no focus to trap.\n if (this._hasAttached) {\n return true;\n }\n this._ngZone.runOutsideAngular(() => {\n if (!this._startAnchor) {\n this._startAnchor = this._createAnchor();\n this._startAnchor.addEventListener('focus', this.startAnchorListener);\n }\n if (!this._endAnchor) {\n this._endAnchor = this._createAnchor();\n this._endAnchor.addEventListener('focus', this.endAnchorListener);\n }\n });\n if (this._element.parentNode) {\n this._element.parentNode.insertBefore(this._startAnchor, this._element);\n this._element.parentNode.insertBefore(this._endAnchor, this._element.nextSibling);\n this._hasAttached = true;\n }\n return this._hasAttached;\n }\n /**\n * Waits for the zone to stabilize, then either focuses the first element that the\n * user specified, or the first tabbable element.\n * @returns Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfully.\n */\n focusInitialElementWhenReady() {\n return new Promise(resolve => {\n this._executeOnStable(() => resolve(this.focusInitialElement()));\n });\n }\n /**\n * Waits for the zone to stabilize, then focuses\n * the first tabbable element within the focus trap region.\n * @returns Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfully.\n */\n focusFirstTabbableElementWhenReady() {\n return new Promise(resolve => {\n this._executeOnStable(() => resolve(this.focusFirstTabbableElement()));\n });\n }\n /**\n * Waits for the zone to stabilize, then focuses\n * the last tabbable element within the focus trap region.\n * @returns Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfully.\n */\n focusLastTabbableElementWhenReady() {\n return new Promise(resolve => {\n this._executeOnStable(() => resolve(this.focusLastTabbableElement()));\n });\n }\n /**\n * Get the specified boundary element of the trapped region.\n * @param bound The boundary to get (start or end of trapped region).\n * @returns The boundary element.\n */\n _getRegionBoundary(bound) {\n // Contains the deprecated version of selector, for temporary backwards comparability.\n let markers = this._element.querySelectorAll(`[cdk-focus-region-${bound}], ` +\n `[cdkFocusRegion${bound}], ` +\n `[cdk-focus-${bound}]`);\n for (let i = 0; i < markers.length; i++) {\n // @breaking-change 8.0.0\n if (markers[i].hasAttribute(`cdk-focus-${bound}`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-${bound}', ` +\n `use 'cdkFocusRegion${bound}' instead. The deprecated ` +\n `attribute will be removed in 8.0.0.`, markers[i]);\n }\n else if (markers[i].hasAttribute(`cdk-focus-region-${bound}`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-region-${bound}', ` +\n `use 'cdkFocusRegion${bound}' instead. The deprecated attribute ` +\n `will be removed in 8.0.0.`, markers[i]);\n }\n }\n if (bound == 'start') {\n return markers.length ? markers[0] : this._getFirstTabbableElement(this._element);\n }\n return markers.length ?\n markers[markers.length - 1] : this._getLastTabbableElement(this._element);\n }\n /**\n * Focuses the element that should be focused when the focus trap is initialized.\n * @returns Whether focus was moved successfully.\n */\n focusInitialElement() {\n // Contains the deprecated version of selector, for temporary backwards comparability.\n const redirectToElement = this._element.querySelector(`[cdk-focus-initial], ` +\n `[cdkFocusInitial]`);\n if (redirectToElement) {\n // @breaking-change 8.0.0\n if (redirectToElement.hasAttribute(`cdk-focus-initial`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-initial', ` +\n `use 'cdkFocusInitial' instead. The deprecated attribute ` +\n `will be removed in 8.0.0`, redirectToElement);\n }\n // Warn the consumer if the element they've pointed to\n // isn't focusable, when not in production mode.\n if (!this._checker.isFocusable(redirectToElement)) {\n const focusableChild = this._getFirstTabbableElement(redirectToElement);\n focusableChild === null || focusableChild === void 0 ? void 0 : focusableChild.focus();\n return !!focusableChild;\n }\n redirectToElement.focus();\n return true;\n }\n return this.focusFirstTabbableElement();\n }\n /**\n * Focuses the first tabbable element within the focus trap region.\n * @returns Whether focus was moved successfully.\n */\n focusFirstTabbableElement() {\n const redirectToElement = this._getRegionBoundary('start');\n if (redirectToElement) {\n redirectToElement.focus();\n }\n return !!redirectToElement;\n }\n /**\n * Focuses the last tabbable element within the focus trap region.\n * @returns Whether focus was moved successfully.\n */\n focusLastTabbableElement() {\n const redirectToElement = this._getRegionBoundary('end');\n if (redirectToElement) {\n redirectToElement.focus();\n }\n return !!redirectToElement;\n }\n /**\n * Checks whether the focus trap has successfully been attached.\n */\n hasAttached() {\n return this._hasAttached;\n }\n /** Get the first tabbable element from a DOM subtree (inclusive). */\n _getFirstTabbableElement(root) {\n if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n return root;\n }\n // Iterate in DOM order. Note that IE doesn't have `children` for SVG so we fall\n // back to `childNodes` which includes text nodes, comments etc.\n let children = root.children || root.childNodes;\n for (let i = 0; i < children.length; i++) {\n let tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE ?\n this._getFirstTabbableElement(children[i]) :\n null;\n if (tabbableChild) {\n return tabbableChild;\n }\n }\n return null;\n }\n /** Get the last tabbable element from a DOM subtree (inclusive). */\n _getLastTabbableElement(root) {\n if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n return root;\n }\n // Iterate in reverse DOM order.\n let children = root.children || root.childNodes;\n for (let i = children.length - 1; i >= 0; i--) {\n let tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE ?\n this._getLastTabbableElement(children[i]) :\n null;\n if (tabbableChild) {\n return tabbableChild;\n }\n }\n return null;\n }\n /** Creates an anchor element. */\n _createAnchor() {\n const anchor = this._document.createElement('div');\n this._toggleAnchorTabIndex(this._enabled, anchor);\n anchor.classList.add('cdk-visually-hidden');\n anchor.classList.add('cdk-focus-trap-anchor');\n anchor.setAttribute('aria-hidden', 'true');\n return anchor;\n }\n /**\n * Toggles the `tabindex` of an anchor, based on the enabled state of the focus trap.\n * @param isEnabled Whether the focus trap is enabled.\n * @param anchor Anchor on which to toggle the tabindex.\n */\n _toggleAnchorTabIndex(isEnabled, anchor) {\n // Remove the tabindex completely, rather than setting it to -1, because if the\n // element has a tabindex, the user might still hit it when navigating with the arrow keys.\n isEnabled ? anchor.setAttribute('tabindex', '0') : anchor.removeAttribute('tabindex');\n }\n /**\n * Toggles the`tabindex` of both anchors to either trap Tab focus or allow it to escape.\n * @param enabled: Whether the anchors should trap Tab.\n */\n toggleAnchors(enabled) {\n if (this._startAnchor && this._endAnchor) {\n this._toggleAnchorTabIndex(enabled, this._startAnchor);\n this._toggleAnchorTabIndex(enabled, this._endAnchor);\n }\n }\n /** Executes a function when the zone is stable. */\n _executeOnStable(fn) {\n if (this._ngZone.isStable) {\n fn();\n }\n else {\n this._ngZone.onStable.pipe(take(1)).subscribe(fn);\n }\n }\n}\n/**\n * Factory that allows easy instantiation of focus traps.\n * @deprecated Use `ConfigurableFocusTrapFactory` instead.\n * @breaking-change for 11.0.0 Remove this class.\n */\nclass FocusTrapFactory {\n constructor(_checker, _ngZone, _document) {\n this._checker = _checker;\n this._ngZone = _ngZone;\n this._document = _document;\n }\n /**\n * Creates a focus-trapped region around the given element.\n * @param element The element around which focus will be trapped.\n * @param deferCaptureElements Defers the creation of focus-capturing elements to be done\n * manually by the user.\n * @returns The created focus trap instance.\n */\n create(element, deferCaptureElements = false) {\n return new FocusTrap(element, this._checker, this._ngZone, this._document, deferCaptureElements);\n }\n}\nFocusTrapFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: FocusTrapFactory, deps: [{ token: InteractivityChecker }, { token: i0.NgZone }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nFocusTrapFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: FocusTrapFactory, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: FocusTrapFactory, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: InteractivityChecker }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }];\n } });\n/** Directive for trapping focus within a region. */\nclass FocusTrapDirective {\n constructor(_elementRef, _focusTrapFactory, _document) {\n this._elementRef = _elementRef;\n this._focusTrapFactory = _focusTrapFactory;\n /** Previously focused element to restore focus to upon destroy when using autoCapture. */\n this._previouslyFocusedElement = null;\n this._autoCapture = false;\n this._document = _document;\n this.focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement, true);\n }\n /** Whether the focus trap is active. */\n get enabled() {\n return this.focusTrap.enabled;\n }\n set enabled(value) {\n this.focusTrap.enabled = coerceBooleanProperty(value);\n }\n /**\n * Whether the directive should automatically move focus into the trapped region upon\n * initialization and return focus to the previous activeElement upon destruction.\n */\n get autoCapture() {\n return this._autoCapture;\n }\n set autoCapture(value) {\n this._autoCapture = coerceBooleanProperty(value);\n }\n ngOnDestroy() {\n this.focusTrap.destroy();\n // If we stored a previously focused element when using autoCapture, return focus to that\n // element now that the trapped region is being destroyed.\n if (this._previouslyFocusedElement) {\n this._previouslyFocusedElement.focus();\n this._previouslyFocusedElement = null;\n }\n }\n ngAfterContentInit() {\n this.focusTrap.attachAnchors();\n if (this.autoCapture) {\n this._captureFocus();\n }\n }\n ngDoCheck() {\n if (!this.focusTrap.hasAttached()) {\n this.focusTrap.attachAnchors();\n }\n }\n ngOnChanges(changes) {\n const autoCaptureChange = changes['autoCapture'];\n if (autoCaptureChange && !autoCaptureChange.firstChange && this.autoCapture &&\n this.focusTrap.hasAttached()) {\n this._captureFocus();\n }\n }\n _captureFocus() {\n this._previouslyFocusedElement = this._document.activeElement;\n this.focusTrap.focusInitialElementWhenReady();\n }\n}\nFocusTrapDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: FocusTrapDirective, deps: [{ token: i0.ElementRef }, { token: FocusTrapFactory }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });\nFocusTrapDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.1.1\", type: FocusTrapDirective, selector: \"[focusTrap]\", inputs: { enabled: [\"cdkTrapFocus\", \"enabled\"], autoCapture: [\"cdkTrapFocusAutoCapture\", \"autoCapture\"] }, exportAs: [\"focusTrap\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: FocusTrapDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[focusTrap]',\n exportAs: 'focusTrap'\n }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: FocusTrapFactory }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }];\n }, propDecorators: { enabled: [{\n type: Input,\n args: ['cdkTrapFocus']\n }], autoCapture: [{\n type: Input,\n args: ['cdkTrapFocusAutoCapture']\n }] } });\n\nclass FocusTrapModule {\n static forRoot() {\n return {\n ngModule: FocusTrapModule,\n providers: [\n FocusTrapManager,\n Platform,\n InteractivityChecker\n ]\n };\n }\n}\nFocusTrapModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: FocusTrapModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nFocusTrapModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: FocusTrapModule, declarations: [FocusTrapDirective], imports: [CommonModule], exports: [FocusTrapDirective] });\nFocusTrapModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: FocusTrapModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: FocusTrapModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n declarations: [FocusTrapDirective],\n exports: [FocusTrapDirective]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { FocusTrap, FocusTrapDirective, FocusTrapModule };\n","import { BehaviorSubject, queueScheduler, Observable } from 'rxjs';\nimport { observeOn, scan, map, distinctUntilChanged } from 'rxjs/operators';\n\nclass MiniState extends BehaviorSubject {\n constructor(_initialState, actionsDispatcher$, reducer) {\n super(_initialState);\n const actionInQueue$ = actionsDispatcher$.pipe(observeOn(queueScheduler));\n const state$ = actionInQueue$.pipe(scan((state, action) => {\n if (!action) {\n return state;\n }\n return reducer(state, action);\n }, _initialState));\n state$.subscribe((value) => this.next(value));\n }\n}\n\n/**\n * @copyright ngrx\n */\nclass MiniStore extends Observable {\n constructor(_dispatcher, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _reducer, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n state$) {\n super();\n this._dispatcher = _dispatcher;\n this._reducer = _reducer;\n this.source = state$;\n }\n select(pathOrMapFn) {\n var _a;\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const mapped$ = ((_a = this.source) === null || _a === void 0 ? void 0 : _a.pipe(map(pathOrMapFn))) || new Observable().pipe(map(pathOrMapFn));\n return mapped$.pipe(distinctUntilChanged());\n }\n lift(operator) {\n const store = new MiniStore(this._dispatcher, this._reducer, this);\n store.operator = operator;\n return store;\n }\n dispatch(action) {\n this._dispatcher.next(action);\n }\n next(action) {\n this._dispatcher.next(action);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n error(err) {\n this._dispatcher.error(err);\n }\n complete() {\n /*noop*/\n }\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MiniState, MiniStore };\n","import * as i0 from '@angular/core';\nimport { Injectable, InjectionToken, Component, HostListener, EventEmitter, Directive, Optional, Inject, Input, Output, NgModule } from '@angular/core';\nimport { isBs3, Utils, document as document$1, window as window$1 } from 'ngx-bootstrap/utils';\nimport * as i2 from 'ngx-bootstrap/focus-trap';\nimport { FocusTrapModule } from 'ngx-bootstrap/focus-trap';\nimport * as i1 from 'ngx-bootstrap/component-loader';\nimport { ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\nimport { PositioningService } from 'ngx-bootstrap/positioning';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nclass BsModalRef {\n constructor() {\n /**\n * Hides the modal\n */\n this.hide = () => void 0;\n /**\n * Sets new class to modal window\n */\n this.setClass = () => void 0;\n }\n}\nBsModalRef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsModalRef, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nBsModalRef.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsModalRef, providedIn: 'platform' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsModalRef, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'platform' }]\n }] });\n\nclass ModalBackdropOptions {\n constructor(options) {\n this.animate = true;\n Object.assign(this, options);\n }\n}\n\nclass ModalOptions {\n}\nModalOptions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: ModalOptions, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nModalOptions.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: ModalOptions, providedIn: 'platform' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: ModalOptions, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'platform' }]\n }] });\nconst modalConfigDefaults = {\n backdrop: true,\n keyboard: true,\n focus: true,\n show: false,\n ignoreBackdropClick: false,\n class: '',\n animated: true,\n initialState: {},\n closeInterceptor: void 0\n};\nconst MODAL_CONFIG_DEFAULT_OVERRIDE = new InjectionToken('override-default-config');\nconst CLASS_NAME = {\n SCROLLBAR_MEASURER: 'modal-scrollbar-measure',\n BACKDROP: 'modal-backdrop',\n OPEN: 'modal-open',\n FADE: 'fade',\n IN: 'in',\n SHOW: 'show' // bs4\n};\nconst SELECTOR = {\n DIALOG: '.modal-dialog',\n DATA_TOGGLE: '[data-toggle=\"modal\"]',\n DATA_DISMISS: '[data-dismiss=\"modal\"]',\n FIXED_CONTENT: '.navbar-fixed-top, .navbar-fixed-bottom, .is-fixed'\n};\nconst TRANSITION_DURATIONS = {\n MODAL: 300,\n BACKDROP: 150\n};\nconst DISMISS_REASONS = {\n BACKRDOP: 'backdrop-click',\n ESC: 'esc',\n BACK: 'browser-back-navigation-clicked'\n};\n\nclass ModalContainerComponent {\n constructor(options, _element, _renderer) {\n this._element = _element;\n this._renderer = _renderer;\n this.isShown = false;\n this.isAnimated = false;\n this.isModalHiding = false;\n this.clickStartedInContent = false;\n this.config = Object.assign({}, options);\n }\n ngOnInit() {\n if (this.isAnimated) {\n this._renderer.addClass(this._element.nativeElement, CLASS_NAME.FADE);\n }\n this._renderer.setStyle(this._element.nativeElement, 'display', 'block');\n setTimeout(() => {\n this.isShown = true;\n this._renderer.addClass(this._element.nativeElement, isBs3() ? CLASS_NAME.IN : CLASS_NAME.SHOW);\n }, this.isAnimated ? TRANSITION_DURATIONS.BACKDROP : 0);\n if (document && document.body) {\n if (this.bsModalService && this.bsModalService.getModalsCount() === 1) {\n this.bsModalService.checkScrollbar();\n this.bsModalService.setScrollbar();\n }\n this._renderer.addClass(document.body, CLASS_NAME.OPEN);\n this._renderer.setStyle(document.body, 'overflow-y', 'hidden');\n }\n if (this._element.nativeElement) {\n this._element.nativeElement.focus();\n }\n }\n onClickStarted(event) {\n this.clickStartedInContent = event.target !== this._element.nativeElement;\n }\n onClickStop(event) {\n var _a;\n const clickedInBackdrop = event.target === this._element.nativeElement && !this.clickStartedInContent;\n if (this.config.ignoreBackdropClick ||\n this.config.backdrop === 'static' ||\n !clickedInBackdrop) {\n this.clickStartedInContent = false;\n return;\n }\n (_a = this.bsModalService) === null || _a === void 0 ? void 0 : _a.setDismissReason(DISMISS_REASONS.BACKRDOP);\n this.hide();\n }\n onPopState() {\n var _a;\n (_a = this.bsModalService) === null || _a === void 0 ? void 0 : _a.setDismissReason(DISMISS_REASONS.BACK);\n this.hide();\n }\n onEsc(event) {\n var _a, _b;\n if (!this.isShown) {\n return;\n }\n if (event.keyCode === 27 || event.key === 'Escape') {\n event.preventDefault();\n }\n if (this.config.keyboard &&\n this.level === ((_a = this.bsModalService) === null || _a === void 0 ? void 0 : _a.getModalsCount())) {\n (_b = this.bsModalService) === null || _b === void 0 ? void 0 : _b.setDismissReason(DISMISS_REASONS.ESC);\n this.hide();\n }\n }\n ngOnDestroy() {\n if (this.isShown) {\n this._hide();\n }\n }\n hide() {\n if (this.isModalHiding || !this.isShown) {\n return;\n }\n if (this.config.closeInterceptor) {\n this.config.closeInterceptor().then(() => this._hide(), () => undefined);\n return;\n }\n this._hide();\n }\n _hide() {\n this.isModalHiding = true;\n this._renderer.removeClass(this._element.nativeElement, isBs3() ? CLASS_NAME.IN : CLASS_NAME.SHOW);\n setTimeout(() => {\n var _a, _b;\n this.isShown = false;\n if (document &&\n document.body &&\n ((_a = this.bsModalService) === null || _a === void 0 ? void 0 : _a.getModalsCount()) === 1) {\n this._renderer.removeClass(document.body, CLASS_NAME.OPEN);\n this._renderer.setStyle(document.body, 'overflow-y', '');\n }\n (_b = this.bsModalService) === null || _b === void 0 ? void 0 : _b.hide(this.config.id);\n this.isModalHiding = false;\n }, this.isAnimated ? TRANSITION_DURATIONS.MODAL : 0);\n }\n}\nModalContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: ModalContainerComponent, deps: [{ token: ModalOptions }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nModalContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.1\", type: ModalContainerComponent, selector: \"modal-container\", host: { attributes: { \"role\": \"dialog\", \"tabindex\": \"-1\" }, listeners: { \"mousedown\": \"onClickStarted($event)\", \"click\": \"onClickStop($event)\", \"window:popstate\": \"onPopState()\", \"window:keydown.esc\": \"onEsc($event)\" }, properties: { \"attr.aria-modal\": \"true\", \"attr.aria-labelledby\": \"config.ariaLabelledBy\", \"attr.aria-describedby\": \"config.ariaDescribedby\" }, classAttribute: \"modal\" }, ngImport: i0, template: `\n
\n
\n \n
\n
\n `, isInline: true, directives: [{ type: i2.FocusTrapDirective, selector: \"[focusTrap]\", inputs: [\"cdkTrapFocus\", \"cdkTrapFocusAutoCapture\"], exportAs: [\"focusTrap\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: ModalContainerComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'modal-container',\n template: `\n
\n
\n \n
\n
\n `,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n class: 'modal',\n role: 'dialog',\n tabindex: '-1',\n '[attr.aria-modal]': 'true',\n '[attr.aria-labelledby]': 'config.ariaLabelledBy',\n '[attr.aria-describedby]': 'config.ariaDescribedby'\n }\n }]\n }], ctorParameters: function () { return [{ type: ModalOptions }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { onClickStarted: [{\n type: HostListener,\n args: ['mousedown', ['$event']]\n }], onClickStop: [{\n type: HostListener,\n args: ['click', ['$event']]\n }], onPopState: [{\n type: HostListener,\n args: ['window:popstate']\n }], onEsc: [{\n type: HostListener,\n args: ['window:keydown.esc', ['$event']]\n }] } });\n\n/** This component will be added as background layout for modals if enabled */\nclass ModalBackdropComponent {\n constructor(element, renderer) {\n this._isAnimated = false;\n this._isShown = false;\n this.element = element;\n this.renderer = renderer;\n }\n get isAnimated() {\n return this._isAnimated;\n }\n set isAnimated(value) {\n this._isAnimated = value;\n }\n get isShown() {\n return this._isShown;\n }\n set isShown(value) {\n this._isShown = value;\n if (value) {\n this.renderer.addClass(this.element.nativeElement, `${CLASS_NAME.IN}`);\n }\n else {\n this.renderer.removeClass(this.element.nativeElement, `${CLASS_NAME.IN}`);\n }\n if (!isBs3()) {\n if (value) {\n this.renderer.addClass(this.element.nativeElement, `${CLASS_NAME.SHOW}`);\n }\n else {\n this.renderer.removeClass(this.element.nativeElement, `${CLASS_NAME.SHOW}`);\n }\n }\n }\n ngOnInit() {\n if (this.isAnimated) {\n this.renderer.addClass(this.element.nativeElement, `${CLASS_NAME.FADE}`);\n Utils.reflow(this.element.nativeElement);\n }\n this.isShown = true;\n }\n}\nModalBackdropComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: ModalBackdropComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nModalBackdropComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.1\", type: ModalBackdropComponent, selector: \"bs-modal-backdrop\", host: { classAttribute: \"modal-backdrop\" }, ngImport: i0, template: ' ', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: ModalBackdropComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'bs-modal-backdrop',\n template: ' ',\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: { class: CLASS_NAME.BACKDROP }\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; } });\n\n// todo: should we support enforce focus in?\nconst TRANSITION_DURATION = 300;\nconst BACKDROP_TRANSITION_DURATION = 150;\n/** Mark any code with directive to show it's content in modal */\nclass ModalDirective {\n constructor(_element, _viewContainerRef, _renderer, clf, modalDefaultOption) {\n this._element = _element;\n this._renderer = _renderer;\n /** This event fires immediately when the `show` instance method is called. */\n this.onShow = new EventEmitter();\n /** This event is fired when the modal has been made visible to the user\n * (will wait for CSS transitions to complete)\n */\n this.onShown = new EventEmitter();\n /** This event is fired immediately when\n * the hide instance method has been called.\n */\n this.onHide = new EventEmitter();\n /** This event is fired when the modal has finished being\n * hidden from the user (will wait for CSS transitions to complete).\n */\n this.onHidden = new EventEmitter();\n this._isShown = false;\n this.isBodyOverflowing = false;\n this.originalBodyPadding = 0;\n this.scrollbarWidth = 0;\n this.timerHideModal = 0;\n this.timerRmBackDrop = 0;\n this.isNested = false;\n this.clickStartedInContent = false;\n this._backdrop = clf.createLoader(_element, _viewContainerRef, _renderer);\n this._config = modalDefaultOption || modalConfigDefaults;\n }\n /** allows to set modal configuration via element property */\n set config(conf) {\n this._config = this.getConfig(conf);\n }\n get config() {\n return this._config;\n }\n get isShown() {\n return this._isShown;\n }\n onClickStarted(event) {\n this.clickStartedInContent = event.target !== this._element.nativeElement;\n }\n onClickStop(event) {\n const clickedInBackdrop = event.target === this._element.nativeElement && !this.clickStartedInContent;\n if (this.config.ignoreBackdropClick ||\n this.config.backdrop === 'static' ||\n !clickedInBackdrop) {\n this.clickStartedInContent = false;\n return;\n }\n this.dismissReason = DISMISS_REASONS.BACKRDOP;\n this.hide(event);\n }\n // todo: consider preventing default and stopping propagation\n onEsc(event) {\n if (!this._isShown) {\n return;\n }\n if (event.keyCode === 27 || event.key === 'Escape') {\n event.preventDefault();\n }\n if (this.config.keyboard) {\n this.dismissReason = DISMISS_REASONS.ESC;\n this.hide();\n }\n }\n ngOnDestroy() {\n if (this._isShown) {\n this._isShown = false;\n this.hideModal();\n this._backdrop.dispose();\n }\n }\n ngOnInit() {\n this._config = this._config || this.getConfig();\n setTimeout(() => {\n if (this._config.show) {\n this.show();\n }\n }, 0);\n }\n /* Public methods */\n /** Allows to manually toggle modal visibility */\n toggle() {\n return this._isShown ? this.hide() : this.show();\n }\n /** Allows to manually open modal */\n show() {\n this.dismissReason = void 0;\n this.onShow.emit(this);\n if (this._isShown) {\n return;\n }\n clearTimeout(this.timerHideModal);\n clearTimeout(this.timerRmBackDrop);\n this._isShown = true;\n this.checkScrollbar();\n this.setScrollbar();\n if (document$1 && document$1.body) {\n if (document$1.body.classList.contains(CLASS_NAME.OPEN)) {\n this.isNested = true;\n }\n else {\n this._renderer.addClass(document$1.body, CLASS_NAME.OPEN);\n this._renderer.setStyle(document$1.body, 'overflow-y', 'hidden');\n }\n }\n this.showBackdrop(() => {\n this.showElement();\n });\n }\n /** Check if we can close the modal */\n hide(event) {\n if (!this._isShown) {\n return;\n }\n if (event) {\n event.preventDefault();\n }\n if (this.config.closeInterceptor) {\n this.config.closeInterceptor().then(() => this._hide(), () => undefined);\n return;\n }\n this._hide();\n }\n /** Private methods @internal */\n /**\n * Manually close modal\n * @internal\n */\n _hide() {\n this.onHide.emit(this);\n window$1.clearTimeout(this.timerHideModal);\n window$1.clearTimeout(this.timerRmBackDrop);\n this._isShown = false;\n this._renderer.removeClass(this._element.nativeElement, CLASS_NAME.IN);\n if (!isBs3()) {\n this._renderer.removeClass(this._element.nativeElement, CLASS_NAME.SHOW);\n }\n // this._addClassIn = false;\n if (this._config.animated) {\n this.timerHideModal = window$1.setTimeout(() => this.hideModal(), TRANSITION_DURATION);\n }\n else {\n this.hideModal();\n }\n }\n getConfig(config) {\n return Object.assign({}, this._config, config);\n }\n /**\n * Show dialog\n * @internal\n */\n showElement() {\n // todo: replace this with component loader usage\n if (!this._element.nativeElement.parentNode ||\n this._element.nativeElement.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // don't move modals dom position\n if (document$1 && document$1.body) {\n document$1.body.appendChild(this._element.nativeElement);\n }\n }\n this._renderer.setAttribute(this._element.nativeElement, 'aria-hidden', 'false');\n this._renderer.setAttribute(this._element.nativeElement, 'aria-modal', 'true');\n this._renderer.setStyle(this._element.nativeElement, 'display', 'block');\n this._renderer.setProperty(this._element.nativeElement, 'scrollTop', 0);\n if (this._config.animated) {\n Utils.reflow(this._element.nativeElement);\n }\n // this._addClassIn = true;\n this._renderer.addClass(this._element.nativeElement, CLASS_NAME.IN);\n if (!isBs3()) {\n this._renderer.addClass(this._element.nativeElement, CLASS_NAME.SHOW);\n }\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.nativeElement.focus();\n }\n this.onShown.emit(this);\n };\n if (this._config.animated) {\n setTimeout(transitionComplete, TRANSITION_DURATION);\n }\n else {\n transitionComplete();\n }\n }\n /** @internal */\n hideModal() {\n this._renderer.setAttribute(this._element.nativeElement, 'aria-hidden', 'true');\n this._renderer.setStyle(this._element.nativeElement, 'display', 'none');\n this.showBackdrop(() => {\n if (!this.isNested) {\n if (document$1 && document$1.body) {\n this._renderer.removeClass(document$1.body, CLASS_NAME.OPEN);\n this._renderer.setStyle(document$1.body, 'overflow-y', '');\n }\n this.resetScrollbar();\n }\n this.resetAdjustments();\n this.focusOtherModal();\n this.onHidden.emit(this);\n });\n }\n // todo: original show was calling a callback when done, but we can use\n // promise\n /** @internal */\n showBackdrop(callback) {\n if (this._isShown &&\n this.config.backdrop &&\n (!this.backdrop || !this.backdrop.instance.isShown)) {\n this.removeBackdrop();\n this._backdrop\n .attach(ModalBackdropComponent)\n .to('body')\n .show({ isAnimated: this._config.animated });\n this.backdrop = this._backdrop._componentRef;\n if (!callback) {\n return;\n }\n if (!this._config.animated) {\n callback();\n return;\n }\n setTimeout(callback, BACKDROP_TRANSITION_DURATION);\n }\n else if (!this._isShown && this.backdrop) {\n this.backdrop.instance.isShown = false;\n const callbackRemove = () => {\n this.removeBackdrop();\n if (callback) {\n callback();\n }\n };\n if (this.backdrop.instance.isAnimated) {\n this.timerRmBackDrop = window$1.setTimeout(callbackRemove, BACKDROP_TRANSITION_DURATION);\n }\n else {\n callbackRemove();\n }\n }\n else if (callback) {\n callback();\n }\n }\n /** @internal */\n removeBackdrop() {\n this._backdrop.hide();\n }\n /** Events tricks */\n // no need for it\n // protected setEscapeEvent():void {\n // if (this._isShown && this._config.keyboard) {\n // $(this._element).on(Event.KEYDOWN_DISMISS, (event) => {\n // if (event.which === 27) {\n // this.hide()\n // }\n // })\n //\n // } else if (!this._isShown) {\n // $(this._element).off(Event.KEYDOWN_DISMISS)\n // }\n // }\n // protected setResizeEvent():void {\n // console.log(this.renderer.listenGlobal('', Event.RESIZE));\n // if (this._isShown) {\n // $(window).on(Event.RESIZE, $.proxy(this._handleUpdate, this))\n // } else {\n // $(window).off(Event.RESIZE)\n // }\n // }\n focusOtherModal() {\n if (this._element.nativeElement.parentElement == null) {\n return;\n }\n const otherOpenedModals = this._element.nativeElement.parentElement.querySelectorAll('.in[bsModal]');\n if (!otherOpenedModals.length) {\n return;\n }\n otherOpenedModals[otherOpenedModals.length - 1].focus();\n }\n /** @internal */\n resetAdjustments() {\n this._renderer.setStyle(this._element.nativeElement, 'paddingLeft', '');\n this._renderer.setStyle(this._element.nativeElement, 'paddingRight', '');\n }\n /** Scroll bar tricks */\n /** @internal */\n checkScrollbar() {\n this.isBodyOverflowing = document$1.body.clientWidth < window$1.innerWidth;\n this.scrollbarWidth = this.getScrollbarWidth();\n }\n setScrollbar() {\n if (!document$1) {\n return;\n }\n this.originalBodyPadding = parseInt(window$1\n .getComputedStyle(document$1.body)\n .getPropertyValue('padding-right') || 0, 10);\n if (this.isBodyOverflowing) {\n document$1.body.style.paddingRight = `${this.originalBodyPadding +\n this.scrollbarWidth}px`;\n }\n }\n resetScrollbar() {\n document$1.body.style.paddingRight = `${this.originalBodyPadding}px`;\n }\n // thx d.walsh\n getScrollbarWidth() {\n const scrollDiv = this._renderer.createElement('div');\n this._renderer.addClass(scrollDiv, CLASS_NAME.SCROLLBAR_MEASURER);\n this._renderer.appendChild(document$1.body, scrollDiv);\n const scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n this._renderer.removeChild(document$1.body, scrollDiv);\n return scrollbarWidth;\n }\n}\nModalDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: ModalDirective, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i0.Renderer2 }, { token: i1.ComponentLoaderFactory }, { token: MODAL_CONFIG_DEFAULT_OVERRIDE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nModalDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.1.1\", type: ModalDirective, selector: \"[bsModal]\", inputs: { config: \"config\", closeInterceptor: \"closeInterceptor\" }, outputs: { onShow: \"onShow\", onShown: \"onShown\", onHide: \"onHide\", onHidden: \"onHidden\" }, host: { listeners: { \"mousedown\": \"onClickStarted($event)\", \"mouseup\": \"onClickStop($event)\", \"keydown.esc\": \"onEsc($event)\" } }, exportAs: [\"bs-modal\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: ModalDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[bsModal]',\n exportAs: 'bs-modal'\n }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i0.Renderer2 }, { type: i1.ComponentLoaderFactory }, { type: ModalOptions, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MODAL_CONFIG_DEFAULT_OVERRIDE]\n }] }];\n }, propDecorators: { config: [{\n type: Input\n }], closeInterceptor: [{\n type: Input\n }], onShow: [{\n type: Output\n }], onShown: [{\n type: Output\n }], onHide: [{\n type: Output\n }], onHidden: [{\n type: Output\n }], onClickStarted: [{\n type: HostListener,\n args: ['mousedown', ['$event']]\n }], onClickStop: [{\n type: HostListener,\n args: ['mouseup', ['$event']]\n }], onEsc: [{\n type: HostListener,\n args: ['keydown.esc', ['$event']]\n }] } });\n\nlet currentId = 1;\nclass BsModalService {\n constructor(rendererFactory, clf, modalDefaultOption) {\n this.clf = clf;\n this.modalDefaultOption = modalDefaultOption;\n this.onShow = new EventEmitter();\n this.onShown = new EventEmitter();\n this.onHide = new EventEmitter();\n this.onHidden = new EventEmitter();\n this.isBodyOverflowing = false;\n this.originalBodyPadding = 0;\n this.scrollbarWidth = 0;\n this.modalsCount = 0;\n this.loaders = [];\n this._backdropLoader = this.clf.createLoader();\n this._renderer = rendererFactory.createRenderer(null, null);\n this.config = modalDefaultOption ?\n (Object.assign({}, modalConfigDefaults, modalDefaultOption)) :\n modalConfigDefaults;\n }\n /** Shows a modal */\n show(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n content, config) {\n this.modalsCount++;\n this._createLoaders();\n // must be different per every show() call\n const id = (config === null || config === void 0 ? void 0 : config.id) || currentId++;\n this.config = this.modalDefaultOption ?\n Object.assign({}, modalConfigDefaults, this.modalDefaultOption, config) :\n Object.assign({}, modalConfigDefaults, config);\n this.config.id = id;\n this._showBackdrop();\n this.lastDismissReason = void 0;\n return this._showModal(content);\n }\n hide(id) {\n if (this.modalsCount === 1 || id == null) {\n this._hideBackdrop();\n this.resetScrollbar();\n }\n this.modalsCount = this.modalsCount >= 1 && id != null ? this.modalsCount - 1 : 0;\n setTimeout(() => {\n this._hideModal(id);\n this.removeLoaders(id);\n }, this.config.animated ? TRANSITION_DURATIONS.BACKDROP : 0);\n }\n _showBackdrop() {\n const isBackdropEnabled = this.config.backdrop === true || this.config.backdrop === 'static';\n const isBackdropInDOM = !this.backdropRef || !this.backdropRef.instance.isShown;\n if (this.modalsCount === 1) {\n this.removeBackdrop();\n if (isBackdropEnabled && isBackdropInDOM) {\n this._backdropLoader\n .attach(ModalBackdropComponent)\n .to('body')\n .show({ isAnimated: this.config.animated });\n this.backdropRef = this._backdropLoader._componentRef;\n }\n }\n }\n _hideBackdrop() {\n if (!this.backdropRef) {\n return;\n }\n this.backdropRef.instance.isShown = false;\n const duration = this.config.animated ? TRANSITION_DURATIONS.BACKDROP : 0;\n setTimeout(() => this.removeBackdrop(), duration);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _showModal(content) {\n var _a;\n const modalLoader = this.loaders[this.loaders.length - 1];\n if (this.config && this.config.providers) {\n for (const provider of this.config.providers) {\n modalLoader.provide(provider);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const bsModalRef = new BsModalRef();\n const modalContainerRef = modalLoader\n .provide({ provide: ModalOptions, useValue: this.config })\n .provide({ provide: BsModalRef, useValue: bsModalRef })\n .attach(ModalContainerComponent)\n .to('body');\n bsModalRef.hide = () => { var _a; return (_a = modalContainerRef.instance) === null || _a === void 0 ? void 0 : _a.hide(); };\n bsModalRef.setClass = (newClass) => {\n if (modalContainerRef.instance) {\n modalContainerRef.instance.config.class = newClass;\n }\n };\n bsModalRef.onHidden = new EventEmitter();\n bsModalRef.onHide = new EventEmitter();\n this.copyEvent(modalLoader.onBeforeHide, bsModalRef.onHide);\n this.copyEvent(modalLoader.onHidden, bsModalRef.onHidden);\n // call 'show' method after assign setClass in bsModalRef.\n // it makes modal component's bsModalRef available to call setClass method\n modalContainerRef.show({\n content,\n isAnimated: this.config.animated,\n initialState: this.config.initialState,\n bsModalService: this,\n id: this.config.id\n });\n if (modalContainerRef.instance) {\n modalContainerRef.instance.level = this.getModalsCount();\n bsModalRef.content = modalLoader.getInnerComponent();\n bsModalRef.id = (_a = modalContainerRef.instance.config) === null || _a === void 0 ? void 0 : _a.id;\n }\n return bsModalRef;\n }\n _hideModal(id) {\n if (id != null) {\n const indexToRemove = this.loaders.findIndex(loader => { var _a; return ((_a = loader.instance) === null || _a === void 0 ? void 0 : _a.config.id) === id; });\n const modalLoader = this.loaders[indexToRemove];\n if (modalLoader) {\n modalLoader.hide(id);\n }\n }\n else {\n this.loaders.forEach((loader) => {\n if (loader.instance) {\n loader.hide(loader.instance.config.id);\n }\n });\n }\n }\n getModalsCount() {\n return this.modalsCount;\n }\n setDismissReason(reason) {\n this.lastDismissReason = reason;\n }\n removeBackdrop() {\n this._renderer.removeClass(document.body, CLASS_NAME.OPEN);\n this._renderer.setStyle(document.body, 'overflow-y', '');\n this._backdropLoader.hide();\n this.backdropRef = void 0;\n }\n /** Checks if the body is overflowing and sets scrollbar width */\n /** @internal */\n checkScrollbar() {\n this.isBodyOverflowing = document.body.clientWidth < window.innerWidth;\n this.scrollbarWidth = this.getScrollbarWidth();\n }\n setScrollbar() {\n if (!document) {\n return;\n }\n this.originalBodyPadding = parseInt(window\n .getComputedStyle(document.body)\n .getPropertyValue('padding-right') || '0', 10);\n if (this.isBodyOverflowing) {\n document.body.style.paddingRight = `${this.originalBodyPadding +\n this.scrollbarWidth}px`;\n }\n }\n resetScrollbar() {\n document.body.style.paddingRight = `${this.originalBodyPadding}px`;\n }\n // thx d.walsh\n getScrollbarWidth() {\n const scrollDiv = this._renderer.createElement('div');\n this._renderer.addClass(scrollDiv, CLASS_NAME.SCROLLBAR_MEASURER);\n this._renderer.appendChild(document.body, scrollDiv);\n const scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n this._renderer.removeChild(document.body, scrollDiv);\n return scrollbarWidth;\n }\n _createLoaders() {\n const loader = this.clf.createLoader();\n this.copyEvent(loader.onBeforeShow, this.onShow);\n this.copyEvent(loader.onShown, this.onShown);\n this.copyEvent(loader.onBeforeHide, this.onHide);\n this.copyEvent(loader.onHidden, this.onHidden);\n this.loaders.push(loader);\n }\n removeLoaders(id) {\n if (id != null) {\n const indexToRemove = this.loaders.findIndex(loader => { var _a; return ((_a = loader.instance) === null || _a === void 0 ? void 0 : _a.config.id) === id; });\n if (indexToRemove >= 0) {\n this.loaders.splice(indexToRemove, 1);\n this.loaders.forEach((loader, i) => {\n if (loader.instance) {\n loader.instance.level = i + 1;\n }\n });\n }\n }\n else {\n this.loaders.splice(0, this.loaders.length);\n }\n }\n copyEvent(from, to) {\n from.subscribe((data) => {\n to.emit(this.lastDismissReason || data);\n });\n }\n}\nBsModalService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsModalService, deps: [{ token: i0.RendererFactory2 }, { token: i1.ComponentLoaderFactory }, { token: MODAL_CONFIG_DEFAULT_OVERRIDE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nBsModalService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsModalService, providedIn: 'platform' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsModalService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'platform' }]\n }], ctorParameters: function () {\n return [{ type: i0.RendererFactory2 }, { type: i1.ComponentLoaderFactory }, { type: ModalOptions, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MODAL_CONFIG_DEFAULT_OVERRIDE]\n }] }];\n } });\n\nconst focusTrapModule = FocusTrapModule.forRoot();\nclass ModalModule {\n static forRoot() {\n return {\n ngModule: ModalModule,\n providers: [BsModalService, ComponentLoaderFactory, PositioningService]\n };\n }\n static forChild() {\n return {\n ngModule: ModalModule,\n providers: [BsModalService, ComponentLoaderFactory, PositioningService]\n };\n }\n}\nModalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: ModalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nModalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: ModalModule, declarations: [ModalBackdropComponent,\n ModalDirective,\n ModalContainerComponent], imports: [FocusTrapModule], exports: [ModalBackdropComponent, ModalDirective] });\nModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: ModalModule, imports: [[FocusTrapModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: ModalModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [FocusTrapModule],\n declarations: [\n ModalBackdropComponent,\n ModalDirective,\n ModalContainerComponent\n ],\n exports: [ModalBackdropComponent, ModalDirective],\n entryComponents: [ModalBackdropComponent, ModalContainerComponent]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BsModalRef, BsModalService, MODAL_CONFIG_DEFAULT_OVERRIDE, ModalBackdropComponent, ModalBackdropOptions, ModalContainerComponent, ModalDirective, ModalModule, ModalOptions };\n","import * as i0 from '@angular/core';\nimport { Injectable, Component, ChangeDetectionStrategy, Input, Directive, Output, NgModule } from '@angular/core';\nimport { getBsVer, parseTriggers } from 'ngx-bootstrap/utils';\nimport * as i3 from 'ngx-bootstrap/positioning';\nimport { PlacementForBs5, checkMargins, PositioningService } from 'ngx-bootstrap/positioning';\nimport * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { timer } from 'rxjs';\nimport * as i2$1 from 'ngx-bootstrap/component-loader';\nimport { ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\n\n/**\n * Configuration service for the Popover directive.\n * You can inject this service, typically in your root component, and customize\n * the values of its properties in order to provide default values for all the\n * popovers used in the application.\n */\nclass PopoverConfig {\n constructor() {\n /** sets disable adaptive position */\n this.adaptivePosition = true;\n /**\n * Placement of a popover. Accepts: \"top\", \"bottom\", \"left\", \"right\", \"auto\"\n */\n this.placement = 'top';\n /**\n * Specifies events that should trigger. Supports a space separated list of\n * event names.\n */\n this.triggers = 'click';\n this.outsideClick = false;\n /** delay before showing the tooltip */\n this.delay = 0;\n }\n}\nPopoverConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: PopoverConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nPopoverConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: PopoverConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: PopoverConfig, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\n\nclass PopoverContainerComponent {\n constructor(config) {\n this._placement = 'top';\n Object.assign(this, config);\n }\n set placement(value) {\n if (!this._bsVersions.isBs5) {\n this._placement = value;\n }\n else {\n this._placement = PlacementForBs5[value];\n }\n }\n ;\n get _bsVersions() {\n return getBsVer();\n }\n checkMarginNecessity() {\n return checkMargins(this._placement);\n }\n}\nPopoverContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: PopoverContainerComponent, deps: [{ token: PopoverConfig }], target: i0.ɵɵFactoryTarget.Component });\nPopoverContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.1\", type: PopoverContainerComponent, selector: \"popover-container\", inputs: { placement: \"placement\", title: \"title\" }, host: { attributes: { \"role\": \"tooltip\" }, properties: { \"attr.id\": \"popoverId\", \"class\": \"\\\"popover in popover-\\\" + _placement + \\\" \\\" + \\\"bs-popover-\\\" + _placement + \\\" \\\" + _placement + \\\" \\\" + containerClass + \\\" \\\" + checkMarginNecessity()\", \"class.show\": \"!_bsVersions.isBs3\", \"class.bs3\": \"_bsVersions.isBs3\" }, styleAttribute: \"display:block;\" }, ngImport: i0, template: \"
\\n

{{ title }}

\\n
\\n \\n
\\n\", styles: [\":host.bs3.popover-top{margin-bottom:10px}:host.bs3.popover.top>.arrow{margin-left:-2px}:host.bs3.popover.top{margin-bottom:10px}:host.popover.bottom>.arrow{margin-left:-4px}:host.bs3.bs-popover-left{margin-right:.5rem}:host.bs3.bs-popover-right .arrow,:host.bs3.bs-popover-left .arrow{margin:.3rem 0}\\n\"], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: PopoverContainerComponent, decorators: [{\n type: Component,\n args: [{ selector: 'popover-container', changeDetection: ChangeDetectionStrategy.OnPush, host: {\n '[attr.id]': 'popoverId',\n '[class]': '\"popover in popover-\" + _placement + \" \" + \"bs-popover-\" + _placement + \" \" + _placement + \" \" + containerClass + \" \" + checkMarginNecessity()',\n '[class.show]': '!_bsVersions.isBs3',\n '[class.bs3]': '_bsVersions.isBs3',\n role: 'tooltip',\n style: 'display:block;'\n }, styles: [\n `\n :host.bs3.popover-top {\n margin-bottom: 10px;\n }\n :host.bs3.popover.top>.arrow {\n margin-left: -2px;\n }\n :host.bs3.popover.top {\n margin-bottom: 10px;\n }\n :host.popover.bottom>.arrow {\n margin-left: -4px;\n }\n :host.bs3.bs-popover-left {\n margin-right: .5rem;\n }\n :host.bs3.bs-popover-right .arrow, :host.bs3.bs-popover-left .arrow{\n margin: .3rem 0;\n }\n `\n ], template: \"
\\n

{{ title }}

\\n
\\n \\n
\\n\" }]\n }], ctorParameters: function () { return [{ type: PopoverConfig }]; }, propDecorators: { placement: [{\n type: Input\n }], title: [{\n type: Input\n }] } });\n\nlet id = 0;\n/**\n * A lightweight, extensible directive for fancy popover creation.\n */\nclass PopoverDirective {\n constructor(_config, _elementRef, _renderer, _viewContainerRef, cis, _positionService) {\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._positionService = _positionService;\n /** unique id popover - use for aria-describedby */\n this.popoverId = id++;\n /** sets disable adaptive position */\n this.adaptivePosition = true;\n /**\n * Placement of a popover. Accepts: \"top\", \"bottom\", \"left\", \"right\"\n */\n this.placement = 'top';\n /**\n * Close popover on outside click\n */\n this.outsideClick = false;\n /**\n * Specifies events that should trigger. Supports a space separated list of\n * event names.\n */\n this.triggers = 'click';\n /**\n * Css class for popover container\n */\n this.containerClass = '';\n /**\n * Delay before showing the tooltip\n */\n this.delay = 0;\n this._isInited = false;\n this._popover = cis\n .createLoader(_elementRef, _viewContainerRef, _renderer)\n .provide({ provide: PopoverConfig, useValue: _config });\n Object.assign(this, _config);\n this.onShown = this._popover.onShown;\n this.onHidden = this._popover.onHidden;\n // fix: no focus on button on Mac OS #1795\n if (typeof window !== 'undefined') {\n _elementRef.nativeElement.addEventListener('click', function () {\n try {\n _elementRef.nativeElement.focus();\n }\n catch (err) {\n return;\n }\n });\n }\n }\n /**\n * Returns whether or not the popover is currently being shown\n */\n get isOpen() {\n return this._popover.isShown;\n }\n set isOpen(value) {\n if (value) {\n this.show();\n }\n else {\n this.hide();\n }\n }\n /**\n * Set attribute aria-describedBy for element directive and\n * set id for the popover\n */\n setAriaDescribedBy() {\n this._ariaDescribedby = this.isOpen ? `ngx-popover-${this.popoverId}` : void 0;\n if (this._ariaDescribedby) {\n if (this._popover.instance) {\n this._popover.instance.popoverId = this._ariaDescribedby;\n }\n this._renderer.setAttribute(this._elementRef.nativeElement, 'aria-describedby', this._ariaDescribedby);\n }\n else {\n this._renderer.removeAttribute(this._elementRef.nativeElement, 'aria-describedby');\n }\n }\n /**\n * Opens an element’s popover. This is considered a “manual” triggering of\n * the popover.\n */\n show() {\n if (this._popover.isShown || !this.popover || this._delayTimeoutId) {\n return;\n }\n this._positionService.setOptions({\n modifiers: {\n flip: {\n enabled: this.adaptivePosition\n },\n preventOverflow: {\n enabled: this.adaptivePosition\n }\n }\n });\n const showPopover = () => {\n if (this._delayTimeoutId) {\n this._delayTimeoutId = undefined;\n }\n this._popover\n .attach(PopoverContainerComponent)\n .to(this.container)\n .position({ attachment: this.placement })\n .show({\n content: this.popover,\n context: this.popoverContext,\n placement: this.placement,\n title: this.popoverTitle,\n containerClass: this.containerClass\n });\n if (!this.adaptivePosition && this._popover._componentRef) {\n this._positionService.calcPosition();\n this._positionService.deletePositionElement(this._popover._componentRef.location);\n }\n this.isOpen = true;\n this.setAriaDescribedBy();\n };\n const cancelDelayedTooltipShowing = () => {\n if (this._popoverCancelShowFn) {\n this._popoverCancelShowFn();\n }\n };\n if (this.delay) {\n const _timer = timer(this.delay).subscribe(() => {\n showPopover();\n cancelDelayedTooltipShowing();\n });\n if (this.triggers) {\n parseTriggers(this.triggers)\n .forEach((trigger) => {\n if (!trigger.close) {\n return;\n }\n this._popoverCancelShowFn = this._renderer.listen(this._elementRef.nativeElement, trigger.close, () => {\n _timer.unsubscribe();\n cancelDelayedTooltipShowing();\n });\n });\n }\n }\n else {\n showPopover();\n }\n }\n /**\n * Closes an element’s popover. This is considered a “manual” triggering of\n * the popover.\n */\n hide() {\n if (this._delayTimeoutId) {\n clearTimeout(this._delayTimeoutId);\n this._delayTimeoutId = undefined;\n }\n if (this.isOpen) {\n this._popover.hide();\n this.setAriaDescribedBy();\n this.isOpen = false;\n }\n }\n /**\n * Toggles an element’s popover. This is considered a “manual” triggering of\n * the popover.\n */\n toggle() {\n if (this.isOpen) {\n return this.hide();\n }\n this.show();\n }\n ngOnInit() {\n // fix: seems there are an issue with `routerLinkActive`\n // which result in duplicated call ngOnInit without call to ngOnDestroy\n // read more: https://github.com/valor-software/ngx-bootstrap/issues/1885\n if (this._isInited) {\n return;\n }\n this._isInited = true;\n this._popover.listen({\n triggers: this.triggers,\n outsideClick: this.outsideClick,\n show: () => this.show(),\n hide: () => this.hide()\n });\n }\n ngOnDestroy() {\n this._popover.dispose();\n }\n}\nPopoverDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: PopoverDirective, deps: [{ token: PopoverConfig }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }, { token: i2$1.ComponentLoaderFactory }, { token: i3.PositioningService }], target: i0.ɵɵFactoryTarget.Directive });\nPopoverDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.1.1\", type: PopoverDirective, selector: \"[popover]\", inputs: { adaptivePosition: \"adaptivePosition\", popover: \"popover\", popoverContext: \"popoverContext\", popoverTitle: \"popoverTitle\", placement: \"placement\", outsideClick: \"outsideClick\", triggers: \"triggers\", container: \"container\", containerClass: \"containerClass\", isOpen: \"isOpen\", delay: \"delay\" }, outputs: { onShown: \"onShown\", onHidden: \"onHidden\" }, exportAs: [\"bs-popover\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: PopoverDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[popover]', exportAs: 'bs-popover' }]\n }], ctorParameters: function () { return [{ type: PopoverConfig }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ViewContainerRef }, { type: i2$1.ComponentLoaderFactory }, { type: i3.PositioningService }]; }, propDecorators: { adaptivePosition: [{\n type: Input\n }], popover: [{\n type: Input\n }], popoverContext: [{\n type: Input\n }], popoverTitle: [{\n type: Input\n }], placement: [{\n type: Input\n }], outsideClick: [{\n type: Input\n }], triggers: [{\n type: Input\n }], container: [{\n type: Input\n }], containerClass: [{\n type: Input\n }], isOpen: [{\n type: Input\n }], delay: [{\n type: Input\n }], onShown: [{\n type: Output\n }], onHidden: [{\n type: Output\n }] } });\n\nclass PopoverModule {\n static forRoot() {\n return {\n ngModule: PopoverModule,\n providers: [ComponentLoaderFactory, PositioningService]\n };\n }\n}\nPopoverModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: PopoverModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nPopoverModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: PopoverModule, declarations: [PopoverDirective, PopoverContainerComponent], imports: [CommonModule], exports: [PopoverDirective] });\nPopoverModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: PopoverModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: PopoverModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n declarations: [PopoverDirective, PopoverContainerComponent],\n exports: [PopoverDirective],\n entryComponents: [PopoverContainerComponent]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { PopoverConfig, PopoverContainerComponent, PopoverDirective, PopoverModule };\n","import { getBsVer } from 'ngx-bootstrap/utils';\nimport * as i0 from '@angular/core';\nimport { PLATFORM_ID, Injectable, Inject, ElementRef } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { Subject, merge, fromEvent, of, animationFrameScheduler } from 'rxjs';\n\nvar MapPlacementInToRL;\n(function (MapPlacementInToRL) {\n MapPlacementInToRL[\"top\"] = \"top\";\n MapPlacementInToRL[\"bottom\"] = \"bottom\";\n MapPlacementInToRL[\"left\"] = \"left\";\n MapPlacementInToRL[\"right\"] = \"right\";\n MapPlacementInToRL[\"auto\"] = \"auto\";\n MapPlacementInToRL[\"end\"] = \"right\";\n MapPlacementInToRL[\"start\"] = \"left\";\n MapPlacementInToRL[\"top left\"] = \"top left\";\n MapPlacementInToRL[\"top right\"] = \"top right\";\n MapPlacementInToRL[\"right top\"] = \"right top\";\n MapPlacementInToRL[\"right bottom\"] = \"right bottom\";\n MapPlacementInToRL[\"bottom right\"] = \"bottom right\";\n MapPlacementInToRL[\"bottom left\"] = \"bottom left\";\n MapPlacementInToRL[\"left bottom\"] = \"left bottom\";\n MapPlacementInToRL[\"left top\"] = \"left top\";\n MapPlacementInToRL[\"top start\"] = \"top left\";\n MapPlacementInToRL[\"top end\"] = \"top right\";\n MapPlacementInToRL[\"end top\"] = \"right top\";\n MapPlacementInToRL[\"end bottom\"] = \"right bottom\";\n MapPlacementInToRL[\"bottom end\"] = \"bottom right\";\n MapPlacementInToRL[\"bottom start\"] = \"bottom left\";\n MapPlacementInToRL[\"start bottom\"] = \"start bottom\";\n MapPlacementInToRL[\"start top\"] = \"left top\";\n})(MapPlacementInToRL || (MapPlacementInToRL = {}));\nvar PlacementForBs5;\n(function (PlacementForBs5) {\n PlacementForBs5[\"top\"] = \"top\";\n PlacementForBs5[\"bottom\"] = \"bottom\";\n PlacementForBs5[\"left\"] = \"start\";\n PlacementForBs5[\"right\"] = \"end\";\n PlacementForBs5[\"auto\"] = \"auto\";\n PlacementForBs5[\"end\"] = \"end\";\n PlacementForBs5[\"start\"] = \"start\";\n PlacementForBs5[\"top left\"] = \"top start\";\n PlacementForBs5[\"top right\"] = \"top end\";\n PlacementForBs5[\"right top\"] = \"end top\";\n PlacementForBs5[\"right bottom\"] = \"end bottom\";\n PlacementForBs5[\"bottom right\"] = \"bottom end\";\n PlacementForBs5[\"bottom left\"] = \"bottom start\";\n PlacementForBs5[\"left bottom\"] = \"start bottom\";\n PlacementForBs5[\"left top\"] = \"start top\";\n PlacementForBs5[\"top start\"] = \"top start\";\n PlacementForBs5[\"top end\"] = \"top end\";\n PlacementForBs5[\"end top\"] = \"end top\";\n PlacementForBs5[\"end bottom\"] = \"end bottom\";\n PlacementForBs5[\"bottom end\"] = \"bottom end\";\n PlacementForBs5[\"bottom start\"] = \"bottom start\";\n PlacementForBs5[\"start bottom\"] = \"start bottom\";\n PlacementForBs5[\"start top\"] = \"start top\";\n})(PlacementForBs5 || (PlacementForBs5 = {}));\n\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const window = element.ownerDocument.defaultView;\n const css = window === null || window === void 0 ? void 0 : window.getComputedStyle(element, null);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return property ? css && css[property] : css;\n}\n\n/**\n * Returns the offset parent of the given element\n */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n const noOffsetParent = null;\n // NOTE: 1 DOM access here\n let offsetParent = element === null || element === void 0 ? void 0 : element.offsetParent;\n // Skip hidden elements which don't have an offsetParent\n let sibling = void 0;\n while (offsetParent === noOffsetParent\n && element.nextElementSibling\n && sibling !== element.nextElementSibling) {\n // todo: valorkin fix\n sibling = element.nextElementSibling;\n offsetParent = sibling.offsetParent;\n }\n const nodeName = offsetParent && offsetParent.nodeName;\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return sibling ? sibling.ownerDocument.documentElement : document.documentElement;\n }\n // .offsetParent will return the closest TH, TD or TABLE in case\n if (offsetParent &&\n ['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n return offsetParent;\n}\n\n// todo: valorkin fix\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element);\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n const order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n // todo: valorkin fix\n const commonAncestorContainer = range.commonAncestorContainer;\n // Both nodes are inside #document\n if ((element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n return getOffsetParent(commonAncestorContainer);\n }\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n }\n else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n */\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement) {\n return document.documentElement;\n }\n let el = element.parentElement;\n while ((el === null || el === void 0 ? void 0 : el.parentElement) && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\n\n/**\n * Helper to detect borders of a given element\n */\nfunction getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n return (parseFloat(styles[`border${sideA}Width`]) +\n parseFloat(styles[`border${sideB}Width`]));\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n const _body = body;\n const _html = html;\n const _computedStyle = computedStyle;\n return Math.max(_body[`offset${axis}`], _body[`scroll${axis}`], _html[`client${axis}`], _html[`offset${axis}`], _html[`scroll${axis}`], 0);\n}\nfunction getWindowSizes(document) {\n const body = document.body;\n const html = document.documentElement;\n const computedStyle = void 0;\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nfunction getClientRect(offsets) {\n return Object.assign(Object.assign({}, offsets), { right: (offsets.left || 0) + offsets.width, bottom: (offsets.top || 0) + offsets.height });\n}\n\n/**\n * Tells if a given input is a number\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(Number(n));\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isNumber(value) {\n return typeof value === 'number' || Object.prototype.toString.call(value) === '[object Number]';\n}\n\n/**\n * Get bounding client rect of given element\n */\nfunction getBoundingClientRect(element) {\n const rect = element.getBoundingClientRect();\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n // try {\n // if (isIE(10)) {\n // const scrollTop = getScroll(element, 'top');\n // const scrollLeft = getScroll(element, 'left');\n // if (rect && isNumber(rect.top) && isNumber(rect.left) && isNumber(rect.bottom) && isNumber(rect.right)) {\n // rect.top += scrollTop;\n // rect.left += scrollLeft;\n // rect.bottom += scrollTop;\n // rect.right += scrollLeft;\n // }\n // }\n // } catch (e) {\n // return rect;\n // }\n if (!(rect && isNumber(rect.top) && isNumber(rect.left) && isNumber(rect.bottom) && isNumber(rect.right))) {\n return rect;\n }\n const result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n // subtract scrollbar size from sizes\n const sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : undefined;\n const width = (sizes === null || sizes === void 0 ? void 0 : sizes.width) || element.clientWidth\n || isNumber(rect.right) && isNumber(result.left) && rect.right - result.left || 0;\n const height = (sizes === null || sizes === void 0 ? void 0 : sizes.height) || element.clientHeight\n || isNumber(rect.bottom) && isNumber(result.top) && rect.bottom - result.top || 0;\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n return getClientRect(result);\n}\n\n/**\n * Returns the parentNode or the host of the element\n */\n// todo: valorkin fix\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n */\n// todo: valorkin fix\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n default:\n }\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll|overlay)/.test(String(overflow) + String(overflowY) + String(overflowX))) {\n return element;\n }\n return getScrollParent(getParentNode(element));\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent, fixedPosition = false) {\n var _a, _b, _c, _d, _e, _f;\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = parseFloat(styles.borderTopWidth);\n const borderLeftWidth = parseFloat(styles.borderLeftWidth);\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max((_a = parentRect.top) !== null && _a !== void 0 ? _a : 0, 0);\n parentRect.left = Math.max((_b = parentRect.left) !== null && _b !== void 0 ? _b : 0, 0);\n }\n const offsets = getClientRect({\n top: ((_c = childrenRect.top) !== null && _c !== void 0 ? _c : 0) - ((_d = parentRect.top) !== null && _d !== void 0 ? _d : 0) - borderTopWidth,\n left: ((_e = childrenRect.left) !== null && _e !== void 0 ? _e : 0) - ((_f = parentRect.left) !== null && _f !== void 0 ? _f : 0) - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (isHTML) {\n const marginTop = parseFloat(styles.marginTop);\n const marginLeft = parseFloat(styles.marginLeft);\n if (isNumber(offsets.top)) {\n offsets.top -= borderTopWidth - marginTop;\n }\n if (isNumber(offsets.bottom)) {\n offsets.bottom -= borderTopWidth - marginTop;\n }\n if (isNumber(offsets.left)) {\n offsets.left -= borderLeftWidth - marginLeft;\n }\n if (isNumber(offsets.right)) {\n offsets.right -= borderLeftWidth - marginLeft;\n }\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n return offsets;\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n */\nfunction getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n return element[upperSide];\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element, excludeScroll = false) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n const scrollTop = !excludeScroll ? getScroll(html) : 0;\n const scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n const offset = {\n top: scrollTop - Number(relativeOffset === null || relativeOffset === void 0 ? void 0 : relativeOffset.top) + Number(relativeOffset === null || relativeOffset === void 0 ? void 0 : relativeOffset.marginTop),\n left: scrollLeft - Number(relativeOffset === null || relativeOffset === void 0 ? void 0 : relativeOffset.left) + Number(relativeOffset === null || relativeOffset === void 0 ? void 0 : relativeOffset.marginLeft),\n width,\n height\n };\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n */\nfunction isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n return isFixed(getParentNode(element));\n}\n\nfunction getBoundaries(target, host, padding = 0, boundariesElement, fixedPosition = false) {\n // NOTE: 1 DOM access here\n let boundaries = { top: 0, left: 0 };\n const offsetParent = fixedPosition ? getFixedPositionOffsetParent(target) : findCommonOffsetParent(target, host);\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n }\n else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(host));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = target.ownerDocument.documentElement;\n }\n }\n else if (boundariesElement === 'window') {\n boundariesNode = target.ownerDocument.documentElement;\n }\n else {\n boundariesNode = boundariesElement;\n }\n const offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n // In case of HTML, we need a different computation\n if (offsets && boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes(target.ownerDocument);\n if (isNumber(boundaries.top) && isNumber(offsets.top) && isNumber(offsets.marginTop)) {\n boundaries.top += offsets.top - offsets.marginTop;\n }\n if (isNumber(boundaries.top)) {\n boundaries.bottom = Number(height) + Number(offsets.top);\n }\n if (isNumber(boundaries.left) && isNumber(offsets.left) && isNumber(offsets.marginLeft)) {\n boundaries.left += offsets.left - offsets.marginLeft;\n }\n if (isNumber(boundaries.top)) {\n boundaries.right = Number(width) + Number(offsets.left);\n }\n }\n else if (offsets) {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n // Add paddings\n if (isNumber(boundaries.left)) {\n boundaries.left += padding;\n }\n if (isNumber(boundaries.top)) {\n boundaries.top += padding;\n }\n if (isNumber(boundaries.right)) {\n boundaries.right -= padding;\n }\n if (isNumber(boundaries.bottom)) {\n boundaries.bottom -= padding;\n }\n return boundaries;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n */\nfunction getArea({ width, height }) {\n return width * height;\n}\nfunction computeAutoPlacement(placement, refRect, target, host, allowedPositions = ['top', 'bottom', 'right', 'left'], boundariesElement = 'viewport', padding = 0) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n const boundaries = getBoundaries(target, host, padding, boundariesElement);\n const rects = {\n top: {\n width: (_a = boundaries === null || boundaries === void 0 ? void 0 : boundaries.width) !== null && _a !== void 0 ? _a : 0,\n height: ((_b = refRect === null || refRect === void 0 ? void 0 : refRect.top) !== null && _b !== void 0 ? _b : 0) - ((_c = boundaries === null || boundaries === void 0 ? void 0 : boundaries.top) !== null && _c !== void 0 ? _c : 0)\n },\n right: {\n width: ((_d = boundaries === null || boundaries === void 0 ? void 0 : boundaries.right) !== null && _d !== void 0 ? _d : 0) - ((_e = refRect === null || refRect === void 0 ? void 0 : refRect.right) !== null && _e !== void 0 ? _e : 0),\n height: (_f = boundaries === null || boundaries === void 0 ? void 0 : boundaries.height) !== null && _f !== void 0 ? _f : 0\n },\n bottom: {\n width: (_g = boundaries === null || boundaries === void 0 ? void 0 : boundaries.width) !== null && _g !== void 0 ? _g : 0,\n height: ((_h = boundaries === null || boundaries === void 0 ? void 0 : boundaries.bottom) !== null && _h !== void 0 ? _h : 0) - ((_j = refRect === null || refRect === void 0 ? void 0 : refRect.bottom) !== null && _j !== void 0 ? _j : 0)\n },\n left: {\n width: ((_k = refRect.left) !== null && _k !== void 0 ? _k : 0) - ((_l = boundaries === null || boundaries === void 0 ? void 0 : boundaries.left) !== null && _l !== void 0 ? _l : 0),\n height: (_m = boundaries === null || boundaries === void 0 ? void 0 : boundaries.height) !== null && _m !== void 0 ? _m : 0\n }\n };\n const sortedAreas = Object.keys(rects)\n .map((key) => (Object.assign(Object.assign({ position: key }, rects[key]), { area: getArea(rects[key]) })))\n .sort((a, b) => b.area - a.area);\n let filteredAreas = sortedAreas.filter(({ width, height }) => {\n return width >= target.clientWidth && height >= target.clientHeight;\n });\n filteredAreas = filteredAreas.filter(({ position }) => {\n return allowedPositions.some((allowedPosition) => {\n return allowedPosition === position;\n });\n });\n const computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].position : sortedAreas[0].position;\n const variation = placement.split(' ')[1];\n // for tooltip on auto position\n target.className = target.className.replace(/bs-tooltip-auto/g, `bs-tooltip-${getBsVer().isBs5 ? PlacementForBs5[computedPlacement] : computedPlacement}`);\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n\nfunction getOffsets(data) {\n var _a, _b, _c, _d;\n return {\n width: data.offsets.target.width,\n height: data.offsets.target.height,\n left: Math.floor((_a = data.offsets.target.left) !== null && _a !== void 0 ? _a : 0),\n top: Math.round((_b = data.offsets.target.top) !== null && _b !== void 0 ? _b : 0),\n bottom: Math.round((_c = data.offsets.target.bottom) !== null && _c !== void 0 ? _c : 0),\n right: Math.floor((_d = data.offsets.target.right) !== null && _d !== void 0 ? _d : 0)\n };\n}\n\n/**\n * Get the opposite placement of the given one\n */\nfunction getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n\n/**\n * Get the opposite placement variation of the given one\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'right') {\n return 'left';\n }\n else if (variation === 'left') {\n return 'right';\n }\n return variation;\n}\n\nconst parse = (value, def = 0) => value ? parseFloat(value) : def;\nfunction getOuterSizes(element) {\n const window = element.ownerDocument.defaultView;\n const styles = window === null || window === void 0 ? void 0 : window.getComputedStyle(element);\n const x = parse(styles === null || styles === void 0 ? void 0 : styles.marginTop) + parse(styles === null || styles === void 0 ? void 0 : styles.marginBottom);\n const y = parse(styles === null || styles === void 0 ? void 0 : styles.marginLeft) + parse(styles === null || styles === void 0 ? void 0 : styles.marginRight);\n return {\n width: Number(element.offsetWidth) + y,\n height: Number(element.offsetHeight) + x\n };\n}\n\n/**\n * Get offsets to the reference element\n */\nfunction getReferenceOffsets(target, host, fixedPosition) {\n const commonOffsetParent = fixedPosition\n ? getFixedPositionOffsetParent(target)\n : findCommonOffsetParent(target, host);\n return getOffsetRectRelativeToArbitraryNode(host, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get offsets to the target\n */\nfunction getTargetOffsets(target, hostOffsets, position) {\n var _a, _b, _c;\n const placement = position.split(' ')[0];\n // Get target node sizes\n const targetRect = getOuterSizes(target);\n // Add position, width and height to our offsets object\n const targetOffsets = {\n width: targetRect.width,\n height: targetRect.height\n };\n // depending by the target placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n targetOffsets[mainSide] =\n ((_a = hostOffsets[mainSide]) !== null && _a !== void 0 ? _a : 0) +\n hostOffsets[measurement] / 2 -\n targetRect[measurement] / 2;\n targetOffsets[secondarySide] = placement === secondarySide\n ? ((_b = hostOffsets[secondarySide]) !== null && _b !== void 0 ? _b : 0) - targetRect[secondaryMeasurement]\n : (_c = hostOffsets[getOppositePlacement(secondarySide)]) !== null && _c !== void 0 ? _c : 0;\n return targetOffsets;\n}\n\nfunction isModifierEnabled(options, modifierName) {\n var _a;\n return !!((_a = options.modifiers[modifierName]) === null || _a === void 0 ? void 0 : _a.enabled);\n}\n\nconst availablePositions = {\n top: ['top', 'top start', 'top end'],\n bottom: ['bottom', 'bottom start', 'bottom end'],\n start: ['start', 'start top', 'start bottom'],\n end: ['end', 'end top', 'end bottom']\n};\nfunction checkPopoverMargin(placement, checkPosition) {\n if (!getBsVer().isBs5) {\n return false;\n }\n return availablePositions[checkPosition].includes(placement);\n}\nfunction checkMargins(placement) {\n if (!getBsVer().isBs5) {\n return '';\n }\n if (checkPopoverMargin(placement, 'end')) {\n return 'ms-2';\n }\n if (checkPopoverMargin(placement, 'start')) {\n return 'me-2';\n }\n if (checkPopoverMargin(placement, 'top')) {\n return 'mb-2';\n }\n if (checkPopoverMargin(placement, 'bottom')) {\n return 'mt-2';\n }\n return '';\n}\n\nfunction updateContainerClass(data, renderer) {\n const target = data.instance.target;\n let containerClass = target.className;\n const dataPlacement = getBsVer().isBs5 ? PlacementForBs5[data.placement] : data.placement;\n if (data.placementAuto) {\n containerClass = containerClass.replace(/bs-popover-auto/g, `bs-popover-${dataPlacement}`);\n containerClass = containerClass.replace(/ms-2|me-2|mb-2|mt-2/g, '');\n containerClass = containerClass.replace(/bs-tooltip-auto/g, `bs-tooltip-${dataPlacement}`);\n containerClass = containerClass.replace(/\\sauto/g, ` ${dataPlacement}`);\n if (containerClass.indexOf('popover') !== -1) {\n containerClass = containerClass + ' ' + checkMargins(dataPlacement);\n }\n if (containerClass.indexOf('popover') !== -1 && containerClass.indexOf('popover-auto') === -1) {\n containerClass += ' popover-auto';\n }\n if (containerClass.indexOf('tooltip') !== -1 && containerClass.indexOf('tooltip-auto') === -1) {\n containerClass += ' tooltip-auto';\n }\n }\n containerClass = containerClass.replace(/left|right|top|bottom|end|start/g, `${dataPlacement.split(' ')[0]}`);\n if (renderer) {\n renderer.setAttribute(target, 'class', containerClass);\n return;\n }\n target.className = containerClass;\n}\n\nfunction setStyles(element, styles, renderer) {\n if (!element || !styles) {\n return;\n }\n Object.keys(styles).forEach((prop) => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 &&\n isNumeric(styles[prop])) {\n unit = 'px';\n }\n if (renderer) {\n renderer.setStyle(element, prop, `${String(styles[prop])}${unit}`);\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n element.style[prop] = String(styles[prop]) + unit;\n });\n}\n\nfunction arrow(data) {\n var _a, _b, _c, _d, _e, _f;\n let targetOffsets = data.offsets.target;\n // if arrowElement is a string, suppose it's a CSS selector\n const arrowElement = data.instance.target.querySelector('.arrow');\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n const isVertical = ['left', 'right'].indexOf(data.placement.split(' ')[0]) !== -1;\n const len = isVertical ? 'height' : 'width';\n const sideCapitalized = isVertical ? 'Top' : 'Left';\n const side = sideCapitalized.toLowerCase();\n const altSide = isVertical ? 'left' : 'top';\n const opSide = isVertical ? 'bottom' : 'right';\n const arrowElementSize = getOuterSizes(arrowElement)[len];\n const placementVariation = data.placement.split(' ')[1];\n // top/left side\n if (((_a = data.offsets.host[opSide]) !== null && _a !== void 0 ? _a : 0) - arrowElementSize < ((_b = targetOffsets[side]) !== null && _b !== void 0 ? _b : 0)) {\n (targetOffsets)[side] -=\n ((_c = targetOffsets[side]) !== null && _c !== void 0 ? _c : 0) - (((_d = data.offsets.host[opSide]) !== null && _d !== void 0 ? _d : 0) - arrowElementSize);\n }\n // bottom/right side\n if (Number((data).offsets.host[side]) + Number(arrowElementSize) > ((_e = targetOffsets[opSide]) !== null && _e !== void 0 ? _e : 0)) {\n (targetOffsets)[side] +=\n Number((data).offsets.host[side]) + Number(arrowElementSize) - Number((targetOffsets)[opSide]);\n }\n targetOffsets = getClientRect(targetOffsets);\n // Compute the sideValue using the updated target offsets\n // take target margin in account because we don't have this info available\n const css = getStyleComputedProperty(data.instance.target);\n const targetMarginSide = parseFloat(css[`margin${sideCapitalized}`]) || 0;\n const targetBorderSide = parseFloat(css[`border${sideCapitalized}Width`]) || 0;\n // compute center of the target\n let center;\n if (!placementVariation) {\n center = Number((data).offsets.host[side]) + Number(data.offsets.host[len] / 2 - arrowElementSize / 2);\n }\n else {\n const targetBorderRadius = parseFloat(css[\"borderRadius\"]) || 0;\n const targetSideArrowOffset = Number(targetMarginSide + targetBorderSide + targetBorderRadius);\n center = side === placementVariation ?\n Number((data).offsets.host[side]) + targetSideArrowOffset :\n Number((data).offsets.host[side]) + Number(data.offsets.host[len] - targetSideArrowOffset);\n }\n let sideValue = center - ((_f = targetOffsets[side]) !== null && _f !== void 0 ? _f : 0) - targetMarginSide - targetBorderSide;\n // prevent arrowElement from being placed not contiguously to its target\n sideValue = Math.max(Math.min(targetOffsets[len] - (arrowElementSize + 5), sideValue), 0);\n data.offsets.arrow = {\n [side]: Math.round(sideValue),\n [altSide]: '' // make sure to unset any eventual altSide value from the DOM node\n };\n data.instance.arrow = arrowElement;\n return data;\n}\n\nfunction flip(data) {\n data.offsets.target = getClientRect(data.offsets.target);\n if (!isModifierEnabled(data.options, 'flip')) {\n data.offsets.target = Object.assign(Object.assign({}, data.offsets.target), getTargetOffsets(data.instance.target, data.offsets.host, data.placement));\n return data;\n }\n const boundaries = getBoundaries(data.instance.target, data.instance.host, 0, // padding\n 'viewport', false // positionFixed\n );\n let placement = data.placement.split(' ')[0];\n let variation = data.placement.split(' ')[1] || '';\n const offsetsHost = data.offsets.host;\n const target = data.instance.target;\n const host = data.instance.host;\n const adaptivePosition = computeAutoPlacement('auto', offsetsHost, target, host, data.options.allowedPositions);\n const flipOrder = [placement, adaptivePosition];\n flipOrder.forEach((step, index) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;\n if (placement !== step || flipOrder.length === index + 1) {\n return;\n }\n placement = data.placement.split(' ')[0];\n // using floor because the host offsets may contain decimals we are not going to consider here\n const overlapsRef = (placement === 'left' &&\n Math.floor((_a = data.offsets.target.right) !== null && _a !== void 0 ? _a : 0) > Math.floor((_b = data.offsets.host.left) !== null && _b !== void 0 ? _b : 0)) ||\n (placement === 'right' &&\n Math.floor((_c = data.offsets.target.left) !== null && _c !== void 0 ? _c : 0) < Math.floor((_d = data.offsets.host.right) !== null && _d !== void 0 ? _d : 0)) ||\n (placement === 'top' &&\n Math.floor((_e = data.offsets.target.bottom) !== null && _e !== void 0 ? _e : 0) > Math.floor((_f = data.offsets.host.top) !== null && _f !== void 0 ? _f : 0)) ||\n (placement === 'bottom' &&\n Math.floor((_g = data.offsets.target.top) !== null && _g !== void 0 ? _g : 0) < Math.floor((_h = data.offsets.host.bottom) !== null && _h !== void 0 ? _h : 0));\n const overflowsLeft = Math.floor((_j = data.offsets.target.left) !== null && _j !== void 0 ? _j : 0) < Math.floor((_k = boundaries.left) !== null && _k !== void 0 ? _k : 0);\n const overflowsRight = Math.floor((_l = data.offsets.target.right) !== null && _l !== void 0 ? _l : 0) > Math.floor((_m = boundaries.right) !== null && _m !== void 0 ? _m : 0);\n const overflowsTop = Math.floor((_o = data.offsets.target.top) !== null && _o !== void 0 ? _o : 0) < Math.floor((_p = boundaries.top) !== null && _p !== void 0 ? _p : 0);\n const overflowsBottom = Math.floor((_q = data.offsets.target.bottom) !== null && _q !== void 0 ? _q : 0) > Math.floor((_r = boundaries.bottom) !== null && _r !== void 0 ? _r : 0);\n const overflowsBoundaries = (placement === 'left' && overflowsLeft) ||\n (placement === 'right' && overflowsRight) ||\n (placement === 'top' && overflowsTop) ||\n (placement === 'bottom' && overflowsBottom);\n // flip the variation if required\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const flippedVariation = ((isVertical && variation === 'left' && overflowsLeft) ||\n (isVertical && variation === 'right' && overflowsRight) ||\n (!isVertical && variation === 'left' && overflowsTop) ||\n (!isVertical && variation === 'right' && overflowsBottom));\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n data.placement = placement + (variation ? ` ${variation}` : '');\n data.offsets.target = Object.assign(Object.assign({}, data.offsets.target), getTargetOffsets(data.instance.target, data.offsets.host, data.placement));\n }\n });\n return data;\n}\n\nfunction initData(targetElement, hostElement, position, options) {\n if (!targetElement || !hostElement) {\n return;\n }\n const hostElPosition = getReferenceOffsets(targetElement, hostElement);\n if (!position.match(/^(auto)*\\s*(left|right|top|bottom|start|end)*$/)\n && !position.match(/^(left|right|top|bottom|start|end)*(?: (left|right|top|bottom|start|end))*$/)) {\n position = 'auto';\n }\n const placementAuto = !!position.match(/auto/g);\n // support old placements 'auto left|right|top|bottom'\n let placement = position.match(/auto\\s(left|right|top|bottom|start|end)/)\n ? position.split(' ')[1] || 'auto'\n : position;\n // Normalize placements that have identical main placement and variation (\"right right\" => \"right\").\n const matches = placement.match(/^(left|right|top|bottom|start|end)* ?(?!\\1)(left|right|top|bottom|start|end)?/);\n if (matches) {\n placement = matches[1] + (matches[2] ? ` ${matches[2]}` : '');\n }\n // \"left right\", \"top bottom\" etc. placements also considered incorrect.\n if (['left right', 'right left', 'top bottom', 'bottom top'].indexOf(placement) !== -1) {\n placement = 'auto';\n }\n placement = computeAutoPlacement(placement, hostElPosition, targetElement, hostElement, options ? options.allowedPositions : undefined);\n const targetOffset = getTargetOffsets(targetElement, hostElPosition, placement);\n return {\n options: options || { modifiers: {} },\n instance: {\n target: targetElement,\n host: hostElement,\n arrow: void 0\n },\n offsets: {\n target: targetOffset,\n host: hostElPosition,\n arrow: void 0\n },\n positionFixed: false,\n placement,\n placementAuto\n };\n}\n\nfunction preventOverflow(data) {\n var _a;\n if (!isModifierEnabled(data.options, 'preventOverflow')) {\n return data;\n }\n // NOTE: DOM access here\n // resets the target Offsets's position so that the document size can be calculated excluding\n // the size of the targetOffsets element itself\n const transformProp = 'transform';\n const targetStyles = data.instance.target.style; // assignment to help minification\n const { top, left, [transformProp]: transform } = targetStyles;\n targetStyles.top = '';\n targetStyles.left = '';\n targetStyles[transformProp] = '';\n const boundaries = getBoundaries(data.instance.target, data.instance.host, 0, // padding\n ((_a = data.options.modifiers.preventOverflow) === null || _a === void 0 ? void 0 : _a.boundariesElement) || 'scrollParent', false // positionFixed\n );\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n targetStyles.top = top;\n targetStyles.left = left;\n targetStyles[transformProp] = transform;\n const order = ['left', 'right', 'top', 'bottom'];\n const check = {\n primary(placement) {\n var _a, _b, _c, _d;\n let value = data.offsets.target[placement];\n // options.escapeWithReference\n if (((_a = data.offsets.target[placement]) !== null && _a !== void 0 ? _a : 0) < ((_b = boundaries[placement]) !== null && _b !== void 0 ? _b : 0)) {\n value = Math.max((_c = data.offsets.target[placement]) !== null && _c !== void 0 ? _c : 0, (_d = boundaries[placement]) !== null && _d !== void 0 ? _d : 0);\n }\n return { [placement]: value };\n },\n secondary(placement) {\n var _a, _b, _c, _d;\n const isPlacementHorizontal = placement === 'right';\n const mainSide = isPlacementHorizontal ? 'left' : 'top';\n const measurement = isPlacementHorizontal ? 'width' : 'height';\n let value = data.offsets.target[mainSide];\n // escapeWithReference\n if (((_a = data.offsets.target[placement]) !== null && _a !== void 0 ? _a : 0) > ((_b = boundaries[placement]) !== null && _b !== void 0 ? _b : 0)) {\n value = Math.min((_c = data.offsets.target[mainSide]) !== null && _c !== void 0 ? _c : 0, ((_d = boundaries[placement]) !== null && _d !== void 0 ? _d : 0) - data.offsets.target[measurement]);\n }\n return { [mainSide]: value };\n }\n };\n order.forEach((placement) => {\n const side = ['left', 'top', 'start'].indexOf(placement) !== -1 ? check['primary'] : check['secondary'];\n data.offsets.target = Object.assign(Object.assign({}, data.offsets.target), side(placement));\n });\n return data;\n}\n\nfunction shift(data) {\n var _a;\n const placement = data.placement;\n const basePlacement = placement.split(' ')[0];\n const shiftVariation = placement.split(' ')[1];\n if (shiftVariation) {\n const { host, target } = data.offsets;\n const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n const side = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n const shiftOffsets = {\n start: { [side]: host[side] },\n end: {\n [side]: ((_a = host[side]) !== null && _a !== void 0 ? _a : 0) + host[measurement] - target[measurement]\n }\n };\n data.offsets.target = Object.assign(Object.assign({}, target), {\n [side]: (side === shiftVariation ? shiftOffsets.start[side] : shiftOffsets.end[side])\n });\n }\n return data;\n}\n\nclass Positioning {\n position(hostElement, targetElement /*, round = true*/) {\n return this.offset(hostElement, targetElement /*, false*/);\n }\n offset(hostElement, targetElement /*, round = true*/) {\n return getReferenceOffsets(targetElement, hostElement);\n }\n positionElements(hostElement, targetElement, position, appendToBody, options) {\n const chainOfModifiers = [flip, shift, preventOverflow, arrow];\n const _position = MapPlacementInToRL[position];\n const data = initData(targetElement, hostElement, _position, options);\n if (!data) {\n return;\n }\n return chainOfModifiers.reduce((modifiedData, modifier) => modifier(modifiedData), data);\n }\n}\nconst positionService = new Positioning();\nfunction positionElements(hostElement, targetElement, placement, appendToBody, options, renderer) {\n const data = positionService.positionElements(hostElement, targetElement, placement, appendToBody, options);\n if (!data) {\n return;\n }\n const offsets = getOffsets(data);\n setStyles(targetElement, {\n 'will-change': 'transform',\n top: '0px',\n left: '0px',\n transform: `translate3d(${offsets.left}px, ${offsets.top}px, 0px)`\n }, renderer);\n if (data.instance.arrow) {\n setStyles(data.instance.arrow, data.offsets.arrow, renderer);\n }\n updateContainerClass(data, renderer);\n}\n\nclass PositioningService {\n constructor(ngZone, rendererFactory, platformId) {\n this.update$$ = new Subject();\n this.positionElements = new Map();\n this.isDisabled = false;\n if (isPlatformBrowser(platformId)) {\n ngZone.runOutsideAngular(() => {\n this.triggerEvent$ = merge(fromEvent(window, 'scroll', { passive: true }), fromEvent(window, 'resize', { passive: true }), of(0, animationFrameScheduler), this.update$$);\n this.triggerEvent$.subscribe(() => {\n if (this.isDisabled) {\n return;\n }\n this.positionElements\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .forEach((positionElement) => {\n positionElements(_getHtmlElement(positionElement.target), _getHtmlElement(positionElement.element), positionElement.attachment, positionElement.appendToBody, this.options, rendererFactory.createRenderer(null, null));\n });\n });\n });\n }\n }\n position(options) {\n this.addPositionElement(options);\n }\n get event$() {\n return this.triggerEvent$;\n }\n disable() {\n this.isDisabled = true;\n }\n enable() {\n this.isDisabled = false;\n }\n addPositionElement(options) {\n this.positionElements.set(_getHtmlElement(options.element), options);\n }\n calcPosition() {\n this.update$$.next(null);\n }\n deletePositionElement(elRef) {\n this.positionElements.delete(_getHtmlElement(elRef));\n }\n setOptions(options) {\n this.options = options;\n }\n}\nPositioningService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: PositioningService, deps: [{ token: i0.NgZone }, { token: i0.RendererFactory2 }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });\nPositioningService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: PositioningService, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: PositioningService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: i0.NgZone }, { type: i0.RendererFactory2 }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }];\n } });\nfunction _getHtmlElement(element) {\n // it means that we got a selector\n if (typeof element === 'string') {\n return document.querySelector(element);\n }\n if (element instanceof ElementRef) {\n return element.nativeElement;\n }\n return element !== null && element !== void 0 ? element : null;\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { PlacementForBs5, Positioning, PositioningService, checkMargins, positionElements };\n","import * as i0 from '@angular/core';\nimport { Directive, Input, Injectable, Component, HostBinding, EventEmitter, Output, NgModule } from '@angular/core';\nimport * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\n\nclass NgTranscludeDirective {\n constructor(viewRef) {\n this.viewRef = viewRef;\n }\n set ngTransclude(templateRef) {\n this._ngTransclude = templateRef;\n if (templateRef) {\n this.viewRef.createEmbeddedView(templateRef);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get ngTransclude() {\n return this._ngTransclude;\n }\n}\nNgTranscludeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: NgTranscludeDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgTranscludeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.1.1\", type: NgTranscludeDirective, selector: \"[ngTransclude]\", inputs: { ngTransclude: \"ngTransclude\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: NgTranscludeDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngTransclude]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { ngTransclude: [{\n type: Input\n }] } });\n\nclass TabsetConfig {\n constructor() {\n /** provides default navigation context class: 'tabs' or 'pills' */\n this.type = 'tabs';\n /** provides possibility to set keyNavigations enable or disable, by default is enable */\n this.isKeysAllowed = true;\n /** aria label for tab list */\n this.ariaLabel = 'Tabs';\n }\n}\nTabsetConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TabsetConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nTabsetConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TabsetConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TabsetConfig, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\n\n// todo: add active event to tab\n// todo: fix? mixing static and dynamic tabs position tabs in order of creation\nclass TabsetComponent {\n constructor(config, renderer, elementRef) {\n this.renderer = renderer;\n this.elementRef = elementRef;\n this.clazz = true;\n this.tabs = [];\n this.classMap = {};\n /** aria label for tab list */\n this.ariaLabel = 'Tabs';\n this.isDestroyed = false;\n this._vertical = false;\n this._justified = false;\n this._type = 'tabs';\n this._isKeysAllowed = true;\n Object.assign(this, config);\n }\n /** if true tabs will be placed vertically */\n get vertical() {\n return this._vertical;\n }\n set vertical(value) {\n this._vertical = value;\n this.setClassMap();\n }\n /** if true tabs fill the container and have a consistent width */\n get justified() {\n return this._justified;\n }\n set justified(value) {\n this._justified = value;\n this.setClassMap();\n }\n /** navigation context class: 'tabs' or 'pills' */\n get type() {\n return this._type;\n }\n set type(value) {\n this._type = value;\n this.setClassMap();\n }\n get isKeysAllowed() {\n return this._isKeysAllowed;\n }\n set isKeysAllowed(value) {\n this._isKeysAllowed = value;\n }\n ngOnDestroy() {\n this.isDestroyed = true;\n }\n addTab(tab) {\n this.tabs.push(tab);\n tab.active = this.tabs.length === 1 && !tab.active;\n }\n removeTab(tab, options = { reselect: true, emit: true }) {\n const index = this.tabs.indexOf(tab);\n if (index === -1 || this.isDestroyed) {\n return;\n }\n // Select a new tab if the tab to be removed is selected and not destroyed\n if (options.reselect && tab.active && this.hasAvailableTabs(index)) {\n const newActiveIndex = this.getClosestTabIndex(index);\n this.tabs[newActiveIndex].active = true;\n }\n if (options.emit) {\n tab.removed.emit(tab);\n }\n this.tabs.splice(index, 1);\n if (tab.elementRef.nativeElement.parentNode) {\n this.renderer.removeChild(tab.elementRef.nativeElement.parentNode, tab.elementRef.nativeElement);\n }\n }\n keyNavActions(event, index) {\n if (!this.isKeysAllowed) {\n return;\n }\n const list = Array.from(this.elementRef.nativeElement.querySelectorAll('.nav-link'));\n // const activeElList = list.filter((el: HTMLElement) => !el.classList.contains('disabled'));\n if (event.keyCode === 13 || event.key === 'Enter' || event.keyCode === 32 || event.key === 'Space') {\n event.preventDefault();\n const currentTab = list[(index) % list.length];\n currentTab.click();\n return;\n }\n if (event.keyCode === 39 || event.key === 'RightArrow') {\n let nextTab;\n let shift = 1;\n do {\n nextTab = list[(index + shift) % list.length];\n shift++;\n } while (nextTab.classList.contains('disabled'));\n nextTab.focus();\n return;\n }\n if (event.keyCode === 37 || event.key === 'LeftArrow') {\n let previousTab;\n let shift = 1;\n let i = index;\n do {\n if ((i - shift) < 0) {\n i = list.length - 1;\n previousTab = list[i];\n shift = 0;\n }\n else {\n previousTab = list[i - shift];\n }\n shift++;\n } while (previousTab.classList.contains('disabled'));\n previousTab.focus();\n return;\n }\n if (event.keyCode === 36 || event.key === 'Home') {\n event.preventDefault();\n let firstTab;\n let shift = 0;\n do {\n firstTab = list[shift % list.length];\n shift++;\n } while (firstTab.classList.contains('disabled'));\n firstTab.focus();\n return;\n }\n if (event.keyCode === 35 || event.key === 'End') {\n event.preventDefault();\n let lastTab;\n let shift = 1;\n let i = index;\n do {\n if ((i - shift) < 0) {\n i = list.length - 1;\n lastTab = list[i];\n shift = 0;\n }\n else {\n lastTab = list[i - shift];\n }\n shift++;\n } while (lastTab.classList.contains('disabled'));\n lastTab.focus();\n return;\n }\n if (event.keyCode === 46 || event.key === 'Delete') {\n if (this.tabs[index].removable) {\n this.removeTab(this.tabs[index]);\n if (list[index + 1]) {\n list[(index + 1) % list.length].focus();\n return;\n }\n if (list[list.length - 1]) {\n list[0].focus();\n }\n }\n }\n }\n getClosestTabIndex(index) {\n const tabsLength = this.tabs.length;\n if (!tabsLength) {\n return -1;\n }\n for (let step = 1; step <= tabsLength; step += 1) {\n const prevIndex = index - step;\n const nextIndex = index + step;\n if (this.tabs[prevIndex] && !this.tabs[prevIndex].disabled) {\n return prevIndex;\n }\n if (this.tabs[nextIndex] && !this.tabs[nextIndex].disabled) {\n return nextIndex;\n }\n }\n return -1;\n }\n hasAvailableTabs(index) {\n const tabsLength = this.tabs.length;\n if (!tabsLength) {\n return false;\n }\n for (let i = 0; i < tabsLength; i += 1) {\n if (!this.tabs[i].disabled && i !== index) {\n return true;\n }\n }\n return false;\n }\n setClassMap() {\n this.classMap = {\n 'nav-stacked': this.vertical,\n 'flex-column': this.vertical,\n 'nav-justified': this.justified,\n [`nav-${this.type}`]: true\n };\n }\n}\nTabsetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TabsetComponent, deps: [{ token: TabsetConfig }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nTabsetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.1\", type: TabsetComponent, selector: \"tabset\", inputs: { vertical: \"vertical\", justified: \"justified\", type: \"type\" }, host: { properties: { \"class.tab-container\": \"this.clazz\" } }, ngImport: i0, template: \"\\n
\\n \\n
\\n\", styles: [\":host .nav-tabs .nav-item.disabled a.disabled{cursor:default}\\n\"], directives: [{ type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: NgTranscludeDirective, selector: \"[ngTransclude]\", inputs: [\"ngTransclude\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TabsetComponent, decorators: [{\n type: Component,\n args: [{ selector: 'tabset', template: \"\\n
\\n \\n
\\n\", styles: [\":host .nav-tabs .nav-item.disabled a.disabled{cursor:default}\\n\"] }]\n }], ctorParameters: function () { return [{ type: TabsetConfig }, { type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { vertical: [{\n type: Input\n }], justified: [{\n type: Input\n }], type: [{\n type: Input\n }], clazz: [{\n type: HostBinding,\n args: ['class.tab-container']\n }] } });\n\nclass TabDirective {\n constructor(tabset, elementRef, renderer) {\n this.elementRef = elementRef;\n this.renderer = renderer;\n /** if true tab can not be activated */\n this.disabled = false;\n /** if true tab can be removable, additional button will appear */\n this.removable = false;\n /** fired when tab became active, $event:Tab equals to selected instance of Tab component */\n this.selectTab = new EventEmitter();\n /** fired when tab became inactive, $event:Tab equals to deselected instance of Tab component */\n this.deselect = new EventEmitter();\n /** fired before tab will be removed, $event:Tab equals to instance of removed tab */\n this.removed = new EventEmitter();\n this.addClass = true;\n this.role = 'tabpanel';\n this._active = false;\n this._customClass = '';\n this.tabset = tabset;\n this.tabset.addTab(this);\n }\n /** if set, will be added to the tab's class attribute. Multiple classes are supported. */\n get customClass() {\n return this._customClass;\n }\n set customClass(customClass) {\n if (this.customClass) {\n this.customClass.split(' ').forEach((cssClass) => {\n this.renderer.removeClass(this.elementRef.nativeElement, cssClass);\n });\n }\n this._customClass = customClass ? customClass.trim() : '';\n if (this.customClass) {\n this.customClass.split(' ').forEach((cssClass) => {\n this.renderer.addClass(this.elementRef.nativeElement, cssClass);\n });\n }\n }\n /** tab active state toggle */\n get active() {\n return this._active;\n }\n set active(active) {\n if (this._active === active) {\n return;\n }\n if ((this.disabled && active) || !active) {\n if (this._active && !active) {\n this.deselect.emit(this);\n this._active = active;\n }\n return;\n }\n this._active = active;\n this.selectTab.emit(this);\n this.tabset.tabs.forEach((tab) => {\n if (tab !== this) {\n tab.active = false;\n }\n });\n }\n get ariaLabelledby() {\n return this.id ? `${this.id}-link` : '';\n }\n ngOnInit() {\n this.removable = !!this.removable;\n }\n ngOnDestroy() {\n this.tabset.removeTab(this, { reselect: false, emit: false });\n }\n}\nTabDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TabDirective, deps: [{ token: TabsetComponent }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nTabDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.1.1\", type: TabDirective, selector: \"tab, [tab]\", inputs: { heading: \"heading\", id: \"id\", disabled: \"disabled\", removable: \"removable\", customClass: \"customClass\", active: \"active\" }, outputs: { selectTab: \"selectTab\", deselect: \"deselect\", removed: \"removed\" }, host: { properties: { \"attr.id\": \"this.id\", \"class.active\": \"this.active\", \"class.tab-pane\": \"this.addClass\", \"attr.role\": \"this.role\", \"attr.aria-labelledby\": \"this.ariaLabelledby\" } }, exportAs: [\"tab\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TabDirective, decorators: [{\n type: Directive,\n args: [{ selector: 'tab, [tab]', exportAs: 'tab' }]\n }], ctorParameters: function () { return [{ type: TabsetComponent }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { heading: [{\n type: Input\n }], id: [{\n type: HostBinding,\n args: ['attr.id']\n }, {\n type: Input\n }], disabled: [{\n type: Input\n }], removable: [{\n type: Input\n }], customClass: [{\n type: Input\n }], active: [{\n type: HostBinding,\n args: ['class.active']\n }, {\n type: Input\n }], selectTab: [{\n type: Output\n }], deselect: [{\n type: Output\n }], removed: [{\n type: Output\n }], addClass: [{\n type: HostBinding,\n args: ['class.tab-pane']\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }], ariaLabelledby: [{\n type: HostBinding,\n args: ['attr.aria-labelledby']\n }] } });\n\n/** Should be used to mark element as a template for tab heading */\nclass TabHeadingDirective {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(templateRef, tab) {\n tab.headingRef = templateRef;\n }\n}\nTabHeadingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TabHeadingDirective, deps: [{ token: i0.TemplateRef }, { token: TabDirective }], target: i0.ɵɵFactoryTarget.Directive });\nTabHeadingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.1.1\", type: TabHeadingDirective, selector: \"[tabHeading]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TabHeadingDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[tabHeading]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: TabDirective }]; } });\n\nclass TabsModule {\n static forRoot() {\n return {\n ngModule: TabsModule,\n providers: []\n };\n }\n}\nTabsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TabsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTabsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TabsModule, declarations: [NgTranscludeDirective,\n TabDirective,\n TabsetComponent,\n TabHeadingDirective], imports: [CommonModule], exports: [TabDirective,\n TabsetComponent,\n TabHeadingDirective,\n NgTranscludeDirective] });\nTabsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TabsModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TabsModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n declarations: [\n NgTranscludeDirective,\n TabDirective,\n TabsetComponent,\n TabHeadingDirective\n ],\n exports: [\n TabDirective,\n TabsetComponent,\n TabHeadingDirective,\n NgTranscludeDirective\n ]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NgTranscludeDirective, TabDirective, TabHeadingDirective, TabsModule, TabsetComponent, TabsetConfig };\n","import * as i0 from '@angular/core';\nimport { Injectable, forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\nimport { MiniStore, MiniState } from 'ngx-bootstrap/mini-ngrx';\nimport * as i4 from '@angular/common';\nimport { CommonModule } from '@angular/common';\n\nconst dex = 10;\nconst hoursPerDay = 24;\nconst hoursPerDayHalf = 12;\nconst minutesPerHour = 60;\nconst secondsPerMinute = 60;\nfunction isValidDate(value) {\n if (!value) {\n return false;\n }\n if (value instanceof Date && isNaN(value.getHours())) {\n return false;\n }\n if (typeof value === 'string') {\n return isValidDate(new Date(value));\n }\n return true;\n}\nfunction isValidLimit(controls, newDate) {\n if (controls.min && newDate < controls.min) {\n return false;\n }\n if (controls.max && newDate > controls.max) {\n return false;\n }\n return true;\n}\nfunction toNumber(value) {\n if (typeof value === 'undefined') {\n return NaN;\n }\n if (typeof value === 'number') {\n return value;\n }\n return parseInt(value, dex);\n}\nfunction isNumber(value) {\n return !isNaN(toNumber(value));\n}\nfunction parseHours(value, isPM = false) {\n const hour = toNumber(value);\n if (isNaN(hour) ||\n hour < 0 ||\n hour > (isPM ? hoursPerDayHalf : hoursPerDay)) {\n return NaN;\n }\n return hour;\n}\nfunction parseMinutes(value) {\n const minute = toNumber(value);\n if (isNaN(minute) || minute < 0 || minute > minutesPerHour) {\n return NaN;\n }\n return minute;\n}\nfunction parseSeconds(value) {\n const seconds = toNumber(value);\n if (isNaN(seconds) || seconds < 0 || seconds > secondsPerMinute) {\n return NaN;\n }\n return seconds;\n}\nfunction parseTime(value) {\n if (typeof value === 'string') {\n return new Date(value);\n }\n return value;\n}\nfunction changeTime(value, diff) {\n if (!value) {\n return changeTime(createDate(new Date(), 0, 0, 0), diff);\n }\n if (!diff) {\n return value;\n }\n let hour = value.getHours();\n let minutes = value.getMinutes();\n let seconds = value.getSeconds();\n if (diff.hour) {\n hour = hour + toNumber(diff.hour);\n }\n if (diff.minute) {\n minutes = minutes + toNumber(diff.minute);\n }\n if (diff.seconds) {\n seconds = seconds + toNumber(diff.seconds);\n }\n return createDate(value, hour, minutes, seconds);\n}\nfunction setTime(value, opts) {\n let hour = parseHours(opts.hour);\n const minute = parseMinutes(opts.minute);\n const seconds = parseSeconds(opts.seconds) || 0;\n if (opts.isPM && hour !== 12) {\n hour += hoursPerDayHalf;\n }\n if (!value) {\n if (!isNaN(hour) && !isNaN(minute)) {\n return createDate(new Date(), hour, minute, seconds);\n }\n return value;\n }\n if (isNaN(hour) || isNaN(minute)) {\n return value;\n }\n return createDate(value, hour, minute, seconds);\n}\nfunction createDate(value, hours, minutes, seconds) {\n const newValue = new Date(value.getFullYear(), value.getMonth(), value.getDate(), hours, minutes, seconds, value.getMilliseconds());\n // #3139 ensure date part remains unchanged\n newValue.setFullYear(value.getFullYear());\n newValue.setMonth(value.getMonth());\n newValue.setDate(value.getDate());\n return newValue;\n}\nfunction padNumber(value) {\n const _value = value.toString();\n if (_value.length > 1) {\n return _value;\n }\n return `0${_value}`;\n}\nfunction isHourInputValid(hours, isPM) {\n return !isNaN(parseHours(hours, isPM));\n}\nfunction isMinuteInputValid(minutes) {\n return !isNaN(parseMinutes(minutes));\n}\nfunction isSecondInputValid(seconds) {\n return !isNaN(parseSeconds(seconds));\n}\nfunction isInputLimitValid(diff, max, min) {\n const newDate = setTime(new Date(), diff);\n if (!newDate) {\n return false;\n }\n if (max && newDate > max) {\n return false;\n }\n if (min && newDate < min) {\n return false;\n }\n return true;\n}\nfunction isOneOfDatesEmpty(hours, minutes, seconds) {\n return hours.length === 0 || minutes.length === 0 || seconds.length === 0;\n}\nfunction isInputValid(hours, minutes = '0', seconds = '0', isPM) {\n return isHourInputValid(hours, isPM)\n && isMinuteInputValid(minutes)\n && isSecondInputValid(seconds);\n}\n\nfunction canChangeValue(state, event) {\n if (state.readonlyInput || state.disabled) {\n return false;\n }\n if (event) {\n if (event.source === 'wheel' && !state.mousewheel) {\n return false;\n }\n if (event.source === 'key' && !state.arrowkeys) {\n return false;\n }\n }\n return true;\n}\nfunction canChangeHours(event, controls) {\n if (!event.step) {\n return false;\n }\n if (event.step > 0 && !controls.canIncrementHours) {\n return false;\n }\n if (event.step < 0 && !controls.canDecrementHours) {\n return false;\n }\n return true;\n}\nfunction canChangeMinutes(event, controls) {\n if (!event.step) {\n return false;\n }\n if (event.step > 0 && !controls.canIncrementMinutes) {\n return false;\n }\n if (event.step < 0 && !controls.canDecrementMinutes) {\n return false;\n }\n return true;\n}\nfunction canChangeSeconds(event, controls) {\n if (!event.step) {\n return false;\n }\n if (event.step > 0 && !controls.canIncrementSeconds) {\n return false;\n }\n if (event.step < 0 && !controls.canDecrementSeconds) {\n return false;\n }\n return true;\n}\nfunction getControlsValue(state) {\n const { hourStep, minuteStep, secondsStep, readonlyInput, disabled, mousewheel, arrowkeys, showSpinners, showMeridian, showSeconds, meridians, min, max } = state;\n return {\n hourStep,\n minuteStep,\n secondsStep,\n readonlyInput,\n disabled,\n mousewheel,\n arrowkeys,\n showSpinners,\n showMeridian,\n showSeconds,\n meridians,\n min,\n max\n };\n}\nfunction timepickerControls(value, state) {\n const hoursPerDay = 24;\n const hoursPerDayHalf = 12;\n const { min, max, hourStep, minuteStep, secondsStep, showSeconds } = state;\n const res = {\n canIncrementHours: true,\n canIncrementMinutes: true,\n canIncrementSeconds: true,\n canDecrementHours: true,\n canDecrementMinutes: true,\n canDecrementSeconds: true,\n canToggleMeridian: true\n };\n if (!value) {\n return res;\n }\n // compare dates\n if (max) {\n const _newHour = changeTime(value, { hour: hourStep });\n res.canIncrementHours = max > _newHour && (value.getHours() + hourStep) < hoursPerDay;\n if (!res.canIncrementHours) {\n const _newMinutes = changeTime(value, { minute: minuteStep });\n res.canIncrementMinutes = showSeconds\n ? max > _newMinutes\n : max >= _newMinutes;\n }\n if (!res.canIncrementMinutes) {\n const _newSeconds = changeTime(value, { seconds: secondsStep });\n res.canIncrementSeconds = max >= _newSeconds;\n }\n if (value.getHours() < hoursPerDayHalf) {\n res.canToggleMeridian = changeTime(value, { hour: hoursPerDayHalf }) < max;\n }\n }\n if (min) {\n const _newHour = changeTime(value, { hour: -hourStep });\n res.canDecrementHours = min < _newHour;\n if (!res.canDecrementHours) {\n const _newMinutes = changeTime(value, { minute: -minuteStep });\n res.canDecrementMinutes = showSeconds\n ? min < _newMinutes\n : min <= _newMinutes;\n }\n if (!res.canDecrementMinutes) {\n const _newSeconds = changeTime(value, { seconds: -secondsStep });\n res.canDecrementSeconds = min <= _newSeconds;\n }\n if (value.getHours() >= hoursPerDayHalf) {\n res.canToggleMeridian = changeTime(value, { hour: -hoursPerDayHalf }) > min;\n }\n }\n return res;\n}\n\n/** Provides default configuration values for timepicker */\nclass TimepickerConfig {\n constructor() {\n /** hours change step */\n this.hourStep = 1;\n /** minutes change step */\n this.minuteStep = 5;\n /** seconds changes step */\n this.secondsStep = 10;\n /** if true works in 12H mode and displays AM/PM. If false works in 24H mode and hides AM/PM */\n this.showMeridian = true;\n /** meridian labels based on locale */\n this.meridians = ['AM', 'PM'];\n /** if true hours and minutes fields will be readonly */\n this.readonlyInput = false;\n /** if true hours and minutes fields will be disabled */\n this.disabled = false;\n /** if true emptyTime is not marked as invalid */\n this.allowEmptyTime = false;\n /** if true scroll inside hours and minutes inputs will change time */\n this.mousewheel = true;\n /** if true the values of hours and minutes can be changed using the up/down arrow keys on the keyboard */\n this.arrowkeys = true;\n /** if true spinner arrows above and below the inputs will be shown */\n this.showSpinners = true;\n /** show seconds in timepicker */\n this.showSeconds = false;\n /** show minutes in timepicker */\n this.showMinutes = true;\n /** placeholder for hours field in timepicker */\n this.hoursPlaceholder = 'HH';\n /** placeholder for minutes field in timepicker */\n this.minutesPlaceholder = 'MM';\n /** placeholder for seconds field in timepicker */\n this.secondsPlaceholder = 'SS';\n /** hours aria label */\n this.ariaLabelHours = 'hours';\n /** minutes aria label */\n this.ariaLabelMinutes = 'minutes';\n /** seconds aria label */\n this.ariaLabelSeconds = 'seconds';\n }\n}\nTimepickerConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TimepickerConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nTimepickerConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TimepickerConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TimepickerConfig, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\n\nclass TimepickerActions {\n writeValue(value) {\n return {\n type: TimepickerActions.WRITE_VALUE,\n payload: value\n };\n }\n changeHours(event) {\n return {\n type: TimepickerActions.CHANGE_HOURS,\n payload: event\n };\n }\n changeMinutes(event) {\n return {\n type: TimepickerActions.CHANGE_MINUTES,\n payload: event\n };\n }\n changeSeconds(event) {\n return {\n type: TimepickerActions.CHANGE_SECONDS,\n payload: event\n };\n }\n setTime(value) {\n return {\n type: TimepickerActions.SET_TIME_UNIT,\n payload: value\n };\n }\n updateControls(value) {\n return {\n type: TimepickerActions.UPDATE_CONTROLS,\n payload: value\n };\n }\n}\nTimepickerActions.WRITE_VALUE = '[timepicker] write value from ng model';\nTimepickerActions.CHANGE_HOURS = '[timepicker] change hours';\nTimepickerActions.CHANGE_MINUTES = '[timepicker] change minutes';\nTimepickerActions.CHANGE_SECONDS = '[timepicker] change seconds';\nTimepickerActions.SET_TIME_UNIT = '[timepicker] set time unit';\nTimepickerActions.UPDATE_CONTROLS = '[timepicker] update controls';\nTimepickerActions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TimepickerActions, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nTimepickerActions.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TimepickerActions, providedIn: 'platform' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TimepickerActions, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'platform' }]\n }] });\n\nconst initialState = {\n value: void 0,\n config: new TimepickerConfig(),\n controls: {\n canIncrementHours: true,\n canIncrementMinutes: true,\n canIncrementSeconds: true,\n canDecrementHours: true,\n canDecrementMinutes: true,\n canDecrementSeconds: true,\n canToggleMeridian: true\n }\n};\nfunction timepickerReducer(state = initialState, action) {\n switch (action.type) {\n case TimepickerActions.WRITE_VALUE: {\n return Object.assign({}, state, { value: action.payload });\n }\n case TimepickerActions.CHANGE_HOURS: {\n if (!canChangeValue(state.config, action.payload) ||\n !canChangeHours(action.payload, state.controls)) {\n return state;\n }\n const _newTime = changeTime(state.value, { hour: action.payload.step });\n if ((state.config.max || state.config.min) && !isValidLimit(state.config, _newTime)) {\n return state;\n }\n return Object.assign({}, state, { value: _newTime });\n }\n case TimepickerActions.CHANGE_MINUTES: {\n if (!canChangeValue(state.config, action.payload) ||\n !canChangeMinutes(action.payload, state.controls)) {\n return state;\n }\n const _newTime = changeTime(state.value, { minute: action.payload.step });\n if ((state.config.max || state.config.min) && !isValidLimit(state.config, _newTime)) {\n return state;\n }\n return Object.assign({}, state, { value: _newTime });\n }\n case TimepickerActions.CHANGE_SECONDS: {\n if (!canChangeValue(state.config, action.payload) ||\n !canChangeSeconds(action.payload, state.controls)) {\n return state;\n }\n const _newTime = changeTime(state.value, {\n seconds: action.payload.step\n });\n if ((state.config.max || state.config.min) && !isValidLimit(state.config, _newTime)) {\n return state;\n }\n return Object.assign({}, state, { value: _newTime });\n }\n case TimepickerActions.SET_TIME_UNIT: {\n if (!canChangeValue(state.config)) {\n return state;\n }\n const _newTime = setTime(state.value, action.payload);\n return Object.assign({}, state, { value: _newTime });\n }\n case TimepickerActions.UPDATE_CONTROLS: {\n const _newControlsState = timepickerControls(state.value, action.payload);\n const _newState = {\n value: state.value,\n config: action.payload,\n controls: _newControlsState\n };\n if (state.config.showMeridian !== _newState.config.showMeridian) {\n if (state.value) {\n _newState.value = new Date(state.value);\n }\n }\n return Object.assign({}, state, _newState);\n }\n default:\n return state;\n }\n}\n\nclass TimepickerStore extends MiniStore {\n constructor() {\n const _dispatcher = new BehaviorSubject({\n type: '[mini-ngrx] dispatcher init'\n });\n const state = new MiniState(initialState, _dispatcher, timepickerReducer);\n super(_dispatcher, timepickerReducer, state);\n }\n}\nTimepickerStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TimepickerStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nTimepickerStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TimepickerStore, providedIn: 'platform' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TimepickerStore, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'platform' }]\n }], ctorParameters: function () { return []; } });\n\nconst TIMEPICKER_CONTROL_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TimepickerComponent),\n multi: true\n};\nclass TimepickerComponent {\n constructor(_config, _cd, _store, _timepickerActions) {\n this._cd = _cd;\n this._store = _store;\n this._timepickerActions = _timepickerActions;\n /** hours change step */\n this.hourStep = 1;\n /** minutes change step */\n this.minuteStep = 5;\n /** seconds change step */\n this.secondsStep = 10;\n /** if true hours and minutes fields will be readonly */\n this.readonlyInput = false;\n /** if true hours and minutes fields will be disabled */\n this.disabled = false;\n /** if true scroll inside hours and minutes inputs will change time */\n this.mousewheel = true;\n /** if true the values of hours and minutes can be changed using the up/down arrow keys on the keyboard */\n this.arrowkeys = true;\n /** if true spinner arrows above and below the inputs will be shown */\n this.showSpinners = true;\n /** if true meridian button will be shown */\n this.showMeridian = true;\n /** show minutes in timepicker */\n this.showMinutes = true;\n /** show seconds in timepicker */\n this.showSeconds = false;\n /** meridian labels based on locale */\n this.meridians = ['AM', 'PM'];\n /** placeholder for hours field in timepicker */\n this.hoursPlaceholder = 'HH';\n /** placeholder for minutes field in timepicker */\n this.minutesPlaceholder = 'MM';\n /** placeholder for seconds field in timepicker */\n this.secondsPlaceholder = 'SS';\n /** emits true if value is a valid date */\n this.isValid = new EventEmitter();\n /** emits value of meridian*/\n this.meridianChange = new EventEmitter();\n // ui variables\n this.hours = '';\n this.minutes = '';\n this.seconds = '';\n this.meridian = '';\n // min\\max validation for input fields\n this.invalidHours = false;\n this.invalidMinutes = false;\n this.invalidSeconds = false;\n // aria-label variables\n this.labelHours = 'hours';\n this.labelMinutes = 'minutes';\n this.labelSeconds = 'seconds';\n // time picker controls state\n this.canIncrementHours = true;\n this.canIncrementMinutes = true;\n this.canIncrementSeconds = true;\n this.canDecrementHours = true;\n this.canDecrementMinutes = true;\n this.canDecrementSeconds = true;\n this.canToggleMeridian = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.onChange = Function.prototype;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.onTouched = Function.prototype;\n this.config = _config;\n Object.assign(this, this.config);\n this.timepickerSub = _store.select(state => state.value)\n .subscribe((value) => {\n // update UI values if date changed\n this._renderTime(value);\n this.onChange(value);\n this._store.dispatch(this._timepickerActions.updateControls(getControlsValue(this)));\n });\n _store.select(state => state.controls)\n .subscribe((controlsState) => {\n const isTimepickerInputValid = isInputValid(this.hours, this.minutes, this.seconds, this.isPM());\n const isValid = this.config.allowEmptyTime ?\n this.isOneOfDatesIsEmpty() || isTimepickerInputValid\n : isTimepickerInputValid;\n this.isValid.emit(isValid);\n Object.assign(this, controlsState);\n _cd.markForCheck();\n });\n }\n /** @deprecated - please use `isEditable` instead */\n get isSpinnersVisible() {\n return this.showSpinners && !this.readonlyInput;\n }\n get isEditable() {\n return !(this.readonlyInput || this.disabled);\n }\n resetValidation() {\n this.invalidHours = false;\n this.invalidMinutes = false;\n this.invalidSeconds = false;\n }\n isPM() {\n return this.showMeridian && this.meridian === this.meridians[1];\n }\n prevDef($event) {\n $event.preventDefault();\n }\n wheelSign($event) {\n return Math.sign($event.deltaY || 0) * -1;\n }\n ngOnChanges() {\n this._store.dispatch(this._timepickerActions.updateControls(getControlsValue(this)));\n }\n changeHours(step, source = '') {\n this.resetValidation();\n this._store.dispatch(this._timepickerActions.changeHours({ step, source }));\n }\n changeMinutes(step, source = '') {\n this.resetValidation();\n this._store.dispatch(this._timepickerActions.changeMinutes({ step, source }));\n }\n changeSeconds(step, source = '') {\n this.resetValidation();\n this._store.dispatch(this._timepickerActions.changeSeconds({ step, source }));\n }\n updateHours(target) {\n this.resetValidation();\n this.hours = target.value;\n const isTimepickerInputValid = isHourInputValid(this.hours, this.isPM()) && this.isValidLimit();\n const isValid = this.config.allowEmptyTime ?\n this.isOneOfDatesIsEmpty() || isTimepickerInputValid\n : isTimepickerInputValid;\n if (!isValid) {\n this.invalidHours = true;\n this.isValid.emit(false);\n this.onChange(null);\n return;\n }\n this._updateTime();\n }\n updateMinutes(target) {\n this.resetValidation();\n this.minutes = target.value;\n const isTimepickerInputValid = isMinuteInputValid(this.minutes) && this.isValidLimit();\n const isValid = this.config.allowEmptyTime ?\n this.isOneOfDatesIsEmpty() || isTimepickerInputValid\n : isTimepickerInputValid;\n if (!isValid) {\n this.invalidMinutes = true;\n this.isValid.emit(false);\n this.onChange(null);\n return;\n }\n this._updateTime();\n }\n updateSeconds(target) {\n this.resetValidation();\n this.seconds = target.value;\n const isTimepickerInputValid = isSecondInputValid(this.seconds) && this.isValidLimit();\n const isValid = this.config.allowEmptyTime ?\n this.isOneOfDatesIsEmpty() || isTimepickerInputValid\n : isTimepickerInputValid;\n if (!isValid) {\n this.invalidSeconds = true;\n this.isValid.emit(false);\n this.onChange(null);\n return;\n }\n this._updateTime();\n }\n isValidLimit() {\n return isInputLimitValid({\n hour: this.hours,\n minute: this.minutes,\n seconds: this.seconds,\n isPM: this.isPM()\n }, this.max, this.min);\n }\n isOneOfDatesIsEmpty() {\n return isOneOfDatesEmpty(this.hours, this.minutes, this.seconds);\n }\n _updateTime() {\n const _seconds = this.showSeconds ? this.seconds : void 0;\n const _minutes = this.showMinutes ? this.minutes : void 0;\n const isTimepickerInputValid = isInputValid(this.hours, _minutes, _seconds, this.isPM());\n const isValid = this.config.allowEmptyTime ?\n this.isOneOfDatesIsEmpty() || isTimepickerInputValid\n : isTimepickerInputValid;\n if (!isValid) {\n this.isValid.emit(false);\n this.onChange(null);\n return;\n }\n this._store.dispatch(this._timepickerActions.setTime({\n hour: this.hours,\n minute: this.minutes,\n seconds: this.seconds,\n isPM: this.isPM()\n }));\n }\n toggleMeridian() {\n if (!this.showMeridian || !this.isEditable) {\n return;\n }\n const _hoursPerDayHalf = 12;\n this._store.dispatch(this._timepickerActions.changeHours({\n step: _hoursPerDayHalf,\n source: ''\n }));\n }\n /**\n * Write a new value to the element.\n */\n writeValue(obj) {\n if (isValidDate(obj)) {\n this.resetValidation();\n this._store.dispatch(this._timepickerActions.writeValue(parseTime(obj)));\n }\n else if (obj == null) {\n this._store.dispatch(this._timepickerActions.writeValue());\n }\n }\n /**\n * Set the function to be called when the control receives a change event.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnChange(fn) {\n this.onChange = fn;\n }\n /**\n * Set the function to be called when the control receives a touch event.\n */\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n /**\n * This function is called when the control status changes to or from \"disabled\".\n * Depending on the value, it will enable or disable the appropriate DOM element.\n *\n * @param isDisabled\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this._cd.markForCheck();\n }\n ngOnDestroy() {\n var _a;\n (_a = this.timepickerSub) === null || _a === void 0 ? void 0 : _a.unsubscribe();\n }\n _renderTime(value) {\n if (!value || !isValidDate(value)) {\n this.hours = '';\n this.minutes = '';\n this.seconds = '';\n this.meridian = this.meridians[0];\n this.meridianChange.emit(this.meridian);\n return;\n }\n const _value = parseTime(value);\n if (!_value) {\n return;\n }\n const _hoursPerDayHalf = 12;\n let _hours = _value.getHours();\n if (this.showMeridian) {\n this.meridian = this.meridians[_hours >= _hoursPerDayHalf ? 1 : 0];\n this.meridianChange.emit(this.meridian);\n _hours = _hours % _hoursPerDayHalf;\n // should be 12 PM, not 00 PM\n if (_hours === 0) {\n _hours = _hoursPerDayHalf;\n }\n }\n this.hours = padNumber(_hours);\n this.minutes = padNumber(_value.getMinutes());\n this.seconds = padNumber(_value.getUTCSeconds());\n }\n}\nTimepickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TimepickerComponent, deps: [{ token: TimepickerConfig }, { token: i0.ChangeDetectorRef }, { token: TimepickerStore }, { token: TimepickerActions }], target: i0.ɵɵFactoryTarget.Component });\nTimepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.1\", type: TimepickerComponent, selector: \"timepicker\", inputs: { hourStep: \"hourStep\", minuteStep: \"minuteStep\", secondsStep: \"secondsStep\", readonlyInput: \"readonlyInput\", disabled: \"disabled\", mousewheel: \"mousewheel\", arrowkeys: \"arrowkeys\", showSpinners: \"showSpinners\", showMeridian: \"showMeridian\", showMinutes: \"showMinutes\", showSeconds: \"showSeconds\", meridians: \"meridians\", min: \"min\", max: \"max\", hoursPlaceholder: \"hoursPlaceholder\", minutesPlaceholder: \"minutesPlaceholder\", secondsPlaceholder: \"secondsPlaceholder\" }, outputs: { isValid: \"isValid\", meridianChange: \"meridianChange\" }, providers: [TIMEPICKER_CONTROL_VALUE_ACCESSOR, TimepickerStore], usesOnChanges: true, ngImport: i0, template: \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n \\n    \\n \\n  \\n \\n \\n \\n    
\\n  : \\n \\n  : \\n \\n    \\n \\n
\\n \\n \\n \\n    \\n \\n \\n \\n  \\n \\n \\n \\n    
\\n\", styles: [\".bs-chevron{border-style:solid;display:block;width:9px;height:9px;position:relative;border-width:3px 0px 0 3px}.bs-chevron-up{transform:rotate(45deg);top:2px}.bs-chevron-down{transform:rotate(-135deg);top:-2px}.bs-timepicker-field{width:65px;padding:.375rem .55rem}\\n\"], directives: [{ type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TimepickerComponent, decorators: [{\n type: Component,\n args: [{ selector: 'timepicker', changeDetection: ChangeDetectionStrategy.OnPush, providers: [TIMEPICKER_CONTROL_VALUE_ACCESSOR, TimepickerStore], styles: [`\n .bs-chevron {\n border-style: solid;\n display: block;\n width: 9px;\n height: 9px;\n position: relative;\n border-width: 3px 0px 0 3px;\n }\n\n .bs-chevron-up {\n -webkit-transform: rotate(45deg);\n transform: rotate(45deg);\n top: 2px;\n }\n\n .bs-chevron-down {\n -webkit-transform: rotate(-135deg);\n transform: rotate(-135deg);\n top: -2px;\n }\n\n .bs-timepicker-field {\n width: 65px;\n padding: .375rem .55rem;\n }\n `], encapsulation: ViewEncapsulation.None, template: \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n \\n    \\n \\n  \\n \\n \\n \\n    
\\n  : \\n \\n  : \\n \\n    \\n \\n
\\n \\n \\n \\n    \\n \\n \\n \\n  \\n \\n \\n \\n    
\\n\" }]\n }], ctorParameters: function () { return [{ type: TimepickerConfig }, { type: i0.ChangeDetectorRef }, { type: TimepickerStore }, { type: TimepickerActions }]; }, propDecorators: { hourStep: [{\n type: Input\n }], minuteStep: [{\n type: Input\n }], secondsStep: [{\n type: Input\n }], readonlyInput: [{\n type: Input\n }], disabled: [{\n type: Input\n }], mousewheel: [{\n type: Input\n }], arrowkeys: [{\n type: Input\n }], showSpinners: [{\n type: Input\n }], showMeridian: [{\n type: Input\n }], showMinutes: [{\n type: Input\n }], showSeconds: [{\n type: Input\n }], meridians: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], hoursPlaceholder: [{\n type: Input\n }], minutesPlaceholder: [{\n type: Input\n }], secondsPlaceholder: [{\n type: Input\n }], isValid: [{\n type: Output\n }], meridianChange: [{\n type: Output\n }] } });\n\nclass TimepickerModule {\n static forRoot() {\n return {\n ngModule: TimepickerModule,\n providers: [TimepickerActions, TimepickerStore]\n };\n }\n}\nTimepickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TimepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTimepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TimepickerModule, declarations: [TimepickerComponent], imports: [CommonModule], exports: [TimepickerComponent] });\nTimepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TimepickerModule, providers: [TimepickerStore], imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TimepickerModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n declarations: [TimepickerComponent],\n exports: [TimepickerComponent],\n providers: [TimepickerStore]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { TimepickerActions, TimepickerComponent, TimepickerConfig, TimepickerModule, TimepickerStore };\n","import * as i0 from '@angular/core';\nimport { Injectable, Component, ChangeDetectionStrategy, EventEmitter, Directive, Input, Output, NgModule } from '@angular/core';\nimport { getBsVer, warnOnce, parseTriggers, OnChange } from 'ngx-bootstrap/utils';\nimport * as i3 from 'ngx-bootstrap/positioning';\nimport { PlacementForBs5, PositioningService } from 'ngx-bootstrap/positioning';\nimport { __decorate, __metadata } from 'tslib';\nimport { timer } from 'rxjs';\nimport * as i1 from 'ngx-bootstrap/component-loader';\nimport { ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\nimport { CommonModule } from '@angular/common';\n\n/** Default values provider for tooltip */\nclass TooltipConfig {\n constructor() {\n /** sets disable adaptive position */\n this.adaptivePosition = true;\n /** tooltip placement, supported positions: 'top', 'bottom', 'left', 'right' */\n this.placement = 'top';\n /** array of event names which triggers tooltip opening */\n this.triggers = 'hover focus';\n /** delay before showing the tooltip */\n this.delay = 0;\n }\n}\nTooltipConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TooltipConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nTooltipConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TooltipConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TooltipConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\nclass TooltipContainerComponent {\n constructor(config) {\n Object.assign(this, config);\n }\n get _bsVersions() {\n return getBsVer();\n }\n ngAfterViewInit() {\n this.classMap = { in: false, fade: false };\n if (this.placement) {\n if (this._bsVersions.isBs5) {\n this.placement = PlacementForBs5[this.placement];\n }\n this.classMap[this.placement] = true;\n }\n this.classMap[`tooltip-${this.placement}`] = true;\n this.classMap[\"in\"] = true;\n if (this.animation) {\n this.classMap[\"fade\"] = true;\n }\n if (this.containerClass) {\n this.classMap[this.containerClass] = true;\n }\n }\n}\nTooltipContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TooltipContainerComponent, deps: [{ token: TooltipConfig }], target: i0.ɵɵFactoryTarget.Component });\nTooltipContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.1\", type: TooltipContainerComponent, selector: \"bs-tooltip-container\", host: { attributes: { \"role\": \"tooltip\" }, properties: { \"class\": \"\\\"tooltip in tooltip-\\\" + placement + \\\" \\\" + \\\"bs-tooltip-\\\" + placement + \\\" \\\" + placement + \\\" \\\" + containerClass\", \"class.show\": \"!_bsVersions.isBs3\", \"class.bs3\": \"_bsVersions.isBs3\", \"attr.id\": \"this.id\" } }, ngImport: i0, template: `\n
\n
\n `, isInline: true, styles: [\":host.tooltip{display:block;pointer-events:none}:host.bs3.tooltip.top>.arrow{margin-left:-2px}:host.bs3.tooltip.bottom{margin-top:0}:host.bs3.bs-tooltip-left,:host.bs3.bs-tooltip-right{margin:0}:host.bs3.bs-tooltip-right .arrow,:host.bs3.bs-tooltip-left .arrow{margin:.3rem 0}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TooltipContainerComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'bs-tooltip-container',\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[class]': '\"tooltip in tooltip-\" + placement + \" \" + \"bs-tooltip-\" + placement + \" \" + placement + \" \" + containerClass',\n '[class.show]': '!_bsVersions.isBs3',\n '[class.bs3]': '_bsVersions.isBs3',\n '[attr.id]': 'this.id',\n role: 'tooltip'\n },\n styles: [\n `\n :host.tooltip {\n display: block;\n pointer-events: none;\n }\n :host.bs3.tooltip.top>.arrow {\n margin-left: -2px;\n }\n :host.bs3.tooltip.bottom {\n margin-top: 0px;\n }\n :host.bs3.bs-tooltip-left, :host.bs3.bs-tooltip-right{\n margin: 0px;\n }\n :host.bs3.bs-tooltip-right .arrow, :host.bs3.bs-tooltip-left .arrow {\n margin: .3rem 0;\n }\n `\n ],\n template: `\n
\n
\n `\n }]\n }], ctorParameters: function () { return [{ type: TooltipConfig }]; } });\n\nlet id = 0;\nclass TooltipDirective {\n constructor(_viewContainerRef, cis, config, _elementRef, _renderer, _positionService) {\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._positionService = _positionService;\n this.tooltipId = id++;\n /** sets disable adaptive position */\n this.adaptivePosition = true;\n /** Fired when tooltip content changes */\n this.tooltipChange = new EventEmitter();\n /**\n * Placement of a tooltip. Accepts: \"top\", \"bottom\", \"left\", \"right\"\n */\n this.placement = 'top';\n /**\n * Specifies events that should trigger. Supports a space separated list of\n * event names.\n */\n this.triggers = 'hover focus';\n /**\n * Css class for tooltip container\n */\n this.containerClass = '';\n /**\n * Allows to disable tooltip\n */\n this.isDisabled = false;\n /**\n * Delay before showing the tooltip\n */\n this.delay = 0;\n /** @deprecated - removed, will be added to configuration */\n this.tooltipAnimation = true;\n /** @deprecated */\n this.tooltipFadeDuration = 150;\n /** @deprecated */\n this.tooltipStateChanged = new EventEmitter();\n this._tooltip = cis\n .createLoader(this._elementRef, _viewContainerRef, this._renderer)\n .provide({ provide: TooltipConfig, useValue: config });\n Object.assign(this, config);\n this.onShown = this._tooltip.onShown;\n this.onHidden = this._tooltip.onHidden;\n }\n /**\n * Returns whether or not the tooltip is currently being shown\n */\n get isOpen() {\n return this._tooltip.isShown;\n }\n set isOpen(value) {\n if (value) {\n this.show();\n }\n else {\n this.hide();\n }\n }\n /** @deprecated - please use `tooltip` instead */\n set htmlContent(value) {\n warnOnce('tooltipHtml was deprecated, please use `tooltip` instead');\n this.tooltip = value;\n }\n /** @deprecated - please use `placement` instead */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n set _placement(value) {\n warnOnce('tooltipPlacement was deprecated, please use `placement` instead');\n this.placement = value;\n }\n /** @deprecated - please use `isOpen` instead */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n set _isOpen(value) {\n warnOnce('tooltipIsOpen was deprecated, please use `isOpen` instead');\n this.isOpen = value;\n }\n get _isOpen() {\n warnOnce('tooltipIsOpen was deprecated, please use `isOpen` instead');\n return this.isOpen;\n }\n /** @deprecated - please use `isDisabled` instead */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n set _enable(value) {\n warnOnce('tooltipEnable was deprecated, please use `isDisabled` instead');\n this.isDisabled = !value;\n }\n get _enable() {\n warnOnce('tooltipEnable was deprecated, please use `isDisabled` instead');\n return this.isDisabled;\n }\n /** @deprecated - please use `container=\"body\"` instead */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n set _appendToBody(value) {\n warnOnce('tooltipAppendToBody was deprecated, please use `container=\"body\"` instead');\n this.container = value ? 'body' : this.container;\n }\n get _appendToBody() {\n warnOnce('tooltipAppendToBody was deprecated, please use `container=\"body\"` instead');\n return this.container === 'body';\n }\n /** @deprecated - will replaced with customClass */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n set _popupClass(value) {\n warnOnce('tooltipClass deprecated');\n }\n /** @deprecated - removed */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n set _tooltipContext(value) {\n warnOnce('tooltipContext deprecated');\n }\n /** @deprecated */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n set _tooltipPopupDelay(value) {\n warnOnce('tooltipPopupDelay is deprecated, use `delay` instead');\n this.delay = value;\n }\n /** @deprecated - please use `triggers` instead */\n get _tooltipTrigger() {\n warnOnce('tooltipTrigger was deprecated, please use `triggers` instead');\n return this.triggers;\n }\n set _tooltipTrigger(value) {\n warnOnce('tooltipTrigger was deprecated, please use `triggers` instead');\n this.triggers = (value || '').toString();\n }\n ngOnInit() {\n this._tooltip.listen({\n triggers: this.triggers,\n show: () => this.show()\n });\n this.tooltipChange.subscribe((value) => {\n if (!value) {\n this._tooltip.hide();\n }\n });\n this.onShown.subscribe(() => {\n this.setAriaDescribedBy();\n });\n this.onHidden.subscribe(() => {\n this.setAriaDescribedBy();\n });\n }\n setAriaDescribedBy() {\n this._ariaDescribedby = this.isOpen ? `tooltip-${this.tooltipId}` : void 0;\n if (this._ariaDescribedby) {\n this._renderer.setAttribute(this._elementRef.nativeElement, 'aria-describedby', this._ariaDescribedby);\n }\n else {\n this._renderer.removeAttribute(this._elementRef.nativeElement, 'aria-describedby');\n }\n }\n /**\n * Toggles an element’s tooltip. This is considered a “manual” triggering of\n * the tooltip.\n */\n toggle() {\n if (this.isOpen) {\n return this.hide();\n }\n this.show();\n }\n /**\n * Opens an element’s tooltip. This is considered a “manual” triggering of\n * the tooltip.\n */\n show() {\n this._positionService.setOptions({\n modifiers: {\n flip: {\n enabled: this.adaptivePosition\n },\n preventOverflow: {\n enabled: this.adaptivePosition,\n boundariesElement: this.boundariesElement || 'scrollParent'\n }\n }\n });\n if (this.isOpen ||\n this.isDisabled ||\n this._delayTimeoutId ||\n !this.tooltip) {\n return;\n }\n const showTooltip = () => {\n if (this._delayTimeoutId) {\n this._delayTimeoutId = undefined;\n }\n this._tooltip\n .attach(TooltipContainerComponent)\n .to(this.container)\n .position({ attachment: this.placement })\n .show({\n content: this.tooltip,\n placement: this.placement,\n containerClass: this.containerClass,\n id: `tooltip-${this.tooltipId}`\n });\n };\n const cancelDelayedTooltipShowing = () => {\n if (this._tooltipCancelShowFn) {\n this._tooltipCancelShowFn();\n }\n };\n if (this.delay) {\n if (this._delaySubscription) {\n this._delaySubscription.unsubscribe();\n }\n this._delaySubscription = timer(this.delay).subscribe(() => {\n showTooltip();\n cancelDelayedTooltipShowing();\n });\n if (this.triggers) {\n parseTriggers(this.triggers)\n .forEach((trigger) => {\n if (!trigger.close) {\n return;\n }\n this._tooltipCancelShowFn = this._renderer.listen(this._elementRef.nativeElement, trigger.close, () => {\n var _a;\n (_a = this._delaySubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();\n cancelDelayedTooltipShowing();\n });\n });\n }\n }\n else {\n showTooltip();\n }\n }\n /**\n * Closes an element’s tooltip. This is considered a “manual” triggering of\n * the tooltip.\n */\n hide() {\n var _a;\n if (this._delayTimeoutId) {\n clearTimeout(this._delayTimeoutId);\n this._delayTimeoutId = undefined;\n }\n if (!this._tooltip.isShown) {\n return;\n }\n if ((_a = this._tooltip.instance) === null || _a === void 0 ? void 0 : _a.classMap) {\n this._tooltip.instance.classMap[\"in\"] = false;\n }\n setTimeout(() => {\n this._tooltip.hide();\n }, this.tooltipFadeDuration);\n }\n ngOnDestroy() {\n this._tooltip.dispose();\n this.tooltipChange.unsubscribe();\n if (this._delaySubscription) {\n this._delaySubscription.unsubscribe();\n }\n this.onShown.unsubscribe();\n this.onHidden.unsubscribe();\n }\n}\nTooltipDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TooltipDirective, deps: [{ token: i0.ViewContainerRef }, { token: i1.ComponentLoaderFactory }, { token: TooltipConfig }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i3.PositioningService }], target: i0.ɵɵFactoryTarget.Directive });\nTooltipDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.1.1\", type: TooltipDirective, selector: \"[tooltip], [tooltipHtml]\", inputs: { adaptivePosition: \"adaptivePosition\", tooltip: \"tooltip\", placement: \"placement\", triggers: \"triggers\", container: \"container\", containerClass: \"containerClass\", boundariesElement: \"boundariesElement\", isOpen: \"isOpen\", isDisabled: \"isDisabled\", delay: \"delay\", htmlContent: [\"tooltipHtml\", \"htmlContent\"], _placement: [\"tooltipPlacement\", \"_placement\"], _isOpen: [\"tooltipIsOpen\", \"_isOpen\"], _enable: [\"tooltipEnable\", \"_enable\"], _appendToBody: [\"tooltipAppendToBody\", \"_appendToBody\"], tooltipAnimation: \"tooltipAnimation\", _popupClass: [\"tooltipClass\", \"_popupClass\"], _tooltipContext: [\"tooltipContext\", \"_tooltipContext\"], _tooltipPopupDelay: [\"tooltipPopupDelay\", \"_tooltipPopupDelay\"], tooltipFadeDuration: \"tooltipFadeDuration\", _tooltipTrigger: [\"tooltipTrigger\", \"_tooltipTrigger\"] }, outputs: { tooltipChange: \"tooltipChange\", onShown: \"onShown\", onHidden: \"onHidden\", tooltipStateChanged: \"tooltipStateChanged\" }, exportAs: [\"bs-tooltip\"], ngImport: i0 });\n__decorate([\n OnChange(),\n __metadata(\"design:type\", Object)\n], TooltipDirective.prototype, \"tooltip\", void 0);\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TooltipDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[tooltip], [tooltipHtml]',\n exportAs: 'bs-tooltip'\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i1.ComponentLoaderFactory }, { type: TooltipConfig }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i3.PositioningService }]; }, propDecorators: { adaptivePosition: [{\n type: Input\n }], tooltip: [{\n type: Input\n }], tooltipChange: [{\n type: Output\n }], placement: [{\n type: Input\n }], triggers: [{\n type: Input\n }], container: [{\n type: Input\n }], containerClass: [{\n type: Input\n }], boundariesElement: [{\n type: Input\n }], isOpen: [{\n type: Input\n }], isDisabled: [{\n type: Input\n }], delay: [{\n type: Input\n }], onShown: [{\n type: Output\n }], onHidden: [{\n type: Output\n }], htmlContent: [{\n type: Input,\n args: ['tooltipHtml']\n }], _placement: [{\n type: Input,\n args: ['tooltipPlacement']\n }], _isOpen: [{\n type: Input,\n args: ['tooltipIsOpen']\n }], _enable: [{\n type: Input,\n args: ['tooltipEnable']\n }], _appendToBody: [{\n type: Input,\n args: ['tooltipAppendToBody']\n }], tooltipAnimation: [{\n type: Input\n }], _popupClass: [{\n type: Input,\n args: ['tooltipClass']\n }], _tooltipContext: [{\n type: Input,\n args: ['tooltipContext']\n }], _tooltipPopupDelay: [{\n type: Input,\n args: ['tooltipPopupDelay']\n }], tooltipFadeDuration: [{\n type: Input\n }], _tooltipTrigger: [{\n type: Input,\n args: ['tooltipTrigger']\n }], tooltipStateChanged: [{\n type: Output\n }] } });\n\nclass TooltipModule {\n static forRoot() {\n return {\n ngModule: TooltipModule,\n providers: [ComponentLoaderFactory, PositioningService]\n };\n }\n}\nTooltipModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TooltipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTooltipModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TooltipModule, declarations: [TooltipDirective, TooltipContainerComponent], imports: [CommonModule], exports: [TooltipDirective] });\nTooltipModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TooltipModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TooltipModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n declarations: [TooltipDirective, TooltipContainerComponent],\n exports: [TooltipDirective],\n entryComponents: [TooltipContainerComponent]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { TooltipConfig, TooltipContainerComponent, TooltipDirective, TooltipModule };\n","import { isDevMode } from '@angular/core';\n\n/**\n * @copyright Valor Software\n * @copyright Angular ng-bootstrap team\n */\nclass Trigger {\n constructor(open, close) {\n this.open = open;\n this.close = close || open;\n }\n isManual() {\n return this.open === 'manual' || this.close === 'manual';\n }\n}\n\nconst DEFAULT_ALIASES = {\n hover: ['mouseover', 'mouseout'],\n focus: ['focusin', 'focusout']\n};\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction parseTriggers(triggers, aliases = DEFAULT_ALIASES) {\n const trimmedTriggers = (triggers || '').trim();\n if (trimmedTriggers.length === 0) {\n return [];\n }\n const parsedTriggers = trimmedTriggers\n .split(/\\s+/)\n .map((trigger) => trigger.split(':'))\n .map((triggerPair) => {\n const alias = aliases[triggerPair[0]] || triggerPair;\n return new Trigger(alias[0], alias[1]);\n });\n const manualTriggers = parsedTriggers.filter((triggerPair) => triggerPair.isManual());\n if (manualTriggers.length > 1) {\n throw new Error('Triggers parse error: only one manual trigger is allowed');\n }\n if (manualTriggers.length === 1 && parsedTriggers.length > 1) {\n throw new Error('Triggers parse error: manual trigger can\\'t be mixed with other triggers');\n }\n return parsedTriggers;\n}\nfunction listenToTriggers(renderer, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntarget, triggers, showFn, hideFn, toggleFn) {\n const parsedTriggers = parseTriggers(triggers);\n const listeners = [];\n if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n return Function.prototype;\n }\n parsedTriggers.forEach((trigger) => {\n if (trigger.open === trigger.close) {\n listeners.push(renderer.listen(target, trigger.open, toggleFn));\n return;\n }\n listeners.push(renderer.listen(target, trigger.open, showFn));\n if (trigger.close) {\n listeners.push(renderer.listen(target, trigger.close, hideFn));\n }\n });\n return () => {\n listeners.forEach((unsubscribeFn) => unsubscribeFn());\n };\n}\nfunction listenToTriggersV2(renderer, options) {\n const parsedTriggers = parseTriggers(options.triggers);\n const target = options.target;\n // do nothing\n if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n return Function.prototype;\n }\n // all listeners\n const listeners = [];\n // lazy listeners registration\n const _registerHide = [];\n const registerHide = () => {\n // add hide listeners to unregister array\n _registerHide.forEach((fn) => listeners.push(fn()));\n // register hide events only once\n _registerHide.length = 0;\n };\n // register open\\close\\toggle listeners\n parsedTriggers.forEach((trigger) => {\n const useToggle = trigger.open === trigger.close;\n const showFn = useToggle ? options.toggle : options.show;\n if (!useToggle && trigger.close && options.hide) {\n const _hide = renderer.listen(target, trigger.close, options.hide);\n _registerHide.push(() => _hide);\n }\n if (showFn) {\n listeners.push(renderer.listen(target, trigger.open, () => showFn(registerHide)));\n }\n });\n return () => {\n listeners.forEach((unsubscribeFn) => unsubscribeFn());\n };\n}\nfunction registerOutsideClick(renderer, options) {\n if (!options.outsideClick) {\n return Function.prototype;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return renderer.listen('document', 'click', (event) => {\n if (options.target && options.target.contains(event.target)) {\n return;\n }\n if (options.targets &&\n options.targets.some(target => target.contains(event.target))) {\n return;\n }\n if (options.hide) {\n options.hide();\n }\n });\n}\nfunction registerEscClick(renderer, options) {\n if (!options.outsideEsc) {\n return Function.prototype;\n }\n return renderer.listen('document', 'keyup.esc', (event) => {\n if (options.target && options.target.contains(event.target)) {\n return;\n }\n if (options.targets &&\n options.targets.some(target => target.contains(event.target))) {\n return;\n }\n if (options.hide) {\n options.hide();\n }\n });\n}\n\n/**\n * @license\n * Copyright Google Inc. 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 * JS version of browser APIs. This library can only run in the browser.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst win = (typeof window !== 'undefined' && window) || {};\nconst document = win.document;\nconst location = win.location;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst gc = win.gc ? () => win.gc() : () => null;\nconst performance = win.performance ? win.performance : null;\nconst Event = win.Event;\nconst MouseEvent = win.MouseEvent;\nconst KeyboardEvent = win.KeyboardEvent;\nconst EventTarget = win.EventTarget;\nconst History = win.History;\nconst Location = win.Location;\nconst EventListener = win.EventListener;\n\nvar BsVerions;\n(function (BsVerions) {\n BsVerions[\"isBs3\"] = \"bs3\";\n BsVerions[\"isBs4\"] = \"bs4\";\n BsVerions[\"isBs5\"] = \"bs5\";\n})(BsVerions || (BsVerions = {}));\nlet guessedVersion;\nfunction _guessBsVersion() {\n if (typeof win.document === 'undefined') {\n return 'bs4';\n }\n const spanEl = win.document.createElement('span');\n spanEl.innerText = 'testing bs version';\n spanEl.classList.add('d-none');\n spanEl.classList.add('pl-1');\n win.document.head.appendChild(spanEl);\n const rect = spanEl.getBoundingClientRect();\n const checkPadding = win.getComputedStyle(spanEl).paddingLeft;\n if (!rect || (rect && rect.top !== 0)) {\n win.document.head.removeChild(spanEl);\n return 'bs3';\n }\n if (checkPadding && parseFloat(checkPadding)) {\n win.document.head.removeChild(spanEl);\n return 'bs4';\n }\n win.document.head.removeChild(spanEl);\n return 'bs5';\n}\nfunction setTheme(theme) {\n guessedVersion = theme;\n}\n// todo: in ngx-bootstrap, bs4 will became a default one\nfunction isBs3() {\n if (typeof win === 'undefined') {\n return true;\n }\n if (typeof win.__theme === 'undefined') {\n if (guessedVersion) {\n return guessedVersion === 'bs3';\n }\n guessedVersion = _guessBsVersion();\n return guessedVersion === 'bs3';\n }\n return win.__theme === 'bs3';\n}\nfunction isBs4() {\n if (isBs3())\n return false;\n if (guessedVersion)\n return guessedVersion === 'bs4';\n guessedVersion = _guessBsVersion();\n return guessedVersion === 'bs4';\n}\nfunction isBs5() {\n if (isBs3() || isBs4())\n return false;\n if (guessedVersion)\n return guessedVersion === 'bs5';\n guessedVersion = _guessBsVersion();\n return guessedVersion === 'bs5';\n}\nfunction getBsVer() {\n return {\n isBs3: isBs3(),\n isBs4: isBs4(),\n isBs5: isBs5()\n };\n}\nfunction currentBsVersion() {\n const bsVer = getBsVer();\n const resVersion = Object.keys(bsVer).find(key => bsVer[key]);\n return BsVerions[resVersion];\n}\n\nclass LinkedList {\n constructor() {\n this.length = 0;\n this.asArray = [];\n // Array methods overriding END\n }\n get(position) {\n if (this.length === 0 || position < 0 || position >= this.length) {\n return void 0;\n }\n let current = this.head;\n for (let index = 0; index < position; index++) {\n current = current === null || current === void 0 ? void 0 : current.next;\n }\n return current === null || current === void 0 ? void 0 : current.value;\n }\n add(value, position = this.length) {\n if (position < 0 || position > this.length) {\n throw new Error('Position is out of the list');\n }\n const node = {\n value,\n next: undefined,\n previous: undefined\n };\n if (this.length === 0) {\n this.head = node;\n this.tail = node;\n this.current = node;\n }\n else {\n if (position === 0 && this.head) {\n // first node\n node.next = this.head;\n this.head.previous = node;\n this.head = node;\n }\n else if (position === this.length && this.tail) {\n // last node\n this.tail.next = node;\n node.previous = this.tail;\n this.tail = node;\n }\n else {\n // node in middle\n const currentPreviousNode = this.getNode(position - 1);\n const currentNextNode = currentPreviousNode === null || currentPreviousNode === void 0 ? void 0 : currentPreviousNode.next;\n if (currentPreviousNode && currentNextNode) {\n currentPreviousNode.next = node;\n currentNextNode.previous = node;\n node.previous = currentPreviousNode;\n node.next = currentNextNode;\n }\n }\n }\n this.length++;\n this.createInternalArrayRepresentation();\n }\n remove(position = 0) {\n var _a;\n if (this.length === 0 || position < 0 || position >= this.length) {\n throw new Error('Position is out of the list');\n }\n if (position === 0 && this.head) {\n // first node\n this.head = this.head.next;\n if (this.head) {\n // there is no second node\n this.head.previous = undefined;\n }\n else {\n // there is no second node\n this.tail = undefined;\n }\n }\n else if (position === this.length - 1 && ((_a = this.tail) === null || _a === void 0 ? void 0 : _a.previous)) {\n // last node\n this.tail = this.tail.previous;\n this.tail.next = undefined;\n }\n else {\n // middle node\n const removedNode = this.getNode(position);\n if ((removedNode === null || removedNode === void 0 ? void 0 : removedNode.next) && removedNode.previous) {\n removedNode.next.previous = removedNode.previous;\n removedNode.previous.next = removedNode.next;\n }\n }\n this.length--;\n this.createInternalArrayRepresentation();\n }\n set(position, value) {\n if (this.length === 0 || position < 0 || position >= this.length) {\n throw new Error('Position is out of the list');\n }\n const node = this.getNode(position);\n if (node) {\n node.value = value;\n this.createInternalArrayRepresentation();\n }\n }\n toArray() {\n return this.asArray;\n }\n findAll(fn) {\n let current = this.head;\n const result = [];\n if (!current) {\n return result;\n }\n for (let index = 0; index < this.length; index++) {\n if (!current) {\n return result;\n }\n if (fn(current.value, index)) {\n result.push({ index, value: current.value });\n }\n current = current.next;\n }\n return result;\n }\n // Array methods overriding start\n push(...args) {\n args.forEach((arg) => {\n this.add(arg);\n });\n return this.length;\n }\n pop() {\n if (this.length === 0) {\n return undefined;\n }\n const last = this.tail;\n this.remove(this.length - 1);\n return last === null || last === void 0 ? void 0 : last.value;\n }\n unshift(...args) {\n args.reverse();\n args.forEach((arg) => {\n this.add(arg, 0);\n });\n return this.length;\n }\n shift() {\n var _a;\n if (this.length === 0) {\n return undefined;\n }\n const lastItem = (_a = this.head) === null || _a === void 0 ? void 0 : _a.value;\n this.remove();\n return lastItem;\n }\n forEach(fn) {\n let current = this.head;\n for (let index = 0; index < this.length; index++) {\n if (!current) {\n return;\n }\n fn(current.value, index);\n current = current.next;\n }\n }\n indexOf(value) {\n let current = this.head;\n let position = -1;\n for (let index = 0; index < this.length; index++) {\n if (!current) {\n return position;\n }\n if (current.value === value) {\n position = index;\n break;\n }\n current = current.next;\n }\n return position;\n }\n some(fn) {\n let current = this.head;\n let result = false;\n while (current && !result) {\n if (fn(current.value)) {\n result = true;\n break;\n }\n current = current.next;\n }\n return result;\n }\n every(fn) {\n let current = this.head;\n let result = true;\n while (current && result) {\n if (!fn(current.value)) {\n result = false;\n }\n current = current.next;\n }\n return result;\n }\n toString() {\n return '[Linked List]';\n }\n find(fn) {\n let current = this.head;\n for (let index = 0; index < this.length; index++) {\n if (!current) {\n return;\n }\n if (fn(current.value, index)) {\n return current.value;\n }\n current = current.next;\n }\n }\n findIndex(fn) {\n let current = this.head;\n for (let index = 0; index < this.length; index++) {\n if (!current) {\n return -1;\n }\n if (fn(current.value, index)) {\n return index;\n }\n current = current.next;\n }\n return -1;\n }\n getNode(position) {\n if (this.length === 0 || position < 0 || position >= this.length) {\n throw new Error('Position is out of the list');\n }\n let current = this.head;\n for (let index = 0; index < position; index++) {\n current = current === null || current === void 0 ? void 0 : current.next;\n }\n return current;\n }\n createInternalArrayRepresentation() {\n const outArray = [];\n let current = this.head;\n while (current) {\n outArray.push(current.value);\n current = current.next;\n }\n this.asArray = outArray;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction OnChange() {\n const sufix = 'Change';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function OnChangeHandler(target, propertyKey) {\n const _key = ` __${propertyKey}Value`;\n Object.defineProperty(target, propertyKey, {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get() {\n return this[_key];\n },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n set(value) {\n const prevValue = this[_key];\n this[_key] = value;\n if (prevValue !== value && this[propertyKey + sufix]) {\n this[propertyKey + sufix].emit(value);\n }\n }\n });\n };\n}\n\nclass Utils {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static reflow(element) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ((bs) => bs)(element.offsetHeight);\n }\n // source: https://github.com/jquery/jquery/blob/master/src/css/var/getStyles.js\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static getStyles(elem) {\n // Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n // IE throws on elements created in popups\n // FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n let view = elem.ownerDocument.defaultView;\n if (!view || !view.opener) {\n view = win;\n }\n return view.getComputedStyle(elem);\n }\n static stackOverflowConfig() {\n const bsVer = currentBsVersion();\n return {\n crossorigin: bsVer !== 'bs3' ? \"anonymous\" : undefined,\n integrity: bsVer === 'bs5' ? 'sha384-KyZXEAg3QhqLMpG8r+8fhAXLRk2vvoC2f3B09zVXn8CA5QIVfZOJ3BCsw2P0p/We' : bsVer === 'bs4' ? 'sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2' : undefined,\n cdnLink: bsVer === 'bs5' ? 'https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css' : bsVer === 'bs4' ? 'https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css' : 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css',\n };\n }\n}\n\nconst _messagesHash = {};\nconst _hideMsg = typeof console === 'undefined' || !('warn' in console);\nfunction warnOnce(msg) {\n if (!isDevMode() || _hideMsg || msg in _messagesHash) {\n return;\n }\n _messagesHash[msg] = true;\n console.warn(msg);\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BsVerions, LinkedList, OnChange, Trigger, Utils, currentBsVersion, document, getBsVer, isBs3, listenToTriggers, listenToTriggersV2, parseTriggers, registerEscClick, registerOutsideClick, setTheme, warnOnce, win as window };\n","import * as i0 from '@angular/core';\nimport { Injectable, Component, Directive, Input, NgModule } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ObjectUtils } from 'primeng/utils';\nimport { CommonModule } from '@angular/common';\n\nclass FilterMatchMode {\n}\nFilterMatchMode.STARTS_WITH = 'startsWith';\nFilterMatchMode.CONTAINS = 'contains';\nFilterMatchMode.NOT_CONTAINS = 'notContains';\nFilterMatchMode.ENDS_WITH = 'endsWith';\nFilterMatchMode.EQUALS = 'equals';\nFilterMatchMode.NOT_EQUALS = 'notEquals';\nFilterMatchMode.IN = 'in';\nFilterMatchMode.LESS_THAN = 'lt';\nFilterMatchMode.LESS_THAN_OR_EQUAL_TO = 'lte';\nFilterMatchMode.GREATER_THAN = 'gt';\nFilterMatchMode.GREATER_THAN_OR_EQUAL_TO = 'gte';\nFilterMatchMode.BETWEEN = 'between';\nFilterMatchMode.IS = 'is';\nFilterMatchMode.IS_NOT = 'isNot';\nFilterMatchMode.BEFORE = 'before';\nFilterMatchMode.AFTER = 'after';\nFilterMatchMode.DATE_IS = 'dateIs';\nFilterMatchMode.DATE_IS_NOT = 'dateIsNot';\nFilterMatchMode.DATE_BEFORE = 'dateBefore';\nFilterMatchMode.DATE_AFTER = 'dateAfter';\n\nclass PrimeNGConfig {\n constructor() {\n this.ripple = false;\n this.filterMatchModeOptions = {\n text: [\n FilterMatchMode.STARTS_WITH,\n FilterMatchMode.CONTAINS,\n FilterMatchMode.NOT_CONTAINS,\n FilterMatchMode.ENDS_WITH,\n FilterMatchMode.EQUALS,\n FilterMatchMode.NOT_EQUALS\n ],\n numeric: [\n FilterMatchMode.EQUALS,\n FilterMatchMode.NOT_EQUALS,\n FilterMatchMode.LESS_THAN,\n FilterMatchMode.LESS_THAN_OR_EQUAL_TO,\n FilterMatchMode.GREATER_THAN,\n FilterMatchMode.GREATER_THAN_OR_EQUAL_TO\n ],\n date: [\n FilterMatchMode.DATE_IS,\n FilterMatchMode.DATE_IS_NOT,\n FilterMatchMode.DATE_BEFORE,\n FilterMatchMode.DATE_AFTER\n ]\n };\n this.translation = {\n startsWith: 'Starts with',\n contains: 'Contains',\n notContains: 'Not contains',\n endsWith: 'Ends with',\n equals: 'Equals',\n notEquals: 'Not equals',\n noFilter: 'No Filter',\n lt: 'Less than',\n lte: 'Less than or equal to',\n gt: 'Greater than',\n gte: 'Greater than or equal to',\n is: 'Is',\n isNot: 'Is not',\n before: 'Before',\n after: 'After',\n dateIs: 'Date is',\n dateIsNot: 'Date is not',\n dateBefore: 'Date is before',\n dateAfter: 'Date is after',\n clear: 'Clear',\n apply: 'Apply',\n matchAll: 'Match All',\n matchAny: 'Match Any',\n addRule: 'Add Rule',\n removeRule: 'Remove Rule',\n accept: 'Yes',\n reject: 'No',\n choose: 'Choose',\n upload: 'Upload',\n cancel: 'Cancel',\n dayNames: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n dayNamesShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n dayNamesMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n monthNames: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n monthNamesShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n dateFormat: 'mm/dd/yy',\n firstDayOfWeek: 0,\n today: 'Today',\n weekHeader: 'Wk',\n weak: 'Weak',\n medium: 'Medium',\n strong: 'Strong',\n passwordPrompt: 'Enter a password',\n emptyMessage: 'No results found',\n emptyFilterMessage: 'No results found'\n };\n this.zIndex = {\n modal: 1100,\n overlay: 1000,\n menu: 1000,\n tooltip: 1100\n };\n this.translationSource = new Subject();\n this.translationObserver = this.translationSource.asObservable();\n }\n getTranslation(key) {\n return this.translation[key];\n }\n setTranslation(value) {\n this.translation = Object.assign(Object.assign({}, this.translation), value);\n this.translationSource.next(this.translation);\n }\n}\nPrimeNGConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: PrimeNGConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nPrimeNGConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: PrimeNGConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: PrimeNGConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\nclass TranslationKeys {\n}\nTranslationKeys.STARTS_WITH = 'startsWith';\nTranslationKeys.CONTAINS = 'contains';\nTranslationKeys.NOT_CONTAINS = 'notContains';\nTranslationKeys.ENDS_WITH = 'endsWith';\nTranslationKeys.EQUALS = 'equals';\nTranslationKeys.NOT_EQUALS = 'notEquals';\nTranslationKeys.NO_FILTER = 'noFilter';\nTranslationKeys.LT = 'lt';\nTranslationKeys.LTE = 'lte';\nTranslationKeys.GT = 'gt';\nTranslationKeys.GTE = 'gte';\nTranslationKeys.IS = 'is';\nTranslationKeys.IS_NOT = 'isNot';\nTranslationKeys.BEFORE = 'before';\nTranslationKeys.AFTER = 'after';\nTranslationKeys.CLEAR = 'clear';\nTranslationKeys.APPLY = 'apply';\nTranslationKeys.MATCH_ALL = 'matchAll';\nTranslationKeys.MATCH_ANY = 'matchAny';\nTranslationKeys.ADD_RULE = 'addRule';\nTranslationKeys.REMOVE_RULE = 'removeRule';\nTranslationKeys.ACCEPT = 'accept';\nTranslationKeys.REJECT = 'reject';\nTranslationKeys.CHOOSE = 'choose';\nTranslationKeys.UPLOAD = 'upload';\nTranslationKeys.CANCEL = 'cancel';\nTranslationKeys.DAY_NAMES = 'dayNames';\nTranslationKeys.DAY_NAMES_SHORT = 'dayNamesShort';\nTranslationKeys.DAY_NAMES_MIN = 'dayNamesMin';\nTranslationKeys.MONTH_NAMES = 'monthNames';\nTranslationKeys.MONTH_NAMES_SHORT = 'monthNamesShort';\nTranslationKeys.FIRST_DAY_OF_WEEK = 'firstDayOfWeek';\nTranslationKeys.TODAY = 'today';\nTranslationKeys.WEEK_HEADER = 'weekHeader';\nTranslationKeys.WEAK = 'weak';\nTranslationKeys.MEDIUM = 'medium';\nTranslationKeys.STRONG = 'strong';\nTranslationKeys.PASSWORD_PROMPT = 'passwordPrompt';\nTranslationKeys.EMPTY_MESSAGE = 'emptyMessage';\nTranslationKeys.EMPTY_FILTER_MESSAGE = 'emptyFilterMessage';\n\nvar ConfirmEventType;\n(function (ConfirmEventType) {\n ConfirmEventType[ConfirmEventType[\"ACCEPT\"] = 0] = \"ACCEPT\";\n ConfirmEventType[ConfirmEventType[\"REJECT\"] = 1] = \"REJECT\";\n ConfirmEventType[ConfirmEventType[\"CANCEL\"] = 2] = \"CANCEL\";\n})(ConfirmEventType || (ConfirmEventType = {}));\n\nclass ConfirmationService {\n constructor() {\n this.requireConfirmationSource = new Subject();\n this.acceptConfirmationSource = new Subject();\n this.requireConfirmation$ = this.requireConfirmationSource.asObservable();\n this.accept = this.acceptConfirmationSource.asObservable();\n }\n confirm(confirmation) {\n this.requireConfirmationSource.next(confirmation);\n return this;\n }\n close() {\n this.requireConfirmationSource.next(null);\n return this;\n }\n onAccept() {\n this.acceptConfirmationSource.next(null);\n }\n}\nConfirmationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: ConfirmationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nConfirmationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: ConfirmationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: ConfirmationService, decorators: [{\n type: Injectable\n }] });\n\nclass FilterService {\n constructor() {\n this.filters = {\n startsWith: (value, filter, filterLocale) => {\n if (filter === undefined || filter === null || filter.trim() === '') {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n return stringValue.slice(0, filterValue.length) === filterValue;\n },\n contains: (value, filter, filterLocale) => {\n if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n return stringValue.indexOf(filterValue) !== -1;\n },\n notContains: (value, filter, filterLocale) => {\n if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n return stringValue.indexOf(filterValue) === -1;\n },\n endsWith: (value, filter, filterLocale) => {\n if (filter === undefined || filter === null || filter.trim() === '') {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n return stringValue.indexOf(filterValue, stringValue.length - filterValue.length) !== -1;\n },\n equals: (value, filter, filterLocale) => {\n if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n if (value.getTime && filter.getTime)\n return value.getTime() === filter.getTime();\n else\n return ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale) == ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n },\n notEquals: (value, filter, filterLocale) => {\n if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {\n return false;\n }\n if (value === undefined || value === null) {\n return true;\n }\n if (value.getTime && filter.getTime)\n return value.getTime() !== filter.getTime();\n else\n return ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale) != ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n },\n in: (value, filter) => {\n if (filter === undefined || filter === null || filter.length === 0) {\n return true;\n }\n for (let i = 0; i < filter.length; i++) {\n if (ObjectUtils.equals(value, filter[i])) {\n return true;\n }\n }\n return false;\n },\n between: (value, filter) => {\n if (filter == null || filter[0] == null || filter[1] == null) {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n if (value.getTime)\n return filter[0].getTime() <= value.getTime() && value.getTime() <= filter[1].getTime();\n else\n return filter[0] <= value && value <= filter[1];\n },\n lt: (value, filter, filterLocale) => {\n if (filter === undefined || filter === null) {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n if (value.getTime && filter.getTime)\n return value.getTime() < filter.getTime();\n else\n return value < filter;\n },\n lte: (value, filter, filterLocale) => {\n if (filter === undefined || filter === null) {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n if (value.getTime && filter.getTime)\n return value.getTime() <= filter.getTime();\n else\n return value <= filter;\n },\n gt: (value, filter, filterLocale) => {\n if (filter === undefined || filter === null) {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n if (value.getTime && filter.getTime)\n return value.getTime() > filter.getTime();\n else\n return value > filter;\n },\n gte: (value, filter, filterLocale) => {\n if (filter === undefined || filter === null) {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n if (value.getTime && filter.getTime)\n return value.getTime() >= filter.getTime();\n else\n return value >= filter;\n },\n is: (value, filter, filterLocale) => {\n return this.filters.equals(value, filter, filterLocale);\n },\n isNot: (value, filter, filterLocale) => {\n return this.filters.notEquals(value, filter, filterLocale);\n },\n before: (value, filter, filterLocale) => {\n return this.filters.lt(value, filter, filterLocale);\n },\n after: (value, filter, filterLocale) => {\n return this.filters.gt(value, filter, filterLocale);\n },\n dateIs: (value, filter) => {\n if (filter === undefined || filter === null) {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n return value.toDateString() === filter.toDateString();\n },\n dateIsNot: (value, filter) => {\n if (filter === undefined || filter === null) {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n return value.toDateString() !== filter.toDateString();\n },\n dateBefore: (value, filter) => {\n if (filter === undefined || filter === null) {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n return value.getTime() < filter.getTime();\n },\n dateAfter: (value, filter) => {\n if (filter === undefined || filter === null) {\n return true;\n }\n if (value === undefined || value === null) {\n return false;\n }\n return value.getTime() > filter.getTime();\n }\n };\n }\n filter(value, fields, filterValue, filterMatchMode, filterLocale) {\n let filteredItems = [];\n if (value) {\n for (let item of value) {\n for (let field of fields) {\n let fieldValue = ObjectUtils.resolveFieldData(item, field);\n if (this.filters[filterMatchMode](fieldValue, filterValue, filterLocale)) {\n filteredItems.push(item);\n break;\n }\n }\n }\n }\n return filteredItems;\n }\n register(rule, fn) {\n this.filters[rule] = fn;\n }\n}\nFilterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: FilterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nFilterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: FilterService, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: FilterService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\nclass ContextMenuService {\n constructor() {\n this.activeItemKeyChange = new Subject();\n this.activeItemKeyChange$ = this.activeItemKeyChange.asObservable();\n }\n changeKey(key) {\n this.activeItemKey = key;\n this.activeItemKeyChange.next(this.activeItemKey);\n }\n reset() {\n this.activeItemKey = null;\n this.activeItemKeyChange.next(this.activeItemKey);\n }\n}\nContextMenuService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: ContextMenuService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nContextMenuService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: ContextMenuService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: ContextMenuService, decorators: [{\n type: Injectable\n }] });\n\nclass MessageService {\n constructor() {\n this.messageSource = new Subject();\n this.clearSource = new Subject();\n this.messageObserver = this.messageSource.asObservable();\n this.clearObserver = this.clearSource.asObservable();\n }\n add(message) {\n if (message) {\n this.messageSource.next(message);\n }\n }\n addAll(messages) {\n if (messages && messages.length) {\n this.messageSource.next(messages);\n }\n }\n clear(key) {\n this.clearSource.next(key || null);\n }\n}\nMessageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: MessageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nMessageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: MessageService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: MessageService, decorators: [{\n type: Injectable\n }] });\n\nclass OverlayService {\n constructor() {\n this.clickSource = new Subject();\n this.clickObservable = this.clickSource.asObservable();\n }\n add(event) {\n if (event) {\n this.clickSource.next(event);\n }\n }\n}\nOverlayService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: OverlayService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nOverlayService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: OverlayService, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: OverlayService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\nclass PrimeIcons {\n}\nPrimeIcons.ALIGN_CENTER = 'pi pi-align-center';\nPrimeIcons.ALIGN_JUSTIFY = 'pi pi-align-justify';\nPrimeIcons.ALIGN_LEFT = 'pi pi-align-left';\nPrimeIcons.ALIGN_RIGHT = 'pi pi-align-right';\nPrimeIcons.AMAZON = 'pi pi-amazon';\nPrimeIcons.ANDROID = 'pi pi-android';\nPrimeIcons.ANGLE_DOUBLE_DOWN = 'pi pi-angle-double-down';\nPrimeIcons.ANGLE_DOUBLE_LEFT = 'pi pi-angle-double-left';\nPrimeIcons.ANGLE_DOUBLE_RIGHT = 'pi pi-angle-double-right';\nPrimeIcons.ANGLE_DOUBLE_UP = 'pi pi-angle-double-up';\nPrimeIcons.ANGLE_DOWN = 'pi pi-angle-down';\nPrimeIcons.ANGLE_LEFT = 'pi pi-angle-left';\nPrimeIcons.ANGLE_RIGHT = 'pi pi-angle-right';\nPrimeIcons.ANGLE_UP = 'pi pi-angle-up';\nPrimeIcons.APPLE = 'pi pi-apple';\nPrimeIcons.ARROW_CIRCLE_DOWN = 'pi pi-arrow-circle-down';\nPrimeIcons.ARROW_CIRCLE_LEFT = 'pi pi-arrow-circle-left';\nPrimeIcons.ARROW_CIRCLE_RIGHT = 'pi pi-arrow-circle-right';\nPrimeIcons.ARROW_CIRCLE_UP = 'pi pi-arrow-circle-up';\nPrimeIcons.ARROW_DOWN = 'pi pi-arrow-down';\nPrimeIcons.ARROW_DOWN_LEFT = 'pi pi-arrow-down-left';\nPrimeIcons.ARROW_DOWN_RIGHT = 'pi pi-arrow-down-right';\nPrimeIcons.ARROW_LEFT = 'pi pi-arrow-left';\nPrimeIcons.ARROW_RIGHT = 'pi pi-arrow-right';\nPrimeIcons.ARROW_UP = 'pi pi-arrow-up';\nPrimeIcons.ARROW_UP_LEFT = 'pi pi-arrow-up-left';\nPrimeIcons.ARROW_UP_RIGHT = 'pi pi-arrow-up-right';\nPrimeIcons.ARROW_H = 'pi pi-arrows-h';\nPrimeIcons.ARROW_V = 'pi pi-arrows-v';\nPrimeIcons.AT = 'pi pi-at';\nPrimeIcons.BACKWARD = 'pi pi-backward';\nPrimeIcons.BAN = 'pi pi-ban';\nPrimeIcons.BARS = 'pi pi-bars';\nPrimeIcons.BELL = 'pi pi-bell';\nPrimeIcons.BOLT = 'pi pi-bolt';\nPrimeIcons.BOOK = 'pi pi-book';\nPrimeIcons.BOOKMARK = 'pi pi-bookmark';\nPrimeIcons.BOOKMARK_FILL = 'pi pi-bookmark-fill';\nPrimeIcons.BOX = 'pi pi-box';\nPrimeIcons.BRIEFCASE = 'pi pi-briefcase';\nPrimeIcons.BUILDING = 'pi pi-building';\nPrimeIcons.CALENDAR = 'pi pi-calendar';\nPrimeIcons.CALENDAR_MINUS = 'pi pi-calendar-minus';\nPrimeIcons.CALENDAR_PLUS = 'pi pi-calendar-plus';\nPrimeIcons.CALENDAR_TIMES = 'pi pi-calendar-times';\nPrimeIcons.CAMERA = 'pi pi-camera';\nPrimeIcons.CAR = 'pi pi-car';\nPrimeIcons.CARET_DOWN = 'pi pi-caret-down';\nPrimeIcons.CARET_LEFT = 'pi pi-caret-left';\nPrimeIcons.CARET_RIGHT = 'pi pi-caret-right';\nPrimeIcons.CARET_UP = 'pi pi-caret-up';\nPrimeIcons.CHART_BAR = 'pi pi-chart-bar';\nPrimeIcons.CHART_LINE = 'pi pi-chart-line';\nPrimeIcons.CHART_PIE = 'pi pi-chart-pie';\nPrimeIcons.CHECK = 'pi pi-check';\nPrimeIcons.CHECK_CIRCLE = 'pi pi-check-circle';\nPrimeIcons.CHECK_SQUARE = 'pi pi-check-square';\nPrimeIcons.CHEVRON_CIRCLE_DOWN = 'pi pi-chevron-circle-down';\nPrimeIcons.CHEVRON_CIRCLE_LEFT = 'pi pi-chevron-circle-left';\nPrimeIcons.CHEVRON_CIRCLE_RIGHT = 'pi pi-chevron-circle-right';\nPrimeIcons.CHEVRON_CIRCLE_UP = 'pi pi-chevron-circle-up';\nPrimeIcons.CHEVRON_DOWN = 'pi pi-chevron-down';\nPrimeIcons.CHEVRON_LEFT = 'pi pi-chevron-left';\nPrimeIcons.CHEVRON_RIGHT = 'pi pi-chevron-right';\nPrimeIcons.CHEVRON_UP = 'pi pi-chevron-up';\nPrimeIcons.CIRCLE = 'pi pi-circle';\nPrimeIcons.CIRCLE_FILL = 'pi pi-circle-fill';\nPrimeIcons.CLOCK = 'pi pi-clock';\nPrimeIcons.CLONE = 'pi pi-clone';\nPrimeIcons.CLOUD = 'pi pi-cloud';\nPrimeIcons.CLOUD_DOWNLOAD = 'pi pi-cloud-download';\nPrimeIcons.CLOUD_UPLOAD = 'pi pi-cloud-upload';\nPrimeIcons.CODE = 'pi pi-code';\nPrimeIcons.COG = 'pi pi-cog';\nPrimeIcons.COMMENT = 'pi pi-comment';\nPrimeIcons.COMMENTS = 'pi pi-comments';\nPrimeIcons.COMPASS = 'pi pi-compass';\nPrimeIcons.COPY = 'pi pi-copy';\nPrimeIcons.CREDIT_CARD = 'pi pi-credit-card';\nPrimeIcons.DATABASE = 'pi pi-database';\nPrimeIcons.DESKTOP = 'pi pi-desktop';\nPrimeIcons.DIRECTIONS = 'pi pi-directions';\nPrimeIcons.DIRECTIONS_ALT = 'pi pi-directions-alt';\nPrimeIcons.DISCORD = 'pi pi-discord';\nPrimeIcons.DOLLAR = 'pi pi-dollar';\nPrimeIcons.DOWNLOAD = 'pi pi-download';\nPrimeIcons.EJECT = 'pi pi-eject';\nPrimeIcons.ELLIPSIS_H = 'pi pi-ellipsis-h';\nPrimeIcons.ELLIPSIS_V = 'pi pi-ellipsis-v';\nPrimeIcons.ENVELOPE = 'pi pi-envelope';\nPrimeIcons.EURO = 'pi pi-euro';\nPrimeIcons.EXCLAMATION_CIRCLE = 'pi pi-exclamation-circle';\nPrimeIcons.EXCLAMATION_TRIANGLE = 'pi pi-exclamation-triangle';\nPrimeIcons.EXTERNAL_LINK = 'pi pi-external-link';\nPrimeIcons.EYE = 'pi pi-eye';\nPrimeIcons.EYE_SLASH = 'pi pi-eye-slash';\nPrimeIcons.FACEBOOK = 'pi pi-facebook';\nPrimeIcons.FAST_BACKWARD = 'pi pi-fast-backward';\nPrimeIcons.FAST_FORWARD = 'pi pi-fast-forward';\nPrimeIcons.FILE = 'pi pi-file';\nPrimeIcons.FILE_EXCEL = 'pi pi-file-excel';\nPrimeIcons.FILE_PDF = 'pi pi-file-pdf';\nPrimeIcons.FILTER = 'pi pi-filter';\nPrimeIcons.FILTER_FILL = 'pi pi-filter-fill';\nPrimeIcons.FILTER_SLASH = 'pi pi-filter-slash';\nPrimeIcons.FLAG = 'pi pi-flag';\nPrimeIcons.FLAG_FILL = 'pi pi-flag-fill';\nPrimeIcons.FOLDER = 'pi pi-folder';\nPrimeIcons.FOLDER_OPEN = 'pi pi-folder-open';\nPrimeIcons.FORWARD = 'pi pi-forward';\nPrimeIcons.GITHUB = 'pi pi-github';\nPrimeIcons.GLOBE = 'pi pi-globe';\nPrimeIcons.GOOGLE = 'pi pi-google';\nPrimeIcons.HASHTAG = 'pi pi-hashtag';\nPrimeIcons.HEART = 'pi pi-heart';\nPrimeIcons.HEART_FILL = 'pi pi-heart-fill';\nPrimeIcons.HISTORY = 'pi pi-history';\nPrimeIcons.HOME = 'pi pi-home';\nPrimeIcons.ID_CARD = 'pi pi-id-card';\nPrimeIcons.IMAGE = 'pi pi-image';\nPrimeIcons.IMAGES = 'pi pi-images';\nPrimeIcons.INBOX = 'pi pi-inbox';\nPrimeIcons.INFO = 'pi pi-info';\nPrimeIcons.INFO_CIRCLE = 'pi pi-info-circle';\nPrimeIcons.INSTAGRAM = 'pi pi-instagram';\nPrimeIcons.KEY = 'pi pi-key';\nPrimeIcons.LINK = 'pi pi-link';\nPrimeIcons.LINKEDIN = 'pi pi-linkedin';\nPrimeIcons.LIST = 'pi pi-list';\nPrimeIcons.LOCK = 'pi pi-lock';\nPrimeIcons.LOCK_OPEN = 'pi pi-lock-open';\nPrimeIcons.MAP = 'pi pi-map';\nPrimeIcons.MAP_MARKER = 'pi pi-map-marker';\nPrimeIcons.MICROSOFT = 'pi pi-microsoft';\nPrimeIcons.MINUS = 'pi pi-minus';\nPrimeIcons.MINUS_CIRCLE = 'pi pi-minus-circle';\nPrimeIcons.MOBILE = 'pi pi-mobile';\nPrimeIcons.MONEY_BILL = 'pi pi-money-bill';\nPrimeIcons.MOON = 'pi pi-moon';\nPrimeIcons.PALETTE = 'pi pi-palette';\nPrimeIcons.PAPERCLIP = 'pi pi-paperclip';\nPrimeIcons.PAUSE = 'pi pi-pause';\nPrimeIcons.PAYPAL = 'pi pi-paypal';\nPrimeIcons.PENCIL = 'pi pi-pencil';\nPrimeIcons.PERCENTAGE = 'pi pi-percentage';\nPrimeIcons.PHONE = 'pi pi-phone';\nPrimeIcons.PLAY = 'pi pi-play';\nPrimeIcons.PLUS = 'pi pi-plus';\nPrimeIcons.PLUS_CIRCLE = 'pi pi-plus-circle';\nPrimeIcons.POUND = 'pi pi-pound';\nPrimeIcons.POWER_OFF = 'pi pi-power-off';\nPrimeIcons.PRIME = 'pi pi-prime';\nPrimeIcons.PRINT = 'pi pi-print';\nPrimeIcons.QRCODE = 'pi pi-qrcode';\nPrimeIcons.QUESTION = 'pi pi-question';\nPrimeIcons.QUESTION_CIRCLE = 'pi pi-question-circle';\nPrimeIcons.REDDIT = 'pi pi-reddit';\nPrimeIcons.REFRESH = 'pi pi-refresh';\nPrimeIcons.REPLAY = 'pi pi-replay';\nPrimeIcons.REPLY = 'pi pi-reply';\nPrimeIcons.SAVE = 'pi pi-save';\nPrimeIcons.SEARCH = 'pi pi-search';\nPrimeIcons.SEARCH_MINUS = 'pi pi-search-minus';\nPrimeIcons.SEARCH_PLUS = 'pi pi-search-plus';\nPrimeIcons.SEND = 'pi pi-send';\nPrimeIcons.SERVER = 'pi pi-server';\nPrimeIcons.SHARE_ALT = 'pi pi-share-alt';\nPrimeIcons.SHIELD = 'pi pi-shield';\nPrimeIcons.SHOPPING_BAG = 'pi pi-shopping-bag';\nPrimeIcons.SHOPPING_CART = 'pi pi-shopping-cart';\nPrimeIcons.SIGN_IN = 'pi pi-sign-in';\nPrimeIcons.SIGN_OUT = 'pi pi-sign-out';\nPrimeIcons.SITEMAP = 'pi pi-sitemap';\nPrimeIcons.SLACK = 'pi pi-slack';\nPrimeIcons.SLIDERS_H = 'pi pi-sliders-h';\nPrimeIcons.SLIDERS_V = 'pi pi-sliders-v';\nPrimeIcons.SORT = 'pi pi-sort';\nPrimeIcons.SORT_ALPHA_DOWN = 'pi pi-sort-alpha-down';\nPrimeIcons.SORT_ALPHA_ALT_DOWN = 'pi pi-sort-alpha-alt-down';\nPrimeIcons.SORT_ALPHA_UP = 'pi pi-sort-alpha-up';\nPrimeIcons.SORT_ALPHA_ALT_UP = 'pi pi-sort-alpha-alt-up';\nPrimeIcons.SORT_ALT = 'pi pi-sort-alt';\nPrimeIcons.SORT_ALT_SLASH = 'pi pi-sort-slash';\nPrimeIcons.SORT_AMOUNT_DOWN = 'pi pi-sort-amount-down';\nPrimeIcons.SORT_AMOUNT_DOWN_ALT = 'pi pi-sort-amount-down-alt';\nPrimeIcons.SORT_AMOUNT_UP = 'pi pi-sort-amount-up';\nPrimeIcons.SORT_AMOUNT_UP_ALT = 'pi pi-sort-amount-up-alt';\nPrimeIcons.SORT_DOWN = 'pi pi-sort-down';\nPrimeIcons.SORT_NUMERIC_DOWN = 'pi pi-sort-numeric-down';\nPrimeIcons.SORT_NUMERIC_ALT_DOWN = 'pi pi-sort-numeric-alt-down';\nPrimeIcons.SORT_NUMERIC_UP = 'pi pi-sort-numeric-up';\nPrimeIcons.SORT_NUMERIC_ALT_UP = 'pi pi-sort-numeric-alt-up';\nPrimeIcons.SORT_UP = 'pi pi-sort-up';\nPrimeIcons.SPINNER = 'pi pi-spinner';\nPrimeIcons.STAR = 'pi pi-star';\nPrimeIcons.STAR_FILL = 'pi pi-star-fill';\nPrimeIcons.STEP_BACKWARD = 'pi pi-step-backward';\nPrimeIcons.STEP_BACKWARD_ALT = 'pi pi-step-backward-alt';\nPrimeIcons.STEP_FORWARD = 'pi pi-step-forward';\nPrimeIcons.STEP_FORWARD_ALT = 'pi pi-step-forward-alt';\nPrimeIcons.STOP = 'pi pi-stop';\nPrimeIcons.STOP_CIRCLE = 'pi pi-stop-circle';\nPrimeIcons.SUN = 'pi pi-sun';\nPrimeIcons.SYNC = 'pi pi-sync';\nPrimeIcons.TABLE = 'pi pi-table';\nPrimeIcons.TABLET = 'pi pi-tablet';\nPrimeIcons.TAG = 'pi pi-tag';\nPrimeIcons.TAGS = 'pi pi-tags';\nPrimeIcons.TELEGRAM = 'pi pi-telegram';\nPrimeIcons.TH_LARGE = 'pi pi-th-large';\nPrimeIcons.THUMBS_DOWN = 'pi pi-thumbs-down';\nPrimeIcons.THUMBS_UP = 'pi pi-thumbs-up';\nPrimeIcons.TICKET = 'pi pi-ticket';\nPrimeIcons.TIMES = 'pi pi-times';\nPrimeIcons.TIMES_CIRCLE = 'pi pi-times-circle';\nPrimeIcons.TRASH = 'pi pi-trash';\nPrimeIcons.TWITTER = 'pi pi-twitter';\nPrimeIcons.UNDO = 'pi pi-undo';\nPrimeIcons.UNLOCK = 'pi pi-unlock';\nPrimeIcons.UPLOAD = 'pi pi-upload';\nPrimeIcons.USER = 'pi pi-user';\nPrimeIcons.USER_EDIT = 'pi pi-user-edit';\nPrimeIcons.USER_MINUS = 'pi pi-user-minus';\nPrimeIcons.USER_PLUS = 'pi pi-user-plus';\nPrimeIcons.USERS = 'pi pi-users';\nPrimeIcons.VIDEO = 'pi pi-video';\nPrimeIcons.VIMEO = 'pi pi-vimeo';\nPrimeIcons.VOLUME_DOWN = 'pi pi-volume-down';\nPrimeIcons.VOLUME_OFF = 'pi pi-volume-off';\nPrimeIcons.VOLUME_UP = 'pi pi-volume-up';\nPrimeIcons.WALLET = 'pi pi-wallet';\nPrimeIcons.WHATSAPP = 'pi pi-whatsapp';\nPrimeIcons.WIFI = 'pi pi-wifi';\nPrimeIcons.WINDOW_MAXIMIZE = 'pi pi-window-maximize';\nPrimeIcons.WINDOW_MINIMIZE = 'pi pi-window-minimize';\nPrimeIcons.YOUTUBE = 'pi pi-youtube';\n\nclass FilterOperator {\n}\nFilterOperator.AND = 'and';\nFilterOperator.OR = 'or';\n\nclass Header {\n}\nHeader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: Header, deps: [], target: i0.ɵɵFactoryTarget.Component });\nHeader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.7\", type: Header, selector: \"p-header\", ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: Header, decorators: [{\n type: Component,\n args: [{\n selector: 'p-header',\n template: ''\n }]\n }] });\nclass Footer {\n}\nFooter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: Footer, deps: [], target: i0.ɵɵFactoryTarget.Component });\nFooter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.7\", type: Footer, selector: \"p-footer\", ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: Footer, decorators: [{\n type: Component,\n args: [{\n selector: 'p-footer',\n template: ''\n }]\n }] });\nclass PrimeTemplate {\n constructor(template) {\n this.template = template;\n }\n getType() {\n return this.name;\n }\n}\nPrimeTemplate.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: PrimeTemplate, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nPrimeTemplate.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.7\", type: PrimeTemplate, selector: \"[pTemplate]\", inputs: { type: \"type\", name: [\"pTemplate\", \"name\"] }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: PrimeTemplate, decorators: [{\n type: Directive,\n args: [{\n selector: '[pTemplate]',\n host: {}\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }, propDecorators: { type: [{\n type: Input\n }], name: [{\n type: Input,\n args: ['pTemplate']\n }] } });\nclass SharedModule {\n}\nSharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: SharedModule, declarations: [Header, Footer, PrimeTemplate], imports: [CommonModule], exports: [Header, Footer, PrimeTemplate] });\nSharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: SharedModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: SharedModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n exports: [Header, Footer, PrimeTemplate],\n declarations: [Header, Footer, PrimeTemplate]\n }]\n }] });\n\nclass TreeDragDropService {\n constructor() {\n this.dragStartSource = new Subject();\n this.dragStopSource = new Subject();\n this.dragStart$ = this.dragStartSource.asObservable();\n this.dragStop$ = this.dragStopSource.asObservable();\n }\n startDrag(event) {\n this.dragStartSource.next(event);\n }\n stopDrag(event) {\n this.dragStopSource.next(event);\n }\n}\nTreeDragDropService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: TreeDragDropService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nTreeDragDropService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: TreeDragDropService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: TreeDragDropService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ConfirmEventType, ConfirmationService, ContextMenuService, FilterMatchMode, FilterOperator, FilterService, Footer, Header, MessageService, OverlayService, PrimeIcons, PrimeNGConfig, PrimeTemplate, SharedModule, TranslationKeys, TreeDragDropService };\n","import * as i0 from '@angular/core';\nimport { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ViewChild, ContentChildren, NgModule } from '@angular/core';\nimport * as i3 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { trigger, transition, style, animate } from '@angular/animations';\nimport { InputTextModule } from 'primeng/inputtext';\nimport * as i4 from 'primeng/button';\nimport { ButtonModule } from 'primeng/button';\nimport * as i5 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport * as i1 from 'primeng/api';\nimport { TranslationKeys, PrimeTemplate, SharedModule } from 'primeng/api';\nimport { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';\nimport { UniqueComponentId, ObjectUtils, ZIndexUtils } from 'primeng/utils';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport * as i2 from '@angular/cdk/scrolling';\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\n\nconst AUTOCOMPLETE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AutoComplete),\n multi: true\n};\nclass AutoComplete {\n constructor(el, renderer, cd, differs, config, overlayService) {\n this.el = el;\n this.renderer = renderer;\n this.cd = cd;\n this.differs = differs;\n this.config = config;\n this.overlayService = overlayService;\n this.minLength = 1;\n this.delay = 300;\n this.type = 'text';\n this.autoZIndex = true;\n this.baseZIndex = 0;\n this.dropdownIcon = \"pi pi-chevron-down\";\n this.unique = true;\n this.completeOnFocus = false;\n this.showClear = false;\n this.completeMethod = new EventEmitter();\n this.onSelect = new EventEmitter();\n this.onUnselect = new EventEmitter();\n this.onFocus = new EventEmitter();\n this.onBlur = new EventEmitter();\n this.onDropdownClick = new EventEmitter();\n this.onClear = new EventEmitter();\n this.onKeyUp = new EventEmitter();\n this.onShow = new EventEmitter();\n this.onHide = new EventEmitter();\n this.scrollHeight = '200px';\n this.dropdownMode = 'blank';\n this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';\n this.hideTransitionOptions = '.1s linear';\n this.autocomplete = 'off';\n this.onModelChange = () => { };\n this.onModelTouched = () => { };\n this.overlayVisible = false;\n this.focus = false;\n this.inputFieldValue = null;\n this.inputValue = null;\n this.differ = differs.find([]).create(null);\n this.listId = UniqueComponentId() + '_list';\n }\n get suggestions() {\n return this._suggestions;\n }\n set suggestions(val) {\n this._suggestions = val;\n this.handleSuggestionsChange();\n }\n ngAfterViewChecked() {\n //Use timeouts as since Angular 4.2, AfterViewChecked is broken and not called after panel is updated\n if (this.suggestionsUpdated && this.overlay && this.overlay.offsetParent) {\n setTimeout(() => {\n if (this.overlay) {\n this.alignOverlay();\n }\n }, 1);\n this.suggestionsUpdated = false;\n }\n if (this.highlightOptionChanged) {\n setTimeout(() => {\n if (this.overlay && this.itemsWrapper) {\n let listItem = DomHandler.findSingle(this.overlay, 'li.p-highlight');\n if (listItem) {\n DomHandler.scrollInView(this.itemsWrapper, listItem);\n }\n if (this.virtualScroll && this.viewPort) {\n let range = this.viewPort.getRenderedRange();\n this.updateVirtualScrollSelectedIndex();\n if (range.start > this.virtualScrollSelectedIndex || range.end < this.virtualScrollSelectedIndex) {\n this.viewPort.scrollToIndex(this.virtualScrollSelectedIndex);\n }\n }\n }\n }, 1);\n this.highlightOptionChanged = false;\n }\n }\n handleSuggestionsChange() {\n if (this._suggestions != null && this.loading) {\n this.highlightOption = null;\n if (this._suggestions.length) {\n this.noResults = false;\n this.show();\n this.suggestionsUpdated = true;\n if (this.autoHighlight) {\n this.highlightOption = this._suggestions[0];\n }\n }\n else {\n this.noResults = true;\n if (this.showEmptyMessage) {\n this.show();\n this.suggestionsUpdated = true;\n }\n else {\n this.hide();\n }\n }\n this.loading = false;\n }\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'item':\n this.itemTemplate = item.template;\n break;\n case 'group':\n this.groupTemplate = item.template;\n break;\n case 'selectedItem':\n this.selectedItemTemplate = item.template;\n break;\n case 'header':\n this.headerTemplate = item.template;\n break;\n case 'empty':\n this.emptyTemplate = item.template;\n break;\n case 'footer':\n this.footerTemplate = item.template;\n break;\n default:\n this.itemTemplate = item.template;\n break;\n }\n });\n }\n updateVirtualScrollSelectedIndex() {\n if (this.highlightOption && this.suggestions && this.suggestions.length) {\n this.virtualScrollSelectedIndex = this.findOptionIndex(this.highlightOption, this.suggestions);\n }\n }\n writeValue(value) {\n this.value = value;\n this.filled = this.value && this.value != '';\n this.updateInputField();\n this.cd.markForCheck();\n }\n getOptionGroupChildren(optionGroup) {\n return this.optionGroupChildren ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;\n }\n getOptionGroupLabel(optionGroup) {\n return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : (optionGroup.label != undefined ? optionGroup.label : optionGroup);\n }\n registerOnChange(fn) {\n this.onModelChange = fn;\n }\n registerOnTouched(fn) {\n this.onModelTouched = fn;\n }\n setDisabledState(val) {\n this.disabled = val;\n this.cd.markForCheck();\n }\n onInput(event) {\n // When an input element with a placeholder is clicked, the onInput event is invoked in IE.\n if (!this.inputKeyDown && DomHandler.isIE()) {\n return;\n }\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n let value = event.target.value;\n this.inputValue = value;\n if (!this.multiple && !this.forceSelection) {\n this.onModelChange(value);\n }\n if (value.length === 0 && !this.multiple) {\n this.hide();\n this.onClear.emit(event);\n this.onModelChange(value);\n }\n if (value.length >= this.minLength) {\n this.timeout = setTimeout(() => {\n this.search(event, value);\n }, this.delay);\n }\n else {\n this.hide();\n }\n this.updateFilledState();\n this.inputKeyDown = false;\n }\n onInputClick(event) {\n if (this.documentClickListener) {\n this.inputClick = true;\n }\n }\n search(event, query) {\n //allow empty string but not undefined or null\n if (query === undefined || query === null) {\n return;\n }\n this.loading = true;\n this.completeMethod.emit({\n originalEvent: event,\n query: query\n });\n }\n selectItem(option, focus = true) {\n if (this.forceSelectionUpdateModelTimeout) {\n clearTimeout(this.forceSelectionUpdateModelTimeout);\n this.forceSelectionUpdateModelTimeout = null;\n }\n if (this.multiple) {\n this.multiInputEL.nativeElement.value = '';\n this.value = this.value || [];\n if (!this.isSelected(option) || !this.unique) {\n this.value = [...this.value, option];\n this.onModelChange(this.value);\n }\n }\n else {\n this.inputEL.nativeElement.value = this.resolveFieldData(option);\n this.value = option;\n this.onModelChange(this.value);\n }\n this.onSelect.emit(option);\n this.updateFilledState();\n if (focus) {\n this.itemClicked = true;\n this.focusInput();\n }\n }\n show() {\n if (this.multiInputEL || this.inputEL) {\n let hasFocus = this.multiple ?\n this.multiInputEL.nativeElement.ownerDocument.activeElement == this.multiInputEL.nativeElement :\n this.inputEL.nativeElement.ownerDocument.activeElement == this.inputEL.nativeElement;\n if (!this.overlayVisible && hasFocus) {\n this.overlayVisible = true;\n }\n }\n }\n clear() {\n if (this.multiple) {\n this.value = null;\n }\n else {\n this.inputValue = null;\n this.inputEL.nativeElement.value = '';\n }\n this.onModelChange(this.value);\n this.onClear.emit();\n }\n onOverlayAnimationStart(event) {\n switch (event.toState) {\n case 'visible':\n this.overlay = event.element;\n this.itemsWrapper = this.virtualScroll ? DomHandler.findSingle(this.overlay, '.cdk-virtual-scroll-viewport') : this.overlay;\n this.appendOverlay();\n if (this.autoZIndex) {\n ZIndexUtils.set('overlay', this.overlay, this.baseZIndex + this.config.zIndex.overlay);\n }\n this.alignOverlay();\n this.bindDocumentClickListener();\n this.bindDocumentResizeListener();\n this.bindScrollListener();\n this.onShow.emit(event);\n break;\n case 'void':\n this.onOverlayHide();\n break;\n }\n }\n onOverlayAnimationEnd(event) {\n switch (event.toState) {\n case 'void':\n if (this.autoZIndex) {\n ZIndexUtils.clear(event.element);\n }\n break;\n }\n }\n onOverlayClick(event) {\n this.overlayService.add({\n originalEvent: event,\n target: this.el.nativeElement\n });\n }\n appendOverlay() {\n if (this.appendTo) {\n if (this.appendTo === 'body')\n document.body.appendChild(this.overlay);\n else\n DomHandler.appendChild(this.overlay, this.appendTo);\n if (!this.overlay.style.minWidth) {\n this.overlay.style.minWidth = DomHandler.getWidth(this.el.nativeElement.children[0]) + 'px';\n }\n }\n }\n resolveFieldData(value) {\n let data = this.field ? ObjectUtils.resolveFieldData(value, this.field) : value;\n return data !== (null || undefined) ? data : '';\n }\n restoreOverlayAppend() {\n if (this.overlay && this.appendTo) {\n this.el.nativeElement.appendChild(this.overlay);\n }\n }\n alignOverlay() {\n if (this.appendTo)\n DomHandler.absolutePosition(this.overlay, (this.multiple ? this.multiContainerEL.nativeElement : this.inputEL.nativeElement));\n else\n DomHandler.relativePosition(this.overlay, (this.multiple ? this.multiContainerEL.nativeElement : this.inputEL.nativeElement));\n }\n hide() {\n this.overlayVisible = false;\n this.cd.markForCheck();\n }\n handleDropdownClick(event) {\n if (!this.overlayVisible) {\n this.focusInput();\n let queryValue = this.multiple ? this.multiInputEL.nativeElement.value : this.inputEL.nativeElement.value;\n if (this.dropdownMode === 'blank')\n this.search(event, '');\n else if (this.dropdownMode === 'current')\n this.search(event, queryValue);\n this.onDropdownClick.emit({\n originalEvent: event,\n query: queryValue\n });\n }\n else {\n this.hide();\n }\n }\n focusInput() {\n if (this.multiple)\n this.multiInputEL.nativeElement.focus();\n else\n this.inputEL.nativeElement.focus();\n }\n get emptyMessageLabel() {\n return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);\n }\n removeItem(item) {\n let itemIndex = DomHandler.index(item);\n let removedValue = this.value[itemIndex];\n this.value = this.value.filter((val, i) => i != itemIndex);\n this.onModelChange(this.value);\n this.updateFilledState();\n this.onUnselect.emit(removedValue);\n }\n onKeydown(event) {\n if (this.overlayVisible) {\n switch (event.which) {\n //down\n case 40:\n if (this.group) {\n let highlightItemIndex = this.findOptionGroupIndex(this.highlightOption, this.suggestions);\n if (highlightItemIndex !== -1) {\n let nextItemIndex = highlightItemIndex.itemIndex + 1;\n if (nextItemIndex < (this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex]).length)) {\n this.highlightOption = this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex])[nextItemIndex];\n this.highlightOptionChanged = true;\n }\n else if (this.suggestions[highlightItemIndex.groupIndex + 1]) {\n this.highlightOption = this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex + 1])[0];\n this.highlightOptionChanged = true;\n }\n }\n else {\n this.highlightOption = this.getOptionGroupChildren(this.suggestions[0])[0];\n }\n }\n else {\n let highlightItemIndex = this.findOptionIndex(this.highlightOption, this.suggestions);\n if (highlightItemIndex != -1) {\n var nextItemIndex = highlightItemIndex + 1;\n if (nextItemIndex != (this.suggestions.length)) {\n this.highlightOption = this.suggestions[nextItemIndex];\n this.highlightOptionChanged = true;\n }\n }\n else {\n this.highlightOption = this.suggestions[0];\n }\n }\n event.preventDefault();\n break;\n //up\n case 38:\n if (this.group) {\n let highlightItemIndex = this.findOptionGroupIndex(this.highlightOption, this.suggestions);\n if (highlightItemIndex !== -1) {\n let prevItemIndex = highlightItemIndex.itemIndex - 1;\n if (prevItemIndex >= 0) {\n this.highlightOption = this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex])[prevItemIndex];\n this.highlightOptionChanged = true;\n }\n else if (prevItemIndex < 0) {\n let prevGroup = this.suggestions[highlightItemIndex.groupIndex - 1];\n if (prevGroup) {\n this.highlightOption = this.getOptionGroupChildren(prevGroup)[this.getOptionGroupChildren(prevGroup).length - 1];\n this.highlightOptionChanged = true;\n }\n }\n }\n }\n else {\n let highlightItemIndex = this.findOptionIndex(this.highlightOption, this.suggestions);\n if (highlightItemIndex > 0) {\n let prevItemIndex = highlightItemIndex - 1;\n this.highlightOption = this.suggestions[prevItemIndex];\n this.highlightOptionChanged = true;\n }\n }\n event.preventDefault();\n break;\n //enter\n case 13:\n if (this.highlightOption) {\n this.selectItem(this.highlightOption);\n this.hide();\n }\n event.preventDefault();\n break;\n //escape\n case 27:\n this.hide();\n event.preventDefault();\n break;\n //tab\n case 9:\n if (this.highlightOption) {\n this.selectItem(this.highlightOption);\n }\n this.hide();\n break;\n }\n }\n else {\n if (event.which === 40 && this.suggestions) {\n this.search(event, event.target.value);\n }\n else if ((event.ctrlKey && event.key === 'z') && !this.multiple) {\n this.inputEL.nativeElement.value = this.resolveFieldData(null);\n this.value = '';\n this.onModelChange(this.value);\n }\n else if ((event.ctrlKey && event.key === 'z') && this.multiple) {\n this.value.pop();\n this.onModelChange(this.value);\n this.updateFilledState();\n }\n }\n if (this.multiple) {\n switch (event.which) {\n //backspace\n case 8:\n if (this.value && this.value.length && !this.multiInputEL.nativeElement.value) {\n this.value = [...this.value];\n const removedValue = this.value.pop();\n this.onModelChange(this.value);\n this.updateFilledState();\n this.onUnselect.emit(removedValue);\n }\n break;\n }\n }\n this.inputKeyDown = true;\n }\n onKeyup(event) {\n this.onKeyUp.emit(event);\n }\n onInputFocus(event) {\n if (!this.itemClicked && this.completeOnFocus) {\n let queryValue = this.multiple ? this.multiInputEL.nativeElement.value : this.inputEL.nativeElement.value;\n this.search(event, queryValue);\n }\n this.focus = true;\n this.onFocus.emit(event);\n this.itemClicked = false;\n }\n onInputBlur(event) {\n this.focus = false;\n this.onModelTouched();\n this.onBlur.emit(event);\n }\n onInputChange(event) {\n if (this.forceSelection) {\n let valid = false;\n let inputValue = event.target.value.trim();\n if (this.suggestions) {\n for (let suggestion of this.suggestions) {\n let itemValue = this.field ? ObjectUtils.resolveFieldData(suggestion, this.field) : suggestion;\n if (itemValue && inputValue === itemValue.trim()) {\n valid = true;\n this.forceSelectionUpdateModelTimeout = setTimeout(() => {\n this.selectItem(suggestion, false);\n }, 250);\n break;\n }\n }\n }\n if (!valid) {\n if (this.multiple) {\n this.multiInputEL.nativeElement.value = '';\n }\n else {\n this.value = null;\n this.inputEL.nativeElement.value = '';\n }\n this.onClear.emit(event);\n this.onModelChange(this.value);\n this.updateFilledState();\n }\n }\n }\n onInputPaste(event) {\n this.onKeydown(event);\n }\n isSelected(val) {\n let selected = false;\n if (this.value && this.value.length) {\n for (let i = 0; i < this.value.length; i++) {\n if (ObjectUtils.equals(this.value[i], val, this.dataKey)) {\n selected = true;\n break;\n }\n }\n }\n return selected;\n }\n findOptionIndex(option, suggestions) {\n let index = -1;\n if (suggestions) {\n for (let i = 0; i < suggestions.length; i++) {\n if (ObjectUtils.equals(option, suggestions[i])) {\n index = i;\n break;\n }\n }\n }\n return index;\n }\n findOptionGroupIndex(val, opts) {\n let groupIndex, itemIndex;\n if (opts) {\n for (let i = 0; i < opts.length; i++) {\n groupIndex = i;\n itemIndex = this.findOptionIndex(val, this.getOptionGroupChildren(opts[i]));\n if (itemIndex !== -1) {\n break;\n }\n }\n }\n if (itemIndex !== -1) {\n return { groupIndex: groupIndex, itemIndex: itemIndex };\n }\n else {\n return -1;\n }\n }\n updateFilledState() {\n if (this.multiple)\n this.filled = (this.value && this.value.length) || (this.multiInputEL && this.multiInputEL.nativeElement && this.multiInputEL.nativeElement.value != '');\n else\n this.filled = (this.inputFieldValue && this.inputFieldValue != '') || (this.inputEL && this.inputEL.nativeElement && this.inputEL.nativeElement.value != '');\n ;\n }\n updateInputField() {\n let formattedValue = this.resolveFieldData(this.value);\n this.inputFieldValue = formattedValue;\n if (this.inputEL && this.inputEL.nativeElement) {\n this.inputEL.nativeElement.value = formattedValue;\n }\n this.updateFilledState();\n }\n bindDocumentClickListener() {\n if (!this.documentClickListener) {\n const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';\n this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {\n if (event.which === 3) {\n return;\n }\n if (!this.inputClick && !this.isDropdownClick(event)) {\n this.hide();\n }\n this.inputClick = false;\n this.cd.markForCheck();\n });\n }\n }\n isDropdownClick(event) {\n if (this.dropdown) {\n let target = event.target;\n return (target === this.dropdownButton.nativeElement || target.parentNode === this.dropdownButton.nativeElement);\n }\n else {\n return false;\n }\n }\n unbindDocumentClickListener() {\n if (this.documentClickListener) {\n this.documentClickListener();\n this.documentClickListener = null;\n }\n }\n bindDocumentResizeListener() {\n this.documentResizeListener = this.onWindowResize.bind(this);\n window.addEventListener('resize', this.documentResizeListener);\n }\n unbindDocumentResizeListener() {\n if (this.documentResizeListener) {\n window.removeEventListener('resize', this.documentResizeListener);\n this.documentResizeListener = null;\n }\n }\n onWindowResize() {\n this.hide();\n }\n bindScrollListener() {\n if (!this.scrollHandler) {\n this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerEL.nativeElement, () => {\n if (this.overlayVisible) {\n this.hide();\n }\n });\n }\n this.scrollHandler.bindScrollListener();\n }\n unbindScrollListener() {\n if (this.scrollHandler) {\n this.scrollHandler.unbindScrollListener();\n }\n }\n onOverlayHide() {\n this.unbindDocumentClickListener();\n this.unbindDocumentResizeListener();\n this.unbindScrollListener();\n this.overlay = null;\n this.onHide.emit();\n }\n ngOnDestroy() {\n if (this.forceSelectionUpdateModelTimeout) {\n clearTimeout(this.forceSelectionUpdateModelTimeout);\n this.forceSelectionUpdateModelTimeout = null;\n }\n if (this.scrollHandler) {\n this.scrollHandler.destroy();\n this.scrollHandler = null;\n }\n if (this.overlay) {\n ZIndexUtils.clear(this.overlay);\n }\n this.restoreOverlayAppend();\n this.onOverlayHide();\n }\n}\nAutoComplete.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: AutoComplete, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.IterableDiffers }, { token: i1.PrimeNGConfig }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });\nAutoComplete.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.7\", type: AutoComplete, selector: \"p-autoComplete\", inputs: { minLength: \"minLength\", delay: \"delay\", style: \"style\", panelStyle: \"panelStyle\", styleClass: \"styleClass\", panelStyleClass: \"panelStyleClass\", inputStyle: \"inputStyle\", inputId: \"inputId\", inputStyleClass: \"inputStyleClass\", placeholder: \"placeholder\", readonly: \"readonly\", disabled: \"disabled\", virtualScroll: \"virtualScroll\", itemSize: \"itemSize\", maxlength: \"maxlength\", name: \"name\", required: \"required\", size: \"size\", appendTo: \"appendTo\", autoHighlight: \"autoHighlight\", forceSelection: \"forceSelection\", type: \"type\", autoZIndex: \"autoZIndex\", baseZIndex: \"baseZIndex\", ariaLabel: \"ariaLabel\", dropdownAriaLabel: \"dropdownAriaLabel\", ariaLabelledBy: \"ariaLabelledBy\", dropdownIcon: \"dropdownIcon\", unique: \"unique\", group: \"group\", completeOnFocus: \"completeOnFocus\", showClear: \"showClear\", field: \"field\", scrollHeight: \"scrollHeight\", dropdown: \"dropdown\", showEmptyMessage: \"showEmptyMessage\", dropdownMode: \"dropdownMode\", multiple: \"multiple\", tabindex: \"tabindex\", dataKey: \"dataKey\", emptyMessage: \"emptyMessage\", showTransitionOptions: \"showTransitionOptions\", hideTransitionOptions: \"hideTransitionOptions\", autofocus: \"autofocus\", autocomplete: \"autocomplete\", optionGroupChildren: \"optionGroupChildren\", optionGroupLabel: \"optionGroupLabel\", suggestions: \"suggestions\" }, outputs: { completeMethod: \"completeMethod\", onSelect: \"onSelect\", onUnselect: \"onUnselect\", onFocus: \"onFocus\", onBlur: \"onBlur\", onDropdownClick: \"onDropdownClick\", onClear: \"onClear\", onKeyUp: \"onKeyUp\", onShow: \"onShow\", onHide: \"onHide\" }, host: { properties: { \"class.p-inputwrapper-filled\": \"filled\", \"class.p-inputwrapper-focus\": \"(focus && !disabled) ||\\u00A0overlayVisible\", \"class.p-autocomplete-clearable\": \"showClear && !disabled\" }, classAttribute: \"p-element p-inputwrapper\" }, providers: [AUTOCOMPLETE_VALUE_ACCESSOR], queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"containerEL\", first: true, predicate: [\"container\"], descendants: true }, { propertyName: \"inputEL\", first: true, predicate: [\"in\"], descendants: true }, { propertyName: \"multiInputEL\", first: true, predicate: [\"multiIn\"], descendants: true }, { propertyName: \"multiContainerEL\", first: true, predicate: [\"multiContainer\"], descendants: true }, { propertyName: \"dropdownButton\", first: true, predicate: [\"ddBtn\"], descendants: true }, { propertyName: \"viewPort\", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], ngImport: i0, template: `\n \n \n \n \n
    \n
  • \n \n {{resolveFieldData(val)}}\n \n
  • \n
  • \n \n
  • \n
\n \n
\n \n
    \n \n \n
  • \n {{getOptionGroupLabel(optgroup)||'empty'}}\n \n
  • \n \n
    \n
    \n \n \n \n \n \n
  • \n {{resolveFieldData(option)}}\n \n
  • \n
    \n \n \n \n
  • \n {{resolveFieldData(option)}}\n \n
  • \n
    \n
    \n
    \n
  • \n \n {{emptyMessageLabel}}\n \n \n
  • \n
    \n
\n \n
\n
\n `, isInline: true, styles: [\".p-autocomplete{display:inline-flex;position:relative}.p-autocomplete-loader{position:absolute;top:50%;margin-top:-.5rem}.p-autocomplete-dd .p-autocomplete-input{flex:1 1 auto;width:1%}.p-autocomplete-dd .p-autocomplete-input,.p-autocomplete-dd .p-autocomplete-multiple-container{border-top-right-radius:0;border-bottom-right-radius:0}.p-autocomplete-dd .p-autocomplete-dropdown{border-top-left-radius:0;border-bottom-left-radius:0}.p-autocomplete .p-autocomplete-panel{min-width:100%;top:0;left:0}.p-autocomplete-panel{position:absolute;overflow:auto}.p-autocomplete-items{margin:0;padding:0;list-style-type:none}.p-autocomplete-item{cursor:pointer;white-space:nowrap;position:relative;overflow:hidden}.p-autocomplete-multiple-container{margin:0;padding:0;list-style-type:none;cursor:text;overflow:hidden;display:flex;align-items:center;flex-wrap:wrap}.p-autocomplete-token{cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-autocomplete-token-icon{cursor:pointer}.p-autocomplete-input-token{flex:1 1 auto;display:inline-flex}.p-autocomplete-input-token input{border:0 none;outline:0 none;background-color:transparent;margin:0;padding:0;box-shadow:none;border-radius:0;width:100%}.p-fluid .p-autocomplete{display:flex}.p-fluid .p-autocomplete-dd .p-autocomplete-input{width:1%}.p-autocomplete-clear-icon{position:absolute;top:50%;margin-top:-.5rem;cursor:pointer}.p-autocomplete-clearable{position:relative}\\n\"], components: [{ type: i2.CdkVirtualScrollViewport, selector: \"cdk-virtual-scroll-viewport\", inputs: [\"orientation\", \"appendOnly\"], outputs: [\"scrolledIndexChange\"] }], directives: [{ type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i3.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i3.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i4.ButtonDirective, selector: \"[pButton]\", inputs: [\"iconPos\", \"loadingIcon\", \"label\", \"icon\", \"loading\"] }, { type: i5.Ripple, selector: \"[pRipple]\" }, { type: i2.CdkFixedSizeVirtualScroll, selector: \"cdk-virtual-scroll-viewport[itemSize]\", inputs: [\"itemSize\", \"minBufferPx\", \"maxBufferPx\"] }, { type: i2.CdkVirtualForOf, selector: \"[cdkVirtualFor][cdkVirtualForOf]\", inputs: [\"cdkVirtualForOf\", \"cdkVirtualForTrackBy\", \"cdkVirtualForTemplate\", \"cdkVirtualForTemplateCacheSize\"] }], animations: [\n trigger('overlayAnimation', [\n transition(':enter', [\n style({ opacity: 0, transform: 'scaleY(0.8)' }),\n animate('{{showTransitionParams}}')\n ]),\n transition(':leave', [\n animate('{{hideTransitionParams}}', style({ opacity: 0 }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: AutoComplete, decorators: [{\n type: Component,\n args: [{ selector: 'p-autoComplete', template: `\n \n \n \n \n
    \n
  • \n \n {{resolveFieldData(val)}}\n \n
  • \n
  • \n \n
  • \n
\n \n
\n \n
    \n \n \n
  • \n {{getOptionGroupLabel(optgroup)||'empty'}}\n \n
  • \n \n
    \n
    \n \n \n \n \n \n
  • \n {{resolveFieldData(option)}}\n \n
  • \n
    \n \n \n \n
  • \n {{resolveFieldData(option)}}\n \n
  • \n
    \n
    \n
    \n
  • \n \n {{emptyMessageLabel}}\n \n \n
  • \n
    \n
\n \n
\n
\n `, animations: [\n trigger('overlayAnimation', [\n transition(':enter', [\n style({ opacity: 0, transform: 'scaleY(0.8)' }),\n animate('{{showTransitionParams}}')\n ]),\n transition(':leave', [\n animate('{{hideTransitionParams}}', style({ opacity: 0 }))\n ])\n ])\n ], host: {\n 'class': 'p-element p-inputwrapper',\n '[class.p-inputwrapper-filled]': 'filled',\n '[class.p-inputwrapper-focus]': '(focus && !disabled) || overlayVisible',\n '[class.p-autocomplete-clearable]': 'showClear && !disabled'\n }, providers: [AUTOCOMPLETE_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [\".p-autocomplete{display:inline-flex;position:relative}.p-autocomplete-loader{position:absolute;top:50%;margin-top:-.5rem}.p-autocomplete-dd .p-autocomplete-input{flex:1 1 auto;width:1%}.p-autocomplete-dd .p-autocomplete-input,.p-autocomplete-dd .p-autocomplete-multiple-container{border-top-right-radius:0;border-bottom-right-radius:0}.p-autocomplete-dd .p-autocomplete-dropdown{border-top-left-radius:0;border-bottom-left-radius:0}.p-autocomplete .p-autocomplete-panel{min-width:100%;top:0;left:0}.p-autocomplete-panel{position:absolute;overflow:auto}.p-autocomplete-items{margin:0;padding:0;list-style-type:none}.p-autocomplete-item{cursor:pointer;white-space:nowrap;position:relative;overflow:hidden}.p-autocomplete-multiple-container{margin:0;padding:0;list-style-type:none;cursor:text;overflow:hidden;display:flex;align-items:center;flex-wrap:wrap}.p-autocomplete-token{cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-autocomplete-token-icon{cursor:pointer}.p-autocomplete-input-token{flex:1 1 auto;display:inline-flex}.p-autocomplete-input-token input{border:0 none;outline:0 none;background-color:transparent;margin:0;padding:0;box-shadow:none;border-radius:0;width:100%}.p-fluid .p-autocomplete{display:flex}.p-fluid .p-autocomplete-dd .p-autocomplete-input{width:1%}.p-autocomplete-clear-icon{position:absolute;top:50%;margin-top:-.5rem;cursor:pointer}.p-autocomplete-clearable{position:relative}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.IterableDiffers }, { type: i1.PrimeNGConfig }, { type: i1.OverlayService }]; }, propDecorators: { minLength: [{\n type: Input\n }], delay: [{\n type: Input\n }], style: [{\n type: Input\n }], panelStyle: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], panelStyleClass: [{\n type: Input\n }], inputStyle: [{\n type: Input\n }], inputId: [{\n type: Input\n }], inputStyleClass: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], readonly: [{\n type: Input\n }], disabled: [{\n type: Input\n }], virtualScroll: [{\n type: Input\n }], itemSize: [{\n type: Input\n }], maxlength: [{\n type: Input\n }], name: [{\n type: Input\n }], required: [{\n type: Input\n }], size: [{\n type: Input\n }], appendTo: [{\n type: Input\n }], autoHighlight: [{\n type: Input\n }], forceSelection: [{\n type: Input\n }], type: [{\n type: Input\n }], autoZIndex: [{\n type: Input\n }], baseZIndex: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], dropdownAriaLabel: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], dropdownIcon: [{\n type: Input\n }], unique: [{\n type: Input\n }], group: [{\n type: Input\n }], completeOnFocus: [{\n type: Input\n }], showClear: [{\n type: Input\n }], completeMethod: [{\n type: Output\n }], onSelect: [{\n type: Output\n }], onUnselect: [{\n type: Output\n }], onFocus: [{\n type: Output\n }], onBlur: [{\n type: Output\n }], onDropdownClick: [{\n type: Output\n }], onClear: [{\n type: Output\n }], onKeyUp: [{\n type: Output\n }], onShow: [{\n type: Output\n }], onHide: [{\n type: Output\n }], field: [{\n type: Input\n }], scrollHeight: [{\n type: Input\n }], dropdown: [{\n type: Input\n }], showEmptyMessage: [{\n type: Input\n }], dropdownMode: [{\n type: Input\n }], multiple: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], dataKey: [{\n type: Input\n }], emptyMessage: [{\n type: Input\n }], showTransitionOptions: [{\n type: Input\n }], hideTransitionOptions: [{\n type: Input\n }], autofocus: [{\n type: Input\n }], autocomplete: [{\n type: Input\n }], optionGroupChildren: [{\n type: Input\n }], optionGroupLabel: [{\n type: Input\n }], containerEL: [{\n type: ViewChild,\n args: ['container']\n }], inputEL: [{\n type: ViewChild,\n args: ['in']\n }], multiInputEL: [{\n type: ViewChild,\n args: ['multiIn']\n }], multiContainerEL: [{\n type: ViewChild,\n args: ['multiContainer']\n }], dropdownButton: [{\n type: ViewChild,\n args: ['ddBtn']\n }], viewPort: [{\n type: ViewChild,\n args: [CdkVirtualScrollViewport]\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }], suggestions: [{\n type: Input\n }] } });\nclass AutoCompleteModule {\n}\nAutoCompleteModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: AutoCompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nAutoCompleteModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: AutoCompleteModule, declarations: [AutoComplete], imports: [CommonModule, InputTextModule, ButtonModule, SharedModule, RippleModule, ScrollingModule], exports: [AutoComplete, SharedModule, ScrollingModule] });\nAutoCompleteModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: AutoCompleteModule, imports: [[CommonModule, InputTextModule, ButtonModule, SharedModule, RippleModule, ScrollingModule], SharedModule, ScrollingModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: AutoCompleteModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, InputTextModule, ButtonModule, SharedModule, RippleModule, ScrollingModule],\n exports: [AutoComplete, SharedModule, ScrollingModule],\n declarations: [AutoComplete]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AUTOCOMPLETE_VALUE_ACCESSOR, AutoComplete, AutoCompleteModule };\n","import * as i0 from '@angular/core';\nimport { Directive, Input, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, ContentChildren, Output, NgModule } from '@angular/core';\nimport { DomHandler } from 'primeng/dom';\nimport * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i1 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport { PrimeTemplate } from 'primeng/api';\n\nclass ButtonDirective {\n constructor(el) {\n this.el = el;\n this.iconPos = 'left';\n this.loadingIcon = \"pi pi-spinner pi-spin\";\n this._loading = false;\n }\n ngAfterViewInit() {\n this._initialStyleClass = this.el.nativeElement.className;\n DomHandler.addMultipleClasses(this.el.nativeElement, this.getStyleClass());\n if (this.icon || this.loading) {\n this.createIconEl();\n }\n let labelElement = document.createElement(\"span\");\n if (this.icon && !this.label) {\n labelElement.setAttribute('aria-hidden', 'true');\n }\n labelElement.className = 'p-button-label';\n if (this.label)\n labelElement.appendChild(document.createTextNode(this.label));\n else\n labelElement.innerHTML = ' ';\n this.el.nativeElement.appendChild(labelElement);\n this.initialized = true;\n }\n getStyleClass() {\n let styleClass = 'p-button p-component';\n if (this.icon && !this.label) {\n styleClass = styleClass + ' p-button-icon-only';\n }\n if (this.loading) {\n styleClass = styleClass + ' p-disabled p-button-loading';\n if (!this.icon && this.label)\n styleClass = styleClass + ' p-button-loading-label-only';\n }\n return styleClass;\n }\n setStyleClass() {\n let styleClass = this.getStyleClass();\n this.el.nativeElement.className = styleClass + ' ' + this._initialStyleClass;\n }\n createIconEl() {\n let iconElement = document.createElement(\"span\");\n iconElement.className = 'p-button-icon';\n iconElement.setAttribute(\"aria-hidden\", \"true\");\n let iconPosClass = this.label ? 'p-button-icon-' + this.iconPos : null;\n if (iconPosClass) {\n DomHandler.addClass(iconElement, iconPosClass);\n }\n let iconClass = this.getIconClass();\n if (iconClass) {\n DomHandler.addMultipleClasses(iconElement, iconClass);\n }\n let labelEl = DomHandler.findSingle(this.el.nativeElement, '.p-button-label');\n if (labelEl)\n this.el.nativeElement.insertBefore(iconElement, labelEl);\n else\n this.el.nativeElement.appendChild(iconElement);\n }\n getIconClass() {\n return this.loading ? 'p-button-loading-icon ' + this.loadingIcon : this._icon;\n }\n setIconClass() {\n let iconElement = DomHandler.findSingle(this.el.nativeElement, '.p-button-icon');\n if (iconElement) {\n if (this.iconPos)\n iconElement.className = 'p-button-icon p-button-icon-' + this.iconPos + ' ' + this.getIconClass();\n else\n iconElement.className = 'p-button-icon ' + this.getIconClass();\n }\n else {\n this.createIconEl();\n }\n }\n removeIconElement() {\n let iconElement = DomHandler.findSingle(this.el.nativeElement, '.p-button-icon');\n this.el.nativeElement.removeChild(iconElement);\n }\n get label() {\n return this._label;\n }\n set label(val) {\n this._label = val;\n if (this.initialized) {\n DomHandler.findSingle(this.el.nativeElement, '.p-button-label').textContent = this._label || ' ';\n if (this.loading || this.icon) {\n this.setIconClass();\n }\n this.setStyleClass();\n }\n }\n get icon() {\n return this._icon;\n }\n set icon(val) {\n this._icon = val;\n if (this.initialized) {\n this.setIconClass();\n this.setStyleClass();\n }\n }\n get loading() {\n return this._loading;\n }\n set loading(val) {\n this._loading = val;\n if (this.initialized) {\n if (this.loading || this.icon)\n this.setIconClass();\n else\n this.removeIconElement();\n this.setStyleClass();\n }\n }\n ngOnDestroy() {\n this.initialized = false;\n }\n}\nButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: ButtonDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.7\", type: ButtonDirective, selector: \"[pButton]\", inputs: { iconPos: \"iconPos\", loadingIcon: \"loadingIcon\", label: \"label\", icon: \"icon\", loading: \"loading\" }, host: { classAttribute: \"p-element\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: ButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[pButton]',\n host: {\n 'class': 'p-element'\n }\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { iconPos: [{\n type: Input\n }], loadingIcon: [{\n type: Input\n }], label: [{\n type: Input\n }], icon: [{\n type: Input\n }], loading: [{\n type: Input\n }] } });\nclass Button {\n constructor() {\n this.type = \"button\";\n this.iconPos = 'left';\n this.loading = false;\n this.loadingIcon = \"pi pi-spinner pi-spin\";\n this.onClick = new EventEmitter();\n this.onFocus = new EventEmitter();\n this.onBlur = new EventEmitter();\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'content':\n this.contentTemplate = item.template;\n break;\n default:\n this.contentTemplate = item.template;\n break;\n }\n });\n }\n badgeStyleClass() {\n return {\n 'p-badge p-component': true,\n 'p-badge-no-gutter': this.badge && String(this.badge).length === 1\n };\n }\n}\nButton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: Button, deps: [], target: i0.ɵɵFactoryTarget.Component });\nButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.7\", type: Button, selector: \"p-button\", inputs: { type: \"type\", iconPos: \"iconPos\", icon: \"icon\", badge: \"badge\", label: \"label\", disabled: \"disabled\", loading: \"loading\", loadingIcon: \"loadingIcon\", style: \"style\", styleClass: \"styleClass\", badgeClass: \"badgeClass\", ariaLabel: \"ariaLabel\" }, outputs: { onClick: \"onClick\", onFocus: \"onFocus\", onBlur: \"onBlur\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], ngImport: i0, template: `\n \n `, isInline: true, directives: [{ type: i1.Ripple, selector: \"[pRipple]\" }, { type: i2.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: Button, decorators: [{\n type: Component,\n args: [{\n selector: 'p-button',\n template: `\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'p-element'\n }\n }]\n }], propDecorators: { type: [{\n type: Input\n }], iconPos: [{\n type: Input\n }], icon: [{\n type: Input\n }], badge: [{\n type: Input\n }], label: [{\n type: Input\n }], disabled: [{\n type: Input\n }], loading: [{\n type: Input\n }], loadingIcon: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], badgeClass: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }], onClick: [{\n type: Output\n }], onFocus: [{\n type: Output\n }], onBlur: [{\n type: Output\n }] } });\nclass ButtonModule {\n}\nButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: ButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: ButtonModule, declarations: [ButtonDirective, Button], imports: [CommonModule, RippleModule], exports: [ButtonDirective, Button] });\nButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: ButtonModule, imports: [[CommonModule, RippleModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: ButtonModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, RippleModule],\n exports: [ButtonDirective, Button],\n declarations: [ButtonDirective, Button]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Button, ButtonDirective, ButtonModule };\n","import * as i0 from '@angular/core';\nimport { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ContentChildren, ViewChild, NgModule } from '@angular/core';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i3 from 'primeng/button';\nimport { ButtonModule } from 'primeng/button';\nimport * as i4 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';\nimport * as i1 from 'primeng/api';\nimport { TranslationKeys, PrimeTemplate, SharedModule } from 'primeng/api';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { UniqueComponentId, ObjectUtils, ZIndexUtils } from 'primeng/utils';\n\nconst CALENDAR_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Calendar),\n multi: true\n};\nclass Calendar {\n constructor(el, renderer, cd, zone, config, overlayService) {\n this.el = el;\n this.renderer = renderer;\n this.cd = cd;\n this.zone = zone;\n this.config = config;\n this.overlayService = overlayService;\n this.multipleSeparator = ',';\n this.rangeSeparator = '-';\n this.inline = false;\n this.showOtherMonths = true;\n this.icon = 'pi pi-calendar';\n this.shortYearCutoff = '+10';\n this.hourFormat = '24';\n this.stepHour = 1;\n this.stepMinute = 1;\n this.stepSecond = 1;\n this.showSeconds = false;\n this.showOnFocus = true;\n this.showWeek = false;\n this.showClear = false;\n this.dataType = 'date';\n this.selectionMode = 'single';\n this.todayButtonStyleClass = 'p-button-text';\n this.clearButtonStyleClass = 'p-button-text';\n this.autoZIndex = true;\n this.baseZIndex = 0;\n this.keepInvalid = false;\n this.hideOnDateTimeSelect = true;\n this.timeSeparator = \":\";\n this.focusTrap = true;\n this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';\n this.hideTransitionOptions = '.1s linear';\n this.onFocus = new EventEmitter();\n this.onBlur = new EventEmitter();\n this.onClose = new EventEmitter();\n this.onSelect = new EventEmitter();\n this.onClear = new EventEmitter();\n this.onInput = new EventEmitter();\n this.onTodayClick = new EventEmitter();\n this.onClearClick = new EventEmitter();\n this.onMonthChange = new EventEmitter();\n this.onYearChange = new EventEmitter();\n this.onClickOutside = new EventEmitter();\n this.onShow = new EventEmitter();\n this.onModelChange = () => { };\n this.onModelTouched = () => { };\n this.inputFieldValue = null;\n this.navigationState = null;\n this._numberOfMonths = 1;\n this._view = 'date';\n this.convertTo24Hour = function (hours, pm) {\n if (this.hourFormat == '12') {\n if (hours === 12) {\n return (pm ? 12 : 0);\n }\n else {\n return (pm ? hours + 12 : hours);\n }\n }\n return hours;\n };\n }\n set content(content) {\n this.contentViewChild = content;\n if (this.contentViewChild) {\n if (this.isMonthNavigate) {\n Promise.resolve(null).then(() => this.updateFocus());\n this.isMonthNavigate = false;\n }\n else {\n if (!this.focus) {\n this.initFocusableCell();\n }\n }\n }\n }\n ;\n get view() {\n return this._view;\n }\n ;\n set view(view) {\n this._view = view;\n this.currentView = this._view;\n }\n get defaultDate() {\n return this._defaultDate;\n }\n ;\n set defaultDate(defaultDate) {\n this._defaultDate = defaultDate;\n if (this.initialized) {\n const date = defaultDate || new Date();\n this.currentMonth = date.getMonth();\n this.currentYear = date.getFullYear();\n this.initTime(date);\n this.createMonths(this.currentMonth, this.currentYear);\n }\n }\n get minDate() {\n return this._minDate;\n }\n set minDate(date) {\n this._minDate = date;\n if (this.currentMonth != undefined && this.currentMonth != null && this.currentYear) {\n this.createMonths(this.currentMonth, this.currentYear);\n }\n }\n get maxDate() {\n return this._maxDate;\n }\n set maxDate(date) {\n this._maxDate = date;\n if (this.currentMonth != undefined && this.currentMonth != null && this.currentYear) {\n this.createMonths(this.currentMonth, this.currentYear);\n }\n }\n get disabledDates() {\n return this._disabledDates;\n }\n set disabledDates(disabledDates) {\n this._disabledDates = disabledDates;\n if (this.currentMonth != undefined && this.currentMonth != null && this.currentYear) {\n this.createMonths(this.currentMonth, this.currentYear);\n }\n }\n get disabledDays() {\n return this._disabledDays;\n }\n set disabledDays(disabledDays) {\n this._disabledDays = disabledDays;\n if (this.currentMonth != undefined && this.currentMonth != null && this.currentYear) {\n this.createMonths(this.currentMonth, this.currentYear);\n }\n }\n get yearRange() {\n return this._yearRange;\n }\n set yearRange(yearRange) {\n this._yearRange = yearRange;\n if (yearRange) {\n const years = yearRange.split(':');\n const yearStart = parseInt(years[0]);\n const yearEnd = parseInt(years[1]);\n this.populateYearOptions(yearStart, yearEnd);\n }\n }\n get showTime() {\n return this._showTime;\n }\n set showTime(showTime) {\n this._showTime = showTime;\n if (this.currentHour === undefined) {\n this.initTime(this.value || new Date());\n }\n this.updateInputfield();\n }\n get locale() {\n return this._locale;\n }\n get responsiveOptions() {\n return this._responsiveOptions;\n }\n ;\n set responsiveOptions(responsiveOptions) {\n this._responsiveOptions = responsiveOptions;\n this.destroyResponsiveStyleElement();\n this.createResponsiveStyle();\n }\n get numberOfMonths() {\n return this._numberOfMonths;\n }\n set numberOfMonths(numberOfMonths) {\n this._numberOfMonths = numberOfMonths;\n this.destroyResponsiveStyleElement();\n this.createResponsiveStyle();\n }\n get firstDayOfWeek() {\n return this._firstDayOfWeek;\n }\n set firstDayOfWeek(firstDayOfWeek) {\n this._firstDayOfWeek = firstDayOfWeek;\n this.createWeekDays();\n }\n set locale(newLocale) {\n console.warn(\"Locale property has no effect, use new i18n API instead.\");\n }\n ngOnInit() {\n this.attributeSelector = UniqueComponentId();\n const date = this.defaultDate || new Date();\n this.createResponsiveStyle();\n this.currentMonth = date.getMonth();\n this.currentYear = date.getFullYear();\n this.currentView = this.view;\n if (this.view === 'date') {\n this.createWeekDays();\n this.initTime(date);\n this.createMonths(this.currentMonth, this.currentYear);\n this.ticksTo1970 = (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) + Math.floor(1970 / 400)) * 24 * 60 * 60 * 10000000);\n }\n this.translationSubscription = this.config.translationObserver.subscribe(() => {\n this.createWeekDays();\n });\n this.initialized = true;\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'date':\n this.dateTemplate = item.template;\n break;\n case 'decade':\n this.decadeTemplate = item.template;\n break;\n case 'disabledDate':\n this.disabledDateTemplate = item.template;\n break;\n case 'header':\n this.headerTemplate = item.template;\n break;\n case 'footer':\n this.footerTemplate = item.template;\n break;\n default:\n this.dateTemplate = item.template;\n break;\n }\n });\n }\n ngAfterViewInit() {\n if (this.inline) {\n this.contentViewChild && this.contentViewChild.nativeElement.setAttribute(this.attributeSelector, '');\n if (!this.disabled) {\n this.initFocusableCell();\n if (this.numberOfMonths === 1) {\n this.contentViewChild.nativeElement.style.width = DomHandler.getOuterWidth(this.containerViewChild.nativeElement) + 'px';\n }\n }\n }\n }\n getTranslation(option) {\n return this.config.getTranslation(option);\n }\n populateYearOptions(start, end) {\n this.yearOptions = [];\n for (let i = start; i <= end; i++) {\n this.yearOptions.push(i);\n }\n }\n createWeekDays() {\n this.weekDays = [];\n let dayIndex = this.getFirstDateOfWeek();\n let dayLabels = this.getTranslation(TranslationKeys.DAY_NAMES_MIN);\n for (let i = 0; i < 7; i++) {\n this.weekDays.push(dayLabels[dayIndex]);\n dayIndex = (dayIndex == 6) ? 0 : ++dayIndex;\n }\n }\n monthPickerValues() {\n let monthPickerValues = [];\n for (let i = 0; i <= 11; i++) {\n monthPickerValues.push(this.config.getTranslation('monthNamesShort')[i]);\n }\n return monthPickerValues;\n }\n yearPickerValues() {\n let yearPickerValues = [];\n let base = this.currentYear - (this.currentYear % 10);\n for (let i = 0; i < 10; i++) {\n yearPickerValues.push(base + i);\n }\n return yearPickerValues;\n }\n createMonths(month, year) {\n this.months = this.months = [];\n for (let i = 0; i < this.numberOfMonths; i++) {\n let m = month + i;\n let y = year;\n if (m > 11) {\n m = m % 11 - 1;\n y = year + 1;\n }\n this.months.push(this.createMonth(m, y));\n }\n }\n getWeekNumber(date) {\n let checkDate = new Date(date.getTime());\n checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));\n let time = checkDate.getTime();\n checkDate.setMonth(0);\n checkDate.setDate(1);\n return Math.floor(Math.round((time - checkDate.getTime()) / 86400000) / 7) + 1;\n }\n createMonth(month, year) {\n let dates = [];\n let firstDay = this.getFirstDayOfMonthIndex(month, year);\n let daysLength = this.getDaysCountInMonth(month, year);\n let prevMonthDaysLength = this.getDaysCountInPrevMonth(month, year);\n let dayNo = 1;\n let today = new Date();\n let weekNumbers = [];\n let monthRows = Math.ceil((daysLength + firstDay) / 7);\n for (let i = 0; i < monthRows; i++) {\n let week = [];\n if (i == 0) {\n for (let j = (prevMonthDaysLength - firstDay + 1); j <= prevMonthDaysLength; j++) {\n let prev = this.getPreviousMonthAndYear(month, year);\n week.push({ day: j, month: prev.month, year: prev.year, otherMonth: true,\n today: this.isToday(today, j, prev.month, prev.year), selectable: this.isSelectable(j, prev.month, prev.year, true) });\n }\n let remainingDaysLength = 7 - week.length;\n for (let j = 0; j < remainingDaysLength; j++) {\n week.push({ day: dayNo, month: month, year: year, today: this.isToday(today, dayNo, month, year),\n selectable: this.isSelectable(dayNo, month, year, false) });\n dayNo++;\n }\n }\n else {\n for (let j = 0; j < 7; j++) {\n if (dayNo > daysLength) {\n let next = this.getNextMonthAndYear(month, year);\n week.push({ day: dayNo - daysLength, month: next.month, year: next.year, otherMonth: true,\n today: this.isToday(today, dayNo - daysLength, next.month, next.year),\n selectable: this.isSelectable((dayNo - daysLength), next.month, next.year, true) });\n }\n else {\n week.push({ day: dayNo, month: month, year: year, today: this.isToday(today, dayNo, month, year),\n selectable: this.isSelectable(dayNo, month, year, false) });\n }\n dayNo++;\n }\n }\n if (this.showWeek) {\n weekNumbers.push(this.getWeekNumber(new Date(week[0].year, week[0].month, week[0].day)));\n }\n dates.push(week);\n }\n return {\n month: month,\n year: year,\n dates: dates,\n weekNumbers: weekNumbers\n };\n }\n initTime(date) {\n this.pm = date.getHours() > 11;\n if (this.showTime) {\n this.currentMinute = date.getMinutes();\n this.currentSecond = date.getSeconds();\n this.setCurrentHourPM(date.getHours());\n }\n else if (this.timeOnly) {\n this.currentMinute = 0;\n this.currentHour = 0;\n this.currentSecond = 0;\n }\n }\n navBackward(event) {\n if (this.disabled) {\n event.preventDefault();\n return;\n }\n this.isMonthNavigate = true;\n if (this.currentView === 'month') {\n this.decrementYear();\n setTimeout(() => {\n this.updateFocus();\n }, 1);\n }\n else if (this.currentView === 'year') {\n this.decrementDecade();\n setTimeout(() => {\n this.updateFocus();\n }, 1);\n }\n else {\n if (this.currentMonth === 0) {\n this.currentMonth = 11;\n this.decrementYear();\n }\n else {\n this.currentMonth--;\n }\n this.onMonthChange.emit({ month: this.currentMonth + 1, year: this.currentYear });\n this.createMonths(this.currentMonth, this.currentYear);\n }\n }\n navForward(event) {\n if (this.disabled) {\n event.preventDefault();\n return;\n }\n this.isMonthNavigate = true;\n if (this.currentView === 'month') {\n this.incrementYear();\n setTimeout(() => {\n this.updateFocus();\n }, 1);\n }\n else if (this.currentView === 'year') {\n this.incrementDecade();\n setTimeout(() => {\n this.updateFocus();\n }, 1);\n }\n else {\n if (this.currentMonth === 11) {\n this.currentMonth = 0;\n this.incrementYear();\n }\n else {\n this.currentMonth++;\n }\n this.onMonthChange.emit({ month: this.currentMonth + 1, year: this.currentYear });\n this.createMonths(this.currentMonth, this.currentYear);\n }\n }\n decrementYear() {\n this.currentYear--;\n if (this.yearNavigator && this.currentYear < this.yearOptions[0]) {\n let difference = this.yearOptions[this.yearOptions.length - 1] - this.yearOptions[0];\n this.populateYearOptions(this.yearOptions[0] - difference, this.yearOptions[this.yearOptions.length - 1] - difference);\n }\n }\n decrementDecade() {\n this.currentYear = this.currentYear - 10;\n }\n incrementDecade() {\n this.currentYear = this.currentYear + 10;\n }\n incrementYear() {\n this.currentYear++;\n if (this.yearNavigator && this.currentYear > this.yearOptions[this.yearOptions.length - 1]) {\n let difference = this.yearOptions[this.yearOptions.length - 1] - this.yearOptions[0];\n this.populateYearOptions(this.yearOptions[0] + difference, this.yearOptions[this.yearOptions.length - 1] + difference);\n }\n }\n switchToMonthView(event) {\n this.setCurrentView('month');\n event.preventDefault();\n }\n switchToYearView(event) {\n this.setCurrentView('year');\n event.preventDefault();\n }\n onDateSelect(event, dateMeta) {\n if (this.disabled || !dateMeta.selectable) {\n event.preventDefault();\n return;\n }\n if (this.isMultipleSelection() && this.isSelected(dateMeta)) {\n this.value = this.value.filter((date, i) => {\n return !this.isDateEquals(date, dateMeta);\n });\n if (this.value.length === 0) {\n this.value = null;\n }\n this.updateModel(this.value);\n }\n else {\n if (this.shouldSelectDate(dateMeta)) {\n this.selectDate(dateMeta);\n }\n }\n if (this.isSingleSelection() && this.hideOnDateTimeSelect) {\n setTimeout(() => {\n event.preventDefault();\n this.hideOverlay();\n if (this.mask) {\n this.disableModality();\n }\n this.cd.markForCheck();\n }, 150);\n }\n this.updateInputfield();\n event.preventDefault();\n }\n shouldSelectDate(dateMeta) {\n if (this.isMultipleSelection())\n return this.maxDateCount != null ? this.maxDateCount > (this.value ? this.value.length : 0) : true;\n else\n return true;\n }\n onMonthSelect(event, index) {\n if (this.view === 'month') {\n this.onDateSelect(event, { year: this.currentYear, month: index, day: 1, selectable: true });\n }\n else {\n this.currentMonth = index;\n this.createMonths(this.currentMonth, this.currentYear);\n this.setCurrentView('date');\n this.onMonthChange.emit({ month: this.currentMonth + 1, year: this.currentYear });\n }\n }\n onYearSelect(event, year) {\n if (this.view === 'year') {\n this.onDateSelect(event, { year: year, month: 0, day: 1, selectable: true });\n }\n else {\n this.currentYear = year;\n this.setCurrentView('month');\n this.onYearChange.emit({ month: this.currentMonth + 1, year: this.currentYear });\n }\n }\n updateInputfield() {\n let formattedValue = '';\n if (this.value) {\n if (this.isSingleSelection()) {\n formattedValue = this.formatDateTime(this.value);\n }\n else if (this.isMultipleSelection()) {\n for (let i = 0; i < this.value.length; i++) {\n let dateAsString = this.formatDateTime(this.value[i]);\n formattedValue += dateAsString;\n if (i !== (this.value.length - 1)) {\n formattedValue += this.multipleSeparator + ' ';\n }\n }\n }\n else if (this.isRangeSelection()) {\n if (this.value && this.value.length) {\n let startDate = this.value[0];\n let endDate = this.value[1];\n formattedValue = this.formatDateTime(startDate);\n if (endDate) {\n formattedValue += ' ' + this.rangeSeparator + ' ' + this.formatDateTime(endDate);\n }\n }\n }\n }\n this.inputFieldValue = formattedValue;\n this.updateFilledState();\n if (this.inputfieldViewChild && this.inputfieldViewChild.nativeElement) {\n this.inputfieldViewChild.nativeElement.value = this.inputFieldValue;\n }\n }\n formatDateTime(date) {\n let formattedValue = this.keepInvalid ? date : null;\n if (this.isValidDate(date)) {\n if (this.timeOnly) {\n formattedValue = this.formatTime(date);\n }\n else {\n formattedValue = this.formatDate(date, this.getDateFormat());\n if (this.showTime) {\n formattedValue += ' ' + this.formatTime(date);\n }\n }\n }\n return formattedValue;\n }\n setCurrentHourPM(hours) {\n if (this.hourFormat == '12') {\n this.pm = hours > 11;\n if (hours >= 12) {\n this.currentHour = (hours == 12) ? 12 : hours - 12;\n }\n else {\n this.currentHour = (hours == 0) ? 12 : hours;\n }\n }\n else {\n this.currentHour = hours;\n }\n }\n setCurrentView(currentView) {\n this.currentView = currentView;\n this.cd.detectChanges();\n this.alignOverlay();\n }\n selectDate(dateMeta) {\n let date = new Date(dateMeta.year, dateMeta.month, dateMeta.day);\n if (this.showTime) {\n if (this.hourFormat == '12') {\n if (this.currentHour === 12)\n date.setHours(this.pm ? 12 : 0);\n else\n date.setHours(this.pm ? this.currentHour + 12 : this.currentHour);\n }\n else {\n date.setHours(this.currentHour);\n }\n date.setMinutes(this.currentMinute);\n date.setSeconds(this.currentSecond);\n }\n if (this.minDate && this.minDate > date) {\n date = this.minDate;\n this.setCurrentHourPM(date.getHours());\n this.currentMinute = date.getMinutes();\n this.currentSecond = date.getSeconds();\n }\n if (this.maxDate && this.maxDate < date) {\n date = this.maxDate;\n this.setCurrentHourPM(date.getHours());\n this.currentMinute = date.getMinutes();\n this.currentSecond = date.getSeconds();\n }\n if (this.isSingleSelection()) {\n this.updateModel(date);\n }\n else if (this.isMultipleSelection()) {\n this.updateModel(this.value ? [...this.value, date] : [date]);\n }\n else if (this.isRangeSelection()) {\n if (this.value && this.value.length) {\n let startDate = this.value[0];\n let endDate = this.value[1];\n if (!endDate && date.getTime() >= startDate.getTime()) {\n endDate = date;\n }\n else {\n startDate = date;\n endDate = null;\n }\n this.updateModel([startDate, endDate]);\n }\n else {\n this.updateModel([date, null]);\n }\n }\n this.onSelect.emit(date);\n }\n updateModel(value) {\n this.value = value;\n if (this.dataType == 'date') {\n this.onModelChange(this.value);\n }\n else if (this.dataType == 'string') {\n if (this.isSingleSelection()) {\n this.onModelChange(this.formatDateTime(this.value));\n }\n else {\n let stringArrValue = null;\n if (this.value) {\n stringArrValue = this.value.map(date => this.formatDateTime(date));\n }\n this.onModelChange(stringArrValue);\n }\n }\n }\n getFirstDayOfMonthIndex(month, year) {\n let day = new Date();\n day.setDate(1);\n day.setMonth(month);\n day.setFullYear(year);\n let dayIndex = day.getDay() + this.getSundayIndex();\n return dayIndex >= 7 ? dayIndex - 7 : dayIndex;\n }\n getDaysCountInMonth(month, year) {\n return 32 - this.daylightSavingAdjust(new Date(year, month, 32)).getDate();\n }\n getDaysCountInPrevMonth(month, year) {\n let prev = this.getPreviousMonthAndYear(month, year);\n return this.getDaysCountInMonth(prev.month, prev.year);\n }\n getPreviousMonthAndYear(month, year) {\n let m, y;\n if (month === 0) {\n m = 11;\n y = year - 1;\n }\n else {\n m = month - 1;\n y = year;\n }\n return { 'month': m, 'year': y };\n }\n getNextMonthAndYear(month, year) {\n let m, y;\n if (month === 11) {\n m = 0;\n y = year + 1;\n }\n else {\n m = month + 1;\n y = year;\n }\n return { 'month': m, 'year': y };\n }\n getSundayIndex() {\n let firstDayOfWeek = this.getFirstDateOfWeek();\n return firstDayOfWeek > 0 ? 7 - firstDayOfWeek : 0;\n }\n isSelected(dateMeta) {\n if (this.value) {\n if (this.isSingleSelection()) {\n return this.isDateEquals(this.value, dateMeta);\n }\n else if (this.isMultipleSelection()) {\n let selected = false;\n for (let date of this.value) {\n selected = this.isDateEquals(date, dateMeta);\n if (selected) {\n break;\n }\n }\n return selected;\n }\n else if (this.isRangeSelection()) {\n if (this.value[1])\n return this.isDateEquals(this.value[0], dateMeta) || this.isDateEquals(this.value[1], dateMeta) || this.isDateBetween(this.value[0], this.value[1], dateMeta);\n else\n return this.isDateEquals(this.value[0], dateMeta);\n }\n }\n else {\n return false;\n }\n }\n isComparable() {\n return this.value != null && typeof this.value !== 'string';\n }\n isMonthSelected(month) {\n if (this.isComparable()) {\n let value = this.isRangeSelection() ? this.value[0] : this.value;\n return !this.isMultipleSelection() ? (value.getMonth() === month && value.getFullYear() === this.currentYear) : false;\n }\n return false;\n }\n isYearSelected(year) {\n if (this.isComparable()) {\n let value = this.isRangeSelection() ? this.value[0] : this.value;\n return !this.isMultipleSelection() ? (value.getFullYear() === year) : false;\n }\n return false;\n }\n isDateEquals(value, dateMeta) {\n if (value && value instanceof Date)\n return value.getDate() === dateMeta.day && value.getMonth() === dateMeta.month && value.getFullYear() === dateMeta.year;\n else\n return false;\n }\n isDateBetween(start, end, dateMeta) {\n let between = false;\n if (start && end) {\n let date = new Date(dateMeta.year, dateMeta.month, dateMeta.day);\n return start.getTime() <= date.getTime() && end.getTime() >= date.getTime();\n }\n return between;\n }\n isSingleSelection() {\n return this.selectionMode === 'single';\n }\n isRangeSelection() {\n return this.selectionMode === 'range';\n }\n isMultipleSelection() {\n return this.selectionMode === 'multiple';\n }\n isToday(today, day, month, year) {\n return today.getDate() === day && today.getMonth() === month && today.getFullYear() === year;\n }\n isSelectable(day, month, year, otherMonth) {\n let validMin = true;\n let validMax = true;\n let validDate = true;\n let validDay = true;\n if (otherMonth && !this.selectOtherMonths) {\n return false;\n }\n if (this.minDate) {\n if (this.minDate.getFullYear() > year) {\n validMin = false;\n }\n else if (this.minDate.getFullYear() === year) {\n if (this.minDate.getMonth() > month) {\n validMin = false;\n }\n else if (this.minDate.getMonth() === month) {\n if (this.minDate.getDate() > day) {\n validMin = false;\n }\n }\n }\n }\n if (this.maxDate) {\n if (this.maxDate.getFullYear() < year) {\n validMax = false;\n }\n else if (this.maxDate.getFullYear() === year) {\n if (this.maxDate.getMonth() < month) {\n validMax = false;\n }\n else if (this.maxDate.getMonth() === month) {\n if (this.maxDate.getDate() < day) {\n validMax = false;\n }\n }\n }\n }\n if (this.disabledDates) {\n validDate = !this.isDateDisabled(day, month, year);\n }\n if (this.disabledDays) {\n validDay = !this.isDayDisabled(day, month, year);\n }\n return validMin && validMax && validDate && validDay;\n }\n isDateDisabled(day, month, year) {\n if (this.disabledDates) {\n for (let disabledDate of this.disabledDates) {\n if (disabledDate.getFullYear() === year && disabledDate.getMonth() === month && disabledDate.getDate() === day) {\n return true;\n }\n }\n }\n return false;\n }\n isDayDisabled(day, month, year) {\n if (this.disabledDays) {\n let weekday = new Date(year, month, day);\n let weekdayNumber = weekday.getDay();\n return this.disabledDays.indexOf(weekdayNumber) !== -1;\n }\n return false;\n }\n onInputFocus(event) {\n this.focus = true;\n if (this.showOnFocus) {\n this.showOverlay();\n }\n this.onFocus.emit(event);\n }\n onInputClick() {\n if (this.showOnFocus && !this.overlayVisible) {\n this.showOverlay();\n }\n }\n onInputBlur(event) {\n this.focus = false;\n this.onBlur.emit(event);\n if (!this.keepInvalid) {\n this.updateInputfield();\n }\n this.onModelTouched();\n }\n onButtonClick(event, inputfield) {\n if (!this.overlayVisible) {\n inputfield.focus();\n this.showOverlay();\n }\n else {\n this.hideOverlay();\n }\n }\n clear() {\n this.inputFieldValue = null;\n this.value = null;\n this.onModelChange(this.value);\n this.onClear.emit();\n }\n onOverlayClick(event) {\n this.overlayService.add({\n originalEvent: event,\n target: this.el.nativeElement\n });\n }\n getMonthName(index) {\n return this.config.getTranslation('monthNames')[index];\n }\n getYear(month) {\n return this.currentView === 'month' ? this.currentYear : month.year;\n }\n switchViewButtonDisabled() {\n return this.numberOfMonths > 1 || this.disabled;\n }\n onPrevButtonClick(event) {\n this.navigationState = { backward: true, button: true };\n this.navBackward(event);\n }\n onNextButtonClick(event) {\n this.navigationState = { backward: false, button: true };\n this.navForward(event);\n }\n onContainerButtonKeydown(event) {\n switch (event.which) {\n //tab\n case 9:\n if (!this.inline) {\n this.trapFocus(event);\n }\n break;\n //escape\n case 27:\n this.overlayVisible = false;\n event.preventDefault();\n break;\n default:\n //Noop\n break;\n }\n }\n onInputKeydown(event) {\n this.isKeydown = true;\n if (event.keyCode === 40 && this.contentViewChild) {\n this.trapFocus(event);\n }\n else if (event.keyCode === 27) {\n if (this.overlayVisible) {\n this.overlayVisible = false;\n event.preventDefault();\n }\n }\n else if (event.keyCode === 13) {\n if (this.overlayVisible) {\n this.overlayVisible = false;\n event.preventDefault();\n }\n }\n else if (event.keyCode === 9 && this.contentViewChild) {\n DomHandler.getFocusableElements(this.contentViewChild.nativeElement).forEach(el => el.tabIndex = '-1');\n if (this.overlayVisible) {\n this.overlayVisible = false;\n }\n }\n }\n onDateCellKeydown(event, date, groupIndex) {\n const cellContent = event.currentTarget;\n const cell = cellContent.parentElement;\n switch (event.which) {\n //down arrow\n case 40: {\n cellContent.tabIndex = '-1';\n let cellIndex = DomHandler.index(cell);\n let nextRow = cell.parentElement.nextElementSibling;\n if (nextRow) {\n let focusCell = nextRow.children[cellIndex].children[0];\n if (DomHandler.hasClass(focusCell, 'p-disabled')) {\n this.navigationState = { backward: false };\n this.navForward(event);\n }\n else {\n nextRow.children[cellIndex].children[0].tabIndex = '0';\n nextRow.children[cellIndex].children[0].focus();\n }\n }\n else {\n this.navigationState = { backward: false };\n this.navForward(event);\n }\n event.preventDefault();\n break;\n }\n //up arrow\n case 38: {\n cellContent.tabIndex = '-1';\n let cellIndex = DomHandler.index(cell);\n let prevRow = cell.parentElement.previousElementSibling;\n if (prevRow) {\n let focusCell = prevRow.children[cellIndex].children[0];\n if (DomHandler.hasClass(focusCell, 'p-disabled')) {\n this.navigationState = { backward: true };\n this.navBackward(event);\n }\n else {\n focusCell.tabIndex = '0';\n focusCell.focus();\n }\n }\n else {\n this.navigationState = { backward: true };\n this.navBackward(event);\n }\n event.preventDefault();\n break;\n }\n //left arrow\n case 37: {\n cellContent.tabIndex = '-1';\n let prevCell = cell.previousElementSibling;\n if (prevCell) {\n let focusCell = prevCell.children[0];\n if (DomHandler.hasClass(focusCell, 'p-disabled') || DomHandler.hasClass(focusCell.parentElement, 'p-datepicker-weeknumber')) {\n this.navigateToMonth(true, groupIndex);\n }\n else {\n focusCell.tabIndex = '0';\n focusCell.focus();\n }\n }\n else {\n this.navigateToMonth(true, groupIndex);\n }\n event.preventDefault();\n break;\n }\n //right arrow\n case 39: {\n cellContent.tabIndex = '-1';\n let nextCell = cell.nextElementSibling;\n if (nextCell) {\n let focusCell = nextCell.children[0];\n if (DomHandler.hasClass(focusCell, 'p-disabled')) {\n this.navigateToMonth(false, groupIndex);\n }\n else {\n focusCell.tabIndex = '0';\n focusCell.focus();\n }\n }\n else {\n this.navigateToMonth(false, groupIndex);\n }\n event.preventDefault();\n break;\n }\n //enter\n //space\n case 13:\n case 32: {\n this.onDateSelect(event, date);\n event.preventDefault();\n break;\n }\n //escape\n case 27: {\n this.overlayVisible = false;\n event.preventDefault();\n break;\n }\n //tab\n case 9: {\n if (!this.inline) {\n this.trapFocus(event);\n }\n break;\n }\n default:\n //no op\n break;\n }\n }\n onMonthCellKeydown(event, index) {\n const cell = event.currentTarget;\n switch (event.which) {\n //arrows\n case 38:\n case 40: {\n cell.tabIndex = '-1';\n var cells = cell.parentElement.children;\n var cellIndex = DomHandler.index(cell);\n let nextCell = cells[event.which === 40 ? cellIndex + 3 : cellIndex - 3];\n if (nextCell) {\n nextCell.tabIndex = '0';\n nextCell.focus();\n }\n event.preventDefault();\n break;\n }\n //left arrow\n case 37: {\n cell.tabIndex = '-1';\n let prevCell = cell.previousElementSibling;\n if (prevCell) {\n prevCell.tabIndex = '0';\n prevCell.focus();\n }\n else {\n this.navigationState = { backward: true };\n this.navBackward(event);\n }\n event.preventDefault();\n break;\n }\n //right arrow\n case 39: {\n cell.tabIndex = '-1';\n let nextCell = cell.nextElementSibling;\n if (nextCell) {\n nextCell.tabIndex = '0';\n nextCell.focus();\n }\n else {\n this.navigationState = { backward: false };\n this.navForward(event);\n }\n event.preventDefault();\n break;\n }\n //enter\n case 13: {\n this.onMonthSelect(event, index);\n event.preventDefault();\n break;\n }\n //enter\n //space\n case 13:\n case 32: {\n this.overlayVisible = false;\n event.preventDefault();\n break;\n }\n //escape\n case 27: {\n this.overlayVisible = false;\n event.preventDefault();\n break;\n }\n //tab\n case 9: {\n if (!this.inline) {\n this.trapFocus(event);\n }\n break;\n }\n default:\n //no op\n break;\n }\n }\n onYearCellKeydown(event, index) {\n const cell = event.currentTarget;\n switch (event.which) {\n //arrows\n case 38:\n case 40: {\n cell.tabIndex = '-1';\n var cells = cell.parentElement.children;\n var cellIndex = DomHandler.index(cell);\n let nextCell = cells[event.which === 40 ? cellIndex + 2 : cellIndex - 2];\n if (nextCell) {\n nextCell.tabIndex = '0';\n nextCell.focus();\n }\n event.preventDefault();\n break;\n }\n //left arrow\n case 37: {\n cell.tabIndex = '-1';\n let prevCell = cell.previousElementSibling;\n if (prevCell) {\n prevCell.tabIndex = '0';\n prevCell.focus();\n }\n else {\n this.navigationState = { backward: true };\n this.navBackward(event);\n }\n event.preventDefault();\n break;\n }\n //right arrow\n case 39: {\n cell.tabIndex = '-1';\n let nextCell = cell.nextElementSibling;\n if (nextCell) {\n nextCell.tabIndex = '0';\n nextCell.focus();\n }\n else {\n this.navigationState = { backward: false };\n this.navForward(event);\n }\n event.preventDefault();\n break;\n }\n //enter\n //space\n case 13:\n case 32: {\n this.onYearSelect(event, index);\n event.preventDefault();\n break;\n }\n //escape\n case 27: {\n this.overlayVisible = false;\n event.preventDefault();\n break;\n }\n //tab\n case 9: {\n this.trapFocus(event);\n break;\n }\n default:\n //no op\n break;\n }\n }\n navigateToMonth(prev, groupIndex) {\n if (prev) {\n if (this.numberOfMonths === 1 || (groupIndex === 0)) {\n this.navigationState = { backward: true };\n this.navBackward(event);\n }\n else {\n let prevMonthContainer = this.contentViewChild.nativeElement.children[groupIndex - 1];\n let cells = DomHandler.find(prevMonthContainer, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');\n let focusCell = cells[cells.length - 1];\n focusCell.tabIndex = '0';\n focusCell.focus();\n }\n }\n else {\n if (this.numberOfMonths === 1 || (groupIndex === this.numberOfMonths - 1)) {\n this.navigationState = { backward: false };\n this.navForward(event);\n }\n else {\n let nextMonthContainer = this.contentViewChild.nativeElement.children[groupIndex + 1];\n let focusCell = DomHandler.findSingle(nextMonthContainer, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');\n focusCell.tabIndex = '0';\n focusCell.focus();\n }\n }\n }\n updateFocus() {\n let cell;\n if (this.navigationState) {\n if (this.navigationState.button) {\n this.initFocusableCell();\n if (this.navigationState.backward)\n DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-datepicker-prev').focus();\n else\n DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-datepicker-next').focus();\n }\n else {\n if (this.navigationState.backward) {\n let cells;\n if (this.currentView === 'month') {\n cells = DomHandler.find(this.contentViewChild.nativeElement, '.p-monthpicker .p-monthpicker-month:not(.p-disabled)');\n }\n else if (this.currentView === 'year') {\n cells = DomHandler.find(this.contentViewChild.nativeElement, '.p-yearpicker .p-yearpicker-year:not(.p-disabled)');\n }\n else {\n cells = DomHandler.find(this.contentViewChild.nativeElement, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');\n }\n if (cells && cells.length > 0) {\n cell = cells[cells.length - 1];\n }\n }\n else {\n if (this.currentView === 'month') {\n cell = DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-monthpicker .p-monthpicker-month:not(.p-disabled)');\n }\n else if (this.currentView === 'year') {\n cell = DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-yearpicker .p-yearpicker-year:not(.p-disabled)');\n }\n else {\n cell = DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');\n }\n }\n if (cell) {\n cell.tabIndex = '0';\n cell.focus();\n }\n }\n this.navigationState = null;\n }\n else {\n this.initFocusableCell();\n }\n }\n initFocusableCell() {\n let cell;\n if (this.currentView === 'month') {\n let cells = DomHandler.find(this.contentViewChild.nativeElement, '.p-monthpicker .p-monthpicker-month:not(.p-disabled)');\n let selectedCell = DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-monthpicker .p-monthpicker-month.p-highlight');\n cells.forEach(cell => cell.tabIndex = -1);\n cell = selectedCell || cells[0];\n if (cells.length === 0) {\n let disabledCells = DomHandler.find(this.contentViewChild.nativeElement, '.p-monthpicker .p-monthpicker-month.p-disabled[tabindex = \"0\"]');\n disabledCells.forEach(cell => cell.tabIndex = -1);\n }\n }\n else if (this.currentView === 'year') {\n let cells = DomHandler.find(this.contentViewChild.nativeElement, '.p-yearpicker .p-yearpicker-year:not(.p-disabled)');\n let selectedCell = DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-yearpicker .p-yearpicker-year.p-highlight');\n cells.forEach(cell => cell.tabIndex = -1);\n cell = selectedCell || cells[0];\n if (cells.length === 0) {\n let disabledCells = DomHandler.find(this.contentViewChild.nativeElement, '.p-yearpicker .p-yearpicker-year.p-disabled[tabindex = \"0\"]');\n disabledCells.forEach(cell => cell.tabIndex = -1);\n }\n }\n else {\n cell = DomHandler.findSingle(this.contentViewChild.nativeElement, 'span.p-highlight');\n if (!cell) {\n let todayCell = DomHandler.findSingle(this.contentViewChild.nativeElement, 'td.p-datepicker-today span:not(.p-disabled):not(.p-ink)');\n if (todayCell)\n cell = todayCell;\n else\n cell = DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');\n }\n }\n if (cell) {\n cell.tabIndex = '0';\n if (!this.preventFocus && (!this.navigationState || !this.navigationState.button)) {\n setTimeout(() => {\n cell.focus();\n }, 1);\n }\n this.preventFocus = false;\n }\n }\n trapFocus(event) {\n let focusableElements = DomHandler.getFocusableElements(this.contentViewChild.nativeElement);\n if (focusableElements && focusableElements.length > 0) {\n if (!focusableElements[0].ownerDocument.activeElement) {\n focusableElements[0].focus();\n }\n else {\n let focusedIndex = focusableElements.indexOf(focusableElements[0].ownerDocument.activeElement);\n if (event.shiftKey) {\n if (focusedIndex == -1 || focusedIndex === 0) {\n if (this.focusTrap) {\n focusableElements[focusableElements.length - 1].focus();\n }\n else {\n if (focusedIndex === -1)\n return this.hideOverlay();\n else if (focusedIndex === 0)\n return;\n }\n }\n else {\n focusableElements[focusedIndex - 1].focus();\n }\n }\n else {\n if (focusedIndex == -1 || focusedIndex === (focusableElements.length - 1)) {\n if (!this.focusTrap && focusedIndex != -1)\n return this.hideOverlay();\n else\n focusableElements[0].focus();\n }\n else {\n focusableElements[focusedIndex + 1].focus();\n }\n }\n }\n }\n event.preventDefault();\n }\n onMonthDropdownChange(m) {\n this.currentMonth = parseInt(m);\n this.onMonthChange.emit({ month: this.currentMonth + 1, year: this.currentYear });\n this.createMonths(this.currentMonth, this.currentYear);\n }\n onYearDropdownChange(y) {\n this.currentYear = parseInt(y);\n this.onYearChange.emit({ month: this.currentMonth + 1, year: this.currentYear });\n this.createMonths(this.currentMonth, this.currentYear);\n }\n validateTime(hour, minute, second, pm) {\n let value = this.value;\n const convertedHour = this.convertTo24Hour(hour, pm);\n if (this.isRangeSelection()) {\n value = this.value[1] || this.value[0];\n }\n if (this.isMultipleSelection()) {\n value = this.value[this.value.length - 1];\n }\n const valueDateString = value ? value.toDateString() : null;\n if (this.minDate && valueDateString && this.minDate.toDateString() === valueDateString) {\n if (this.minDate.getHours() > convertedHour) {\n return false;\n }\n if (this.minDate.getHours() === convertedHour) {\n if (this.minDate.getMinutes() > minute) {\n return false;\n }\n if (this.minDate.getMinutes() === minute) {\n if (this.minDate.getSeconds() > second) {\n return false;\n }\n }\n }\n }\n if (this.maxDate && valueDateString && this.maxDate.toDateString() === valueDateString) {\n if (this.maxDate.getHours() < convertedHour) {\n return false;\n }\n if (this.maxDate.getHours() === convertedHour) {\n if (this.maxDate.getMinutes() < minute) {\n return false;\n }\n if (this.maxDate.getMinutes() === minute) {\n if (this.maxDate.getSeconds() < second) {\n return false;\n }\n }\n }\n }\n return true;\n }\n incrementHour(event) {\n const prevHour = this.currentHour;\n let newHour = this.currentHour + this.stepHour;\n let newPM = this.pm;\n if (this.hourFormat == '24')\n newHour = (newHour >= 24) ? (newHour - 24) : newHour;\n else if (this.hourFormat == '12') {\n // Before the AM/PM break, now after\n if (prevHour < 12 && newHour > 11) {\n newPM = !this.pm;\n }\n newHour = (newHour >= 13) ? (newHour - 12) : newHour;\n }\n if (this.validateTime(newHour, this.currentMinute, this.currentSecond, newPM)) {\n this.currentHour = newHour;\n this.pm = newPM;\n }\n event.preventDefault();\n }\n onTimePickerElementMouseDown(event, type, direction) {\n if (!this.disabled) {\n this.repeat(event, null, type, direction);\n event.preventDefault();\n }\n }\n onTimePickerElementMouseUp(event) {\n if (!this.disabled) {\n this.clearTimePickerTimer();\n this.updateTime();\n }\n }\n onTimePickerElementMouseLeave() {\n if (!this.disabled && this.timePickerTimer) {\n this.clearTimePickerTimer();\n this.updateTime();\n }\n }\n repeat(event, interval, type, direction) {\n let i = interval || 500;\n this.clearTimePickerTimer();\n this.timePickerTimer = setTimeout(() => {\n this.repeat(event, 100, type, direction);\n this.cd.markForCheck();\n }, i);\n switch (type) {\n case 0:\n if (direction === 1)\n this.incrementHour(event);\n else\n this.decrementHour(event);\n break;\n case 1:\n if (direction === 1)\n this.incrementMinute(event);\n else\n this.decrementMinute(event);\n break;\n case 2:\n if (direction === 1)\n this.incrementSecond(event);\n else\n this.decrementSecond(event);\n break;\n }\n this.updateInputfield();\n }\n clearTimePickerTimer() {\n if (this.timePickerTimer) {\n clearTimeout(this.timePickerTimer);\n this.timePickerTimer = null;\n }\n }\n decrementHour(event) {\n let newHour = this.currentHour - this.stepHour;\n let newPM = this.pm;\n if (this.hourFormat == '24')\n newHour = (newHour < 0) ? (24 + newHour) : newHour;\n else if (this.hourFormat == '12') {\n // If we were at noon/midnight, then switch\n if (this.currentHour === 12) {\n newPM = !this.pm;\n }\n newHour = (newHour <= 0) ? (12 + newHour) : newHour;\n }\n if (this.validateTime(newHour, this.currentMinute, this.currentSecond, newPM)) {\n this.currentHour = newHour;\n this.pm = newPM;\n }\n event.preventDefault();\n }\n incrementMinute(event) {\n let newMinute = this.currentMinute + this.stepMinute;\n newMinute = (newMinute > 59) ? newMinute - 60 : newMinute;\n if (this.validateTime(this.currentHour, newMinute, this.currentSecond, this.pm)) {\n this.currentMinute = newMinute;\n }\n event.preventDefault();\n }\n decrementMinute(event) {\n let newMinute = this.currentMinute - this.stepMinute;\n newMinute = (newMinute < 0) ? 60 + newMinute : newMinute;\n if (this.validateTime(this.currentHour, newMinute, this.currentSecond, this.pm)) {\n this.currentMinute = newMinute;\n }\n event.preventDefault();\n }\n incrementSecond(event) {\n let newSecond = this.currentSecond + this.stepSecond;\n newSecond = (newSecond > 59) ? newSecond - 60 : newSecond;\n if (this.validateTime(this.currentHour, this.currentMinute, newSecond, this.pm)) {\n this.currentSecond = newSecond;\n }\n event.preventDefault();\n }\n decrementSecond(event) {\n let newSecond = this.currentSecond - this.stepSecond;\n newSecond = (newSecond < 0) ? 60 + newSecond : newSecond;\n if (this.validateTime(this.currentHour, this.currentMinute, newSecond, this.pm)) {\n this.currentSecond = newSecond;\n }\n event.preventDefault();\n }\n updateTime() {\n let value = this.value;\n if (this.isRangeSelection()) {\n value = this.value[1] || this.value[0];\n }\n if (this.isMultipleSelection()) {\n value = this.value[this.value.length - 1];\n }\n value = value ? new Date(value.getTime()) : new Date();\n if (this.hourFormat == '12') {\n if (this.currentHour === 12)\n value.setHours(this.pm ? 12 : 0);\n else\n value.setHours(this.pm ? this.currentHour + 12 : this.currentHour);\n }\n else {\n value.setHours(this.currentHour);\n }\n value.setMinutes(this.currentMinute);\n value.setSeconds(this.currentSecond);\n if (this.isRangeSelection()) {\n if (this.value[1])\n value = [this.value[0], value];\n else\n value = [value, null];\n }\n if (this.isMultipleSelection()) {\n value = [...this.value.slice(0, -1), value];\n }\n this.updateModel(value);\n this.onSelect.emit(value);\n this.updateInputfield();\n }\n toggleAMPM(event) {\n const newPM = !this.pm;\n if (this.validateTime(this.currentHour, this.currentMinute, this.currentSecond, newPM)) {\n this.pm = newPM;\n this.updateTime();\n }\n event.preventDefault();\n }\n onUserInput(event) {\n // IE 11 Workaround for input placeholder : https://github.com/primefaces/primeng/issues/2026\n if (!this.isKeydown) {\n return;\n }\n this.isKeydown = false;\n let val = event.target.value;\n try {\n let value = this.parseValueFromString(val);\n if (this.isValidSelection(value)) {\n this.updateModel(value);\n this.updateUI();\n }\n }\n catch (err) {\n //invalid date\n let value = this.keepInvalid ? val : null;\n this.updateModel(value);\n }\n this.filled = val != null && val.length;\n this.onInput.emit(event);\n }\n isValidSelection(value) {\n let isValid = true;\n if (this.isSingleSelection()) {\n if (!this.isSelectable(value.getDate(), value.getMonth(), value.getFullYear(), false)) {\n isValid = false;\n }\n }\n else if (value.every(v => this.isSelectable(v.getDate(), v.getMonth(), v.getFullYear(), false))) {\n if (this.isRangeSelection()) {\n isValid = value.length > 1 && value[1] > value[0] ? true : false;\n }\n }\n return isValid;\n }\n parseValueFromString(text) {\n if (!text || text.trim().length === 0) {\n return null;\n }\n let value;\n if (this.isSingleSelection()) {\n value = this.parseDateTime(text);\n }\n else if (this.isMultipleSelection()) {\n let tokens = text.split(this.multipleSeparator);\n value = [];\n for (let token of tokens) {\n value.push(this.parseDateTime(token.trim()));\n }\n }\n else if (this.isRangeSelection()) {\n let tokens = text.split(' ' + this.rangeSeparator + ' ');\n value = [];\n for (let i = 0; i < tokens.length; i++) {\n value[i] = this.parseDateTime(tokens[i].trim());\n }\n }\n return value;\n }\n parseDateTime(text) {\n let date;\n let parts = text.split(' ');\n if (this.timeOnly) {\n date = new Date();\n this.populateTime(date, parts[0], parts[1]);\n }\n else {\n const dateFormat = this.getDateFormat();\n if (this.showTime) {\n let ampm = this.hourFormat == '12' ? parts.pop() : null;\n let timeString = parts.pop();\n date = this.parseDate(parts.join(' '), dateFormat);\n this.populateTime(date, timeString, ampm);\n }\n else {\n date = this.parseDate(text, dateFormat);\n }\n }\n return date;\n }\n populateTime(value, timeString, ampm) {\n if (this.hourFormat == '12' && !ampm) {\n throw 'Invalid Time';\n }\n this.pm = (ampm === 'PM' || ampm === 'pm');\n let time = this.parseTime(timeString);\n value.setHours(time.hour);\n value.setMinutes(time.minute);\n value.setSeconds(time.second);\n }\n isValidDate(date) {\n return date instanceof Date && ObjectUtils.isNotEmpty(date);\n }\n updateUI() {\n let propValue = this.value;\n if (Array.isArray(propValue)) {\n propValue = propValue[0];\n }\n let val = this.defaultDate && this.isValidDate(this.defaultDate) && !this.value ? this.defaultDate : (propValue && this.isValidDate(propValue) ? propValue : new Date());\n this.currentMonth = val.getMonth();\n this.currentYear = val.getFullYear();\n this.createMonths(this.currentMonth, this.currentYear);\n if (this.showTime || this.timeOnly) {\n this.setCurrentHourPM(val.getHours());\n this.currentMinute = val.getMinutes();\n this.currentSecond = val.getSeconds();\n }\n }\n showOverlay() {\n if (!this.overlayVisible) {\n this.updateUI();\n if (!this.touchUI) {\n this.preventFocus = true;\n }\n this.overlayVisible = true;\n }\n }\n hideOverlay() {\n this.overlayVisible = false;\n this.clearTimePickerTimer();\n if (this.touchUI) {\n this.disableModality();\n }\n this.cd.markForCheck();\n }\n toggle() {\n if (!this.inline) {\n if (!this.overlayVisible) {\n this.showOverlay();\n this.inputfieldViewChild.nativeElement.focus();\n }\n else {\n this.hideOverlay();\n }\n }\n }\n onOverlayAnimationStart(event) {\n switch (event.toState) {\n case 'visible':\n case 'visibleTouchUI':\n if (!this.inline) {\n this.overlay = event.element;\n this.overlay.setAttribute(this.attributeSelector, '');\n this.appendOverlay();\n this.updateFocus();\n if (this.autoZIndex) {\n if (this.touchUI)\n ZIndexUtils.set('modal', this.overlay, this.baseZIndex || this.config.zIndex.modal);\n else\n ZIndexUtils.set('overlay', this.overlay, this.baseZIndex || this.config.zIndex.overlay);\n }\n this.alignOverlay();\n this.onShow.emit(event);\n }\n break;\n case 'void':\n this.onOverlayHide();\n this.onClose.emit(event);\n break;\n }\n }\n onOverlayAnimationDone(event) {\n switch (event.toState) {\n case 'visible':\n case 'visibleTouchUI':\n if (!this.inline) {\n this.bindDocumentClickListener();\n this.bindDocumentResizeListener();\n this.bindScrollListener();\n }\n break;\n case 'void':\n if (this.autoZIndex) {\n ZIndexUtils.clear(event.element);\n }\n break;\n }\n }\n appendOverlay() {\n if (this.appendTo) {\n if (this.appendTo === 'body')\n document.body.appendChild(this.overlay);\n else\n DomHandler.appendChild(this.overlay, this.appendTo);\n }\n }\n restoreOverlayAppend() {\n if (this.overlay && this.appendTo) {\n this.el.nativeElement.appendChild(this.overlay);\n }\n }\n alignOverlay() {\n if (this.touchUI) {\n this.enableModality(this.overlay);\n }\n else if (this.overlay) {\n if (this.appendTo) {\n if (this.view === 'date') {\n this.overlay.style.width = DomHandler.getOuterWidth(this.overlay) + 'px';\n this.overlay.style.minWidth = DomHandler.getOuterWidth(this.inputfieldViewChild.nativeElement) + 'px';\n }\n else {\n this.overlay.style.width = DomHandler.getOuterWidth(this.inputfieldViewChild.nativeElement) + 'px';\n }\n DomHandler.absolutePosition(this.overlay, this.inputfieldViewChild.nativeElement);\n }\n else {\n DomHandler.relativePosition(this.overlay, this.inputfieldViewChild.nativeElement);\n }\n }\n }\n enableModality(element) {\n if (!this.mask) {\n this.mask = document.createElement('div');\n this.mask.style.zIndex = String(parseInt(element.style.zIndex) - 1);\n let maskStyleClass = 'p-component-overlay p-datepicker-mask p-datepicker-mask-scrollblocker p-component-overlay p-component-overlay-enter';\n DomHandler.addMultipleClasses(this.mask, maskStyleClass);\n this.maskClickListener = this.renderer.listen(this.mask, 'click', (event) => {\n this.disableModality();\n });\n document.body.appendChild(this.mask);\n DomHandler.addClass(document.body, 'p-overflow-hidden');\n }\n }\n disableModality() {\n if (this.mask) {\n DomHandler.addClass(this.mask, 'p-component-overlay-leave');\n this.animationEndListener = this.destroyMask.bind(this);\n this.mask.addEventListener('animationend', this.animationEndListener);\n }\n }\n destroyMask() {\n document.body.removeChild(this.mask);\n let bodyChildren = document.body.children;\n let hasBlockerMasks;\n for (let i = 0; i < bodyChildren.length; i++) {\n let bodyChild = bodyChildren[i];\n if (DomHandler.hasClass(bodyChild, 'p-datepicker-mask-scrollblocker')) {\n hasBlockerMasks = true;\n break;\n }\n }\n if (!hasBlockerMasks) {\n DomHandler.removeClass(document.body, 'p-overflow-hidden');\n }\n this.unbindAnimationEndListener();\n this.unbindMaskClickListener();\n this.mask = null;\n }\n unbindMaskClickListener() {\n if (this.maskClickListener) {\n this.maskClickListener();\n this.maskClickListener = null;\n }\n }\n unbindAnimationEndListener() {\n if (this.animationEndListener && this.mask) {\n this.mask.removeEventListener('animationend', this.animationEndListener);\n this.animationEndListener = null;\n }\n }\n writeValue(value) {\n this.value = value;\n if (this.value && typeof this.value === 'string') {\n try {\n this.value = this.parseValueFromString(this.value);\n }\n catch (_a) {\n if (this.keepInvalid) {\n this.value = value;\n }\n }\n }\n this.updateInputfield();\n this.updateUI();\n this.cd.markForCheck();\n }\n registerOnChange(fn) {\n this.onModelChange = fn;\n }\n registerOnTouched(fn) {\n this.onModelTouched = fn;\n }\n setDisabledState(val) {\n this.disabled = val;\n this.cd.markForCheck();\n }\n getDateFormat() {\n return this.dateFormat || this.getTranslation('dateFormat');\n }\n getFirstDateOfWeek() {\n return this._firstDayOfWeek || this.getTranslation(TranslationKeys.FIRST_DAY_OF_WEEK);\n }\n // Ported from jquery-ui datepicker formatDate\n formatDate(date, format) {\n if (!date) {\n return '';\n }\n let iFormat;\n const lookAhead = (match) => {\n const matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);\n if (matches) {\n iFormat++;\n }\n return matches;\n }, formatNumber = (match, value, len) => {\n let num = '' + value;\n if (lookAhead(match)) {\n while (num.length < len) {\n num = '0' + num;\n }\n }\n return num;\n }, formatName = (match, value, shortNames, longNames) => {\n return (lookAhead(match) ? longNames[value] : shortNames[value]);\n };\n let output = '';\n let literal = false;\n if (date) {\n for (iFormat = 0; iFormat < format.length; iFormat++) {\n if (literal) {\n if (format.charAt(iFormat) === '\\'' && !lookAhead('\\'')) {\n literal = false;\n }\n else {\n output += format.charAt(iFormat);\n }\n }\n else {\n switch (format.charAt(iFormat)) {\n case 'd':\n output += formatNumber('d', date.getDate(), 2);\n break;\n case 'D':\n output += formatName('D', date.getDay(), this.getTranslation(TranslationKeys.DAY_NAMES_SHORT), this.getTranslation(TranslationKeys.DAY_NAMES));\n break;\n case 'o':\n output += formatNumber('o', Math.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() -\n new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3);\n break;\n case 'm':\n output += formatNumber('m', date.getMonth() + 1, 2);\n break;\n case 'M':\n output += formatName('M', date.getMonth(), this.getTranslation(TranslationKeys.MONTH_NAMES_SHORT), this.getTranslation(TranslationKeys.MONTH_NAMES));\n break;\n case 'y':\n output += lookAhead('y') ? date.getFullYear() : (date.getFullYear() % 100 < 10 ? '0' : '') + (date.getFullYear() % 100);\n break;\n case '@':\n output += date.getTime();\n break;\n case '!':\n output += date.getTime() * 10000 + this.ticksTo1970;\n break;\n case '\\'':\n if (lookAhead('\\'')) {\n output += '\\'';\n }\n else {\n literal = true;\n }\n break;\n default:\n output += format.charAt(iFormat);\n }\n }\n }\n }\n return output;\n }\n formatTime(date) {\n if (!date) {\n return '';\n }\n let output = '';\n let hours = date.getHours();\n let minutes = date.getMinutes();\n let seconds = date.getSeconds();\n if (this.hourFormat == '12' && hours > 11 && hours != 12) {\n hours -= 12;\n }\n if (this.hourFormat == '12') {\n output += hours === 0 ? 12 : (hours < 10) ? '0' + hours : hours;\n }\n else {\n output += (hours < 10) ? '0' + hours : hours;\n }\n output += ':';\n output += (minutes < 10) ? '0' + minutes : minutes;\n if (this.showSeconds) {\n output += ':';\n output += (seconds < 10) ? '0' + seconds : seconds;\n }\n if (this.hourFormat == '12') {\n output += date.getHours() > 11 ? ' PM' : ' AM';\n }\n return output;\n }\n parseTime(value) {\n let tokens = value.split(':');\n let validTokenLength = this.showSeconds ? 3 : 2;\n if (tokens.length !== validTokenLength) {\n throw \"Invalid time\";\n }\n let h = parseInt(tokens[0]);\n let m = parseInt(tokens[1]);\n let s = this.showSeconds ? parseInt(tokens[2]) : null;\n if (isNaN(h) || isNaN(m) || h > 23 || m > 59 || (this.hourFormat == '12' && h > 12) || (this.showSeconds && (isNaN(s) || s > 59))) {\n throw \"Invalid time\";\n }\n else {\n if (this.hourFormat == '12') {\n if (h !== 12 && this.pm) {\n h += 12;\n }\n else if (!this.pm && h === 12) {\n h -= 12;\n }\n }\n return { hour: h, minute: m, second: s };\n }\n }\n // Ported from jquery-ui datepicker parseDate\n parseDate(value, format) {\n if (format == null || value == null) {\n throw \"Invalid arguments\";\n }\n value = (typeof value === \"object\" ? value.toString() : value + \"\");\n if (value === \"\") {\n return null;\n }\n let iFormat, dim, extra, iValue = 0, shortYearCutoff = (typeof this.shortYearCutoff !== \"string\" ? this.shortYearCutoff : new Date().getFullYear() % 100 + parseInt(this.shortYearCutoff, 10)), year = -1, month = -1, day = -1, doy = -1, literal = false, date, lookAhead = (match) => {\n let matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);\n if (matches) {\n iFormat++;\n }\n return matches;\n }, getNumber = (match) => {\n let isDoubled = lookAhead(match), size = (match === \"@\" ? 14 : (match === \"!\" ? 20 :\n (match === \"y\" && isDoubled ? 4 : (match === \"o\" ? 3 : 2)))), minSize = (match === \"y\" ? size : 1), digits = new RegExp(\"^\\\\d{\" + minSize + \",\" + size + \"}\"), num = value.substring(iValue).match(digits);\n if (!num) {\n throw \"Missing number at position \" + iValue;\n }\n iValue += num[0].length;\n return parseInt(num[0], 10);\n }, getName = (match, shortNames, longNames) => {\n let index = -1;\n let arr = lookAhead(match) ? longNames : shortNames;\n let names = [];\n for (let i = 0; i < arr.length; i++) {\n names.push([i, arr[i]]);\n }\n names.sort((a, b) => {\n return -(a[1].length - b[1].length);\n });\n for (let i = 0; i < names.length; i++) {\n let name = names[i][1];\n if (value.substr(iValue, name.length).toLowerCase() === name.toLowerCase()) {\n index = names[i][0];\n iValue += name.length;\n break;\n }\n }\n if (index !== -1) {\n return index + 1;\n }\n else {\n throw \"Unknown name at position \" + iValue;\n }\n }, checkLiteral = () => {\n if (value.charAt(iValue) !== format.charAt(iFormat)) {\n throw \"Unexpected literal at position \" + iValue;\n }\n iValue++;\n };\n if (this.view === 'month') {\n day = 1;\n }\n for (iFormat = 0; iFormat < format.length; iFormat++) {\n if (literal) {\n if (format.charAt(iFormat) === \"'\" && !lookAhead(\"'\")) {\n literal = false;\n }\n else {\n checkLiteral();\n }\n }\n else {\n switch (format.charAt(iFormat)) {\n case \"d\":\n day = getNumber(\"d\");\n break;\n case \"D\":\n getName(\"D\", this.getTranslation(TranslationKeys.DAY_NAMES_SHORT), this.getTranslation(TranslationKeys.DAY_NAMES));\n break;\n case \"o\":\n doy = getNumber(\"o\");\n break;\n case \"m\":\n month = getNumber(\"m\");\n break;\n case \"M\":\n month = getName(\"M\", this.getTranslation(TranslationKeys.MONTH_NAMES_SHORT), this.getTranslation(TranslationKeys.MONTH_NAMES));\n break;\n case \"y\":\n year = getNumber(\"y\");\n break;\n case \"@\":\n date = new Date(getNumber(\"@\"));\n year = date.getFullYear();\n month = date.getMonth() + 1;\n day = date.getDate();\n break;\n case \"!\":\n date = new Date((getNumber(\"!\") - this.ticksTo1970) / 10000);\n year = date.getFullYear();\n month = date.getMonth() + 1;\n day = date.getDate();\n break;\n case \"'\":\n if (lookAhead(\"'\")) {\n checkLiteral();\n }\n else {\n literal = true;\n }\n break;\n default:\n checkLiteral();\n }\n }\n }\n if (iValue < value.length) {\n extra = value.substr(iValue);\n if (!/^\\s+/.test(extra)) {\n throw \"Extra/unparsed characters found in date: \" + extra;\n }\n }\n if (year === -1) {\n year = new Date().getFullYear();\n }\n else if (year < 100) {\n year += new Date().getFullYear() - new Date().getFullYear() % 100 +\n (year <= shortYearCutoff ? 0 : -100);\n }\n if (doy > -1) {\n month = 1;\n day = doy;\n do {\n dim = this.getDaysCountInMonth(year, month - 1);\n if (day <= dim) {\n break;\n }\n month++;\n day -= dim;\n } while (true);\n }\n date = this.daylightSavingAdjust(new Date(year, month - 1, day));\n if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) {\n throw \"Invalid date\"; // E.g. 31/02/00\n }\n return date;\n }\n daylightSavingAdjust(date) {\n if (!date) {\n return null;\n }\n date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);\n return date;\n }\n updateFilledState() {\n this.filled = this.inputFieldValue && this.inputFieldValue != '';\n }\n onTodayButtonClick(event) {\n let date = new Date();\n let dateMeta = { day: date.getDate(), month: date.getMonth(), year: date.getFullYear(), otherMonth: date.getMonth() !== this.currentMonth || date.getFullYear() !== this.currentYear, today: true, selectable: true };\n this.onDateSelect(event, dateMeta);\n this.onTodayClick.emit(event);\n }\n onClearButtonClick(event) {\n this.updateModel(null);\n this.updateInputfield();\n this.hideOverlay();\n this.onClearClick.emit(event);\n }\n createResponsiveStyle() {\n if (this.numberOfMonths > 1 && this.responsiveOptions) {\n if (!this.responsiveStyleElement) {\n this.responsiveStyleElement = document.createElement('style');\n this.responsiveStyleElement.type = 'text/css';\n document.body.appendChild(this.responsiveStyleElement);\n }\n let innerHTML = '';\n if (this.responsiveOptions) {\n let responsiveOptions = [...this.responsiveOptions]\n .filter(o => !!(o.breakpoint && o.numMonths))\n .sort((o1, o2) => -1 * o1.breakpoint.localeCompare(o2.breakpoint, undefined, { numeric: true }));\n for (let i = 0; i < responsiveOptions.length; i++) {\n let { breakpoint, numMonths } = responsiveOptions[i];\n let styles = `\n .p-datepicker[${this.attributeSelector}] .p-datepicker-group:nth-child(${numMonths}) .p-datepicker-next {\n display: inline-flex !important;\n }\n `;\n for (let j = numMonths; j < this.numberOfMonths; j++) {\n styles += `\n .p-datepicker[${this.attributeSelector}] .p-datepicker-group:nth-child(${j + 1}) {\n display: none !important;\n }\n `;\n }\n innerHTML += `\n @media screen and (max-width: ${breakpoint}) {\n ${styles}\n }\n `;\n }\n }\n this.responsiveStyleElement.innerHTML = innerHTML;\n }\n }\n destroyResponsiveStyleElement() {\n if (this.responsiveStyleElement) {\n this.responsiveStyleElement.remove();\n this.responsiveStyleElement = null;\n }\n }\n bindDocumentClickListener() {\n if (!this.documentClickListener) {\n this.zone.runOutsideAngular(() => {\n const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';\n this.documentClickListener = this.renderer.listen(documentTarget, 'mousedown', (event) => {\n if (this.isOutsideClicked(event) && this.overlayVisible) {\n this.zone.run(() => {\n this.hideOverlay();\n this.onClickOutside.emit(event);\n this.cd.markForCheck();\n });\n }\n });\n });\n }\n }\n unbindDocumentClickListener() {\n if (this.documentClickListener) {\n this.documentClickListener();\n this.documentClickListener = null;\n }\n }\n bindDocumentResizeListener() {\n if (!this.documentResizeListener && !this.touchUI) {\n this.documentResizeListener = this.onWindowResize.bind(this);\n window.addEventListener('resize', this.documentResizeListener);\n }\n }\n unbindDocumentResizeListener() {\n if (this.documentResizeListener) {\n window.removeEventListener('resize', this.documentResizeListener);\n this.documentResizeListener = null;\n }\n }\n bindScrollListener() {\n if (!this.scrollHandler) {\n this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerViewChild.nativeElement, () => {\n if (this.overlayVisible) {\n this.hideOverlay();\n }\n });\n }\n this.scrollHandler.bindScrollListener();\n }\n unbindScrollListener() {\n if (this.scrollHandler) {\n this.scrollHandler.unbindScrollListener();\n }\n }\n isOutsideClicked(event) {\n return !(this.el.nativeElement.isSameNode(event.target) || this.isNavIconClicked(event) ||\n this.el.nativeElement.contains(event.target) || (this.overlay && this.overlay.contains(event.target)));\n }\n isNavIconClicked(event) {\n return (DomHandler.hasClass(event.target, 'p-datepicker-prev') || DomHandler.hasClass(event.target, 'p-datepicker-prev-icon')\n || DomHandler.hasClass(event.target, 'p-datepicker-next') || DomHandler.hasClass(event.target, 'p-datepicker-next-icon'));\n }\n onWindowResize() {\n if (this.overlayVisible && !DomHandler.isAndroid()) {\n this.hideOverlay();\n }\n }\n onOverlayHide() {\n this.currentView = this.view;\n if (this.mask) {\n this.destroyMask();\n }\n this.unbindDocumentClickListener();\n this.unbindDocumentResizeListener();\n this.unbindScrollListener();\n this.overlay = null;\n }\n ngOnDestroy() {\n if (this.scrollHandler) {\n this.scrollHandler.destroy();\n this.scrollHandler = null;\n }\n if (this.translationSubscription) {\n this.translationSubscription.unsubscribe();\n }\n if (this.overlay && this.autoZIndex) {\n ZIndexUtils.clear(this.overlay);\n }\n this.destroyResponsiveStyleElement();\n this.clearTimePickerTimer();\n this.restoreOverlayAppend();\n this.onOverlayHide();\n }\n}\nCalendar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: Calendar, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i1.PrimeNGConfig }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });\nCalendar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.7\", type: Calendar, selector: \"p-calendar\", inputs: { style: \"style\", styleClass: \"styleClass\", inputStyle: \"inputStyle\", inputId: \"inputId\", name: \"name\", inputStyleClass: \"inputStyleClass\", placeholder: \"placeholder\", ariaLabelledBy: \"ariaLabelledBy\", iconAriaLabel: \"iconAriaLabel\", disabled: \"disabled\", dateFormat: \"dateFormat\", multipleSeparator: \"multipleSeparator\", rangeSeparator: \"rangeSeparator\", inline: \"inline\", showOtherMonths: \"showOtherMonths\", selectOtherMonths: \"selectOtherMonths\", showIcon: \"showIcon\", icon: \"icon\", appendTo: \"appendTo\", readonlyInput: \"readonlyInput\", shortYearCutoff: \"shortYearCutoff\", monthNavigator: \"monthNavigator\", yearNavigator: \"yearNavigator\", hourFormat: \"hourFormat\", timeOnly: \"timeOnly\", stepHour: \"stepHour\", stepMinute: \"stepMinute\", stepSecond: \"stepSecond\", showSeconds: \"showSeconds\", required: \"required\", showOnFocus: \"showOnFocus\", showWeek: \"showWeek\", showClear: \"showClear\", dataType: \"dataType\", selectionMode: \"selectionMode\", maxDateCount: \"maxDateCount\", showButtonBar: \"showButtonBar\", todayButtonStyleClass: \"todayButtonStyleClass\", clearButtonStyleClass: \"clearButtonStyleClass\", autoZIndex: \"autoZIndex\", baseZIndex: \"baseZIndex\", panelStyleClass: \"panelStyleClass\", panelStyle: \"panelStyle\", keepInvalid: \"keepInvalid\", hideOnDateTimeSelect: \"hideOnDateTimeSelect\", touchUI: \"touchUI\", timeSeparator: \"timeSeparator\", focusTrap: \"focusTrap\", showTransitionOptions: \"showTransitionOptions\", hideTransitionOptions: \"hideTransitionOptions\", tabindex: \"tabindex\", view: \"view\", defaultDate: \"defaultDate\", minDate: \"minDate\", maxDate: \"maxDate\", disabledDates: \"disabledDates\", disabledDays: \"disabledDays\", yearRange: \"yearRange\", showTime: \"showTime\", responsiveOptions: \"responsiveOptions\", numberOfMonths: \"numberOfMonths\", firstDayOfWeek: \"firstDayOfWeek\", locale: \"locale\" }, outputs: { onFocus: \"onFocus\", onBlur: \"onBlur\", onClose: \"onClose\", onSelect: \"onSelect\", onClear: \"onClear\", onInput: \"onInput\", onTodayClick: \"onTodayClick\", onClearClick: \"onClearClick\", onMonthChange: \"onMonthChange\", onYearChange: \"onYearChange\", onClickOutside: \"onClickOutside\", onShow: \"onShow\" }, host: { properties: { \"class.p-inputwrapper-filled\": \"filled\", \"class.p-inputwrapper-focus\": \"focus\", \"class.p-calendar-clearable\": \"showClear && !disabled\" }, classAttribute: \"p-element p-inputwrapper\" }, providers: [CALENDAR_VALUE_ACCESSOR], queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"containerViewChild\", first: true, predicate: [\"container\"], descendants: true }, { propertyName: \"inputfieldViewChild\", first: true, predicate: [\"inputfield\"], descendants: true }, { propertyName: \"content\", first: true, predicate: [\"contentWrapper\"], descendants: true }], ngImport: i0, template: `\n \n \n \n \n \n \n
1, 'p-datepicker-monthpicker': (view === 'month'), 'p-datepicker-touch-ui': touchUI}\"\n [@overlayAnimation]=\"touchUI ? {value: 'visibleTouchUI', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}:\n {value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\"\n [@.disabled]=\"inline === true\" (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\" (@overlayAnimation.done)=\"onOverlayAnimationDone($event)\" (click)=\"onOverlayClick($event)\" *ngIf=\"inline || overlayVisible\">\n \n \n \n
\n
\n
\n \n
\n \n \n \n {{yearPickerValues()[0]}} - {{yearPickerValues()[yearPickerValues().length - 1]}}\n \n \n
\n \n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {{getTranslation('weekHeader')}}\n \n {{weekDay}}\n
\n \n {{month.weekNumbers[j]}}\n \n \n \n \n {{date.day}}\n \n \n \n
\n
\n
\n
\n
\n \n {{m}}\n \n
\n
\n \n {{y}}\n \n
\n
\n
\n
\n \n 0{{currentHour}}\n \n
\n
\n {{timeSeparator}}\n
\n
\n \n 0{{currentMinute}}\n \n
\n
\n {{timeSeparator}}\n
\n
\n \n 0{{currentSecond}}\n \n
\n
\n \n {{pm ? 'PM' : 'AM'}}\n \n
\n
\n
\n \n \n
\n \n \n
\n
\n `, isInline: true, styles: [\".p-calendar{position:relative;display:inline-flex;max-width:100%}.p-calendar .p-inputtext{flex:1 1 auto;width:1%}.p-calendar-w-btn .p-inputtext{border-top-right-radius:0;border-bottom-right-radius:0}.p-calendar-w-btn .p-datepicker-trigger{border-top-left-radius:0;border-bottom-left-radius:0}.p-fluid .p-calendar{display:flex}.p-fluid .p-calendar .p-inputtext{width:1%}.p-calendar .p-datepicker{min-width:100%}.p-datepicker{width:auto;position:absolute;top:0;left:0}.p-datepicker-inline{display:inline-block;position:static;overflow-x:auto}.p-datepicker-header{display:flex;align-items:center;justify-content:space-between}.p-datepicker-header .p-datepicker-title{margin:0 auto}.p-datepicker-prev,.p-datepicker-next{cursor:pointer;display:inline-flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-datepicker-multiple-month .p-datepicker-group-container .p-datepicker-group{flex:1 1 auto}.p-datepicker-multiple-month .p-datepicker-group-container{display:flex}.p-datepicker table{width:100%;border-collapse:collapse}.p-datepicker td>span{display:flex;justify-content:center;align-items:center;cursor:pointer;margin:0 auto;overflow:hidden;position:relative}.p-monthpicker-month{width:33.3%;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;position:relative}.p-datepicker-buttonbar{display:flex;justify-content:space-between;align-items:center}.p-timepicker{display:flex;justify-content:center;align-items:center}.p-timepicker button{display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;position:relative}.p-timepicker>div{display:flex;align-items:center;flex-direction:column}.p-datepicker-touch-ui,.p-calendar .p-datepicker-touch-ui{position:fixed;top:50%;left:50%;min-width:80vw;transform:translate(-50%,-50%)}.p-yearpicker-year{width:50%;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;position:relative}.p-calendar-clear-icon{position:absolute;top:50%;margin-top:-.5rem;cursor:pointer}.p-calendar-clearable{position:relative}\\n\"], directives: [{ type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i2.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.ButtonDirective, selector: \"[pButton]\", inputs: [\"iconPos\", \"loadingIcon\", \"label\", \"icon\", \"loading\"] }, { type: i4.Ripple, selector: \"[pRipple]\" }, { type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], animations: [\n trigger('overlayAnimation', [\n state('visibleTouchUI', style({\n transform: 'translate(-50%,-50%)',\n opacity: 1\n })),\n transition('void => visible', [\n style({ opacity: 0, transform: 'scaleY(0.8)' }),\n animate('{{showTransitionParams}}', style({ opacity: 1, transform: '*' }))\n ]),\n transition('visible => void', [\n animate('{{hideTransitionParams}}', style({ opacity: 0 }))\n ]),\n transition('void => visibleTouchUI', [\n style({ opacity: 0, transform: 'translate3d(-50%, -40%, 0) scale(0.9)' }),\n animate('{{showTransitionParams}}')\n ]),\n transition('visibleTouchUI => void', [\n animate(('{{hideTransitionParams}}'), style({\n opacity: 0,\n transform: 'translate3d(-50%, -40%, 0) scale(0.9)'\n }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: Calendar, decorators: [{\n type: Component,\n args: [{ selector: 'p-calendar', template: `\n \n \n \n \n \n \n
1, 'p-datepicker-monthpicker': (view === 'month'), 'p-datepicker-touch-ui': touchUI}\"\n [@overlayAnimation]=\"touchUI ? {value: 'visibleTouchUI', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}:\n {value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\"\n [@.disabled]=\"inline === true\" (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\" (@overlayAnimation.done)=\"onOverlayAnimationDone($event)\" (click)=\"onOverlayClick($event)\" *ngIf=\"inline || overlayVisible\">\n \n \n \n
\n
\n
\n \n
\n \n \n \n {{yearPickerValues()[0]}} - {{yearPickerValues()[yearPickerValues().length - 1]}}\n \n \n
\n \n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {{getTranslation('weekHeader')}}\n \n {{weekDay}}\n
\n \n {{month.weekNumbers[j]}}\n \n \n \n \n {{date.day}}\n \n \n \n
\n
\n
\n
\n
\n \n {{m}}\n \n
\n
\n \n {{y}}\n \n
\n
\n
\n
\n \n 0{{currentHour}}\n \n
\n
\n {{timeSeparator}}\n
\n
\n \n 0{{currentMinute}}\n \n
\n
\n {{timeSeparator}}\n
\n
\n \n 0{{currentSecond}}\n \n
\n
\n \n {{pm ? 'PM' : 'AM'}}\n \n
\n
\n
\n \n \n
\n \n \n
\n
\n `, animations: [\n trigger('overlayAnimation', [\n state('visibleTouchUI', style({\n transform: 'translate(-50%,-50%)',\n opacity: 1\n })),\n transition('void => visible', [\n style({ opacity: 0, transform: 'scaleY(0.8)' }),\n animate('{{showTransitionParams}}', style({ opacity: 1, transform: '*' }))\n ]),\n transition('visible => void', [\n animate('{{hideTransitionParams}}', style({ opacity: 0 }))\n ]),\n transition('void => visibleTouchUI', [\n style({ opacity: 0, transform: 'translate3d(-50%, -40%, 0) scale(0.9)' }),\n animate('{{showTransitionParams}}')\n ]),\n transition('visibleTouchUI => void', [\n animate(('{{hideTransitionParams}}'), style({\n opacity: 0,\n transform: 'translate3d(-50%, -40%, 0) scale(0.9)'\n }))\n ])\n ])\n ], host: {\n 'class': 'p-element p-inputwrapper',\n '[class.p-inputwrapper-filled]': 'filled',\n '[class.p-inputwrapper-focus]': 'focus',\n '[class.p-calendar-clearable]': 'showClear && !disabled'\n }, providers: [CALENDAR_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [\".p-calendar{position:relative;display:inline-flex;max-width:100%}.p-calendar .p-inputtext{flex:1 1 auto;width:1%}.p-calendar-w-btn .p-inputtext{border-top-right-radius:0;border-bottom-right-radius:0}.p-calendar-w-btn .p-datepicker-trigger{border-top-left-radius:0;border-bottom-left-radius:0}.p-fluid .p-calendar{display:flex}.p-fluid .p-calendar .p-inputtext{width:1%}.p-calendar .p-datepicker{min-width:100%}.p-datepicker{width:auto;position:absolute;top:0;left:0}.p-datepicker-inline{display:inline-block;position:static;overflow-x:auto}.p-datepicker-header{display:flex;align-items:center;justify-content:space-between}.p-datepicker-header .p-datepicker-title{margin:0 auto}.p-datepicker-prev,.p-datepicker-next{cursor:pointer;display:inline-flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-datepicker-multiple-month .p-datepicker-group-container .p-datepicker-group{flex:1 1 auto}.p-datepicker-multiple-month .p-datepicker-group-container{display:flex}.p-datepicker table{width:100%;border-collapse:collapse}.p-datepicker td>span{display:flex;justify-content:center;align-items:center;cursor:pointer;margin:0 auto;overflow:hidden;position:relative}.p-monthpicker-month{width:33.3%;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;position:relative}.p-datepicker-buttonbar{display:flex;justify-content:space-between;align-items:center}.p-timepicker{display:flex;justify-content:center;align-items:center}.p-timepicker button{display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;position:relative}.p-timepicker>div{display:flex;align-items:center;flex-direction:column}.p-datepicker-touch-ui,.p-calendar .p-datepicker-touch-ui{position:fixed;top:50%;left:50%;min-width:80vw;transform:translate(-50%,-50%)}.p-yearpicker-year{width:50%;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;position:relative}.p-calendar-clear-icon{position:absolute;top:50%;margin-top:-.5rem;cursor:pointer}.p-calendar-clearable{position:relative}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i1.PrimeNGConfig }, { type: i1.OverlayService }]; }, propDecorators: { style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], inputStyle: [{\n type: Input\n }], inputId: [{\n type: Input\n }], name: [{\n type: Input\n }], inputStyleClass: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], iconAriaLabel: [{\n type: Input\n }], disabled: [{\n type: Input\n }], dateFormat: [{\n type: Input\n }], multipleSeparator: [{\n type: Input\n }], rangeSeparator: [{\n type: Input\n }], inline: [{\n type: Input\n }], showOtherMonths: [{\n type: Input\n }], selectOtherMonths: [{\n type: Input\n }], showIcon: [{\n type: Input\n }], icon: [{\n type: Input\n }], appendTo: [{\n type: Input\n }], readonlyInput: [{\n type: Input\n }], shortYearCutoff: [{\n type: Input\n }], monthNavigator: [{\n type: Input\n }], yearNavigator: [{\n type: Input\n }], hourFormat: [{\n type: Input\n }], timeOnly: [{\n type: Input\n }], stepHour: [{\n type: Input\n }], stepMinute: [{\n type: Input\n }], stepSecond: [{\n type: Input\n }], showSeconds: [{\n type: Input\n }], required: [{\n type: Input\n }], showOnFocus: [{\n type: Input\n }], showWeek: [{\n type: Input\n }], showClear: [{\n type: Input\n }], dataType: [{\n type: Input\n }], selectionMode: [{\n type: Input\n }], maxDateCount: [{\n type: Input\n }], showButtonBar: [{\n type: Input\n }], todayButtonStyleClass: [{\n type: Input\n }], clearButtonStyleClass: [{\n type: Input\n }], autoZIndex: [{\n type: Input\n }], baseZIndex: [{\n type: Input\n }], panelStyleClass: [{\n type: Input\n }], panelStyle: [{\n type: Input\n }], keepInvalid: [{\n type: Input\n }], hideOnDateTimeSelect: [{\n type: Input\n }], touchUI: [{\n type: Input\n }], timeSeparator: [{\n type: Input\n }], focusTrap: [{\n type: Input\n }], showTransitionOptions: [{\n type: Input\n }], hideTransitionOptions: [{\n type: Input\n }], onFocus: [{\n type: Output\n }], onBlur: [{\n type: Output\n }], onClose: [{\n type: Output\n }], onSelect: [{\n type: Output\n }], onClear: [{\n type: Output\n }], onInput: [{\n type: Output\n }], onTodayClick: [{\n type: Output\n }], onClearClick: [{\n type: Output\n }], onMonthChange: [{\n type: Output\n }], onYearChange: [{\n type: Output\n }], onClickOutside: [{\n type: Output\n }], onShow: [{\n type: Output\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }], tabindex: [{\n type: Input\n }], containerViewChild: [{\n type: ViewChild,\n args: ['container', { static: false }]\n }], inputfieldViewChild: [{\n type: ViewChild,\n args: ['inputfield', { static: false }]\n }], content: [{\n type: ViewChild,\n args: ['contentWrapper', { static: false }]\n }], view: [{\n type: Input\n }], defaultDate: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], disabledDates: [{\n type: Input\n }], disabledDays: [{\n type: Input\n }], yearRange: [{\n type: Input\n }], showTime: [{\n type: Input\n }], responsiveOptions: [{\n type: Input\n }], numberOfMonths: [{\n type: Input\n }], firstDayOfWeek: [{\n type: Input\n }], locale: [{\n type: Input\n }] } });\nclass CalendarModule {\n}\nCalendarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: CalendarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCalendarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: CalendarModule, declarations: [Calendar], imports: [CommonModule, ButtonModule, SharedModule, RippleModule], exports: [Calendar, ButtonModule, SharedModule] });\nCalendarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: CalendarModule, imports: [[CommonModule, ButtonModule, SharedModule, RippleModule], ButtonModule, SharedModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: CalendarModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, ButtonModule, SharedModule, RippleModule],\n exports: [Calendar, ButtonModule, SharedModule],\n declarations: [Calendar]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CALENDAR_VALUE_ACCESSOR, Calendar, CalendarModule };\n","/**\n * @dynamic is for runtime initializing DomHandler.browser\n *\n * If delete below comment, we can see this error message:\n * Metadata collected contains an error that will be reported at runtime:\n * Only initialized variables and constants can be referenced\n * because the value of this variable is needed by the template compiler.\n */\n// @dynamic\nclass DomHandler {\n static addClass(element, className) {\n if (element.classList)\n element.classList.add(className);\n else\n element.className += ' ' + className;\n }\n static addMultipleClasses(element, className) {\n if (element.classList) {\n let styles = className.trim().split(' ');\n for (let i = 0; i < styles.length; i++) {\n element.classList.add(styles[i]);\n }\n }\n else {\n let styles = className.split(' ');\n for (let i = 0; i < styles.length; i++) {\n element.className += ' ' + styles[i];\n }\n }\n }\n static removeClass(element, className) {\n if (element.classList)\n element.classList.remove(className);\n else\n element.className = element.className.replace(new RegExp('(^|\\\\b)' + className.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n static hasClass(element, className) {\n if (element.classList)\n return element.classList.contains(className);\n else\n return new RegExp('(^| )' + className + '( |$)', 'gi').test(element.className);\n }\n static siblings(element) {\n return Array.prototype.filter.call(element.parentNode.children, function (child) {\n return child !== element;\n });\n }\n static find(element, selector) {\n return Array.from(element.querySelectorAll(selector));\n }\n static findSingle(element, selector) {\n if (element) {\n return element.querySelector(selector);\n }\n return null;\n }\n static index(element) {\n let children = element.parentNode.childNodes;\n let num = 0;\n for (var i = 0; i < children.length; i++) {\n if (children[i] == element)\n return num;\n if (children[i].nodeType == 1)\n num++;\n }\n return -1;\n }\n static indexWithinGroup(element, attributeName) {\n let children = element.parentNode ? element.parentNode.childNodes : [];\n let num = 0;\n for (var i = 0; i < children.length; i++) {\n if (children[i] == element)\n return num;\n if (children[i].attributes && children[i].attributes[attributeName] && children[i].nodeType == 1)\n num++;\n }\n return -1;\n }\n static relativePosition(element, target) {\n let elementDimensions = element.offsetParent ? { width: element.offsetWidth, height: element.offsetHeight } : this.getHiddenElementDimensions(element);\n const targetHeight = target.offsetHeight;\n const targetOffset = target.getBoundingClientRect();\n const viewport = this.getViewport();\n let top, left;\n if ((targetOffset.top + targetHeight + elementDimensions.height) > viewport.height) {\n top = -1 * (elementDimensions.height);\n element.style.transformOrigin = 'bottom';\n if (targetOffset.top + top < 0) {\n top = -1 * targetOffset.top;\n }\n }\n else {\n top = targetHeight;\n element.style.transformOrigin = 'top';\n }\n if (elementDimensions.width > viewport.width) {\n // element wider then viewport and cannot fit on screen (align at left side of viewport)\n left = targetOffset.left * -1;\n }\n else if ((targetOffset.left + elementDimensions.width) > viewport.width) {\n // element wider then viewport but can be fit on screen (align at right side of viewport)\n left = (targetOffset.left + elementDimensions.width - viewport.width) * -1;\n }\n else {\n // element fits on screen (align with target)\n left = 0;\n }\n element.style.top = top + 'px';\n element.style.left = left + 'px';\n }\n static absolutePosition(element, target) {\n let elementDimensions = element.offsetParent ? { width: element.offsetWidth, height: element.offsetHeight } : this.getHiddenElementDimensions(element);\n let elementOuterHeight = elementDimensions.height;\n let elementOuterWidth = elementDimensions.width;\n let targetOuterHeight = target.offsetHeight;\n let targetOuterWidth = target.offsetWidth;\n let targetOffset = target.getBoundingClientRect();\n let windowScrollTop = this.getWindowScrollTop();\n let windowScrollLeft = this.getWindowScrollLeft();\n let viewport = this.getViewport();\n let top, left;\n if (targetOffset.top + targetOuterHeight + elementOuterHeight > viewport.height) {\n top = targetOffset.top + windowScrollTop - elementOuterHeight;\n element.style.transformOrigin = 'bottom';\n if (top < 0) {\n top = windowScrollTop;\n }\n }\n else {\n top = targetOuterHeight + targetOffset.top + windowScrollTop;\n element.style.transformOrigin = 'top';\n }\n if (targetOffset.left + elementOuterWidth > viewport.width)\n left = Math.max(0, targetOffset.left + windowScrollLeft + targetOuterWidth - elementOuterWidth);\n else\n left = targetOffset.left + windowScrollLeft;\n element.style.top = top + 'px';\n element.style.left = left + 'px';\n }\n static getParents(element, parents = []) {\n return element['parentNode'] === null ? parents : this.getParents(element.parentNode, parents.concat([element.parentNode]));\n }\n static getScrollableParents(element) {\n let scrollableParents = [];\n if (element) {\n let parents = this.getParents(element);\n const overflowRegex = /(auto|scroll)/;\n const overflowCheck = (node) => {\n let styleDeclaration = window['getComputedStyle'](node, null);\n return overflowRegex.test(styleDeclaration.getPropertyValue('overflow')) || overflowRegex.test(styleDeclaration.getPropertyValue('overflowX')) || overflowRegex.test(styleDeclaration.getPropertyValue('overflowY'));\n };\n for (let parent of parents) {\n let scrollSelectors = parent.nodeType === 1 && parent.dataset['scrollselectors'];\n if (scrollSelectors) {\n let selectors = scrollSelectors.split(',');\n for (let selector of selectors) {\n let el = this.findSingle(parent, selector);\n if (el && overflowCheck(el)) {\n scrollableParents.push(el);\n }\n }\n }\n if (parent.nodeType !== 9 && overflowCheck(parent)) {\n scrollableParents.push(parent);\n }\n }\n }\n return scrollableParents;\n }\n static getHiddenElementOuterHeight(element) {\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n let elementHeight = element.offsetHeight;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n return elementHeight;\n }\n static getHiddenElementOuterWidth(element) {\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n let elementWidth = element.offsetWidth;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n return elementWidth;\n }\n static getHiddenElementDimensions(element) {\n let dimensions = {};\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n dimensions.width = element.offsetWidth;\n dimensions.height = element.offsetHeight;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n return dimensions;\n }\n static scrollInView(container, item) {\n let borderTopValue = getComputedStyle(container).getPropertyValue('borderTopWidth');\n let borderTop = borderTopValue ? parseFloat(borderTopValue) : 0;\n let paddingTopValue = getComputedStyle(container).getPropertyValue('paddingTop');\n let paddingTop = paddingTopValue ? parseFloat(paddingTopValue) : 0;\n let containerRect = container.getBoundingClientRect();\n let itemRect = item.getBoundingClientRect();\n let offset = (itemRect.top + document.body.scrollTop) - (containerRect.top + document.body.scrollTop) - borderTop - paddingTop;\n let scroll = container.scrollTop;\n let elementHeight = container.clientHeight;\n let itemHeight = this.getOuterHeight(item);\n if (offset < 0) {\n container.scrollTop = scroll + offset;\n }\n else if ((offset + itemHeight) > elementHeight) {\n container.scrollTop = scroll + offset - elementHeight + itemHeight;\n }\n }\n static fadeIn(element, duration) {\n element.style.opacity = 0;\n let last = +new Date();\n let opacity = 0;\n let tick = function () {\n opacity = +element.style.opacity.replace(\",\", \".\") + (new Date().getTime() - last) / duration;\n element.style.opacity = opacity;\n last = +new Date();\n if (+opacity < 1) {\n (window.requestAnimationFrame && requestAnimationFrame(tick)) || setTimeout(tick, 16);\n }\n };\n tick();\n }\n static fadeOut(element, ms) {\n var opacity = 1, interval = 50, duration = ms, gap = interval / duration;\n let fading = setInterval(() => {\n opacity = opacity - gap;\n if (opacity <= 0) {\n opacity = 0;\n clearInterval(fading);\n }\n element.style.opacity = opacity;\n }, interval);\n }\n static getWindowScrollTop() {\n let doc = document.documentElement;\n return (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n }\n static getWindowScrollLeft() {\n let doc = document.documentElement;\n return (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n }\n static matches(element, selector) {\n var p = Element.prototype;\n var f = p['matches'] || p.webkitMatchesSelector || p['mozMatchesSelector'] || p['msMatchesSelector'] || function (s) {\n return [].indexOf.call(document.querySelectorAll(s), this) !== -1;\n };\n return f.call(element, selector);\n }\n static getOuterWidth(el, margin) {\n let width = el.offsetWidth;\n if (margin) {\n let style = getComputedStyle(el);\n width += parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n }\n return width;\n }\n static getHorizontalPadding(el) {\n let style = getComputedStyle(el);\n return parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n }\n static getHorizontalMargin(el) {\n let style = getComputedStyle(el);\n return parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n }\n static innerWidth(el) {\n let width = el.offsetWidth;\n let style = getComputedStyle(el);\n width += parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n return width;\n }\n static width(el) {\n let width = el.offsetWidth;\n let style = getComputedStyle(el);\n width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n return width;\n }\n static getInnerHeight(el) {\n let height = el.offsetHeight;\n let style = getComputedStyle(el);\n height += parseFloat(style.paddingTop) + parseFloat(style.paddingBottom);\n return height;\n }\n static getOuterHeight(el, margin) {\n let height = el.offsetHeight;\n if (margin) {\n let style = getComputedStyle(el);\n height += parseFloat(style.marginTop) + parseFloat(style.marginBottom);\n }\n return height;\n }\n static getHeight(el) {\n let height = el.offsetHeight;\n let style = getComputedStyle(el);\n height -= parseFloat(style.paddingTop) + parseFloat(style.paddingBottom) + parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);\n return height;\n }\n static getWidth(el) {\n let width = el.offsetWidth;\n let style = getComputedStyle(el);\n width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight) + parseFloat(style.borderLeftWidth) + parseFloat(style.borderRightWidth);\n return width;\n }\n static getViewport() {\n let win = window, d = document, e = d.documentElement, g = d.getElementsByTagName('body')[0], w = win.innerWidth || e.clientWidth || g.clientWidth, h = win.innerHeight || e.clientHeight || g.clientHeight;\n return { width: w, height: h };\n }\n static getOffset(el) {\n var rect = el.getBoundingClientRect();\n return {\n top: rect.top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0),\n left: rect.left + (window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0),\n };\n }\n static replaceElementWith(element, replacementElement) {\n let parentNode = element.parentNode;\n if (!parentNode)\n throw `Can't replace element`;\n return parentNode.replaceChild(replacementElement, element);\n }\n static getUserAgent() {\n return navigator.userAgent;\n }\n static isIE() {\n var ua = window.navigator.userAgent;\n var msie = ua.indexOf('MSIE ');\n if (msie > 0) {\n // IE 10 or older => return version number\n return true;\n }\n var trident = ua.indexOf('Trident/');\n if (trident > 0) {\n // IE 11 => return version number\n var rv = ua.indexOf('rv:');\n return true;\n }\n var edge = ua.indexOf('Edge/');\n if (edge > 0) {\n // Edge (IE 12+) => return version number\n return true;\n }\n // other browser\n return false;\n }\n static isIOS() {\n return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window['MSStream'];\n }\n static isAndroid() {\n return /(android)/i.test(navigator.userAgent);\n }\n static isTouchDevice() {\n return (('ontouchstart' in window) || (navigator.maxTouchPoints > 0));\n }\n static appendChild(element, target) {\n if (this.isElement(target))\n target.appendChild(element);\n else if (target.el && target.el.nativeElement)\n target.el.nativeElement.appendChild(element);\n else\n throw 'Cannot append ' + target + ' to ' + element;\n }\n static removeChild(element, target) {\n if (this.isElement(target))\n target.removeChild(element);\n else if (target.el && target.el.nativeElement)\n target.el.nativeElement.removeChild(element);\n else\n throw 'Cannot remove ' + element + ' from ' + target;\n }\n static removeElement(element) {\n if (!('remove' in Element.prototype))\n element.parentNode.removeChild(element);\n else\n element.remove();\n }\n static isElement(obj) {\n return (typeof HTMLElement === \"object\" ? obj instanceof HTMLElement :\n obj && typeof obj === \"object\" && obj !== null && obj.nodeType === 1 && typeof obj.nodeName === \"string\");\n }\n static calculateScrollbarWidth(el) {\n if (el) {\n let style = getComputedStyle(el);\n return (el.offsetWidth - el.clientWidth - parseFloat(style.borderLeftWidth) - parseFloat(style.borderRightWidth));\n }\n else {\n if (this.calculatedScrollbarWidth !== null)\n return this.calculatedScrollbarWidth;\n let scrollDiv = document.createElement(\"div\");\n scrollDiv.className = \"p-scrollbar-measure\";\n document.body.appendChild(scrollDiv);\n let scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n this.calculatedScrollbarWidth = scrollbarWidth;\n return scrollbarWidth;\n }\n }\n static calculateScrollbarHeight() {\n if (this.calculatedScrollbarHeight !== null)\n return this.calculatedScrollbarHeight;\n let scrollDiv = document.createElement(\"div\");\n scrollDiv.className = \"p-scrollbar-measure\";\n document.body.appendChild(scrollDiv);\n let scrollbarHeight = scrollDiv.offsetHeight - scrollDiv.clientHeight;\n document.body.removeChild(scrollDiv);\n this.calculatedScrollbarWidth = scrollbarHeight;\n return scrollbarHeight;\n }\n static invokeElementMethod(element, methodName, args) {\n element[methodName].apply(element, args);\n }\n static clearSelection() {\n if (window.getSelection) {\n if (window.getSelection().empty) {\n window.getSelection().empty();\n }\n else if (window.getSelection().removeAllRanges && window.getSelection().rangeCount > 0 && window.getSelection().getRangeAt(0).getClientRects().length > 0) {\n window.getSelection().removeAllRanges();\n }\n }\n else if (document['selection'] && document['selection'].empty) {\n try {\n document['selection'].empty();\n }\n catch (error) {\n //ignore IE bug\n }\n }\n }\n static getBrowser() {\n if (!this.browser) {\n let matched = this.resolveUserAgent();\n this.browser = {};\n if (matched.browser) {\n this.browser[matched.browser] = true;\n this.browser['version'] = matched.version;\n }\n if (this.browser['chrome']) {\n this.browser['webkit'] = true;\n }\n else if (this.browser['webkit']) {\n this.browser['safari'] = true;\n }\n }\n return this.browser;\n }\n static resolveUserAgent() {\n let ua = navigator.userAgent.toLowerCase();\n let match = /(chrome)[ \\/]([\\w.]+)/.exec(ua) ||\n /(webkit)[ \\/]([\\w.]+)/.exec(ua) ||\n /(opera)(?:.*version|)[ \\/]([\\w.]+)/.exec(ua) ||\n /(msie) ([\\w.]+)/.exec(ua) ||\n ua.indexOf(\"compatible\") < 0 && /(mozilla)(?:.*? rv:([\\w.]+)|)/.exec(ua) ||\n [];\n return {\n browser: match[1] || \"\",\n version: match[2] || \"0\"\n };\n }\n static isInteger(value) {\n if (Number.isInteger) {\n return Number.isInteger(value);\n }\n else {\n return typeof value === \"number\" && isFinite(value) && Math.floor(value) === value;\n }\n }\n static isHidden(element) {\n return element.offsetParent === null;\n }\n static getFocusableElements(element) {\n let focusableElements = DomHandler.find(element, `button:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]),\n [href][clientHeight][clientWidth]:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]),\n input:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]), select:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]),\n textarea:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]), [tabIndex]:not([tabIndex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]),\n [contenteditable]:not([tabIndex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]):not(.p-disabled)`);\n let visibleFocusableElements = [];\n for (let focusableElement of focusableElements) {\n if (getComputedStyle(focusableElement).display != \"none\" && getComputedStyle(focusableElement).visibility != \"hidden\")\n visibleFocusableElements.push(focusableElement);\n }\n return visibleFocusableElements;\n }\n static generateZIndex() {\n this.zindex = this.zindex || 999;\n return ++this.zindex;\n }\n}\nDomHandler.zindex = 1000;\nDomHandler.calculatedScrollbarWidth = null;\nDomHandler.calculatedScrollbarHeight = null;\n\nclass ConnectedOverlayScrollHandler {\n constructor(element, listener = () => { }) {\n this.element = element;\n this.listener = listener;\n }\n bindScrollListener() {\n this.scrollableParents = DomHandler.getScrollableParents(this.element);\n for (let i = 0; i < this.scrollableParents.length; i++) {\n this.scrollableParents[i].addEventListener('scroll', this.listener);\n }\n }\n unbindScrollListener() {\n if (this.scrollableParents) {\n for (let i = 0; i < this.scrollableParents.length; i++) {\n this.scrollableParents[i].removeEventListener('scroll', this.listener);\n }\n }\n }\n destroy() {\n this.unbindScrollListener();\n this.element = null;\n this.listener = null;\n this.scrollableParents = null;\n }\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ConnectedOverlayScrollHandler, DomHandler };\n","import * as i4 from '@angular/cdk/scrolling';\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\nimport * as i0 from '@angular/core';\nimport { forwardRef, EventEmitter, Component, Input, Output, ChangeDetectionStrategy, ViewEncapsulation, ViewChild, ContentChildren, NgModule } from '@angular/core';\nimport { trigger, transition, style, animate } from '@angular/animations';\nimport * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i3 from 'primeng/api';\nimport { TranslationKeys, PrimeTemplate, SharedModule } from 'primeng/api';\nimport { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';\nimport { UniqueComponentId, ObjectUtils, ZIndexUtils } from 'primeng/utils';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport * as i5 from 'primeng/tooltip';\nimport { TooltipModule } from 'primeng/tooltip';\nimport * as i1 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\n\nconst DROPDOWN_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Dropdown),\n multi: true\n};\nclass DropdownItem {\n constructor() {\n this.onClick = new EventEmitter();\n }\n onOptionClick(event) {\n this.onClick.emit({\n originalEvent: event,\n option: this.option\n });\n }\n}\nDropdownItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: DropdownItem, deps: [], target: i0.ɵɵFactoryTarget.Component });\nDropdownItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.7\", type: DropdownItem, selector: \"p-dropdownItem\", inputs: { option: \"option\", selected: \"selected\", label: \"label\", disabled: \"disabled\", visible: \"visible\", itemSize: \"itemSize\", template: \"template\" }, outputs: { onClick: \"onClick\" }, host: { classAttribute: \"p-element\" }, ngImport: i0, template: `\n
  • \n {{label||'empty'}}\n \n
  • \n `, isInline: true, directives: [{ type: i1.Ripple, selector: \"[pRipple]\" }, { type: i2.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: DropdownItem, decorators: [{\n type: Component,\n args: [{\n selector: 'p-dropdownItem',\n template: `\n
  • \n {{label||'empty'}}\n \n
  • \n `,\n host: {\n 'class': 'p-element'\n }\n }]\n }], propDecorators: { option: [{\n type: Input\n }], selected: [{\n type: Input\n }], label: [{\n type: Input\n }], disabled: [{\n type: Input\n }], visible: [{\n type: Input\n }], itemSize: [{\n type: Input\n }], template: [{\n type: Input\n }], onClick: [{\n type: Output\n }] } });\nclass Dropdown {\n constructor(el, renderer, cd, zone, filterService, config, overlayService) {\n this.el = el;\n this.renderer = renderer;\n this.cd = cd;\n this.zone = zone;\n this.filterService = filterService;\n this.config = config;\n this.overlayService = overlayService;\n this.scrollHeight = '200px';\n this.resetFilterOnHide = false;\n this.dropdownIcon = 'pi pi-chevron-down';\n this.optionGroupChildren = \"items\";\n this.autoDisplayFirst = true;\n this.emptyFilterMessage = '';\n this.emptyMessage = '';\n this.autoZIndex = true;\n this.baseZIndex = 0;\n this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';\n this.hideTransitionOptions = '.1s linear';\n this.filterMatchMode = \"contains\";\n this.tooltip = '';\n this.tooltipPosition = 'right';\n this.tooltipPositionStyle = 'absolute';\n this.autofocusFilter = true;\n this.onChange = new EventEmitter();\n this.onFilter = new EventEmitter();\n this.onFocus = new EventEmitter();\n this.onBlur = new EventEmitter();\n this.onClick = new EventEmitter();\n this.onShow = new EventEmitter();\n this.onHide = new EventEmitter();\n this.onClear = new EventEmitter();\n this.onModelChange = () => { };\n this.onModelTouched = () => { };\n this.viewPortOffsetTop = 0;\n this.id = UniqueComponentId();\n }\n get disabled() {\n return this._disabled;\n }\n ;\n set disabled(_disabled) {\n if (_disabled) {\n this.focused = false;\n if (this.overlayVisible)\n this.hide();\n }\n this._disabled = _disabled;\n if (!this.cd.destroyed) {\n this.cd.detectChanges();\n }\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'item':\n this.itemTemplate = item.template;\n break;\n case 'selectedItem':\n this.selectedItemTemplate = item.template;\n break;\n case 'header':\n this.headerTemplate = item.template;\n break;\n case 'footer':\n this.footerTemplate = item.template;\n break;\n case 'emptyfilter':\n this.emptyFilterTemplate = item.template;\n break;\n case 'empty':\n this.emptyTemplate = item.template;\n break;\n case 'group':\n this.groupTemplate = item.template;\n break;\n default:\n this.itemTemplate = item.template;\n break;\n }\n });\n }\n ngOnInit() {\n this.optionsToDisplay = this.options;\n this.updateSelectedOption(null);\n this.labelId = this.id + '_label';\n this.listId = this.id + '_list';\n }\n get options() {\n return this._options;\n }\n set options(val) {\n this._options = val;\n this.optionsToDisplay = this._options;\n this.updateSelectedOption(this.value);\n this.selectedOption = this.findOption(this.value, this.optionsToDisplay);\n if (!this.selectedOption) {\n this.value = null;\n this.onModelChange(this.value);\n }\n this.optionsChanged = true;\n if (this._filterValue && this._filterValue.length) {\n this.activateFilter();\n }\n }\n get filterValue() {\n return this._filterValue;\n }\n set filterValue(val) {\n this._filterValue = val;\n this.activateFilter();\n }\n ngAfterViewInit() {\n if (this.editable) {\n this.updateEditableLabel();\n }\n }\n get label() {\n return this.selectedOption ? this.getOptionLabel(this.selectedOption) : null;\n }\n get emptyMessageLabel() {\n return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);\n }\n get emptyFilterMessageLabel() {\n return this.emptyFilterMessage || this.config.getTranslation(TranslationKeys.EMPTY_FILTER_MESSAGE);\n }\n get filled() {\n return this.value || this.value != null || this.value != undefined;\n }\n updateEditableLabel() {\n if (this.editableInputViewChild && this.editableInputViewChild.nativeElement) {\n this.editableInputViewChild.nativeElement.value = (this.selectedOption ? this.getOptionLabel(this.selectedOption) : this.value || '');\n }\n }\n getOptionLabel(option) {\n return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : (option.label != undefined ? option.label : option);\n }\n getOptionValue(option) {\n return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : (this.optionLabel || option.value === undefined ? option : option.value);\n }\n isOptionDisabled(option) {\n return this.optionDisabled ? ObjectUtils.resolveFieldData(option, this.optionDisabled) : (option.disabled !== undefined ? option.disabled : false);\n }\n getOptionGroupLabel(optionGroup) {\n return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : (optionGroup.label != undefined ? optionGroup.label : optionGroup);\n }\n getOptionGroupChildren(optionGroup) {\n return this.optionGroupChildren ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;\n }\n onItemClick(event) {\n const option = event.option;\n if (!this.isOptionDisabled(option)) {\n this.selectItem(event.originalEvent, option);\n this.accessibleViewChild.nativeElement.focus();\n }\n setTimeout(() => {\n this.hide();\n }, 150);\n }\n selectItem(event, option) {\n if (this.selectedOption != option) {\n this.selectedOption = option;\n this.value = this.getOptionValue(option);\n this.onModelChange(this.value);\n this.updateEditableLabel();\n this.onChange.emit({\n originalEvent: event,\n value: this.value\n });\n if (this.virtualScroll) {\n setTimeout(() => {\n this.viewPortOffsetTop = this.viewPort ? this.viewPort.measureScrollOffset() : 0;\n }, 1);\n }\n }\n }\n ngAfterViewChecked() {\n if (this.optionsChanged && this.overlayVisible) {\n this.optionsChanged = false;\n if (this.virtualScroll) {\n this.updateVirtualScrollSelectedIndex(true);\n }\n this.zone.runOutsideAngular(() => {\n setTimeout(() => {\n this.alignOverlay();\n }, 1);\n });\n }\n if (this.selectedOptionUpdated && this.itemsWrapper) {\n if (this.virtualScroll && this.viewPort) {\n let range = this.viewPort.getRenderedRange();\n this.updateVirtualScrollSelectedIndex(false);\n if (range.start > this.virtualScrollSelectedIndex || range.end < this.virtualScrollSelectedIndex) {\n this.viewPort.scrollToIndex(this.virtualScrollSelectedIndex);\n }\n }\n let selectedItem = DomHandler.findSingle(this.overlay, 'li.p-highlight');\n if (selectedItem) {\n DomHandler.scrollInView(this.itemsWrapper, DomHandler.findSingle(this.overlay, 'li.p-highlight'));\n }\n this.selectedOptionUpdated = false;\n }\n }\n writeValue(value) {\n if (this.filter) {\n this.resetFilter();\n }\n this.value = value;\n this.updateSelectedOption(value);\n this.updateEditableLabel();\n this.cd.markForCheck();\n }\n resetFilter() {\n this._filterValue = null;\n if (this.filterViewChild && this.filterViewChild.nativeElement) {\n this.filterViewChild.nativeElement.value = '';\n }\n this.optionsToDisplay = this.options;\n }\n updateSelectedOption(val) {\n this.selectedOption = this.findOption(val, this.optionsToDisplay);\n if (this.autoDisplayFirst && !this.placeholder && !this.selectedOption && this.optionsToDisplay && this.optionsToDisplay.length && !this.editable) {\n if (this.group) {\n this.selectedOption = this.optionsToDisplay[0].items[0];\n }\n else {\n this.selectedOption = this.optionsToDisplay[0];\n }\n this.value = this.getOptionValue(this.selectedOption);\n this.onModelChange(this.value);\n }\n this.selectedOptionUpdated = true;\n }\n registerOnChange(fn) {\n this.onModelChange = fn;\n }\n registerOnTouched(fn) {\n this.onModelTouched = fn;\n }\n setDisabledState(val) {\n this.disabled = val;\n this.cd.markForCheck();\n }\n onMouseclick(event) {\n if (this.disabled || this.readonly || this.isInputClick(event)) {\n return;\n }\n this.onClick.emit(event);\n this.accessibleViewChild.nativeElement.focus();\n if (this.overlayVisible)\n this.hide();\n else\n this.show();\n this.cd.detectChanges();\n }\n onOverlayClick(event) {\n this.overlayService.add({\n originalEvent: event,\n target: this.el.nativeElement\n });\n }\n isInputClick(event) {\n return DomHandler.hasClass(event.target, 'p-dropdown-clear-icon') ||\n event.target.isSameNode(this.accessibleViewChild.nativeElement) ||\n (this.editableInputViewChild && event.target.isSameNode(this.editableInputViewChild.nativeElement));\n }\n isOutsideClicked(event) {\n return !(this.el.nativeElement.isSameNode(event.target) || this.el.nativeElement.contains(event.target) || (this.overlay && this.overlay.contains(event.target)));\n }\n isEmpty() {\n return !this.optionsToDisplay || (this.optionsToDisplay && this.optionsToDisplay.length === 0);\n }\n onEditableInputClick() {\n this.bindDocumentClickListener();\n }\n onEditableInputFocus(event) {\n this.focused = true;\n this.hide();\n this.onFocus.emit(event);\n }\n onEditableInputChange(event) {\n this.value = event.target.value;\n this.updateSelectedOption(this.value);\n this.onModelChange(this.value);\n this.onChange.emit({\n originalEvent: event,\n value: this.value\n });\n }\n show() {\n this.overlayVisible = true;\n this.cd.markForCheck();\n }\n onOverlayAnimationStart(event) {\n switch (event.toState) {\n case 'visible':\n this.overlay = event.element;\n let itemsWrapperSelector = this.virtualScroll ? '.cdk-virtual-scroll-viewport' : '.p-dropdown-items-wrapper';\n this.itemsWrapper = DomHandler.findSingle(this.overlay, itemsWrapperSelector);\n this.appendOverlay();\n if (this.autoZIndex) {\n ZIndexUtils.set('overlay', this.overlay, this.baseZIndex + this.config.zIndex.overlay);\n }\n this.alignOverlay();\n this.bindDocumentClickListener();\n this.bindDocumentResizeListener();\n this.bindScrollListener();\n if (this.options && this.options.length) {\n if (!this.virtualScroll) {\n let selectedListItem = DomHandler.findSingle(this.itemsWrapper, '.p-dropdown-item.p-highlight');\n if (selectedListItem) {\n selectedListItem.scrollIntoView({ block: 'nearest', inline: 'center' });\n }\n }\n }\n if (this.filterViewChild && this.filterViewChild.nativeElement) {\n this.preventModelTouched = true;\n if (this.autofocusFilter) {\n this.filterViewChild.nativeElement.focus();\n }\n }\n this.onShow.emit(event);\n break;\n case 'void':\n this.onOverlayHide();\n this.onHide.emit(event);\n break;\n }\n }\n onOverlayAnimationEnd(event) {\n switch (event.toState) {\n case 'void':\n ZIndexUtils.clear(event.element);\n break;\n }\n }\n scrollToSelectedVirtualScrollElement() {\n if (!this.virtualAutoScrolled) {\n if (this.viewPortOffsetTop) {\n this.viewPort.scrollToOffset(this.viewPortOffsetTop);\n }\n else if (this.virtualScrollSelectedIndex > -1) {\n this.viewPort.scrollToIndex(this.virtualScrollSelectedIndex);\n }\n }\n this.virtualAutoScrolled = true;\n }\n updateVirtualScrollSelectedIndex(resetOffset) {\n if (this.selectedOption && this.optionsToDisplay && this.optionsToDisplay.length) {\n if (resetOffset) {\n this.viewPortOffsetTop = 0;\n }\n this.virtualScrollSelectedIndex = this.findOptionIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay);\n }\n }\n appendOverlay() {\n if (this.appendTo) {\n if (this.appendTo === 'body')\n document.body.appendChild(this.overlay);\n else\n DomHandler.appendChild(this.overlay, this.appendTo);\n if (!this.overlay.style.minWidth) {\n this.overlay.style.minWidth = DomHandler.getWidth(this.containerViewChild.nativeElement) + 'px';\n }\n }\n }\n restoreOverlayAppend() {\n if (this.overlay && this.appendTo) {\n this.el.nativeElement.appendChild(this.overlay);\n }\n }\n hide() {\n this.overlayVisible = false;\n if (this.filter && this.resetFilterOnHide) {\n this.resetFilter();\n }\n if (this.virtualScroll) {\n this.virtualAutoScrolled = false;\n }\n this.cd.markForCheck();\n }\n alignOverlay() {\n if (this.overlay) {\n if (this.appendTo)\n DomHandler.absolutePosition(this.overlay, this.containerViewChild.nativeElement);\n else\n DomHandler.relativePosition(this.overlay, this.containerViewChild.nativeElement);\n }\n }\n onInputFocus(event) {\n this.focused = true;\n this.onFocus.emit(event);\n }\n onInputBlur(event) {\n this.focused = false;\n this.onBlur.emit(event);\n if (!this.preventModelTouched) {\n this.onModelTouched();\n }\n this.preventModelTouched = false;\n }\n findPrevEnabledOption(index) {\n let prevEnabledOption;\n if (this.optionsToDisplay && this.optionsToDisplay.length) {\n for (let i = (index - 1); 0 <= i; i--) {\n let option = this.optionsToDisplay[i];\n if (this.isOptionDisabled(option)) {\n continue;\n }\n else {\n prevEnabledOption = option;\n break;\n }\n }\n if (!prevEnabledOption) {\n for (let i = this.optionsToDisplay.length - 1; i >= index; i--) {\n let option = this.optionsToDisplay[i];\n if (this.isOptionDisabled(option)) {\n continue;\n }\n else {\n prevEnabledOption = option;\n break;\n }\n }\n }\n }\n return prevEnabledOption;\n }\n findNextEnabledOption(index) {\n let nextEnabledOption;\n if (this.optionsToDisplay && this.optionsToDisplay.length) {\n for (let i = (index + 1); i < this.optionsToDisplay.length; i++) {\n let option = this.optionsToDisplay[i];\n if (this.isOptionDisabled(option)) {\n continue;\n }\n else {\n nextEnabledOption = option;\n break;\n }\n }\n if (!nextEnabledOption) {\n for (let i = 0; i < index; i++) {\n let option = this.optionsToDisplay[i];\n if (this.isOptionDisabled(option)) {\n continue;\n }\n else {\n nextEnabledOption = option;\n break;\n }\n }\n }\n }\n return nextEnabledOption;\n }\n onKeydown(event, search) {\n if (this.readonly || !this.optionsToDisplay || this.optionsToDisplay.length === null) {\n return;\n }\n switch (event.which) {\n //down\n case 40:\n if (!this.overlayVisible && event.altKey) {\n this.show();\n }\n else {\n if (this.group) {\n let selectedItemIndex = this.selectedOption ? this.findOptionGroupIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : -1;\n if (selectedItemIndex !== -1) {\n let nextItemIndex = selectedItemIndex.itemIndex + 1;\n if (nextItemIndex < (this.getOptionGroupChildren(this.optionsToDisplay[selectedItemIndex.groupIndex]).length)) {\n this.selectItem(event, this.getOptionGroupChildren(this.optionsToDisplay[selectedItemIndex.groupIndex])[nextItemIndex]);\n this.selectedOptionUpdated = true;\n }\n else if (this.optionsToDisplay[selectedItemIndex.groupIndex + 1]) {\n this.selectItem(event, this.getOptionGroupChildren(this.optionsToDisplay[selectedItemIndex.groupIndex + 1])[0]);\n this.selectedOptionUpdated = true;\n }\n }\n else {\n if (this.optionsToDisplay && this.optionsToDisplay.length > 0) {\n this.selectItem(event, this.getOptionGroupChildren(this.optionsToDisplay[0])[0]);\n }\n }\n }\n else {\n let selectedItemIndex = this.selectedOption ? this.findOptionIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : -1;\n let nextEnabledOption = this.findNextEnabledOption(selectedItemIndex);\n if (nextEnabledOption) {\n this.selectItem(event, nextEnabledOption);\n this.selectedOptionUpdated = true;\n }\n }\n }\n event.preventDefault();\n break;\n //up\n case 38:\n if (this.group) {\n let selectedItemIndex = this.selectedOption ? this.findOptionGroupIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : -1;\n if (selectedItemIndex !== -1) {\n let prevItemIndex = selectedItemIndex.itemIndex - 1;\n if (prevItemIndex >= 0) {\n this.selectItem(event, this.getOptionGroupChildren(this.optionsToDisplay[selectedItemIndex.groupIndex])[prevItemIndex]);\n this.selectedOptionUpdated = true;\n }\n else if (prevItemIndex < 0) {\n let prevGroup = this.optionsToDisplay[selectedItemIndex.groupIndex - 1];\n if (prevGroup) {\n this.selectItem(event, this.getOptionGroupChildren(prevGroup)[this.getOptionGroupChildren(prevGroup).length - 1]);\n this.selectedOptionUpdated = true;\n }\n }\n }\n }\n else {\n let selectedItemIndex = this.selectedOption ? this.findOptionIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : -1;\n let prevEnabledOption = this.findPrevEnabledOption(selectedItemIndex);\n if (prevEnabledOption) {\n this.selectItem(event, prevEnabledOption);\n this.selectedOptionUpdated = true;\n }\n }\n event.preventDefault();\n break;\n //space\n case 32:\n if (search) {\n if (!this.overlayVisible) {\n this.show();\n }\n else {\n this.hide();\n }\n event.preventDefault();\n }\n break;\n //enter\n case 13:\n if (this.overlayVisible && (!this.filter || (this.optionsToDisplay && this.optionsToDisplay.length > 0))) {\n this.hide();\n }\n else if (!this.overlayVisible) {\n this.show();\n }\n event.preventDefault();\n break;\n //escape and tab\n case 27:\n case 9:\n this.hide();\n break;\n //search item based on keyboard input\n default:\n if (search && !event.metaKey) {\n this.search(event);\n }\n break;\n }\n }\n search(event) {\n if (this.searchTimeout) {\n clearTimeout(this.searchTimeout);\n }\n const char = event.key;\n this.previousSearchChar = this.currentSearchChar;\n this.currentSearchChar = char;\n if (this.previousSearchChar === this.currentSearchChar)\n this.searchValue = this.currentSearchChar;\n else\n this.searchValue = this.searchValue ? this.searchValue + char : char;\n let newOption;\n if (this.group) {\n let searchIndex = this.selectedOption ? this.findOptionGroupIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : { groupIndex: 0, itemIndex: 0 };\n newOption = this.searchOptionWithinGroup(searchIndex);\n }\n else {\n let searchIndex = this.selectedOption ? this.findOptionIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : -1;\n newOption = this.searchOption(++searchIndex);\n }\n if (newOption && !this.isOptionDisabled(newOption)) {\n this.selectItem(event, newOption);\n this.selectedOptionUpdated = true;\n }\n this.searchTimeout = setTimeout(() => {\n this.searchValue = null;\n }, 250);\n }\n searchOption(index) {\n let option;\n if (this.searchValue) {\n option = this.searchOptionInRange(index, this.optionsToDisplay.length);\n if (!option) {\n option = this.searchOptionInRange(0, index);\n }\n }\n return option;\n }\n searchOptionInRange(start, end) {\n for (let i = start; i < end; i++) {\n let opt = this.optionsToDisplay[i];\n if (this.getOptionLabel(opt).toLocaleLowerCase(this.filterLocale).startsWith(this.searchValue.toLocaleLowerCase(this.filterLocale)) && !this.isOptionDisabled(opt)) {\n return opt;\n }\n }\n return null;\n }\n searchOptionWithinGroup(index) {\n let option;\n if (this.searchValue) {\n for (let i = index.groupIndex; i < this.optionsToDisplay.length; i++) {\n for (let j = (index.groupIndex === i) ? (index.itemIndex + 1) : 0; j < this.getOptionGroupChildren(this.optionsToDisplay[i]).length; j++) {\n let opt = this.getOptionGroupChildren(this.optionsToDisplay[i])[j];\n if (this.getOptionLabel(opt).toLocaleLowerCase(this.filterLocale).startsWith(this.searchValue.toLocaleLowerCase(this.filterLocale)) && !this.isOptionDisabled(opt)) {\n return opt;\n }\n }\n }\n if (!option) {\n for (let i = 0; i <= index.groupIndex; i++) {\n for (let j = 0; j < ((index.groupIndex === i) ? index.itemIndex : this.getOptionGroupChildren(this.optionsToDisplay[i]).length); j++) {\n let opt = this.getOptionGroupChildren(this.optionsToDisplay[i])[j];\n if (this.getOptionLabel(opt).toLocaleLowerCase(this.filterLocale).startsWith(this.searchValue.toLocaleLowerCase(this.filterLocale)) && !this.isOptionDisabled(opt)) {\n return opt;\n }\n }\n }\n }\n }\n return null;\n }\n findOptionIndex(val, opts) {\n let index = -1;\n if (opts) {\n for (let i = 0; i < opts.length; i++) {\n if ((val == null && this.getOptionValue(opts[i]) == null) || ObjectUtils.equals(val, this.getOptionValue(opts[i]), this.dataKey)) {\n index = i;\n break;\n }\n }\n }\n return index;\n }\n findOptionGroupIndex(val, opts) {\n let groupIndex, itemIndex;\n if (opts) {\n for (let i = 0; i < opts.length; i++) {\n groupIndex = i;\n itemIndex = this.findOptionIndex(val, this.getOptionGroupChildren(opts[i]));\n if (itemIndex !== -1) {\n break;\n }\n }\n }\n if (itemIndex !== -1) {\n return { groupIndex: groupIndex, itemIndex: itemIndex };\n }\n else {\n return -1;\n }\n }\n findOption(val, opts, inGroup) {\n if (this.group && !inGroup) {\n let opt;\n if (opts && opts.length) {\n for (let optgroup of opts) {\n opt = this.findOption(val, this.getOptionGroupChildren(optgroup), true);\n if (opt) {\n break;\n }\n }\n }\n return opt;\n }\n else {\n let index = this.findOptionIndex(val, opts);\n return (index != -1) ? opts[index] : null;\n }\n }\n onFilterInputChange(event) {\n let inputValue = event.target.value;\n if (inputValue && inputValue.length) {\n this._filterValue = inputValue;\n this.activateFilter();\n }\n else {\n this._filterValue = null;\n this.optionsToDisplay = this.options;\n }\n this.optionsChanged = true;\n this.onFilter.emit({ originalEvent: event, filter: this._filterValue });\n }\n activateFilter() {\n let searchFields = (this.filterBy || this.optionLabel || 'label').split(',');\n if (this.options && this.options.length) {\n if (this.group) {\n let filteredGroups = [];\n for (let optgroup of this.options) {\n let filteredSubOptions = this.filterService.filter(this.getOptionGroupChildren(optgroup), searchFields, this.filterValue, this.filterMatchMode, this.filterLocale);\n if (filteredSubOptions && filteredSubOptions.length) {\n filteredGroups.push(Object.assign(Object.assign({}, optgroup), { [this.optionGroupChildren]: filteredSubOptions }));\n }\n }\n this.optionsToDisplay = filteredGroups;\n }\n else {\n this.optionsToDisplay = this.filterService.filter(this.options, searchFields, this.filterValue, this.filterMatchMode, this.filterLocale);\n }\n this.optionsChanged = true;\n }\n }\n applyFocus() {\n if (this.editable)\n DomHandler.findSingle(this.el.nativeElement, '.p-dropdown-label.p-inputtext').focus();\n else\n DomHandler.findSingle(this.el.nativeElement, 'input[readonly]').focus();\n }\n focus() {\n this.applyFocus();\n }\n bindDocumentClickListener() {\n if (!this.documentClickListener) {\n const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';\n this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {\n if (!this.preventDocumentDefault && this.isOutsideClicked(event)) {\n this.hide();\n this.unbindDocumentClickListener();\n }\n this.preventDocumentDefault = false;\n });\n }\n }\n unbindDocumentClickListener() {\n if (this.documentClickListener) {\n this.documentClickListener();\n this.documentClickListener = null;\n }\n }\n bindDocumentResizeListener() {\n this.documentResizeListener = this.onWindowResize.bind(this);\n window.addEventListener('resize', this.documentResizeListener);\n }\n unbindDocumentResizeListener() {\n if (this.documentResizeListener) {\n window.removeEventListener('resize', this.documentResizeListener);\n this.documentResizeListener = null;\n }\n }\n onWindowResize() {\n if (this.overlayVisible && !DomHandler.isTouchDevice()) {\n this.hide();\n }\n }\n bindScrollListener() {\n if (!this.scrollHandler) {\n this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerViewChild.nativeElement, (event) => {\n if (this.overlayVisible) {\n this.hide();\n }\n });\n }\n this.scrollHandler.bindScrollListener();\n }\n unbindScrollListener() {\n if (this.scrollHandler) {\n this.scrollHandler.unbindScrollListener();\n }\n }\n clear(event) {\n this.value = null;\n this.onModelChange(this.value);\n this.onChange.emit({\n originalEvent: event,\n value: this.value\n });\n this.updateSelectedOption(this.value);\n this.updateEditableLabel();\n this.onClear.emit(event);\n }\n onOverlayHide() {\n this.unbindDocumentClickListener();\n this.unbindDocumentResizeListener();\n this.unbindScrollListener();\n this.overlay = null;\n this.itemsWrapper = null;\n this.onModelTouched();\n }\n ngOnDestroy() {\n if (this.scrollHandler) {\n this.scrollHandler.destroy();\n this.scrollHandler = null;\n }\n if (this.overlay) {\n ZIndexUtils.clear(this.overlay);\n }\n this.restoreOverlayAppend();\n this.onOverlayHide();\n }\n}\nDropdown.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: Dropdown, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i3.FilterService }, { token: i3.PrimeNGConfig }, { token: i3.OverlayService }], target: i0.ɵɵFactoryTarget.Component });\nDropdown.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.7\", type: Dropdown, selector: \"p-dropdown\", inputs: { scrollHeight: \"scrollHeight\", filter: \"filter\", name: \"name\", style: \"style\", panelStyle: \"panelStyle\", styleClass: \"styleClass\", panelStyleClass: \"panelStyleClass\", readonly: \"readonly\", required: \"required\", editable: \"editable\", appendTo: \"appendTo\", tabindex: \"tabindex\", placeholder: \"placeholder\", filterPlaceholder: \"filterPlaceholder\", filterLocale: \"filterLocale\", inputId: \"inputId\", selectId: \"selectId\", dataKey: \"dataKey\", filterBy: \"filterBy\", autofocus: \"autofocus\", resetFilterOnHide: \"resetFilterOnHide\", dropdownIcon: \"dropdownIcon\", optionLabel: \"optionLabel\", optionValue: \"optionValue\", optionDisabled: \"optionDisabled\", optionGroupLabel: \"optionGroupLabel\", optionGroupChildren: \"optionGroupChildren\", autoDisplayFirst: \"autoDisplayFirst\", group: \"group\", showClear: \"showClear\", emptyFilterMessage: \"emptyFilterMessage\", emptyMessage: \"emptyMessage\", virtualScroll: \"virtualScroll\", itemSize: \"itemSize\", autoZIndex: \"autoZIndex\", baseZIndex: \"baseZIndex\", showTransitionOptions: \"showTransitionOptions\", hideTransitionOptions: \"hideTransitionOptions\", ariaFilterLabel: \"ariaFilterLabel\", ariaLabel: \"ariaLabel\", ariaLabelledBy: \"ariaLabelledBy\", filterMatchMode: \"filterMatchMode\", maxlength: \"maxlength\", tooltip: \"tooltip\", tooltipPosition: \"tooltipPosition\", tooltipPositionStyle: \"tooltipPositionStyle\", tooltipStyleClass: \"tooltipStyleClass\", autofocusFilter: \"autofocusFilter\", disabled: \"disabled\", options: \"options\", filterValue: \"filterValue\" }, outputs: { onChange: \"onChange\", onFilter: \"onFilter\", onFocus: \"onFocus\", onBlur: \"onBlur\", onClick: \"onClick\", onShow: \"onShow\", onHide: \"onHide\", onClear: \"onClear\" }, host: { properties: { \"class.p-inputwrapper-filled\": \"filled\", \"class.p-inputwrapper-focus\": \"focused || overlayVisible\" }, classAttribute: \"p-element p-inputwrapper\" }, providers: [DROPDOWN_VALUE_ACCESSOR], queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"containerViewChild\", first: true, predicate: [\"container\"], descendants: true }, { propertyName: \"filterViewChild\", first: true, predicate: [\"filter\"], descendants: true }, { propertyName: \"accessibleViewChild\", first: true, predicate: [\"in\"], descendants: true }, { propertyName: \"viewPort\", first: true, predicate: CdkVirtualScrollViewport, descendants: true }, { propertyName: \"editableInputViewChild\", first: true, predicate: [\"editableInput\"], descendants: true }], ngImport: i0, template: `\n
    \n
    \n \n
    \n \n {{label||'empty'}}\n \n \n {{placeholder||'empty'}}\n \n \n
    \n \n
    \n
    \n \n
    \n
    \n \n \n
    \n
    \n
    \n
      \n \n \n
    • \n {{getOptionGroupLabel(optgroup)||'empty'}}\n \n
    • \n \n
      \n
      \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    • \n \n {{emptyFilterMessageLabel}}\n \n \n
    • \n
    • \n \n {{emptyMessageLabel}}\n \n \n
    • \n
    \n
    \n \n
    \n
    \n `, isInline: true, styles: [\".p-dropdown{display:inline-flex;cursor:pointer;position:relative;-webkit-user-select:none;user-select:none}.p-dropdown-clear-icon{position:absolute;top:50%;margin-top:-.5rem}.p-dropdown-trigger{display:flex;align-items:center;justify-content:center;flex-shrink:0}.p-dropdown-label{display:block;white-space:nowrap;overflow:hidden;flex:1 1 auto;width:1%;text-overflow:ellipsis;cursor:pointer}.p-dropdown-label-empty{overflow:hidden;visibility:hidden}input.p-dropdown-label{cursor:default}.p-dropdown .p-dropdown-panel{min-width:100%}.p-dropdown-panel{position:absolute;top:0;left:0}.p-dropdown-items-wrapper{overflow:auto}.p-dropdown-item{cursor:pointer;font-weight:400;white-space:nowrap;position:relative;overflow:hidden}.p-dropdown-items{margin:0;padding:0;list-style-type:none}.p-dropdown-filter{width:100%}.p-dropdown-filter-container{position:relative}.p-dropdown-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-fluid .p-dropdown{display:flex}.p-fluid .p-dropdown .p-dropdown-label{width:1%}\\n\"], components: [{ type: DropdownItem, selector: \"p-dropdownItem\", inputs: [\"option\", \"selected\", \"label\", \"disabled\", \"visible\", \"itemSize\", \"template\"], outputs: [\"onClick\"] }, { type: i4.CdkVirtualScrollViewport, selector: \"cdk-virtual-scroll-viewport\", inputs: [\"orientation\", \"appendOnly\"], outputs: [\"scrolledIndexChange\"] }], directives: [{ type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i2.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i5.Tooltip, selector: \"[pTooltip]\", inputs: [\"tooltipPosition\", \"tooltipEvent\", \"appendTo\", \"positionStyle\", \"tooltipStyleClass\", \"tooltipZIndex\", \"escape\", \"showDelay\", \"hideDelay\", \"life\", \"positionTop\", \"positionLeft\", \"pTooltip\", \"tooltipDisabled\", \"tooltipOptions\"] }, { type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i4.CdkFixedSizeVirtualScroll, selector: \"cdk-virtual-scroll-viewport[itemSize]\", inputs: [\"itemSize\", \"minBufferPx\", \"maxBufferPx\"] }, { type: i4.CdkVirtualForOf, selector: \"[cdkVirtualFor][cdkVirtualForOf]\", inputs: [\"cdkVirtualForOf\", \"cdkVirtualForTrackBy\", \"cdkVirtualForTemplate\", \"cdkVirtualForTemplateCacheSize\"] }], animations: [\n trigger('overlayAnimation', [\n transition(':enter', [\n style({ opacity: 0, transform: 'scaleY(0.8)' }),\n animate('{{showTransitionParams}}')\n ]),\n transition(':leave', [\n animate('{{hideTransitionParams}}', style({ opacity: 0 }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: Dropdown, decorators: [{\n type: Component,\n args: [{ selector: 'p-dropdown', template: `\n
    \n
    \n \n
    \n \n {{label||'empty'}}\n \n \n {{placeholder||'empty'}}\n \n \n
    \n \n
    \n
    \n \n
    \n
    \n \n \n
    \n
    \n
    \n
      \n \n \n
    • \n {{getOptionGroupLabel(optgroup)||'empty'}}\n \n
    • \n \n
      \n
      \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    • \n \n {{emptyFilterMessageLabel}}\n \n \n
    • \n
    • \n \n {{emptyMessageLabel}}\n \n \n
    • \n
    \n
    \n \n
    \n
    \n `, animations: [\n trigger('overlayAnimation', [\n transition(':enter', [\n style({ opacity: 0, transform: 'scaleY(0.8)' }),\n animate('{{showTransitionParams}}')\n ]),\n transition(':leave', [\n animate('{{hideTransitionParams}}', style({ opacity: 0 }))\n ])\n ])\n ], host: {\n 'class': 'p-element p-inputwrapper',\n '[class.p-inputwrapper-filled]': 'filled',\n '[class.p-inputwrapper-focus]': 'focused || overlayVisible'\n }, providers: [DROPDOWN_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [\".p-dropdown{display:inline-flex;cursor:pointer;position:relative;-webkit-user-select:none;user-select:none}.p-dropdown-clear-icon{position:absolute;top:50%;margin-top:-.5rem}.p-dropdown-trigger{display:flex;align-items:center;justify-content:center;flex-shrink:0}.p-dropdown-label{display:block;white-space:nowrap;overflow:hidden;flex:1 1 auto;width:1%;text-overflow:ellipsis;cursor:pointer}.p-dropdown-label-empty{overflow:hidden;visibility:hidden}input.p-dropdown-label{cursor:default}.p-dropdown .p-dropdown-panel{min-width:100%}.p-dropdown-panel{position:absolute;top:0;left:0}.p-dropdown-items-wrapper{overflow:auto}.p-dropdown-item{cursor:pointer;font-weight:400;white-space:nowrap;position:relative;overflow:hidden}.p-dropdown-items{margin:0;padding:0;list-style-type:none}.p-dropdown-filter{width:100%}.p-dropdown-filter-container{position:relative}.p-dropdown-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-fluid .p-dropdown{display:flex}.p-fluid .p-dropdown .p-dropdown-label{width:1%}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i3.FilterService }, { type: i3.PrimeNGConfig }, { type: i3.OverlayService }]; }, propDecorators: { scrollHeight: [{\n type: Input\n }], filter: [{\n type: Input\n }], name: [{\n type: Input\n }], style: [{\n type: Input\n }], panelStyle: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], panelStyleClass: [{\n type: Input\n }], readonly: [{\n type: Input\n }], required: [{\n type: Input\n }], editable: [{\n type: Input\n }], appendTo: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], filterPlaceholder: [{\n type: Input\n }], filterLocale: [{\n type: Input\n }], inputId: [{\n type: Input\n }], selectId: [{\n type: Input\n }], dataKey: [{\n type: Input\n }], filterBy: [{\n type: Input\n }], autofocus: [{\n type: Input\n }], resetFilterOnHide: [{\n type: Input\n }], dropdownIcon: [{\n type: Input\n }], optionLabel: [{\n type: Input\n }], optionValue: [{\n type: Input\n }], optionDisabled: [{\n type: Input\n }], optionGroupLabel: [{\n type: Input\n }], optionGroupChildren: [{\n type: Input\n }], autoDisplayFirst: [{\n type: Input\n }], group: [{\n type: Input\n }], showClear: [{\n type: Input\n }], emptyFilterMessage: [{\n type: Input\n }], emptyMessage: [{\n type: Input\n }], virtualScroll: [{\n type: Input\n }], itemSize: [{\n type: Input\n }], autoZIndex: [{\n type: Input\n }], baseZIndex: [{\n type: Input\n }], showTransitionOptions: [{\n type: Input\n }], hideTransitionOptions: [{\n type: Input\n }], ariaFilterLabel: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], filterMatchMode: [{\n type: Input\n }], maxlength: [{\n type: Input\n }], tooltip: [{\n type: Input\n }], tooltipPosition: [{\n type: Input\n }], tooltipPositionStyle: [{\n type: Input\n }], tooltipStyleClass: [{\n type: Input\n }], autofocusFilter: [{\n type: Input\n }], onChange: [{\n type: Output\n }], onFilter: [{\n type: Output\n }], onFocus: [{\n type: Output\n }], onBlur: [{\n type: Output\n }], onClick: [{\n type: Output\n }], onShow: [{\n type: Output\n }], onHide: [{\n type: Output\n }], onClear: [{\n type: Output\n }], containerViewChild: [{\n type: ViewChild,\n args: ['container']\n }], filterViewChild: [{\n type: ViewChild,\n args: ['filter']\n }], accessibleViewChild: [{\n type: ViewChild,\n args: ['in']\n }], viewPort: [{\n type: ViewChild,\n args: [CdkVirtualScrollViewport]\n }], editableInputViewChild: [{\n type: ViewChild,\n args: ['editableInput']\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }], disabled: [{\n type: Input\n }], options: [{\n type: Input\n }], filterValue: [{\n type: Input\n }] } });\nclass DropdownModule {\n}\nDropdownModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: DropdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDropdownModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: DropdownModule, declarations: [Dropdown, DropdownItem], imports: [CommonModule, SharedModule, ScrollingModule, TooltipModule, RippleModule], exports: [Dropdown, SharedModule, ScrollingModule] });\nDropdownModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: DropdownModule, imports: [[CommonModule, SharedModule, ScrollingModule, TooltipModule, RippleModule], SharedModule, ScrollingModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: DropdownModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, SharedModule, ScrollingModule, TooltipModule, RippleModule],\n exports: [Dropdown, SharedModule, ScrollingModule],\n declarations: [Dropdown, DropdownItem]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { DROPDOWN_VALUE_ACCESSOR, Dropdown, DropdownItem, DropdownModule };\n","import * as i0 from '@angular/core';\nimport { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ContentChildren, ViewChild, NgModule } from '@angular/core';\nimport * as i7 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i4 from 'primeng/button';\nimport { ButtonModule } from 'primeng/button';\nimport * as i6 from 'primeng/messages';\nimport { MessagesModule } from 'primeng/messages';\nimport * as i5 from 'primeng/progressbar';\nimport { ProgressBarModule } from 'primeng/progressbar';\nimport { DomHandler } from 'primeng/dom';\nimport * as i3 from 'primeng/api';\nimport { TranslationKeys, PrimeTemplate, SharedModule } from 'primeng/api';\nimport * as i8 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport * as i2 from '@angular/common/http';\nimport { HttpEventType } from '@angular/common/http';\nimport * as i1 from '@angular/platform-browser';\n\nclass FileUpload {\n constructor(el, sanitizer, zone, http, cd, config) {\n this.el = el;\n this.sanitizer = sanitizer;\n this.zone = zone;\n this.http = http;\n this.cd = cd;\n this.config = config;\n this.method = 'post';\n this.invalidFileSizeMessageSummary = '{0}: Invalid file size, ';\n this.invalidFileSizeMessageDetail = 'maximum upload size is {0}.';\n this.invalidFileTypeMessageSummary = '{0}: Invalid file type, ';\n this.invalidFileTypeMessageDetail = 'allowed file types: {0}.';\n this.invalidFileLimitMessageDetail = 'limit is {0} at most.';\n this.invalidFileLimitMessageSummary = 'Maximum number of files exceeded, ';\n this.previewWidth = 50;\n this.chooseIcon = 'pi pi-plus';\n this.uploadIcon = 'pi pi-upload';\n this.cancelIcon = 'pi pi-times';\n this.showUploadButton = true;\n this.showCancelButton = true;\n this.mode = 'advanced';\n this.onBeforeUpload = new EventEmitter();\n this.onSend = new EventEmitter();\n this.onUpload = new EventEmitter();\n this.onError = new EventEmitter();\n this.onClear = new EventEmitter();\n this.onRemove = new EventEmitter();\n this.onSelect = new EventEmitter();\n this.onProgress = new EventEmitter();\n this.uploadHandler = new EventEmitter();\n this._files = [];\n this.progress = 0;\n this.uploadedFileCount = 0;\n }\n set files(files) {\n this._files = [];\n for (let i = 0; i < files.length; i++) {\n let file = files[i];\n if (this.validate(file)) {\n if (this.isImage(file)) {\n file.objectURL = this.sanitizer.bypassSecurityTrustUrl((window.URL.createObjectURL(files[i])));\n }\n this._files.push(files[i]);\n }\n }\n }\n get files() {\n return this._files;\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'file':\n this.fileTemplate = item.template;\n break;\n case 'content':\n this.contentTemplate = item.template;\n break;\n case 'toolbar':\n this.toolbarTemplate = item.template;\n break;\n default:\n this.fileTemplate = item.template;\n break;\n }\n });\n }\n ngOnInit() {\n this.translationSubscription = this.config.translationObserver.subscribe(() => {\n this.cd.markForCheck();\n });\n }\n ngAfterViewInit() {\n if (this.mode === 'advanced') {\n this.zone.runOutsideAngular(() => {\n if (this.content)\n this.content.nativeElement.addEventListener('dragover', this.onDragOver.bind(this));\n });\n }\n }\n choose() {\n this.advancedFileInput.nativeElement.click();\n }\n onFileSelect(event) {\n if (event.type !== 'drop' && this.isIE11() && this.duplicateIEEvent) {\n this.duplicateIEEvent = false;\n return;\n }\n this.msgs = [];\n if (!this.multiple) {\n this.files = [];\n }\n let files = event.dataTransfer ? event.dataTransfer.files : event.target.files;\n for (let i = 0; i < files.length; i++) {\n let file = files[i];\n if (!this.isFileSelected(file)) {\n if (this.validate(file)) {\n if (this.isImage(file)) {\n file.objectURL = this.sanitizer.bypassSecurityTrustUrl((window.URL.createObjectURL(files[i])));\n }\n this.files.push(files[i]);\n }\n }\n }\n this.onSelect.emit({ originalEvent: event, files: files, currentFiles: this.files });\n if (this.fileLimit && this.mode == \"advanced\") {\n this.checkFileLimit();\n }\n if (this.hasFiles() && this.auto && (!(this.mode === \"advanced\") || !this.isFileLimitExceeded())) {\n this.upload();\n }\n if (event.type !== 'drop' && this.isIE11()) {\n this.clearIEInput();\n }\n else {\n this.clearInputElement();\n }\n }\n isFileSelected(file) {\n for (let sFile of this.files) {\n if ((sFile.name + sFile.type + sFile.size) === (file.name + file.type + file.size)) {\n return true;\n }\n }\n return false;\n }\n isIE11() {\n return !!window['MSInputMethodContext'] && !!document['documentMode'];\n }\n validate(file) {\n if (this.accept && !this.isFileTypeValid(file)) {\n this.msgs.push({\n severity: 'error',\n summary: this.invalidFileTypeMessageSummary.replace('{0}', file.name),\n detail: this.invalidFileTypeMessageDetail.replace('{0}', this.accept)\n });\n return false;\n }\n if (this.maxFileSize && file.size > this.maxFileSize) {\n this.msgs.push({\n severity: 'error',\n summary: this.invalidFileSizeMessageSummary.replace('{0}', file.name),\n detail: this.invalidFileSizeMessageDetail.replace('{0}', this.formatSize(this.maxFileSize))\n });\n return false;\n }\n return true;\n }\n isFileTypeValid(file) {\n let acceptableTypes = this.accept.split(',').map(type => type.trim());\n for (let type of acceptableTypes) {\n let acceptable = this.isWildcard(type) ? this.getTypeClass(file.type) === this.getTypeClass(type)\n : file.type == type || this.getFileExtension(file).toLowerCase() === type.toLowerCase();\n if (acceptable) {\n return true;\n }\n }\n return false;\n }\n getTypeClass(fileType) {\n return fileType.substring(0, fileType.indexOf('/'));\n }\n isWildcard(fileType) {\n return fileType.indexOf('*') !== -1;\n }\n getFileExtension(file) {\n return '.' + file.name.split('.').pop();\n }\n isImage(file) {\n return /^image\\//.test(file.type);\n }\n onImageLoad(img) {\n window.URL.revokeObjectURL(img.src);\n }\n upload() {\n if (this.customUpload) {\n if (this.fileLimit) {\n this.uploadedFileCount += this.files.length;\n }\n this.uploadHandler.emit({\n files: this.files\n });\n this.cd.markForCheck();\n }\n else {\n this.uploading = true;\n this.msgs = [];\n let formData = new FormData();\n this.onBeforeUpload.emit({\n 'formData': formData\n });\n for (let i = 0; i < this.files.length; i++) {\n formData.append(this.name, this.files[i], this.files[i].name);\n }\n this.http[this.method](this.url, formData, {\n headers: this.headers, reportProgress: true, observe: 'events', withCredentials: this.withCredentials\n }).subscribe((event) => {\n switch (event.type) {\n case HttpEventType.Sent:\n this.onSend.emit({\n originalEvent: event,\n 'formData': formData\n });\n break;\n case HttpEventType.Response:\n this.uploading = false;\n this.progress = 0;\n if (event['status'] >= 200 && event['status'] < 300) {\n if (this.fileLimit) {\n this.uploadedFileCount += this.files.length;\n }\n this.onUpload.emit({ originalEvent: event, files: this.files });\n }\n else {\n this.onError.emit({ files: this.files });\n }\n this.clear();\n break;\n case HttpEventType.UploadProgress: {\n if (event['loaded']) {\n this.progress = Math.round((event['loaded'] * 100) / event['total']);\n }\n this.onProgress.emit({ originalEvent: event, progress: this.progress });\n break;\n }\n }\n this.cd.markForCheck();\n }, error => {\n this.uploading = false;\n this.onError.emit({ files: this.files, error: error });\n });\n }\n }\n clear() {\n this.files = [];\n this.onClear.emit();\n this.clearInputElement();\n this.cd.markForCheck();\n }\n remove(event, index) {\n this.clearInputElement();\n this.onRemove.emit({ originalEvent: event, file: this.files[index] });\n this.files.splice(index, 1);\n }\n isFileLimitExceeded() {\n if (this.fileLimit && this.fileLimit <= this.files.length + this.uploadedFileCount && this.focus) {\n this.focus = false;\n }\n return this.fileLimit && this.fileLimit < this.files.length + this.uploadedFileCount;\n }\n isChooseDisabled() {\n return this.fileLimit && this.fileLimit <= this.files.length + this.uploadedFileCount;\n }\n checkFileLimit() {\n if (this.isFileLimitExceeded()) {\n this.msgs.push({\n severity: 'error',\n summary: this.invalidFileLimitMessageSummary.replace('{0}', this.fileLimit.toString()),\n detail: this.invalidFileLimitMessageDetail.replace('{0}', this.fileLimit.toString())\n });\n }\n }\n clearInputElement() {\n if (this.advancedFileInput && this.advancedFileInput.nativeElement) {\n this.advancedFileInput.nativeElement.value = '';\n }\n if (this.basicFileInput && this.basicFileInput.nativeElement) {\n this.basicFileInput.nativeElement.value = '';\n }\n }\n clearIEInput() {\n if (this.advancedFileInput && this.advancedFileInput.nativeElement) {\n this.duplicateIEEvent = true; //IE11 fix to prevent onFileChange trigger again\n this.advancedFileInput.nativeElement.value = '';\n }\n }\n hasFiles() {\n return this.files && this.files.length > 0;\n }\n onDragEnter(e) {\n if (!this.disabled) {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n onDragOver(e) {\n if (!this.disabled) {\n DomHandler.addClass(this.content.nativeElement, 'p-fileupload-highlight');\n this.dragHighlight = true;\n e.stopPropagation();\n e.preventDefault();\n }\n }\n onDragLeave(event) {\n if (!this.disabled) {\n DomHandler.removeClass(this.content.nativeElement, 'p-fileupload-highlight');\n }\n }\n onDrop(event) {\n if (!this.disabled) {\n DomHandler.removeClass(this.content.nativeElement, 'p-fileupload-highlight');\n event.stopPropagation();\n event.preventDefault();\n let files = event.dataTransfer ? event.dataTransfer.files : event.target.files;\n let allowDrop = this.multiple || (files && files.length === 1);\n if (allowDrop) {\n this.onFileSelect(event);\n }\n }\n }\n onFocus() {\n this.focus = true;\n }\n onBlur() {\n this.focus = false;\n }\n formatSize(bytes) {\n if (bytes == 0) {\n return '0 B';\n }\n let k = 1000, dm = 3, sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'], i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\n }\n onBasicUploaderClick() {\n if (this.hasFiles())\n this.upload();\n else\n this.basicFileInput.nativeElement.click();\n }\n onBasicKeydown(event) {\n switch (event.code) {\n case 'Space':\n case 'Enter':\n this.onBasicUploaderClick();\n event.preventDefault();\n break;\n }\n }\n getBlockableElement() {\n return this.el.nativeElement.children[0];\n }\n get chooseButtonLabel() {\n return this.chooseLabel || this.config.getTranslation(TranslationKeys.CHOOSE);\n }\n get uploadButtonLabel() {\n return this.uploadLabel || this.config.getTranslation(TranslationKeys.UPLOAD);\n }\n get cancelButtonLabel() {\n return this.cancelLabel || this.config.getTranslation(TranslationKeys.CANCEL);\n }\n ngOnDestroy() {\n if (this.content && this.content.nativeElement) {\n this.content.nativeElement.removeEventListener('dragover', this.onDragOver);\n }\n if (this.translationSubscription) {\n this.translationSubscription.unsubscribe();\n }\n }\n}\nFileUpload.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: FileUpload, deps: [{ token: i0.ElementRef }, { token: i1.DomSanitizer }, { token: i0.NgZone }, { token: i2.HttpClient }, { token: i0.ChangeDetectorRef }, { token: i3.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });\nFileUpload.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.7\", type: FileUpload, selector: \"p-fileUpload\", inputs: { name: \"name\", url: \"url\", method: \"method\", multiple: \"multiple\", accept: \"accept\", disabled: \"disabled\", auto: \"auto\", withCredentials: \"withCredentials\", maxFileSize: \"maxFileSize\", invalidFileSizeMessageSummary: \"invalidFileSizeMessageSummary\", invalidFileSizeMessageDetail: \"invalidFileSizeMessageDetail\", invalidFileTypeMessageSummary: \"invalidFileTypeMessageSummary\", invalidFileTypeMessageDetail: \"invalidFileTypeMessageDetail\", invalidFileLimitMessageDetail: \"invalidFileLimitMessageDetail\", invalidFileLimitMessageSummary: \"invalidFileLimitMessageSummary\", style: \"style\", styleClass: \"styleClass\", previewWidth: \"previewWidth\", chooseLabel: \"chooseLabel\", uploadLabel: \"uploadLabel\", cancelLabel: \"cancelLabel\", chooseIcon: \"chooseIcon\", uploadIcon: \"uploadIcon\", cancelIcon: \"cancelIcon\", showUploadButton: \"showUploadButton\", showCancelButton: \"showCancelButton\", mode: \"mode\", headers: \"headers\", customUpload: \"customUpload\", fileLimit: \"fileLimit\", files: \"files\" }, outputs: { onBeforeUpload: \"onBeforeUpload\", onSend: \"onSend\", onUpload: \"onUpload\", onError: \"onError\", onClear: \"onClear\", onRemove: \"onRemove\", onSelect: \"onSelect\", onProgress: \"onProgress\", uploadHandler: \"uploadHandler\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"advancedFileInput\", first: true, predicate: [\"advancedfileinput\"], descendants: true }, { propertyName: \"basicFileInput\", first: true, predicate: [\"basicfileinput\"], descendants: true }, { propertyName: \"content\", first: true, predicate: [\"content\"], descendants: true }], ngImport: i0, template: `\n
    \n
    \n \n \n \n {{chooseButtonLabel}}\n \n\n \n \n\n \n
    \n
    \n \n\n \n\n
    \n
    \n
    \n
    \n
    {{file.name}}
    \n
    {{formatSize(file.size)}}
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n \n \n \n {{auto ? chooseLabel : hasFiles() ? files[0].name : chooseLabel}}\n \n \n
    \n `, isInline: true, styles: [\".p-fileupload-content{position:relative}.p-fileupload-row{display:flex;align-items:center}.p-fileupload-row>div{flex:1 1 auto;width:25%}.p-fileupload-row>div:last-child{text-align:right}.p-fileupload-content .p-progressbar{width:100%;position:absolute;top:0;left:0}.p-button.p-fileupload-choose{position:relative;overflow:hidden}.p-button.p-fileupload-choose input[type=file],.p-fileupload-choose.p-fileupload-choose-selected input[type=file]{display:none}.p-fluid .p-fileupload .p-button{width:auto}.p-fileupload-filename{word-break:break-all}\\n\"], components: [{ type: i4.Button, selector: \"p-button\", inputs: [\"type\", \"iconPos\", \"icon\", \"badge\", \"label\", \"disabled\", \"loading\", \"loadingIcon\", \"style\", \"styleClass\", \"badgeClass\", \"ariaLabel\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\"] }, { type: i5.ProgressBar, selector: \"p-progressBar\", inputs: [\"value\", \"showValue\", \"style\", \"styleClass\", \"unit\", \"mode\"] }, { type: i6.Messages, selector: \"p-messages\", inputs: [\"value\", \"closable\", \"style\", \"styleClass\", \"enableService\", \"key\", \"escape\", \"severity\", \"showTransitionOptions\", \"hideTransitionOptions\"], outputs: [\"valueChange\"] }], directives: [{ type: i7.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i7.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i7.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i8.Ripple, selector: \"[pRipple]\" }, { type: i7.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i7.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i4.ButtonDirective, selector: \"[pButton]\", inputs: [\"iconPos\", \"loadingIcon\", \"label\", \"icon\", \"loading\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: FileUpload, decorators: [{\n type: Component,\n args: [{ selector: 'p-fileUpload', template: `\n
    \n
    \n \n \n \n {{chooseButtonLabel}}\n \n\n \n \n\n \n
    \n
    \n \n\n \n\n
    \n
    \n
    \n
    \n
    {{file.name}}
    \n
    {{formatSize(file.size)}}
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n \n \n \n {{auto ? chooseLabel : hasFiles() ? files[0].name : chooseLabel}}\n \n \n
    \n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n 'class': 'p-element'\n }, styles: [\".p-fileupload-content{position:relative}.p-fileupload-row{display:flex;align-items:center}.p-fileupload-row>div{flex:1 1 auto;width:25%}.p-fileupload-row>div:last-child{text-align:right}.p-fileupload-content .p-progressbar{width:100%;position:absolute;top:0;left:0}.p-button.p-fileupload-choose{position:relative;overflow:hidden}.p-button.p-fileupload-choose input[type=file],.p-fileupload-choose.p-fileupload-choose-selected input[type=file]{display:none}.p-fluid .p-fileupload .p-button{width:auto}.p-fileupload-filename{word-break:break-all}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.DomSanitizer }, { type: i0.NgZone }, { type: i2.HttpClient }, { type: i0.ChangeDetectorRef }, { type: i3.PrimeNGConfig }]; }, propDecorators: { name: [{\n type: Input\n }], url: [{\n type: Input\n }], method: [{\n type: Input\n }], multiple: [{\n type: Input\n }], accept: [{\n type: Input\n }], disabled: [{\n type: Input\n }], auto: [{\n type: Input\n }], withCredentials: [{\n type: Input\n }], maxFileSize: [{\n type: Input\n }], invalidFileSizeMessageSummary: [{\n type: Input\n }], invalidFileSizeMessageDetail: [{\n type: Input\n }], invalidFileTypeMessageSummary: [{\n type: Input\n }], invalidFileTypeMessageDetail: [{\n type: Input\n }], invalidFileLimitMessageDetail: [{\n type: Input\n }], invalidFileLimitMessageSummary: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], previewWidth: [{\n type: Input\n }], chooseLabel: [{\n type: Input\n }], uploadLabel: [{\n type: Input\n }], cancelLabel: [{\n type: Input\n }], chooseIcon: [{\n type: Input\n }], uploadIcon: [{\n type: Input\n }], cancelIcon: [{\n type: Input\n }], showUploadButton: [{\n type: Input\n }], showCancelButton: [{\n type: Input\n }], mode: [{\n type: Input\n }], headers: [{\n type: Input\n }], customUpload: [{\n type: Input\n }], fileLimit: [{\n type: Input\n }], onBeforeUpload: [{\n type: Output\n }], onSend: [{\n type: Output\n }], onUpload: [{\n type: Output\n }], onError: [{\n type: Output\n }], onClear: [{\n type: Output\n }], onRemove: [{\n type: Output\n }], onSelect: [{\n type: Output\n }], onProgress: [{\n type: Output\n }], uploadHandler: [{\n type: Output\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }], advancedFileInput: [{\n type: ViewChild,\n args: ['advancedfileinput']\n }], basicFileInput: [{\n type: ViewChild,\n args: ['basicfileinput']\n }], content: [{\n type: ViewChild,\n args: ['content']\n }], files: [{\n type: Input\n }] } });\nclass FileUploadModule {\n}\nFileUploadModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: FileUploadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nFileUploadModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: FileUploadModule, declarations: [FileUpload], imports: [CommonModule, SharedModule, ButtonModule, ProgressBarModule, MessagesModule, RippleModule], exports: [FileUpload, SharedModule, ButtonModule, ProgressBarModule, MessagesModule] });\nFileUploadModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: FileUploadModule, imports: [[CommonModule, SharedModule, ButtonModule, ProgressBarModule, MessagesModule, RippleModule], SharedModule, ButtonModule, ProgressBarModule, MessagesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: FileUploadModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, SharedModule, ButtonModule, ProgressBarModule, MessagesModule, RippleModule],\n exports: [FileUpload, SharedModule, ButtonModule, ProgressBarModule, MessagesModule],\n declarations: [FileUpload]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { FileUpload, FileUploadModule };\n","import * as i0 from '@angular/core';\nimport { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ViewChild, Output, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i2 from 'primeng/inputtext';\nimport { InputTextModule } from 'primeng/inputtext';\nimport * as i3 from 'primeng/button';\nimport { ButtonModule } from 'primeng/button';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nconst INPUTNUMBER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputNumber),\n multi: true\n};\nclass InputNumber {\n constructor(el, cd) {\n this.el = el;\n this.cd = cd;\n this.showButtons = false;\n this.format = true;\n this.buttonLayout = \"stacked\";\n this.incrementButtonIcon = 'pi pi-angle-up';\n this.decrementButtonIcon = 'pi pi-angle-down';\n this.readonly = false;\n this.step = 1;\n this.allowEmpty = true;\n this.mode = \"decimal\";\n this.useGrouping = true;\n this.showClear = false;\n this.onInput = new EventEmitter();\n this.onFocus = new EventEmitter();\n this.onBlur = new EventEmitter();\n this.onKeyDown = new EventEmitter();\n this.onClear = new EventEmitter();\n this.onModelChange = () => { };\n this.onModelTouched = () => { };\n this.groupChar = '';\n this.prefixChar = '';\n this.suffixChar = '';\n }\n get disabled() {\n return this._disabled;\n }\n set disabled(disabled) {\n if (disabled)\n this.focused = false;\n this._disabled = disabled;\n if (this.timer)\n this.clearTimer();\n }\n ngOnChanges(simpleChange) {\n const props = ['locale', 'localeMatcher', 'mode', 'currency', 'currencyDisplay', 'useGrouping', 'minFractionDigits', 'maxFractionDigits', 'prefix', 'suffix'];\n if (props.some(p => !!simpleChange[p])) {\n this.updateConstructParser();\n }\n }\n ngOnInit() {\n this.constructParser();\n this.initialized = true;\n }\n getOptions() {\n return {\n localeMatcher: this.localeMatcher,\n style: this.mode,\n currency: this.currency,\n currencyDisplay: this.currencyDisplay,\n useGrouping: this.useGrouping,\n minimumFractionDigits: this.minFractionDigits,\n maximumFractionDigits: this.maxFractionDigits\n };\n }\n constructParser() {\n this.numberFormat = new Intl.NumberFormat(this.locale, this.getOptions());\n const numerals = [...new Intl.NumberFormat(this.locale, { useGrouping: false }).format(9876543210)].reverse();\n const index = new Map(numerals.map((d, i) => [d, i]));\n this._numeral = new RegExp(`[${numerals.join('')}]`, 'g');\n this._group = this.getGroupingExpression();\n this._minusSign = this.getMinusSignExpression();\n this._currency = this.getCurrencyExpression();\n this._decimal = this.getDecimalExpression();\n this._suffix = this.getSuffixExpression();\n this._prefix = this.getPrefixExpression();\n this._index = d => index.get(d);\n }\n updateConstructParser() {\n if (this.initialized) {\n this.constructParser();\n }\n }\n escapeRegExp(text) {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n }\n getDecimalExpression() {\n const formatter = new Intl.NumberFormat(this.locale, Object.assign(Object.assign({}, this.getOptions()), { useGrouping: false }));\n return new RegExp(`[${formatter.format(1.1).replace(this._currency, '').trim().replace(this._numeral, '')}]`, 'g');\n }\n getGroupingExpression() {\n const formatter = new Intl.NumberFormat(this.locale, { useGrouping: true });\n this.groupChar = formatter.format(1000000).trim().replace(this._numeral, '').charAt(0);\n return new RegExp(`[${this.groupChar}]`, 'g');\n }\n getMinusSignExpression() {\n const formatter = new Intl.NumberFormat(this.locale, { useGrouping: false });\n return new RegExp(`[${formatter.format(-1).trim().replace(this._numeral, '')}]`, 'g');\n }\n getCurrencyExpression() {\n if (this.currency) {\n const formatter = new Intl.NumberFormat(this.locale, { style: 'currency', currency: this.currency, currencyDisplay: this.currencyDisplay,\n minimumFractionDigits: 0, maximumFractionDigits: 0 });\n return new RegExp(`[${formatter.format(1).replace(/\\s/g, '').replace(this._numeral, '').replace(this._group, '')}]`, 'g');\n }\n return new RegExp(`[]`, 'g');\n }\n getPrefixExpression() {\n if (this.prefix) {\n this.prefixChar = this.prefix;\n }\n else {\n const formatter = new Intl.NumberFormat(this.locale, { style: this.mode, currency: this.currency, currencyDisplay: this.currencyDisplay });\n this.prefixChar = formatter.format(1).split('1')[0];\n }\n return new RegExp(`${this.escapeRegExp(this.prefixChar || '')}`, 'g');\n }\n getSuffixExpression() {\n if (this.suffix) {\n this.suffixChar = this.suffix;\n }\n else {\n const formatter = new Intl.NumberFormat(this.locale, { style: this.mode, currency: this.currency, currencyDisplay: this.currencyDisplay,\n minimumFractionDigits: 0, maximumFractionDigits: 0 });\n this.suffixChar = formatter.format(1).split('1')[1];\n }\n return new RegExp(`${this.escapeRegExp(this.suffixChar || '')}`, 'g');\n }\n formatValue(value) {\n if (value != null) {\n if (value === '-') { // Minus sign\n return value;\n }\n if (this.format) {\n let formatter = new Intl.NumberFormat(this.locale, this.getOptions());\n let formattedValue = formatter.format(value);\n if (this.prefix) {\n formattedValue = this.prefix + formattedValue;\n }\n if (this.suffix) {\n formattedValue = formattedValue + this.suffix;\n }\n return formattedValue;\n }\n return value.toString();\n }\n return '';\n }\n parseValue(text) {\n let filteredText = text\n .replace(this._suffix, '')\n .replace(this._prefix, '')\n .trim()\n .replace(/\\s/g, '')\n .replace(this._currency, '')\n .replace(this._group, '')\n .replace(this._minusSign, '-')\n .replace(this._decimal, '.')\n .replace(this._numeral, this._index);\n if (filteredText) {\n if (filteredText === '-') // Minus sign\n return filteredText;\n let parsedValue = +filteredText;\n return isNaN(parsedValue) ? null : parsedValue;\n }\n return null;\n }\n repeat(event, interval, dir) {\n if (this.readonly) {\n return;\n }\n let i = interval || 500;\n this.clearTimer();\n this.timer = setTimeout(() => {\n this.repeat(event, 40, dir);\n }, i);\n this.spin(event, dir);\n }\n spin(event, dir) {\n let step = this.step * dir;\n let currentValue = this.parseValue(this.input.nativeElement.value) || 0;\n let newValue = this.validateValue(currentValue + step);\n if (this.maxlength && this.maxlength < this.formatValue(newValue).length) {\n return;\n }\n this.updateInput(newValue, null, 'spin', null);\n this.updateModel(event, newValue);\n this.handleOnInput(event, currentValue, newValue);\n }\n clear() {\n this.value = null;\n this.onModelChange(this.value);\n this.onClear.emit();\n }\n onUpButtonMouseDown(event) {\n this.input.nativeElement.focus();\n this.repeat(event, null, 1);\n event.preventDefault();\n }\n onUpButtonMouseUp() {\n this.clearTimer();\n }\n onUpButtonMouseLeave() {\n this.clearTimer();\n }\n onUpButtonKeyDown(event) {\n if (event.keyCode === 32 || event.keyCode === 13) {\n this.repeat(event, null, 1);\n }\n }\n onUpButtonKeyUp() {\n this.clearTimer();\n }\n onDownButtonMouseDown(event) {\n this.input.nativeElement.focus();\n this.repeat(event, null, -1);\n event.preventDefault();\n }\n onDownButtonMouseUp() {\n this.clearTimer();\n }\n onDownButtonMouseLeave() {\n this.clearTimer();\n }\n onDownButtonKeyUp() {\n this.clearTimer();\n }\n onDownButtonKeyDown(event) {\n if (event.keyCode === 32 || event.keyCode === 13) {\n this.repeat(event, null, -1);\n }\n }\n onUserInput(event) {\n if (this.readonly) {\n return;\n }\n if (this.isSpecialChar) {\n event.target.value = this.lastValue;\n }\n this.isSpecialChar = false;\n }\n onInputKeyDown(event) {\n if (this.readonly) {\n return;\n }\n this.lastValue = event.target.value;\n if (event.shiftKey || event.altKey) {\n this.isSpecialChar = true;\n return;\n }\n let selectionStart = event.target.selectionStart;\n let selectionEnd = event.target.selectionEnd;\n let inputValue = event.target.value;\n let newValueStr = null;\n if (event.altKey) {\n event.preventDefault();\n }\n switch (event.which) {\n //up\n case 38:\n this.spin(event, 1);\n event.preventDefault();\n break;\n //down\n case 40:\n this.spin(event, -1);\n event.preventDefault();\n break;\n //left\n case 37:\n if (!this.isNumeralChar(inputValue.charAt(selectionStart - 1))) {\n event.preventDefault();\n }\n break;\n //right\n case 39:\n if (!this.isNumeralChar(inputValue.charAt(selectionStart))) {\n event.preventDefault();\n }\n break;\n //enter\n case 13:\n newValueStr = this.validateValue(this.parseValue(this.input.nativeElement.value));\n this.input.nativeElement.value = this.formatValue(newValueStr);\n this.input.nativeElement.setAttribute('aria-valuenow', newValueStr);\n this.updateModel(event, newValueStr);\n break;\n //backspace\n case 8: {\n event.preventDefault();\n if (selectionStart === selectionEnd) {\n const deleteChar = inputValue.charAt(selectionStart - 1);\n const { decimalCharIndex, decimalCharIndexWithoutPrefix } = this.getDecimalCharIndexes(inputValue);\n if (this.isNumeralChar(deleteChar)) {\n const decimalLength = this.getDecimalLength(inputValue);\n if (this._group.test(deleteChar)) {\n this._group.lastIndex = 0;\n newValueStr = inputValue.slice(0, selectionStart - 2) + inputValue.slice(selectionStart - 1);\n }\n else if (this._decimal.test(deleteChar)) {\n this._decimal.lastIndex = 0;\n if (decimalLength) {\n this.input.nativeElement.setSelectionRange(selectionStart - 1, selectionStart - 1);\n }\n else {\n newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);\n }\n }\n else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n const insertedText = this.isDecimalMode() && (this.minFractionDigits || 0) < decimalLength ? '' : '0';\n newValueStr = inputValue.slice(0, selectionStart - 1) + insertedText + inputValue.slice(selectionStart);\n }\n else if (decimalCharIndexWithoutPrefix === 1) {\n newValueStr = inputValue.slice(0, selectionStart - 1) + '0' + inputValue.slice(selectionStart);\n newValueStr = this.parseValue(newValueStr) > 0 ? newValueStr : '';\n }\n else {\n newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);\n }\n }\n this.updateValue(event, newValueStr, null, 'delete-single');\n }\n else {\n newValueStr = this.deleteRange(inputValue, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, null, 'delete-range');\n }\n break;\n }\n // del\n case 46:\n event.preventDefault();\n if (selectionStart === selectionEnd) {\n const deleteChar = inputValue.charAt(selectionStart);\n const { decimalCharIndex, decimalCharIndexWithoutPrefix } = this.getDecimalCharIndexes(inputValue);\n if (this.isNumeralChar(deleteChar)) {\n const decimalLength = this.getDecimalLength(inputValue);\n if (this._group.test(deleteChar)) {\n this._group.lastIndex = 0;\n newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 2);\n }\n else if (this._decimal.test(deleteChar)) {\n this._decimal.lastIndex = 0;\n if (decimalLength) {\n this.input.nativeElement.setSelectionRange(selectionStart + 1, selectionStart + 1);\n }\n else {\n newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);\n }\n }\n else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n const insertedText = this.isDecimalMode() && (this.minFractionDigits || 0) < decimalLength ? '' : '0';\n newValueStr = inputValue.slice(0, selectionStart) + insertedText + inputValue.slice(selectionStart + 1);\n }\n else if (decimalCharIndexWithoutPrefix === 1) {\n newValueStr = inputValue.slice(0, selectionStart) + '0' + inputValue.slice(selectionStart + 1);\n newValueStr = this.parseValue(newValueStr) > 0 ? newValueStr : '';\n }\n else {\n newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);\n }\n }\n this.updateValue(event, newValueStr, null, 'delete-back-single');\n }\n else {\n newValueStr = this.deleteRange(inputValue, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, null, 'delete-range');\n }\n break;\n default:\n break;\n }\n this.onKeyDown.emit(event);\n }\n onInputKeyPress(event) {\n if (this.readonly) {\n return;\n }\n event.preventDefault();\n let code = event.which || event.keyCode;\n let char = String.fromCharCode(code);\n const isDecimalSign = this.isDecimalSign(char);\n const isMinusSign = this.isMinusSign(char);\n if ((48 <= code && code <= 57) || isMinusSign || isDecimalSign) {\n this.insert(event, char, { isDecimalSign, isMinusSign });\n }\n }\n onPaste(event) {\n if (!this.disabled && !this.readonly) {\n event.preventDefault();\n let data = (event.clipboardData || window['clipboardData']).getData('Text');\n if (data) {\n let filteredData = this.parseValue(data);\n if (filteredData != null) {\n this.insert(event, filteredData.toString());\n }\n }\n }\n }\n allowMinusSign() {\n return this.min == null || this.min < 0;\n }\n isMinusSign(char) {\n if (this._minusSign.test(char) || char === '-') {\n this._minusSign.lastIndex = 0;\n return true;\n }\n return false;\n }\n isDecimalSign(char) {\n if (this._decimal.test(char)) {\n this._decimal.lastIndex = 0;\n return true;\n }\n return false;\n }\n isDecimalMode() {\n return this.mode === 'decimal';\n }\n getDecimalCharIndexes(val) {\n let decimalCharIndex = val.search(this._decimal);\n this._decimal.lastIndex = 0;\n const filteredVal = val.replace(this._prefix, '').trim().replace(/\\s/g, '').replace(this._currency, '');\n const decimalCharIndexWithoutPrefix = filteredVal.search(this._decimal);\n this._decimal.lastIndex = 0;\n return { decimalCharIndex, decimalCharIndexWithoutPrefix };\n }\n getCharIndexes(val) {\n const decimalCharIndex = val.search(this._decimal);\n this._decimal.lastIndex = 0;\n const minusCharIndex = val.search(this._minusSign);\n this._minusSign.lastIndex = 0;\n const suffixCharIndex = val.search(this._suffix);\n this._suffix.lastIndex = 0;\n const currencyCharIndex = val.search(this._currency);\n this._currency.lastIndex = 0;\n return { decimalCharIndex, minusCharIndex, suffixCharIndex, currencyCharIndex };\n }\n insert(event, text, sign = { isDecimalSign: false, isMinusSign: false }) {\n const minusCharIndexOnText = text.search(this._minusSign);\n this._minusSign.lastIndex = 0;\n if (!this.allowMinusSign() && minusCharIndexOnText !== -1) {\n return;\n }\n let selectionStart = this.input.nativeElement.selectionStart;\n let selectionEnd = this.input.nativeElement.selectionEnd;\n let inputValue = this.input.nativeElement.value.trim();\n const { decimalCharIndex, minusCharIndex, suffixCharIndex, currencyCharIndex } = this.getCharIndexes(inputValue);\n let newValueStr;\n if (sign.isMinusSign) {\n if (selectionStart === 0) {\n newValueStr = inputValue;\n if (minusCharIndex === -1 || selectionEnd !== 0) {\n newValueStr = this.insertText(inputValue, text, 0, selectionEnd);\n }\n this.updateValue(event, newValueStr, text, 'insert');\n }\n }\n else if (sign.isDecimalSign) {\n if (decimalCharIndex > 0 && selectionStart === decimalCharIndex) {\n this.updateValue(event, inputValue, text, 'insert');\n }\n else if (decimalCharIndex > selectionStart && decimalCharIndex < selectionEnd) {\n newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, text, 'insert');\n }\n else if (decimalCharIndex === -1 && this.maxFractionDigits) {\n newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, text, 'insert');\n }\n }\n else {\n const maxFractionDigits = this.numberFormat.resolvedOptions().maximumFractionDigits;\n const operation = selectionStart !== selectionEnd ? 'range-insert' : 'insert';\n if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n if ((selectionStart + text.length - (decimalCharIndex + 1)) <= maxFractionDigits) {\n const charIndex = currencyCharIndex >= selectionStart ? currencyCharIndex - 1 : (suffixCharIndex >= selectionStart ? suffixCharIndex : inputValue.length);\n newValueStr = inputValue.slice(0, selectionStart) + text + inputValue.slice(selectionStart + text.length, charIndex) + inputValue.slice(charIndex);\n this.updateValue(event, newValueStr, text, operation);\n }\n }\n else {\n newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, text, operation);\n }\n }\n }\n insertText(value, text, start, end) {\n let textSplit = text === '.' ? text : text.split('.');\n if (textSplit.length === 2) {\n const decimalCharIndex = value.slice(start, end).search(this._decimal);\n this._decimal.lastIndex = 0;\n return (decimalCharIndex > 0) ? value.slice(0, start) + this.formatValue(text) + value.slice(end) : (value || this.formatValue(text));\n }\n else if ((end - start) === value.length) {\n return this.formatValue(text);\n }\n else if (start === 0) {\n return text + value.slice(end);\n }\n else if (end === value.length) {\n return value.slice(0, start) + text;\n }\n else {\n return value.slice(0, start) + text + value.slice(end);\n }\n }\n deleteRange(value, start, end) {\n let newValueStr;\n if ((end - start) === value.length)\n newValueStr = '';\n else if (start === 0)\n newValueStr = value.slice(end);\n else if (end === value.length)\n newValueStr = value.slice(0, start);\n else\n newValueStr = value.slice(0, start) + value.slice(end);\n return newValueStr;\n }\n initCursor() {\n let selectionStart = this.input.nativeElement.selectionStart;\n let inputValue = this.input.nativeElement.value;\n let valueLength = inputValue.length;\n let index = null;\n // remove prefix\n let prefixLength = (this.prefixChar || '').length;\n inputValue = inputValue.replace(this._prefix, '');\n selectionStart = selectionStart - prefixLength;\n let char = inputValue.charAt(selectionStart);\n if (this.isNumeralChar(char)) {\n return selectionStart + prefixLength;\n }\n //left\n let i = selectionStart - 1;\n while (i >= 0) {\n char = inputValue.charAt(i);\n if (this.isNumeralChar(char)) {\n index = i + prefixLength;\n break;\n }\n else {\n i--;\n }\n }\n if (index !== null) {\n this.input.nativeElement.setSelectionRange(index + 1, index + 1);\n }\n else {\n i = selectionStart;\n while (i < valueLength) {\n char = inputValue.charAt(i);\n if (this.isNumeralChar(char)) {\n index = i + prefixLength;\n break;\n }\n else {\n i++;\n }\n }\n if (index !== null) {\n this.input.nativeElement.setSelectionRange(index, index);\n }\n }\n return index || 0;\n }\n onInputClick() {\n if (!this.readonly) {\n this.initCursor();\n }\n }\n isNumeralChar(char) {\n if (char.length === 1 && (this._numeral.test(char) || this._decimal.test(char) || this._group.test(char) || this._minusSign.test(char))) {\n this.resetRegex();\n return true;\n }\n return false;\n }\n resetRegex() {\n this._numeral.lastIndex = 0;\n this._decimal.lastIndex = 0;\n this._group.lastIndex = 0;\n this._minusSign.lastIndex = 0;\n }\n updateValue(event, valueStr, insertedValueStr, operation) {\n let currentValue = this.input.nativeElement.value;\n let newValue = null;\n if (valueStr != null) {\n newValue = this.parseValue(valueStr);\n newValue = !newValue && !this.allowEmpty ? 0 : newValue;\n this.updateInput(newValue, insertedValueStr, operation, valueStr);\n this.handleOnInput(event, currentValue, newValue);\n }\n }\n handleOnInput(event, currentValue, newValue) {\n if (this.isValueChanged(currentValue, newValue)) {\n this.onInput.emit({ originalEvent: event, value: newValue });\n }\n }\n isValueChanged(currentValue, newValue) {\n if (newValue === null && currentValue !== null) {\n return true;\n }\n if (newValue != null) {\n let parsedCurrentValue = (typeof currentValue === 'string') ? this.parseValue(currentValue) : currentValue;\n return newValue !== parsedCurrentValue;\n }\n return false;\n }\n validateValue(value) {\n if (value === '-' || value == null) {\n return null;\n }\n if (this.min != null && value < this.min) {\n return this.min;\n }\n if (this.max != null && value > this.max) {\n return this.max;\n }\n return value;\n }\n updateInput(value, insertedValueStr, operation, valueStr) {\n insertedValueStr = insertedValueStr || '';\n let inputValue = this.input.nativeElement.value;\n let newValue = this.formatValue(value);\n let currentLength = inputValue.length;\n if (newValue !== valueStr) {\n newValue = this.concatValues(newValue, valueStr);\n }\n if (currentLength === 0) {\n this.input.nativeElement.value = newValue;\n this.input.nativeElement.setSelectionRange(0, 0);\n const index = this.initCursor();\n const selectionEnd = index + insertedValueStr.length;\n this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n }\n else {\n let selectionStart = this.input.nativeElement.selectionStart;\n let selectionEnd = this.input.nativeElement.selectionEnd;\n if (this.maxlength && this.maxlength < newValue.length) {\n return;\n }\n this.input.nativeElement.value = newValue;\n let newLength = newValue.length;\n if (operation === 'range-insert') {\n const startValue = this.parseValue((inputValue || '').slice(0, selectionStart));\n const startValueStr = startValue !== null ? startValue.toString() : '';\n const startExpr = startValueStr.split('').join(`(${this.groupChar})?`);\n const sRegex = new RegExp(startExpr, 'g');\n sRegex.test(newValue);\n const tExpr = insertedValueStr.split('').join(`(${this.groupChar})?`);\n const tRegex = new RegExp(tExpr, 'g');\n tRegex.test(newValue.slice(sRegex.lastIndex));\n selectionEnd = sRegex.lastIndex + tRegex.lastIndex;\n this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n }\n else if (newLength === currentLength) {\n if (operation === 'insert' || operation === 'delete-back-single')\n this.input.nativeElement.setSelectionRange(selectionEnd + 1, selectionEnd + 1);\n else if (operation === 'delete-single')\n this.input.nativeElement.setSelectionRange(selectionEnd - 1, selectionEnd - 1);\n else if (operation === 'delete-range' || operation === 'spin')\n this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n }\n else if (operation === 'delete-back-single') {\n let prevChar = inputValue.charAt(selectionEnd - 1);\n let nextChar = inputValue.charAt(selectionEnd);\n let diff = currentLength - newLength;\n let isGroupChar = this._group.test(nextChar);\n if (isGroupChar && diff === 1) {\n selectionEnd += 1;\n }\n else if (!isGroupChar && this.isNumeralChar(prevChar)) {\n selectionEnd += (-1 * diff) + 1;\n }\n this._group.lastIndex = 0;\n this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n }\n else if (inputValue === '-' && operation === 'insert') {\n this.input.nativeElement.setSelectionRange(0, 0);\n const index = this.initCursor();\n const selectionEnd = index + insertedValueStr.length + 1;\n this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n }\n else {\n selectionEnd = selectionEnd + (newLength - currentLength);\n this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n }\n }\n this.input.nativeElement.setAttribute('aria-valuenow', value);\n }\n concatValues(val1, val2) {\n if (val1 && val2) {\n let decimalCharIndex = val2.search(this._decimal);\n this._decimal.lastIndex = 0;\n return decimalCharIndex !== -1 ? (val1.split(this._decimal)[0] + val2.slice(decimalCharIndex)) : val1;\n }\n return val1;\n }\n getDecimalLength(value) {\n if (value) {\n const valueSplit = value.split(this._decimal);\n if (valueSplit.length === 2) {\n return valueSplit[1].replace(this._suffix, '')\n .trim()\n .replace(/\\s/g, '')\n .replace(this._currency, '').length;\n }\n }\n return 0;\n }\n onInputFocus(event) {\n this.focused = true;\n this.onFocus.emit(event);\n }\n onInputBlur(event) {\n this.focused = false;\n let newValue = this.validateValue(this.parseValue(this.input.nativeElement.value));\n this.input.nativeElement.value = this.formatValue(newValue);\n this.input.nativeElement.setAttribute('aria-valuenow', newValue);\n this.updateModel(event, newValue);\n this.onBlur.emit(event);\n }\n formattedValue() {\n const val = !this.value && !this.allowEmpty ? 0 : this.value;\n return this.formatValue(val);\n }\n updateModel(event, value) {\n if (this.value !== value) {\n this.value = value;\n this.onModelChange(value);\n }\n this.onModelTouched();\n }\n writeValue(value) {\n this.value = value;\n this.cd.markForCheck();\n }\n registerOnChange(fn) {\n this.onModelChange = fn;\n }\n registerOnTouched(fn) {\n this.onModelTouched = fn;\n }\n setDisabledState(val) {\n this.disabled = val;\n this.cd.markForCheck();\n }\n get filled() {\n return (this.value != null && this.value.toString().length > 0);\n }\n clearTimer() {\n if (this.timer) {\n clearInterval(this.timer);\n }\n }\n getFormatter() {\n return this.numberFormat;\n }\n}\nInputNumber.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: InputNumber, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nInputNumber.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.7\", type: InputNumber, selector: \"p-inputNumber\", inputs: { showButtons: \"showButtons\", format: \"format\", buttonLayout: \"buttonLayout\", inputId: \"inputId\", styleClass: \"styleClass\", style: \"style\", placeholder: \"placeholder\", size: \"size\", maxlength: \"maxlength\", tabindex: \"tabindex\", title: \"title\", ariaLabel: \"ariaLabel\", ariaRequired: \"ariaRequired\", name: \"name\", required: \"required\", autocomplete: \"autocomplete\", min: \"min\", max: \"max\", incrementButtonClass: \"incrementButtonClass\", decrementButtonClass: \"decrementButtonClass\", incrementButtonIcon: \"incrementButtonIcon\", decrementButtonIcon: \"decrementButtonIcon\", readonly: \"readonly\", step: \"step\", allowEmpty: \"allowEmpty\", locale: \"locale\", localeMatcher: \"localeMatcher\", mode: \"mode\", currency: \"currency\", currencyDisplay: \"currencyDisplay\", useGrouping: \"useGrouping\", minFractionDigits: \"minFractionDigits\", maxFractionDigits: \"maxFractionDigits\", prefix: \"prefix\", suffix: \"suffix\", inputStyle: \"inputStyle\", inputStyleClass: \"inputStyleClass\", showClear: \"showClear\", disabled: \"disabled\" }, outputs: { onInput: \"onInput\", onFocus: \"onFocus\", onBlur: \"onBlur\", onKeyDown: \"onKeyDown\", onClear: \"onClear\" }, host: { properties: { \"class.p-inputwrapper-filled\": \"filled\", \"class.p-inputwrapper-focus\": \"focused\", \"class.p-inputnumber-clearable\": \"showClear && buttonLayout != \\\"vertical\\\"\" }, classAttribute: \"p-element p-inputwrapper\" }, providers: [INPUTNUMBER_VALUE_ACCESSOR], viewQueries: [{ propertyName: \"input\", first: true, predicate: [\"input\"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n `, isInline: true, styles: [\"p-inputnumber,.p-inputnumber{display:inline-flex}.p-inputnumber-button{display:flex;align-items:center;justify-content:center;flex:0 0 auto}.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button .p-button-label,.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button .p-button-label{display:none}.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button-up{border-top-left-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0;padding:0}.p-inputnumber-buttons-stacked .p-inputnumber-input{border-top-right-radius:0;border-bottom-right-radius:0}.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button-down{border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:0;padding:0}.p-inputnumber-buttons-stacked .p-inputnumber-button-group{display:flex;flex-direction:column}.p-inputnumber-buttons-stacked .p-inputnumber-button-group .p-button.p-inputnumber-button{flex:1 1 auto}.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-up{order:3;border-top-left-radius:0;border-bottom-left-radius:0}.p-inputnumber-buttons-horizontal .p-inputnumber-input{order:2;border-radius:0}.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-down{order:1;border-top-right-radius:0;border-bottom-right-radius:0}.p-inputnumber-buttons-vertical{flex-direction:column}.p-inputnumber-buttons-vertical .p-button.p-inputnumber-button-up{order:1;border-bottom-left-radius:0;border-bottom-right-radius:0;width:100%}.p-inputnumber-buttons-vertical .p-inputnumber-input{order:2;border-radius:0;text-align:center}.p-inputnumber-buttons-vertical .p-button.p-inputnumber-button-down{order:3;border-top-left-radius:0;border-top-right-radius:0;width:100%}.p-inputnumber-input{flex:1 1 auto}.p-fluid p-inputnumber,.p-fluid .p-inputnumber{width:100%}.p-fluid .p-inputnumber .p-inputnumber-input{width:1%}.p-fluid .p-inputnumber-buttons-vertical .p-inputnumber-input{width:100%}.p-inputnumber-clear-icon{position:absolute;top:50%;margin-top:-.5rem;cursor:pointer}.p-inputnumber-clearable{position:relative}\\n\"], directives: [{ type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i2.InputText, selector: \"[pInputText]\" }, { type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.ButtonDirective, selector: \"[pButton]\", inputs: [\"iconPos\", \"loadingIcon\", \"label\", \"icon\", \"loading\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: InputNumber, decorators: [{\n type: Component,\n args: [{ selector: 'p-inputNumber', template: `\n \n \n \n \n \n \n \n \n \n \n `, changeDetection: ChangeDetectionStrategy.OnPush, providers: [INPUTNUMBER_VALUE_ACCESSOR], encapsulation: ViewEncapsulation.None, host: {\n 'class': 'p-element p-inputwrapper',\n '[class.p-inputwrapper-filled]': 'filled',\n '[class.p-inputwrapper-focus]': 'focused',\n '[class.p-inputnumber-clearable]': 'showClear && buttonLayout != \"vertical\"'\n }, styles: [\"p-inputnumber,.p-inputnumber{display:inline-flex}.p-inputnumber-button{display:flex;align-items:center;justify-content:center;flex:0 0 auto}.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button .p-button-label,.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button .p-button-label{display:none}.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button-up{border-top-left-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0;padding:0}.p-inputnumber-buttons-stacked .p-inputnumber-input{border-top-right-radius:0;border-bottom-right-radius:0}.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button-down{border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:0;padding:0}.p-inputnumber-buttons-stacked .p-inputnumber-button-group{display:flex;flex-direction:column}.p-inputnumber-buttons-stacked .p-inputnumber-button-group .p-button.p-inputnumber-button{flex:1 1 auto}.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-up{order:3;border-top-left-radius:0;border-bottom-left-radius:0}.p-inputnumber-buttons-horizontal .p-inputnumber-input{order:2;border-radius:0}.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-down{order:1;border-top-right-radius:0;border-bottom-right-radius:0}.p-inputnumber-buttons-vertical{flex-direction:column}.p-inputnumber-buttons-vertical .p-button.p-inputnumber-button-up{order:1;border-bottom-left-radius:0;border-bottom-right-radius:0;width:100%}.p-inputnumber-buttons-vertical .p-inputnumber-input{order:2;border-radius:0;text-align:center}.p-inputnumber-buttons-vertical .p-button.p-inputnumber-button-down{order:3;border-top-left-radius:0;border-top-right-radius:0;width:100%}.p-inputnumber-input{flex:1 1 auto}.p-fluid p-inputnumber,.p-fluid .p-inputnumber{width:100%}.p-fluid .p-inputnumber .p-inputnumber-input{width:1%}.p-fluid .p-inputnumber-buttons-vertical .p-inputnumber-input{width:100%}.p-inputnumber-clear-icon{position:absolute;top:50%;margin-top:-.5rem;cursor:pointer}.p-inputnumber-clearable{position:relative}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { showButtons: [{\n type: Input\n }], format: [{\n type: Input\n }], buttonLayout: [{\n type: Input\n }], inputId: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], style: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], size: [{\n type: Input\n }], maxlength: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], title: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], ariaRequired: [{\n type: Input\n }], name: [{\n type: Input\n }], required: [{\n type: Input\n }], autocomplete: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], incrementButtonClass: [{\n type: Input\n }], decrementButtonClass: [{\n type: Input\n }], incrementButtonIcon: [{\n type: Input\n }], decrementButtonIcon: [{\n type: Input\n }], readonly: [{\n type: Input\n }], step: [{\n type: Input\n }], allowEmpty: [{\n type: Input\n }], locale: [{\n type: Input\n }], localeMatcher: [{\n type: Input\n }], mode: [{\n type: Input\n }], currency: [{\n type: Input\n }], currencyDisplay: [{\n type: Input\n }], useGrouping: [{\n type: Input\n }], minFractionDigits: [{\n type: Input\n }], maxFractionDigits: [{\n type: Input\n }], prefix: [{\n type: Input\n }], suffix: [{\n type: Input\n }], inputStyle: [{\n type: Input\n }], inputStyleClass: [{\n type: Input\n }], showClear: [{\n type: Input\n }], input: [{\n type: ViewChild,\n args: ['input']\n }], onInput: [{\n type: Output\n }], onFocus: [{\n type: Output\n }], onBlur: [{\n type: Output\n }], onKeyDown: [{\n type: Output\n }], onClear: [{\n type: Output\n }], disabled: [{\n type: Input\n }] } });\nclass InputNumberModule {\n}\nInputNumberModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: InputNumberModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nInputNumberModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: InputNumberModule, declarations: [InputNumber], imports: [CommonModule, InputTextModule, ButtonModule], exports: [InputNumber] });\nInputNumberModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: InputNumberModule, imports: [[CommonModule, InputTextModule, ButtonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: InputNumberModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, InputTextModule, ButtonModule],\n exports: [InputNumber],\n declarations: [InputNumber]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { INPUTNUMBER_VALUE_ACCESSOR, InputNumber, InputNumberModule };\n","import * as i0 from '@angular/core';\nimport { Directive, Optional, HostListener, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport * as i1 from '@angular/forms';\n\nclass InputText {\n constructor(el, ngModel, cd) {\n this.el = el;\n this.ngModel = ngModel;\n this.cd = cd;\n }\n ngAfterViewInit() {\n this.updateFilledState();\n this.cd.detectChanges();\n }\n ngDoCheck() {\n this.updateFilledState();\n }\n onInput(e) {\n this.updateFilledState();\n }\n updateFilledState() {\n this.filled = (this.el.nativeElement.value && this.el.nativeElement.value.length) ||\n (this.ngModel && this.ngModel.model);\n }\n}\nInputText.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: InputText, deps: [{ token: i0.ElementRef }, { token: i1.NgModel, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });\nInputText.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.7\", type: InputText, selector: \"[pInputText]\", host: { listeners: { \"input\": \"onInput($event)\" }, properties: { \"class.p-filled\": \"filled\" }, classAttribute: \"p-inputtext p-component p-element\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: InputText, decorators: [{\n type: Directive,\n args: [{\n selector: '[pInputText]',\n host: {\n 'class': 'p-inputtext p-component p-element',\n '[class.p-filled]': 'filled'\n }\n }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i1.NgModel, decorators: [{\n type: Optional\n }] }, { type: i0.ChangeDetectorRef }];\n }, propDecorators: { onInput: [{\n type: HostListener,\n args: ['input', ['$event']]\n }] } });\nclass InputTextModule {\n}\nInputTextModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: InputTextModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nInputTextModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: InputTextModule, declarations: [InputText], imports: [CommonModule], exports: [InputText] });\nInputTextModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: InputTextModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: InputTextModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n exports: [InputText],\n declarations: [InputText]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { InputText, InputTextModule };\n","import * as i0 from '@angular/core';\nimport { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Optional, Input, ContentChildren, Output, NgModule } from '@angular/core';\nimport * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { trigger, transition, style, animate } from '@angular/animations';\nimport * as i1 from 'primeng/api';\nimport { PrimeTemplate } from 'primeng/api';\nimport * as i3 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\n\nclass Messages {\n constructor(messageService, el, cd) {\n this.messageService = messageService;\n this.el = el;\n this.cd = cd;\n this.closable = true;\n this.enableService = true;\n this.escape = true;\n this.showTransitionOptions = '300ms ease-out';\n this.hideTransitionOptions = '200ms cubic-bezier(0.86, 0, 0.07, 1)';\n this.valueChange = new EventEmitter();\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'content':\n this.contentTemplate = item.template;\n break;\n default:\n this.contentTemplate = item.template;\n break;\n }\n });\n if (this.messageService && this.enableService && !this.contentTemplate) {\n this.messageSubscription = this.messageService.messageObserver.subscribe((messages) => {\n if (messages) {\n if (messages instanceof Array) {\n let filteredMessages = messages.filter(m => this.key === m.key);\n this.value = this.value ? [...this.value, ...filteredMessages] : [...filteredMessages];\n }\n else if (this.key === messages.key) {\n this.value = this.value ? [...this.value, ...[messages]] : [messages];\n }\n this.cd.markForCheck();\n }\n });\n this.clearSubscription = this.messageService.clearObserver.subscribe(key => {\n if (key) {\n if (this.key === key) {\n this.value = null;\n }\n }\n else {\n this.value = null;\n }\n this.cd.markForCheck();\n });\n }\n }\n hasMessages() {\n let parentEl = this.el.nativeElement.parentElement;\n if (parentEl && parentEl.offsetParent) {\n return this.contentTemplate != null || this.value && this.value.length > 0;\n }\n return false;\n }\n clear() {\n this.value = [];\n this.valueChange.emit(this.value);\n }\n removeMessage(i) {\n this.value = this.value.filter((msg, index) => index !== i);\n this.valueChange.emit(this.value);\n }\n get icon() {\n const severity = this.severity || (this.hasMessages() ? this.value[0].severity : null);\n if (this.hasMessages()) {\n switch (severity) {\n case 'success':\n return 'pi-check';\n break;\n case 'info':\n return 'pi-info-circle';\n break;\n case 'error':\n return 'pi-times';\n break;\n case 'warn':\n return 'pi-exclamation-triangle';\n break;\n default:\n return 'pi-info-circle';\n break;\n }\n }\n return null;\n }\n ngOnDestroy() {\n if (this.messageSubscription) {\n this.messageSubscription.unsubscribe();\n }\n if (this.clearSubscription) {\n this.clearSubscription.unsubscribe();\n }\n }\n}\nMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: Messages, deps: [{ token: i1.MessageService, optional: true }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nMessages.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.7\", type: Messages, selector: \"p-messages\", inputs: { value: \"value\", closable: \"closable\", style: \"style\", styleClass: \"styleClass\", enableService: \"enableService\", key: \"key\", escape: \"escape\", severity: \"severity\", showTransitionOptions: \"showTransitionOptions\", hideTransitionOptions: \"hideTransitionOptions\" }, outputs: { valueChange: \"valueChange\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], ngImport: i0, template: `\n
    \n \n
    \n
    \n \n \n \n \n \n \n {{msg.summary}}\n {{msg.detail}}\n \n \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n `, isInline: true, styles: [\".p-message-wrapper{display:flex;align-items:center}.p-message-close{display:flex;align-items:center;justify-content:center}.p-message-close.p-link{margin-left:auto;overflow:hidden;position:relative}\\n\"], directives: [{ type: i2.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i3.Ripple, selector: \"[pRipple]\" }, { type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }], animations: [\n trigger('messageAnimation', [\n transition(':enter', [\n style({ opacity: 0, transform: 'translateY(-25%)' }),\n animate('{{showTransitionParams}}')\n ]),\n transition(':leave', [\n animate('{{hideTransitionParams}}', style({ height: 0, marginTop: 0, marginBottom: 0, marginLeft: 0, marginRight: 0, overflow: 'hidden', opacity: 0 }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: Messages, decorators: [{\n type: Component,\n args: [{ selector: 'p-messages', template: `\n
    \n \n
    \n
    \n \n \n \n \n \n \n {{msg.summary}}\n {{msg.detail}}\n \n \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n `, animations: [\n trigger('messageAnimation', [\n transition(':enter', [\n style({ opacity: 0, transform: 'translateY(-25%)' }),\n animate('{{showTransitionParams}}')\n ]),\n transition(':leave', [\n animate('{{hideTransitionParams}}', style({ height: 0, marginTop: 0, marginBottom: 0, marginLeft: 0, marginRight: 0, overflow: 'hidden', opacity: 0 }))\n ])\n ])\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n 'class': 'p-element'\n }, styles: [\".p-message-wrapper{display:flex;align-items:center}.p-message-close{display:flex;align-items:center;justify-content:center}.p-message-close.p-link{margin-left:auto;overflow:hidden;position:relative}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: i1.MessageService, decorators: [{\n type: Optional\n }] }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }];\n }, propDecorators: { value: [{\n type: Input\n }], closable: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], enableService: [{\n type: Input\n }], key: [{\n type: Input\n }], escape: [{\n type: Input\n }], severity: [{\n type: Input\n }], showTransitionOptions: [{\n type: Input\n }], hideTransitionOptions: [{\n type: Input\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }], valueChange: [{\n type: Output\n }] } });\nclass MessagesModule {\n}\nMessagesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: MessagesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMessagesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: MessagesModule, declarations: [Messages], imports: [CommonModule, RippleModule], exports: [Messages] });\nMessagesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: MessagesModule, imports: [[CommonModule, RippleModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: MessagesModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, RippleModule],\n exports: [Messages],\n declarations: [Messages]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Messages, MessagesModule };\n","import * as i0 from '@angular/core';\nimport { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, NgModule } from '@angular/core';\nimport * as i3 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i5 from '@angular/forms';\nimport { FormsModule } from '@angular/forms';\nimport * as i1 from 'primeng/dropdown';\nimport { DropdownModule } from 'primeng/dropdown';\nimport * as i4 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport * as i6 from 'primeng/api';\nimport { SharedModule } from 'primeng/api';\nimport * as i2 from 'primeng/inputnumber';\nimport { InputNumberModule } from 'primeng/inputnumber';\n\nclass Paginator {\n constructor(cd) {\n this.cd = cd;\n this.pageLinkSize = 5;\n this.onPageChange = new EventEmitter();\n this.alwaysShow = true;\n this.dropdownScrollHeight = '200px';\n this.currentPageReportTemplate = '{currentPage} of {totalPages}';\n this.showFirstLastIcon = true;\n this.totalRecords = 0;\n this.rows = 0;\n this.showPageLinks = true;\n this._first = 0;\n this._page = 0;\n }\n ngOnInit() {\n this.updatePaginatorState();\n }\n ngOnChanges(simpleChange) {\n if (simpleChange.totalRecords) {\n this.updatePageLinks();\n this.updatePaginatorState();\n this.updateFirst();\n this.updateRowsPerPageOptions();\n }\n if (simpleChange.first) {\n this._first = simpleChange.first.currentValue;\n this.updatePageLinks();\n this.updatePaginatorState();\n }\n if (simpleChange.rows) {\n this.updatePageLinks();\n this.updatePaginatorState();\n }\n if (simpleChange.rowsPerPageOptions) {\n this.updateRowsPerPageOptions();\n }\n }\n get first() {\n return this._first;\n }\n set first(val) {\n this._first = val;\n }\n updateRowsPerPageOptions() {\n if (this.rowsPerPageOptions) {\n this.rowsPerPageItems = [];\n for (let opt of this.rowsPerPageOptions) {\n if (typeof opt == 'object' && opt['showAll']) {\n this.rowsPerPageItems.unshift({ label: opt['showAll'], value: this.totalRecords });\n }\n else {\n this.rowsPerPageItems.push({ label: String(opt), value: opt });\n }\n }\n }\n }\n isFirstPage() {\n return this.getPage() === 0;\n }\n isLastPage() {\n return this.getPage() === this.getPageCount() - 1;\n }\n getPageCount() {\n return Math.ceil(this.totalRecords / this.rows);\n }\n calculatePageLinkBoundaries() {\n let numberOfPages = this.getPageCount(), visiblePages = Math.min(this.pageLinkSize, numberOfPages);\n //calculate range, keep current in middle if necessary\n let start = Math.max(0, Math.ceil(this.getPage() - ((visiblePages) / 2))), end = Math.min(numberOfPages - 1, start + visiblePages - 1);\n //check when approaching to last page\n var delta = this.pageLinkSize - (end - start + 1);\n start = Math.max(0, start - delta);\n return [start, end];\n }\n updatePageLinks() {\n this.pageLinks = [];\n let boundaries = this.calculatePageLinkBoundaries(), start = boundaries[0], end = boundaries[1];\n for (let i = start; i <= end; i++) {\n this.pageLinks.push(i + 1);\n }\n if (this.showJumpToPageDropdown) {\n this.pageItems = [];\n for (let i = 0; i < this.getPageCount(); i++) {\n this.pageItems.push({ label: String(i + 1), value: i });\n }\n }\n }\n changePage(p) {\n var pc = this.getPageCount();\n if (p >= 0 && p < pc) {\n this._first = this.rows * p;\n var state = {\n page: p,\n first: this.first,\n rows: this.rows,\n pageCount: pc\n };\n this.updatePageLinks();\n this.onPageChange.emit(state);\n this.updatePaginatorState();\n }\n }\n updateFirst() {\n const page = this.getPage();\n if (page > 0 && this.totalRecords && (this.first >= this.totalRecords)) {\n Promise.resolve(null).then(() => this.changePage(page - 1));\n }\n }\n getPage() {\n return Math.floor(this.first / this.rows);\n }\n changePageToFirst(event) {\n if (!this.isFirstPage()) {\n this.changePage(0);\n }\n event.preventDefault();\n }\n changePageToPrev(event) {\n this.changePage(this.getPage() - 1);\n event.preventDefault();\n }\n changePageToNext(event) {\n this.changePage(this.getPage() + 1);\n event.preventDefault();\n }\n changePageToLast(event) {\n if (!this.isLastPage()) {\n this.changePage(this.getPageCount() - 1);\n }\n event.preventDefault();\n }\n onPageLinkClick(event, page) {\n this.changePage(page);\n event.preventDefault();\n }\n onRppChange(event) {\n this.changePage(this.getPage());\n }\n onPageDropdownChange(event) {\n this.changePage(event.value);\n }\n updatePaginatorState() {\n this.paginatorState = {\n page: this.getPage(),\n pageCount: this.getPageCount(),\n rows: this.rows,\n first: this.first,\n totalRecords: this.totalRecords\n };\n }\n empty() {\n return this.getPageCount() === 0;\n }\n currentPage() {\n return this.getPageCount() > 0 ? this.getPage() + 1 : 0;\n }\n get currentPageReport() {\n return this.currentPageReportTemplate\n .replace(\"{currentPage}\", String(this.currentPage()))\n .replace(\"{totalPages}\", String(this.getPageCount()))\n .replace(\"{first}\", String((this.totalRecords > 0) ? this._first + 1 : 0))\n .replace(\"{last}\", String(Math.min(this._first + this.rows, this.totalRecords)))\n .replace(\"{rows}\", String(this.rows))\n .replace(\"{totalRecords}\", String(this.totalRecords));\n }\n}\nPaginator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: Paginator, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nPaginator.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.7\", type: Paginator, selector: \"p-paginator\", inputs: { pageLinkSize: \"pageLinkSize\", style: \"style\", styleClass: \"styleClass\", alwaysShow: \"alwaysShow\", templateLeft: \"templateLeft\", templateRight: \"templateRight\", dropdownAppendTo: \"dropdownAppendTo\", dropdownScrollHeight: \"dropdownScrollHeight\", currentPageReportTemplate: \"currentPageReportTemplate\", showCurrentPageReport: \"showCurrentPageReport\", showFirstLastIcon: \"showFirstLastIcon\", totalRecords: \"totalRecords\", rows: \"rows\", rowsPerPageOptions: \"rowsPerPageOptions\", showJumpToPageDropdown: \"showJumpToPageDropdown\", showJumpToPageInput: \"showJumpToPageInput\", showPageLinks: \"showPageLinks\", dropdownItemTemplate: \"dropdownItemTemplate\", first: \"first\" }, outputs: { onPageChange: \"onPageChange\" }, host: { classAttribute: \"p-element\" }, usesOnChanges: true, ngImport: i0, template: `\n
    1)\">\n
    \n \n
    \n {{currentPageReport}}\n \n \n \n \n \n \n {{currentPageReport}}\n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \n
    \n
    \n `, isInline: true, styles: [\".p-paginator{display:flex;align-items:center;justify-content:center;flex-wrap:wrap}.p-paginator-left-content{margin-right:auto}.p-paginator-right-content{margin-left:auto}.p-paginator-page,.p-paginator-next,.p-paginator-last,.p-paginator-first,.p-paginator-prev,.p-paginator-current{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;line-height:1;-webkit-user-select:none;user-select:none;overflow:hidden;position:relative}.p-paginator-element:focus{z-index:1;position:relative}\\n\"], components: [{ type: i1.Dropdown, selector: \"p-dropdown\", inputs: [\"scrollHeight\", \"filter\", \"name\", \"style\", \"panelStyle\", \"styleClass\", \"panelStyleClass\", \"readonly\", \"required\", \"editable\", \"appendTo\", \"tabindex\", \"placeholder\", \"filterPlaceholder\", \"filterLocale\", \"inputId\", \"selectId\", \"dataKey\", \"filterBy\", \"autofocus\", \"resetFilterOnHide\", \"dropdownIcon\", \"optionLabel\", \"optionValue\", \"optionDisabled\", \"optionGroupLabel\", \"optionGroupChildren\", \"autoDisplayFirst\", \"group\", \"showClear\", \"emptyFilterMessage\", \"emptyMessage\", \"virtualScroll\", \"itemSize\", \"autoZIndex\", \"baseZIndex\", \"showTransitionOptions\", \"hideTransitionOptions\", \"ariaFilterLabel\", \"ariaLabel\", \"ariaLabelledBy\", \"filterMatchMode\", \"maxlength\", \"tooltip\", \"tooltipPosition\", \"tooltipPositionStyle\", \"tooltipStyleClass\", \"autofocusFilter\", \"disabled\", \"options\", \"filterValue\"], outputs: [\"onChange\", \"onFilter\", \"onFocus\", \"onBlur\", \"onClick\", \"onShow\", \"onHide\", \"onClear\"] }, { type: i2.InputNumber, selector: \"p-inputNumber\", inputs: [\"showButtons\", \"format\", \"buttonLayout\", \"inputId\", \"styleClass\", \"style\", \"placeholder\", \"size\", \"maxlength\", \"tabindex\", \"title\", \"ariaLabel\", \"ariaRequired\", \"name\", \"required\", \"autocomplete\", \"min\", \"max\", \"incrementButtonClass\", \"decrementButtonClass\", \"incrementButtonIcon\", \"decrementButtonIcon\", \"readonly\", \"step\", \"allowEmpty\", \"locale\", \"localeMatcher\", \"mode\", \"currency\", \"currencyDisplay\", \"useGrouping\", \"minFractionDigits\", \"maxFractionDigits\", \"prefix\", \"suffix\", \"inputStyle\", \"inputStyleClass\", \"showClear\", \"disabled\"], outputs: [\"onInput\", \"onFocus\", \"onBlur\", \"onKeyDown\", \"onClear\"] }], directives: [{ type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i3.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i4.Ripple, selector: \"[pRipple]\" }, { type: i3.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i5.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { type: i5.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { type: i6.PrimeTemplate, selector: \"[pTemplate]\", inputs: [\"type\", \"pTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: Paginator, decorators: [{\n type: Component,\n args: [{ selector: 'p-paginator', template: `\n
    1)\">\n
    \n \n
    \n {{currentPageReport}}\n \n \n \n \n \n \n {{currentPageReport}}\n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \n
    \n
    \n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n 'class': 'p-element'\n }, styles: [\".p-paginator{display:flex;align-items:center;justify-content:center;flex-wrap:wrap}.p-paginator-left-content{margin-right:auto}.p-paginator-right-content{margin-left:auto}.p-paginator-page,.p-paginator-next,.p-paginator-last,.p-paginator-first,.p-paginator-prev,.p-paginator-current{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;line-height:1;-webkit-user-select:none;user-select:none;overflow:hidden;position:relative}.p-paginator-element:focus{z-index:1;position:relative}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { pageLinkSize: [{\n type: Input\n }], onPageChange: [{\n type: Output\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], alwaysShow: [{\n type: Input\n }], templateLeft: [{\n type: Input\n }], templateRight: [{\n type: Input\n }], dropdownAppendTo: [{\n type: Input\n }], dropdownScrollHeight: [{\n type: Input\n }], currentPageReportTemplate: [{\n type: Input\n }], showCurrentPageReport: [{\n type: Input\n }], showFirstLastIcon: [{\n type: Input\n }], totalRecords: [{\n type: Input\n }], rows: [{\n type: Input\n }], rowsPerPageOptions: [{\n type: Input\n }], showJumpToPageDropdown: [{\n type: Input\n }], showJumpToPageInput: [{\n type: Input\n }], showPageLinks: [{\n type: Input\n }], dropdownItemTemplate: [{\n type: Input\n }], first: [{\n type: Input\n }] } });\nclass PaginatorModule {\n}\nPaginatorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: PaginatorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nPaginatorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: PaginatorModule, declarations: [Paginator], imports: [CommonModule, DropdownModule, InputNumberModule, FormsModule, SharedModule, RippleModule], exports: [Paginator, DropdownModule, InputNumberModule, FormsModule, SharedModule] });\nPaginatorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: PaginatorModule, imports: [[CommonModule, DropdownModule, InputNumberModule, FormsModule, SharedModule, RippleModule], DropdownModule, InputNumberModule, FormsModule, SharedModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: PaginatorModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, DropdownModule, InputNumberModule, FormsModule, SharedModule, RippleModule],\n exports: [Paginator, DropdownModule, InputNumberModule, FormsModule, SharedModule],\n declarations: [Paginator]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Paginator, PaginatorModule };\n","import * as i0 from '@angular/core';\nimport { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\n\nclass ProgressBar {\n constructor() {\n this.showValue = true;\n this.unit = '%';\n this.mode = 'determinate';\n }\n}\nProgressBar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: ProgressBar, deps: [], target: i0.ɵɵFactoryTarget.Component });\nProgressBar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.7\", type: ProgressBar, selector: \"p-progressBar\", inputs: { value: \"value\", showValue: \"showValue\", style: \"style\", styleClass: \"styleClass\", unit: \"unit\", mode: \"mode\" }, host: { classAttribute: \"p-element\" }, ngImport: i0, template: `\n
    \n
    \n
    {{value}}{{unit}}
    \n
    \n
    \n
    \n
    \n
    \n `, isInline: true, styles: [\".p-progressbar{position:relative;overflow:hidden}.p-progressbar-determinate .p-progressbar-value{height:100%;width:0%;position:absolute;display:none;border:0 none;display:flex;align-items:center;justify-content:center;overflow:hidden}.p-progressbar-determinate .p-progressbar-label{display:inline-flex}.p-progressbar-determinate .p-progressbar-value-animate{transition:width 1s ease-in-out}.p-progressbar-indeterminate .p-progressbar-value:before{content:\\\"\\\";position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left,right;animation:p-progressbar-indeterminate-anim 2.1s cubic-bezier(.65,.815,.735,.395) infinite}.p-progressbar-indeterminate .p-progressbar-value:after{content:\\\"\\\";position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left,right;animation:p-progressbar-indeterminate-anim-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;animation-delay:1.15s}@keyframes p-progressbar-indeterminate-anim{0%{left:-35%;right:100%}60%{left:100%;right:-90%}to{left:100%;right:-90%}}@keyframes p-progressbar-indeterminate-anim-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}to{left:107%;right:-8%}}\\n\"], directives: [{ type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: ProgressBar, decorators: [{\n type: Component,\n args: [{ selector: 'p-progressBar', template: `\n
    \n
    \n
    {{value}}{{unit}}
    \n
    \n
    \n
    \n
    \n
    \n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n 'class': 'p-element'\n }, styles: [\".p-progressbar{position:relative;overflow:hidden}.p-progressbar-determinate .p-progressbar-value{height:100%;width:0%;position:absolute;display:none;border:0 none;display:flex;align-items:center;justify-content:center;overflow:hidden}.p-progressbar-determinate .p-progressbar-label{display:inline-flex}.p-progressbar-determinate .p-progressbar-value-animate{transition:width 1s ease-in-out}.p-progressbar-indeterminate .p-progressbar-value:before{content:\\\"\\\";position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left,right;animation:p-progressbar-indeterminate-anim 2.1s cubic-bezier(.65,.815,.735,.395) infinite}.p-progressbar-indeterminate .p-progressbar-value:after{content:\\\"\\\";position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left,right;animation:p-progressbar-indeterminate-anim-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;animation-delay:1.15s}@keyframes p-progressbar-indeterminate-anim{0%{left:-35%;right:100%}60%{left:100%;right:-90%}to{left:100%;right:-90%}}@keyframes p-progressbar-indeterminate-anim-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}to{left:107%;right:-8%}}\\n\"] }]\n }], propDecorators: { value: [{\n type: Input\n }], showValue: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], unit: [{\n type: Input\n }], mode: [{\n type: Input\n }] } });\nclass ProgressBarModule {\n}\nProgressBarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: ProgressBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nProgressBarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: ProgressBarModule, declarations: [ProgressBar], imports: [CommonModule], exports: [ProgressBar] });\nProgressBarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: ProgressBarModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: ProgressBarModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n exports: [ProgressBar],\n declarations: [ProgressBar]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ProgressBar, ProgressBarModule };\n","import * as i0 from '@angular/core';\nimport { Directive, Optional, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler } from 'primeng/dom';\nimport * as i1 from 'primeng/api';\n\nclass Ripple {\n constructor(el, zone, config) {\n this.el = el;\n this.zone = zone;\n this.config = config;\n }\n ngAfterViewInit() {\n if (this.config && this.config.ripple) {\n this.zone.runOutsideAngular(() => {\n this.create();\n this.mouseDownListener = this.onMouseDown.bind(this);\n this.el.nativeElement.addEventListener('mousedown', this.mouseDownListener);\n });\n }\n }\n onMouseDown(event) {\n let ink = this.getInk();\n if (!ink || getComputedStyle(ink, null).display === 'none') {\n return;\n }\n DomHandler.removeClass(ink, 'p-ink-active');\n if (!DomHandler.getHeight(ink) && !DomHandler.getWidth(ink)) {\n let d = Math.max(DomHandler.getOuterWidth(this.el.nativeElement), DomHandler.getOuterHeight(this.el.nativeElement));\n ink.style.height = d + 'px';\n ink.style.width = d + 'px';\n }\n let offset = DomHandler.getOffset(this.el.nativeElement);\n let x = event.pageX - offset.left + document.body.scrollTop - DomHandler.getWidth(ink) / 2;\n let y = event.pageY - offset.top + document.body.scrollLeft - DomHandler.getHeight(ink) / 2;\n ink.style.top = y + 'px';\n ink.style.left = x + 'px';\n DomHandler.addClass(ink, 'p-ink-active');\n }\n getInk() {\n for (let i = 0; i < this.el.nativeElement.children.length; i++) {\n if (this.el.nativeElement.children[i].className.indexOf('p-ink') !== -1) {\n return this.el.nativeElement.children[i];\n }\n }\n return null;\n }\n resetInk() {\n let ink = this.getInk();\n if (ink) {\n DomHandler.removeClass(ink, 'p-ink-active');\n }\n }\n onAnimationEnd(event) {\n DomHandler.removeClass(event.currentTarget, 'p-ink-active');\n }\n create() {\n let ink = document.createElement('span');\n ink.className = 'p-ink';\n this.el.nativeElement.appendChild(ink);\n this.animationListener = this.onAnimationEnd.bind(this);\n ink.addEventListener('animationend', this.animationListener);\n }\n remove() {\n let ink = this.getInk();\n if (ink) {\n this.el.nativeElement.removeEventListener('mousedown', this.mouseDownListener);\n ink.removeEventListener('animationend', this.animationListener);\n DomHandler.removeElement(ink);\n }\n }\n ngOnDestroy() {\n if (this.config && this.config.ripple) {\n this.remove();\n }\n }\n}\nRipple.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: Ripple, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.PrimeNGConfig, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nRipple.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.7\", type: Ripple, selector: \"[pRipple]\", host: { classAttribute: \"p-ripple p-element\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: Ripple, decorators: [{\n type: Directive,\n args: [{\n selector: '[pRipple]',\n host: {\n 'class': 'p-ripple p-element'\n }\n }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.PrimeNGConfig, decorators: [{\n type: Optional\n }] }];\n } });\nclass RippleModule {\n}\nRippleModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: RippleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nRippleModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: RippleModule, declarations: [Ripple], imports: [CommonModule], exports: [Ripple] });\nRippleModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: RippleModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: RippleModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n exports: [Ripple],\n declarations: [Ripple]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Ripple, RippleModule };\n","import * as i0 from '@angular/core';\nimport { forwardRef, EventEmitter, TemplateRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ContentChild, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { ObjectUtils } from 'primeng/utils';\nimport * as i2 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nconst SELECTBUTTON_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectButton),\n multi: true\n};\nclass SelectButton {\n constructor(cd) {\n this.cd = cd;\n this.tabindex = 0;\n this.onOptionClick = new EventEmitter();\n this.onChange = new EventEmitter();\n this.onModelChange = () => { };\n this.onModelTouched = () => { };\n }\n getOptionLabel(option) {\n return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : (option.label != undefined ? option.label : option);\n }\n getOptionValue(option) {\n return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : (this.optionLabel || option.value === undefined ? option : option.value);\n }\n isOptionDisabled(option) {\n return this.optionDisabled ? ObjectUtils.resolveFieldData(option, this.optionDisabled) : (option.disabled !== undefined ? option.disabled : false);\n }\n writeValue(value) {\n this.value = value;\n this.cd.markForCheck();\n }\n registerOnChange(fn) {\n this.onModelChange = fn;\n }\n registerOnTouched(fn) {\n this.onModelTouched = fn;\n }\n setDisabledState(val) {\n this.disabled = val;\n this.cd.markForCheck();\n }\n onItemClick(event, option, index) {\n if (this.disabled || this.isOptionDisabled(option)) {\n return;\n }\n if (this.multiple) {\n if (this.isSelected(option))\n this.removeOption(option);\n else\n this.value = [...(this.value || []), this.getOptionValue(option)];\n this.onModelChange(this.value);\n this.onChange.emit({\n originalEvent: event,\n value: this.value\n });\n }\n else {\n let value = this.getOptionValue(option);\n if (this.value !== value) {\n this.value = this.getOptionValue(option);\n this.onModelChange(this.value);\n this.onChange.emit({\n originalEvent: event,\n value: this.value\n });\n }\n }\n this.onOptionClick.emit({\n originalEvent: event,\n option: option,\n index: index\n });\n }\n onBlur() {\n this.onModelTouched();\n }\n removeOption(option) {\n this.value = this.value.filter(val => !ObjectUtils.equals(val, this.getOptionValue(option), this.dataKey));\n }\n isSelected(option) {\n let selected = false;\n let optionValue = this.getOptionValue(option);\n if (this.multiple) {\n if (this.value) {\n for (let val of this.value) {\n if (ObjectUtils.equals(val, optionValue, this.dataKey)) {\n selected = true;\n break;\n }\n }\n }\n }\n else {\n selected = ObjectUtils.equals(this.getOptionValue(option), this.value, this.dataKey);\n }\n return selected;\n }\n}\nSelectButton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: SelectButton, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nSelectButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.7\", type: SelectButton, selector: \"p-selectButton\", inputs: { options: \"options\", optionLabel: \"optionLabel\", optionValue: \"optionValue\", optionDisabled: \"optionDisabled\", tabindex: \"tabindex\", multiple: \"multiple\", style: \"style\", styleClass: \"styleClass\", ariaLabelledBy: \"ariaLabelledBy\", disabled: \"disabled\", dataKey: \"dataKey\" }, outputs: { onOptionClick: \"onOptionClick\", onChange: \"onChange\" }, host: { classAttribute: \"p-element\" }, providers: [SELECTBUTTON_VALUE_ACCESSOR], queries: [{ propertyName: \"itemTemplate\", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: `\n
    \n
    \n \n \n {{getOptionLabel(option)}}\n \n \n \n \n
    \n
    \n `, isInline: true, styles: [\".p-button{margin:0;display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;vertical-align:bottom;text-align:center;overflow:hidden;position:relative}.p-button-label{flex:1 1 auto}.p-button-icon-right{order:1}.p-button:disabled{cursor:default}.p-button-icon-only{justify-content:center}.p-button-icon-only .p-button-label{visibility:hidden;width:0;flex:0 0 auto}.p-button-vertical{flex-direction:column}.p-button-icon-bottom{order:2}.p-buttonset .p-button{margin:0}.p-buttonset .p-button:not(:last-child){border-right:0 none}.p-buttonset .p-button:not(:first-of-type):not(:last-of-type){border-radius:0}.p-buttonset .p-button:first-of-type{border-top-right-radius:0;border-bottom-right-radius:0}.p-buttonset .p-button:last-of-type{border-top-left-radius:0;border-bottom-left-radius:0}.p-buttonset .p-button:focus{position:relative;z-index:1}\\n\"], directives: [{ type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i2.Ripple, selector: \"[pRipple]\" }, { type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: SelectButton, decorators: [{\n type: Component,\n args: [{ selector: 'p-selectButton', template: `\n
    \n
    \n \n \n {{getOptionLabel(option)}}\n \n \n \n \n
    \n
    \n `, providers: [SELECTBUTTON_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n 'class': 'p-element'\n }, styles: [\".p-button{margin:0;display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;vertical-align:bottom;text-align:center;overflow:hidden;position:relative}.p-button-label{flex:1 1 auto}.p-button-icon-right{order:1}.p-button:disabled{cursor:default}.p-button-icon-only{justify-content:center}.p-button-icon-only .p-button-label{visibility:hidden;width:0;flex:0 0 auto}.p-button-vertical{flex-direction:column}.p-button-icon-bottom{order:2}.p-buttonset .p-button{margin:0}.p-buttonset .p-button:not(:last-child){border-right:0 none}.p-buttonset .p-button:not(:first-of-type):not(:last-of-type){border-radius:0}.p-buttonset .p-button:first-of-type{border-top-right-radius:0;border-bottom-right-radius:0}.p-buttonset .p-button:last-of-type{border-top-left-radius:0;border-bottom-left-radius:0}.p-buttonset .p-button:focus{position:relative;z-index:1}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { options: [{\n type: Input\n }], optionLabel: [{\n type: Input\n }], optionValue: [{\n type: Input\n }], optionDisabled: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], multiple: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], disabled: [{\n type: Input\n }], dataKey: [{\n type: Input\n }], onOptionClick: [{\n type: Output\n }], onChange: [{\n type: Output\n }], itemTemplate: [{\n type: ContentChild,\n args: [TemplateRef]\n }] } });\nclass SelectButtonModule {\n}\nSelectButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: SelectButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSelectButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: SelectButtonModule, declarations: [SelectButton], imports: [CommonModule, RippleModule], exports: [SelectButton] });\nSelectButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: SelectButtonModule, imports: [[CommonModule, RippleModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: SelectButtonModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, RippleModule],\n exports: [SelectButton],\n declarations: [SelectButton]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { SELECTBUTTON_VALUE_ACCESSOR, SelectButton, SelectButtonModule };\n","import * as i0 from '@angular/core';\nimport { Injectable, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ViewChild, ContentChildren, Directive, HostListener, Optional, NgModule } from '@angular/core';\nimport * as i4 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i9 from '@angular/forms';\nimport { FormsModule } from '@angular/forms';\nimport * as i1 from 'primeng/api';\nimport { FilterOperator, FilterMatchMode, PrimeTemplate, TranslationKeys, SharedModule } from 'primeng/api';\nimport * as i2 from 'primeng/paginator';\nimport { PaginatorModule } from 'primeng/paginator';\nimport * as i8 from 'primeng/inputtext';\nimport { InputTextModule } from 'primeng/inputtext';\nimport * as i11 from 'primeng/button';\nimport { ButtonModule } from 'primeng/button';\nimport { SelectButtonModule } from 'primeng/selectbutton';\nimport * as i6 from 'primeng/tristatecheckbox';\nimport { TriStateCheckboxModule } from 'primeng/tristatecheckbox';\nimport * as i7 from 'primeng/calendar';\nimport { CalendarModule } from 'primeng/calendar';\nimport * as i5 from 'primeng/inputnumber';\nimport { InputNumberModule } from 'primeng/inputnumber';\nimport * as i10 from 'primeng/dropdown';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';\nimport { UniqueComponentId, ObjectUtils, ZIndexUtils } from 'primeng/utils';\nimport { Subject } from 'rxjs';\nimport * as i3 from '@angular/cdk/scrolling';\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\nimport { trigger, transition, style, animate } from '@angular/animations';\n\nclass TableService {\n constructor() {\n this.sortSource = new Subject();\n this.selectionSource = new Subject();\n this.contextMenuSource = new Subject();\n this.valueSource = new Subject();\n this.totalRecordsSource = new Subject();\n this.columnsSource = new Subject();\n this.resetSource = new Subject();\n this.sortSource$ = this.sortSource.asObservable();\n this.selectionSource$ = this.selectionSource.asObservable();\n this.contextMenuSource$ = this.contextMenuSource.asObservable();\n this.valueSource$ = this.valueSource.asObservable();\n this.totalRecordsSource$ = this.totalRecordsSource.asObservable();\n this.columnsSource$ = this.columnsSource.asObservable();\n this.resetSource$ = this.resetSource.asObservable();\n }\n onSort(sortMeta) {\n this.sortSource.next(sortMeta);\n }\n onSelectionChange() {\n this.selectionSource.next(null);\n }\n onResetChange() {\n this.resetSource.next(null);\n }\n onContextMenu(data) {\n this.contextMenuSource.next(data);\n }\n onValueChange(value) {\n this.valueSource.next(value);\n }\n onTotalRecordsChange(value) {\n this.totalRecordsSource.next(value);\n }\n onColumnsChange(columns) {\n this.columnsSource.next(columns);\n }\n}\nTableService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: TableService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nTableService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: TableService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: TableService, decorators: [{\n type: Injectable\n }] });\nclass Table {\n constructor(el, zone, tableService, cd, filterService, overlayService) {\n this.el = el;\n this.zone = zone;\n this.tableService = tableService;\n this.cd = cd;\n this.filterService = filterService;\n this.overlayService = overlayService;\n this.pageLinks = 5;\n this.alwaysShowPaginator = true;\n this.paginatorPosition = 'bottom';\n this.paginatorDropdownScrollHeight = '200px';\n this.currentPageReportTemplate = '{currentPage} of {totalPages}';\n this.showFirstLastIcon = true;\n this.showPageLinks = true;\n this.defaultSortOrder = 1;\n this.sortMode = 'single';\n this.resetPageOnSort = true;\n this.selectAllChange = new EventEmitter();\n this.selectionChange = new EventEmitter();\n this.contextMenuSelectionChange = new EventEmitter();\n this.contextMenuSelectionMode = \"separate\";\n this.rowTrackBy = (index, item) => item;\n this.lazy = false;\n this.lazyLoadOnInit = true;\n this.compareSelectionBy = 'deepEquals';\n this.csvSeparator = ',';\n this.exportFilename = 'download';\n this.filters = {};\n this.filterDelay = 300;\n this.expandedRowKeys = {};\n this.editingRowKeys = {};\n this.rowExpandMode = 'multiple';\n this.scrollDirection = \"vertical\";\n this.virtualScrollDelay = 250;\n this.virtualRowHeight = 28;\n this.columnResizeMode = 'fit';\n this.loadingIcon = 'pi pi-spinner';\n this.showLoader = true;\n this.showInitialSortBadge = true;\n this.stateStorage = 'session';\n this.editMode = 'cell';\n this.groupRowsByOrder = 1;\n this.responsiveLayout = 'stack';\n this.breakpoint = '960px';\n this.onRowSelect = new EventEmitter();\n this.onRowUnselect = new EventEmitter();\n this.onPage = new EventEmitter();\n this.onSort = new EventEmitter();\n this.onFilter = new EventEmitter();\n this.onLazyLoad = new EventEmitter();\n this.onRowExpand = new EventEmitter();\n this.onRowCollapse = new EventEmitter();\n this.onContextMenuSelect = new EventEmitter();\n this.onColResize = new EventEmitter();\n this.onColReorder = new EventEmitter();\n this.onRowReorder = new EventEmitter();\n this.onEditInit = new EventEmitter();\n this.onEditComplete = new EventEmitter();\n this.onEditCancel = new EventEmitter();\n this.onHeaderCheckboxToggle = new EventEmitter();\n this.sortFunction = new EventEmitter();\n this.firstChange = new EventEmitter();\n this.rowsChange = new EventEmitter();\n this.onStateSave = new EventEmitter();\n this.onStateRestore = new EventEmitter();\n this._value = [];\n this._totalRecords = 0;\n this._first = 0;\n this.selectionKeys = {};\n this._sortOrder = 1;\n this._selectAll = null;\n this.columnResizing = false;\n this.rowGroupHeaderStyleObject = {};\n this.id = UniqueComponentId();\n this.virtualScrollInitialized = false;\n }\n ngOnInit() {\n if (this.lazy && this.lazyLoadOnInit) {\n if (!this.virtualScroll) {\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\n }\n if (this.restoringFilter) {\n this.restoringFilter = false;\n }\n }\n if (this.responsiveLayout === 'stack' && !this.scrollable) {\n this.createResponsiveStyle();\n }\n this.initialized = true;\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'caption':\n this.captionTemplate = item.template;\n break;\n case 'header':\n this.headerTemplate = item.template;\n break;\n case 'headergrouped':\n this.headerGroupedTemplate = item.template;\n break;\n case 'body':\n this.bodyTemplate = item.template;\n break;\n case 'loadingbody':\n this.loadingBodyTemplate = item.template;\n break;\n case 'footer':\n this.footerTemplate = item.template;\n break;\n case 'footergrouped':\n this.footerGroupedTemplate = item.template;\n break;\n case 'summary':\n this.summaryTemplate = item.template;\n break;\n case 'colgroup':\n this.colGroupTemplate = item.template;\n break;\n case 'rowexpansion':\n this.expandedRowTemplate = item.template;\n break;\n case 'groupheader':\n this.groupHeaderTemplate = item.template;\n break;\n case 'rowspan':\n this.rowspanTemplate = item.template;\n break;\n case 'groupfooter':\n this.groupFooterTemplate = item.template;\n break;\n case 'frozenrows':\n this.frozenRowsTemplate = item.template;\n break;\n case 'frozenheader':\n this.frozenHeaderTemplate = item.template;\n break;\n case 'frozenbody':\n this.frozenBodyTemplate = item.template;\n break;\n case 'frozenfooter':\n this.frozenFooterTemplate = item.template;\n break;\n case 'frozencolgroup':\n this.frozenColGroupTemplate = item.template;\n break;\n case 'frozenrowexpansion':\n this.frozenExpandedRowTemplate = item.template;\n break;\n case 'emptymessage':\n this.emptyMessageTemplate = item.template;\n break;\n case 'paginatorleft':\n this.paginatorLeftTemplate = item.template;\n break;\n case 'paginatorright':\n this.paginatorRightTemplate = item.template;\n break;\n case 'paginatordropdownitem':\n this.paginatorDropdownItemTemplate = item.template;\n break;\n }\n });\n }\n ngAfterViewInit() {\n if (this.isStateful() && this.resizableColumns) {\n this.restoreColumnWidths();\n }\n if (this.scrollable && this.virtualScroll) {\n this.virtualScrollSubscription = this.virtualScrollBody.renderedRangeStream.subscribe(range => {\n let top = range.start * this.virtualRowHeight * -1;\n this.tableHeaderViewChild.nativeElement.style.top = top + 'px';\n });\n }\n }\n ngOnChanges(simpleChange) {\n if (simpleChange.value) {\n if (this.isStateful() && !this.stateRestored) {\n this.restoreState();\n }\n this._value = simpleChange.value.currentValue;\n if (!this.lazy) {\n this.totalRecords = (this._value ? this._value.length : 0);\n if (this.sortMode == 'single' && (this.sortField || this.groupRowsBy))\n this.sortSingle();\n else if (this.sortMode == 'multiple' && (this.multiSortMeta || this.groupRowsBy))\n this.sortMultiple();\n else if (this.hasFilter()) //sort already filters\n this._filter();\n }\n this.tableService.onValueChange(simpleChange.value.currentValue);\n }\n if (simpleChange.columns) {\n this._columns = simpleChange.columns.currentValue;\n this.tableService.onColumnsChange(simpleChange.columns.currentValue);\n if (this._columns && this.isStateful() && this.reorderableColumns && !this.columnOrderStateRestored) {\n this.restoreColumnOrder();\n }\n }\n if (simpleChange.sortField) {\n this._sortField = simpleChange.sortField.currentValue;\n //avoid triggering lazy load prior to lazy initialization at onInit\n if (!this.lazy || this.initialized) {\n if (this.sortMode === 'single') {\n this.sortSingle();\n }\n }\n }\n if (simpleChange.groupRowsBy) {\n //avoid triggering lazy load prior to lazy initialization at onInit\n if (!this.lazy || this.initialized) {\n if (this.sortMode === 'single') {\n this.sortSingle();\n }\n }\n }\n if (simpleChange.sortOrder) {\n this._sortOrder = simpleChange.sortOrder.currentValue;\n //avoid triggering lazy load prior to lazy initialization at onInit\n if (!this.lazy || this.initialized) {\n if (this.sortMode === 'single') {\n this.sortSingle();\n }\n }\n }\n if (simpleChange.groupRowsByOrder) {\n //avoid triggering lazy load prior to lazy initialization at onInit\n if (!this.lazy || this.initialized) {\n if (this.sortMode === 'single') {\n this.sortSingle();\n }\n }\n }\n if (simpleChange.multiSortMeta) {\n this._multiSortMeta = simpleChange.multiSortMeta.currentValue;\n if (this.sortMode === 'multiple' && (this.initialized || (!this.lazy && !this.virtualScroll))) {\n this.sortMultiple();\n }\n }\n if (simpleChange.selection) {\n this._selection = simpleChange.selection.currentValue;\n if (!this.preventSelectionSetterPropagation) {\n this.updateSelectionKeys();\n this.tableService.onSelectionChange();\n }\n this.preventSelectionSetterPropagation = false;\n }\n if (simpleChange.selectAll) {\n this._selectAll = simpleChange.selectAll.currentValue;\n if (!this.preventSelectionSetterPropagation) {\n this.updateSelectionKeys();\n this.tableService.onSelectionChange();\n if (this.isStateful()) {\n this.saveState();\n }\n }\n this.preventSelectionSetterPropagation = false;\n }\n }\n get value() {\n return this._value;\n }\n set value(val) {\n this._value = val;\n }\n get columns() {\n return this._columns;\n }\n set columns(cols) {\n this._columns = cols;\n }\n get first() {\n return this._first;\n }\n set first(val) {\n this._first = val;\n }\n get rows() {\n return this._rows;\n }\n set rows(val) {\n this._rows = val;\n }\n get totalRecords() {\n return this._totalRecords;\n }\n set totalRecords(val) {\n this._totalRecords = val;\n this.tableService.onTotalRecordsChange(this._totalRecords);\n }\n get sortField() {\n return this._sortField;\n }\n set sortField(val) {\n this._sortField = val;\n }\n get sortOrder() {\n return this._sortOrder;\n }\n set sortOrder(val) {\n this._sortOrder = val;\n }\n get multiSortMeta() {\n return this._multiSortMeta;\n }\n set multiSortMeta(val) {\n this._multiSortMeta = val;\n }\n get selection() {\n return this._selection;\n }\n set selection(val) {\n this._selection = val;\n }\n get selectAll() {\n return this._selection;\n }\n set selectAll(val) {\n this._selection = val;\n }\n get dataToRender() {\n let data = this.filteredValue || this.value;\n return data ? ((this.paginator && !this.lazy) ? (data.slice(this.first, this.first + this.rows)) : data) : [];\n }\n updateSelectionKeys() {\n if (this.dataKey && this._selection) {\n this.selectionKeys = {};\n if (Array.isArray(this._selection)) {\n for (let data of this._selection) {\n this.selectionKeys[String(ObjectUtils.resolveFieldData(data, this.dataKey))] = 1;\n }\n }\n else {\n this.selectionKeys[String(ObjectUtils.resolveFieldData(this._selection, this.dataKey))] = 1;\n }\n }\n }\n onPageChange(event) {\n this.first = event.first;\n this.rows = event.rows;\n if (this.lazy) {\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\n }\n this.onPage.emit({\n first: this.first,\n rows: this.rows\n });\n this.firstChange.emit(this.first);\n this.rowsChange.emit(this.rows);\n this.tableService.onValueChange(this.value);\n if (this.isStateful()) {\n this.saveState();\n }\n this.anchorRowIndex = null;\n if (this.scrollable) {\n this.resetScrollTop();\n }\n }\n sort(event) {\n let originalEvent = event.originalEvent;\n if (this.sortMode === 'single') {\n this._sortOrder = (this.sortField === event.field) ? this.sortOrder * -1 : this.defaultSortOrder;\n this._sortField = event.field;\n if (this.resetPageOnSort) {\n this._first = 0;\n this.firstChange.emit(this._first);\n if (this.scrollable) {\n this.resetScrollTop();\n }\n }\n this.sortSingle();\n }\n if (this.sortMode === 'multiple') {\n let metaKey = originalEvent.metaKey || originalEvent.ctrlKey;\n let sortMeta = this.getSortMeta(event.field);\n if (sortMeta) {\n if (!metaKey) {\n this._multiSortMeta = [{ field: event.field, order: sortMeta.order * -1 }];\n if (this.resetPageOnSort) {\n this._first = 0;\n this.firstChange.emit(this._first);\n if (this.scrollable) {\n this.resetScrollTop();\n }\n }\n }\n else {\n sortMeta.order = sortMeta.order * -1;\n }\n }\n else {\n if (!metaKey || !this.multiSortMeta) {\n this._multiSortMeta = [];\n if (this.resetPageOnSort) {\n this._first = 0;\n this.firstChange.emit(this._first);\n }\n }\n this._multiSortMeta.push({ field: event.field, order: this.defaultSortOrder });\n }\n this.sortMultiple();\n }\n if (this.isStateful()) {\n this.saveState();\n }\n this.anchorRowIndex = null;\n }\n sortSingle() {\n let field = this.sortField || this.groupRowsBy;\n let order = this.sortField ? this.sortOrder : this.groupRowsByOrder;\n if (this.groupRowsBy && this.sortField && this.groupRowsBy !== this.sortField) {\n this._multiSortMeta = [this.getGroupRowsMeta(), { field: this.sortField, order: this.sortOrder }];\n this.sortMultiple();\n return;\n }\n if (field && order) {\n if (this.restoringSort) {\n this.restoringSort = false;\n }\n if (this.lazy) {\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\n }\n else if (this.value) {\n if (this.customSort) {\n this.sortFunction.emit({\n data: this.value,\n mode: this.sortMode,\n field: field,\n order: order\n });\n }\n else {\n this.value.sort((data1, data2) => {\n let value1 = ObjectUtils.resolveFieldData(data1, field);\n let value2 = ObjectUtils.resolveFieldData(data2, field);\n let result = null;\n if (value1 == null && value2 != null)\n result = -1;\n else if (value1 != null && value2 == null)\n result = 1;\n else if (value1 == null && value2 == null)\n result = 0;\n else if (typeof value1 === 'string' && typeof value2 === 'string')\n result = value1.localeCompare(value2);\n else\n result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\n return (order * result);\n });\n this._value = [...this.value];\n }\n if (this.hasFilter()) {\n this._filter();\n }\n }\n let sortMeta = {\n field: field,\n order: order\n };\n this.onSort.emit(sortMeta);\n this.tableService.onSort(sortMeta);\n }\n }\n sortMultiple() {\n if (this.groupRowsBy) {\n if (!this._multiSortMeta)\n this._multiSortMeta = [this.getGroupRowsMeta()];\n else if (this.multiSortMeta[0].field !== this.groupRowsBy)\n this._multiSortMeta = [this.getGroupRowsMeta(), ...this._multiSortMeta];\n }\n if (this.multiSortMeta) {\n if (this.lazy) {\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\n }\n else if (this.value) {\n if (this.customSort) {\n this.sortFunction.emit({\n data: this.value,\n mode: this.sortMode,\n multiSortMeta: this.multiSortMeta\n });\n }\n else {\n this.value.sort((data1, data2) => {\n return this.multisortField(data1, data2, this.multiSortMeta, 0);\n });\n this._value = [...this.value];\n }\n if (this.hasFilter()) {\n this._filter();\n }\n }\n this.onSort.emit({\n multisortmeta: this.multiSortMeta\n });\n this.tableService.onSort(this.multiSortMeta);\n }\n }\n multisortField(data1, data2, multiSortMeta, index) {\n let value1 = ObjectUtils.resolveFieldData(data1, multiSortMeta[index].field);\n let value2 = ObjectUtils.resolveFieldData(data2, multiSortMeta[index].field);\n let result = null;\n if (value1 == null && value2 != null)\n result = -1;\n else if (value1 != null && value2 == null)\n result = 1;\n else if (value1 == null && value2 == null)\n result = 0;\n else if (typeof value1 == 'string' || value1 instanceof String) {\n if (value1.localeCompare && (value1 != value2)) {\n return (multiSortMeta[index].order * value1.localeCompare(value2));\n }\n }\n else {\n result = (value1 < value2) ? -1 : 1;\n }\n if (value1 == value2) {\n return (multiSortMeta.length - 1) > (index) ? (this.multisortField(data1, data2, multiSortMeta, index + 1)) : 0;\n }\n return (multiSortMeta[index].order * result);\n }\n getSortMeta(field) {\n if (this.multiSortMeta && this.multiSortMeta.length) {\n for (let i = 0; i < this.multiSortMeta.length; i++) {\n if (this.multiSortMeta[i].field === field) {\n return this.multiSortMeta[i];\n }\n }\n }\n return null;\n }\n isSorted(field) {\n if (this.sortMode === 'single') {\n return (this.sortField && this.sortField === field);\n }\n else if (this.sortMode === 'multiple') {\n let sorted = false;\n if (this.multiSortMeta) {\n for (let i = 0; i < this.multiSortMeta.length; i++) {\n if (this.multiSortMeta[i].field == field) {\n sorted = true;\n break;\n }\n }\n }\n return sorted;\n }\n }\n handleRowClick(event) {\n let target = event.originalEvent.target;\n let targetNode = target.nodeName;\n let parentNode = target.parentElement && target.parentElement.nodeName;\n if (targetNode == 'INPUT' || targetNode == 'BUTTON' || targetNode == 'A' ||\n parentNode == 'INPUT' || parentNode == 'BUTTON' || parentNode == 'A' ||\n (DomHandler.hasClass(event.originalEvent.target, 'p-clickable'))) {\n return;\n }\n if (this.selectionMode) {\n let rowData = event.rowData;\n let rowIndex = event.rowIndex;\n this.preventSelectionSetterPropagation = true;\n if (this.isMultipleSelectionMode() && event.originalEvent.shiftKey && this.anchorRowIndex != null) {\n DomHandler.clearSelection();\n if (this.rangeRowIndex != null) {\n this.clearSelectionRange(event.originalEvent);\n }\n this.rangeRowIndex = rowIndex;\n this.selectRange(event.originalEvent, rowIndex);\n }\n else {\n let selected = this.isSelected(rowData);\n if (!selected && !this.isRowSelectable(rowData, rowIndex)) {\n return;\n }\n let metaSelection = this.rowTouched ? false : this.metaKeySelection;\n let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(rowData, this.dataKey)) : null;\n this.anchorRowIndex = rowIndex;\n this.rangeRowIndex = rowIndex;\n if (metaSelection) {\n let metaKey = event.originalEvent.metaKey || event.originalEvent.ctrlKey;\n if (selected && metaKey) {\n if (this.isSingleSelectionMode()) {\n this._selection = null;\n this.selectionKeys = {};\n this.selectionChange.emit(null);\n }\n else {\n let selectionIndex = this.findIndexInSelection(rowData);\n this._selection = this.selection.filter((val, i) => i != selectionIndex);\n this.selectionChange.emit(this.selection);\n if (dataKeyValue) {\n delete this.selectionKeys[dataKeyValue];\n }\n }\n this.onRowUnselect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row' });\n }\n else {\n if (this.isSingleSelectionMode()) {\n this._selection = rowData;\n this.selectionChange.emit(rowData);\n if (dataKeyValue) {\n this.selectionKeys = {};\n this.selectionKeys[dataKeyValue] = 1;\n }\n }\n else if (this.isMultipleSelectionMode()) {\n if (metaKey) {\n this._selection = this.selection || [];\n }\n else {\n this._selection = [];\n this.selectionKeys = {};\n }\n this._selection = [...this.selection, rowData];\n this.selectionChange.emit(this.selection);\n if (dataKeyValue) {\n this.selectionKeys[dataKeyValue] = 1;\n }\n }\n this.onRowSelect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row', index: rowIndex });\n }\n }\n else {\n if (this.selectionMode === 'single') {\n if (selected) {\n this._selection = null;\n this.selectionKeys = {};\n this.selectionChange.emit(this.selection);\n this.onRowUnselect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row', index: rowIndex });\n }\n else {\n this._selection = rowData;\n this.selectionChange.emit(this.selection);\n this.onRowSelect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row', index: rowIndex });\n if (dataKeyValue) {\n this.selectionKeys = {};\n this.selectionKeys[dataKeyValue] = 1;\n }\n }\n }\n else if (this.selectionMode === 'multiple') {\n if (selected) {\n let selectionIndex = this.findIndexInSelection(rowData);\n this._selection = this.selection.filter((val, i) => i != selectionIndex);\n this.selectionChange.emit(this.selection);\n this.onRowUnselect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row', index: rowIndex });\n if (dataKeyValue) {\n delete this.selectionKeys[dataKeyValue];\n }\n }\n else {\n this._selection = this.selection ? [...this.selection, rowData] : [rowData];\n this.selectionChange.emit(this.selection);\n this.onRowSelect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row', index: rowIndex });\n if (dataKeyValue) {\n this.selectionKeys[dataKeyValue] = 1;\n }\n }\n }\n }\n }\n this.tableService.onSelectionChange();\n if (this.isStateful()) {\n this.saveState();\n }\n }\n this.rowTouched = false;\n }\n handleRowTouchEnd(event) {\n this.rowTouched = true;\n }\n handleRowRightClick(event) {\n if (this.contextMenu) {\n const rowData = event.rowData;\n const rowIndex = event.rowIndex;\n if (this.contextMenuSelectionMode === 'separate') {\n this.contextMenuSelection = rowData;\n this.contextMenuSelectionChange.emit(rowData);\n this.onContextMenuSelect.emit({ originalEvent: event.originalEvent, data: rowData, index: event.rowIndex });\n this.contextMenu.show(event.originalEvent);\n this.tableService.onContextMenu(rowData);\n }\n else if (this.contextMenuSelectionMode === 'joint') {\n this.preventSelectionSetterPropagation = true;\n let selected = this.isSelected(rowData);\n let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(rowData, this.dataKey)) : null;\n if (!selected) {\n if (!this.isRowSelectable(rowData, rowIndex)) {\n return;\n }\n if (this.isSingleSelectionMode()) {\n this.selection = rowData;\n this.selectionChange.emit(rowData);\n if (dataKeyValue) {\n this.selectionKeys = {};\n this.selectionKeys[dataKeyValue] = 1;\n }\n }\n else if (this.isMultipleSelectionMode()) {\n this._selection = this.selection ? [...this.selection, rowData] : [rowData];\n this.selectionChange.emit(this.selection);\n if (dataKeyValue) {\n this.selectionKeys[dataKeyValue] = 1;\n }\n }\n }\n this.tableService.onSelectionChange();\n this.contextMenu.show(event.originalEvent);\n this.onContextMenuSelect.emit({ originalEvent: event, data: rowData, index: event.rowIndex });\n }\n }\n }\n selectRange(event, rowIndex) {\n let rangeStart, rangeEnd;\n if (this.anchorRowIndex > rowIndex) {\n rangeStart = rowIndex;\n rangeEnd = this.anchorRowIndex;\n }\n else if (this.anchorRowIndex < rowIndex) {\n rangeStart = this.anchorRowIndex;\n rangeEnd = rowIndex;\n }\n else {\n rangeStart = rowIndex;\n rangeEnd = rowIndex;\n }\n if (this.lazy && this.paginator) {\n rangeStart -= this.first;\n rangeEnd -= this.first;\n }\n let rangeRowsData = [];\n for (let i = rangeStart; i <= rangeEnd; i++) {\n let rangeRowData = this.filteredValue ? this.filteredValue[i] : this.value[i];\n if (!this.isSelected(rangeRowData)) {\n if (!this.isRowSelectable(rangeRowData, rowIndex)) {\n continue;\n }\n rangeRowsData.push(rangeRowData);\n this._selection = [...this.selection, rangeRowData];\n let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(rangeRowData, this.dataKey)) : null;\n if (dataKeyValue) {\n this.selectionKeys[dataKeyValue] = 1;\n }\n }\n }\n this.selectionChange.emit(this.selection);\n this.onRowSelect.emit({ originalEvent: event, data: rangeRowsData, type: 'row' });\n }\n clearSelectionRange(event) {\n let rangeStart, rangeEnd;\n if (this.rangeRowIndex > this.anchorRowIndex) {\n rangeStart = this.anchorRowIndex;\n rangeEnd = this.rangeRowIndex;\n }\n else if (this.rangeRowIndex < this.anchorRowIndex) {\n rangeStart = this.rangeRowIndex;\n rangeEnd = this.anchorRowIndex;\n }\n else {\n rangeStart = this.rangeRowIndex;\n rangeEnd = this.rangeRowIndex;\n }\n for (let i = rangeStart; i <= rangeEnd; i++) {\n let rangeRowData = this.value[i];\n let selectionIndex = this.findIndexInSelection(rangeRowData);\n this._selection = this.selection.filter((val, i) => i != selectionIndex);\n let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(rangeRowData, this.dataKey)) : null;\n if (dataKeyValue) {\n delete this.selectionKeys[dataKeyValue];\n }\n this.onRowUnselect.emit({ originalEvent: event, data: rangeRowData, type: 'row' });\n }\n }\n isSelected(rowData) {\n if (rowData && this.selection) {\n if (this.dataKey) {\n return this.selectionKeys[ObjectUtils.resolveFieldData(rowData, this.dataKey)] !== undefined;\n }\n else {\n if (this.selection instanceof Array)\n return this.findIndexInSelection(rowData) > -1;\n else\n return this.equals(rowData, this.selection);\n }\n }\n return false;\n }\n findIndexInSelection(rowData) {\n let index = -1;\n if (this.selection && this.selection.length) {\n for (let i = 0; i < this.selection.length; i++) {\n if (this.equals(rowData, this.selection[i])) {\n index = i;\n break;\n }\n }\n }\n return index;\n }\n isRowSelectable(data, index) {\n if (this.rowSelectable && !this.rowSelectable({ data, index })) {\n return false;\n }\n return true;\n }\n toggleRowWithRadio(event, rowData) {\n this.preventSelectionSetterPropagation = true;\n if (this.selection != rowData) {\n if (!this.isRowSelectable(rowData, event.rowIndex)) {\n return;\n }\n this._selection = rowData;\n this.selectionChange.emit(this.selection);\n this.onRowSelect.emit({ originalEvent: event.originalEvent, index: event.rowIndex, data: rowData, type: 'radiobutton' });\n if (this.dataKey) {\n this.selectionKeys = {};\n this.selectionKeys[String(ObjectUtils.resolveFieldData(rowData, this.dataKey))] = 1;\n }\n }\n else {\n this._selection = null;\n this.selectionChange.emit(this.selection);\n this.onRowUnselect.emit({ originalEvent: event.originalEvent, index: event.rowIndex, data: rowData, type: 'radiobutton' });\n }\n this.tableService.onSelectionChange();\n if (this.isStateful()) {\n this.saveState();\n }\n }\n toggleRowWithCheckbox(event, rowData) {\n this.selection = this.selection || [];\n let selected = this.isSelected(rowData);\n let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(rowData, this.dataKey)) : null;\n this.preventSelectionSetterPropagation = true;\n if (selected) {\n let selectionIndex = this.findIndexInSelection(rowData);\n this._selection = this.selection.filter((val, i) => i != selectionIndex);\n this.selectionChange.emit(this.selection);\n this.onRowUnselect.emit({ originalEvent: event.originalEvent, index: event.rowIndex, data: rowData, type: 'checkbox' });\n if (dataKeyValue) {\n delete this.selectionKeys[dataKeyValue];\n }\n }\n else {\n if (!this.isRowSelectable(rowData, event.rowIndex)) {\n return;\n }\n this._selection = this.selection ? [...this.selection, rowData] : [rowData];\n this.selectionChange.emit(this.selection);\n this.onRowSelect.emit({ originalEvent: event.originalEvent, index: event.rowIndex, data: rowData, type: 'checkbox' });\n if (dataKeyValue) {\n this.selectionKeys[dataKeyValue] = 1;\n }\n }\n this.tableService.onSelectionChange();\n if (this.isStateful()) {\n this.saveState();\n }\n }\n toggleRowsWithCheckbox(event, check) {\n if (this._selectAll !== null) {\n this.selectAllChange.emit({ originalEvent: event, checked: check });\n }\n else {\n const data = this.selectionPageOnly ? this.dataToRender : (this.filteredValue || this.value || []);\n let selection = this.selectionPageOnly && this._selection ? this._selection.filter(s => !data.some(d => this.equals(s, d))) : [];\n if (check) {\n selection = this.frozenValue ? [...selection, ...this.frozenValue, ...data] : [...selection, ...data];\n selection = this.rowSelectable ? selection.filter((data, index) => this.rowSelectable({ data, index })) : selection;\n }\n this._selection = selection;\n this.preventSelectionSetterPropagation = true;\n this.updateSelectionKeys();\n this.selectionChange.emit(this._selection);\n this.tableService.onSelectionChange();\n this.onHeaderCheckboxToggle.emit({ originalEvent: event, checked: check });\n if (this.isStateful()) {\n this.saveState();\n }\n }\n }\n equals(data1, data2) {\n return this.compareSelectionBy === 'equals' ? (data1 === data2) : ObjectUtils.equals(data1, data2, this.dataKey);\n }\n /* Legacy Filtering for custom elements */\n filter(value, field, matchMode) {\n if (this.filterTimeout) {\n clearTimeout(this.filterTimeout);\n }\n if (!this.isFilterBlank(value)) {\n this.filters[field] = { value: value, matchMode: matchMode };\n }\n else if (this.filters[field]) {\n delete this.filters[field];\n }\n this.filterTimeout = setTimeout(() => {\n this._filter();\n this.filterTimeout = null;\n }, this.filterDelay);\n this.anchorRowIndex = null;\n }\n filterGlobal(value, matchMode) {\n this.filter(value, 'global', matchMode);\n }\n isFilterBlank(filter) {\n if (filter !== null && filter !== undefined) {\n if ((typeof filter === 'string' && filter.trim().length == 0) || (filter instanceof Array && filter.length == 0))\n return true;\n else\n return false;\n }\n return true;\n }\n _filter() {\n if (!this.restoringFilter) {\n this.first = 0;\n this.firstChange.emit(this.first);\n }\n if (this.lazy) {\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\n }\n else {\n if (!this.value) {\n return;\n }\n if (!this.hasFilter()) {\n this.filteredValue = null;\n if (this.paginator) {\n this.totalRecords = this.value ? this.value.length : 0;\n }\n }\n else {\n let globalFilterFieldsArray;\n if (this.filters['global']) {\n if (!this.columns && !this.globalFilterFields)\n throw new Error('Global filtering requires dynamic columns or globalFilterFields to be defined.');\n else\n globalFilterFieldsArray = this.globalFilterFields || this.columns;\n }\n this.filteredValue = [];\n for (let i = 0; i < this.value.length; i++) {\n let localMatch = true;\n let globalMatch = false;\n let localFiltered = false;\n for (let prop in this.filters) {\n if (this.filters.hasOwnProperty(prop) && prop !== 'global') {\n localFiltered = true;\n let filterField = prop;\n let filterMeta = this.filters[filterField];\n if (Array.isArray(filterMeta)) {\n for (let meta of filterMeta) {\n localMatch = this.executeLocalFilter(filterField, this.value[i], meta);\n if ((meta.operator === FilterOperator.OR && localMatch) || (meta.operator === FilterOperator.AND && !localMatch)) {\n break;\n }\n }\n }\n else {\n localMatch = this.executeLocalFilter(filterField, this.value[i], filterMeta);\n }\n if (!localMatch) {\n break;\n }\n }\n }\n if (this.filters['global'] && !globalMatch && globalFilterFieldsArray) {\n for (let j = 0; j < globalFilterFieldsArray.length; j++) {\n let globalFilterField = globalFilterFieldsArray[j].field || globalFilterFieldsArray[j];\n globalMatch = this.filterService.filters[this.filters['global'].matchMode](ObjectUtils.resolveFieldData(this.value[i], globalFilterField), this.filters['global'].value, this.filterLocale);\n if (globalMatch) {\n break;\n }\n }\n }\n let matches;\n if (this.filters['global']) {\n matches = localFiltered ? (localFiltered && localMatch && globalMatch) : globalMatch;\n }\n else {\n matches = localFiltered && localMatch;\n }\n if (matches) {\n this.filteredValue.push(this.value[i]);\n }\n }\n if (this.filteredValue.length === this.value.length) {\n this.filteredValue = null;\n }\n if (this.paginator) {\n this.totalRecords = this.filteredValue ? this.filteredValue.length : this.value ? this.value.length : 0;\n }\n }\n }\n this.onFilter.emit({\n filters: this.filters,\n filteredValue: this.filteredValue || this.value\n });\n this.tableService.onValueChange(this.value);\n if (this.isStateful() && !this.restoringFilter) {\n this.saveState();\n }\n if (this.restoringFilter) {\n this.restoringFilter = false;\n }\n this.cd.markForCheck();\n if (this.scrollable) {\n this.resetScrollTop();\n }\n }\n executeLocalFilter(field, rowData, filterMeta) {\n let filterValue = filterMeta.value;\n let filterMatchMode = filterMeta.matchMode || FilterMatchMode.STARTS_WITH;\n let dataFieldValue = ObjectUtils.resolveFieldData(rowData, field);\n let filterConstraint = this.filterService.filters[filterMatchMode];\n return filterConstraint(dataFieldValue, filterValue, this.filterLocale);\n }\n hasFilter() {\n let empty = true;\n for (let prop in this.filters) {\n if (this.filters.hasOwnProperty(prop)) {\n empty = false;\n break;\n }\n }\n return !empty;\n }\n createLazyLoadMetadata() {\n return {\n first: this.first,\n rows: this.rows,\n sortField: this.sortField,\n sortOrder: this.sortOrder,\n filters: this.filters,\n globalFilter: this.filters && this.filters['global'] ? this.filters['global'].value : null,\n multiSortMeta: this.multiSortMeta\n };\n }\n clear() {\n this._sortField = null;\n this._sortOrder = this.defaultSortOrder;\n this._multiSortMeta = null;\n this.tableService.onSort(null);\n if (this.filters['global']) {\n this.filters['global'].value = null;\n }\n this.filteredValue = null;\n this.tableService.onResetChange();\n this.first = 0;\n this.firstChange.emit(this.first);\n if (this.lazy) {\n this.onLazyLoad.emit(this.createLazyLoadMetadata());\n }\n else {\n this.totalRecords = (this._value ? this._value.length : 0);\n }\n }\n reset() {\n this.clear();\n }\n getExportHeader(column) {\n return column[this.exportHeader] || column.header || column.field;\n }\n exportCSV(options) {\n let data;\n let csv = '';\n let columns = this.columns;\n if (options && options.selectionOnly) {\n data = this.selection || [];\n }\n else {\n data = this.filteredValue || this.value;\n if (this.frozenValue) {\n data = data ? [...this.frozenValue, ...data] : this.frozenValue;\n }\n }\n //headers\n for (let i = 0; i < columns.length; i++) {\n let column = columns[i];\n if (column.exportable !== false && column.field) {\n csv += '\"' + this.getExportHeader(column) + '\"';\n if (i < (columns.length - 1)) {\n csv += this.csvSeparator;\n }\n }\n }\n //body\n data.forEach((record, i) => {\n csv += '\\n';\n for (let i = 0; i < columns.length; i++) {\n let column = columns[i];\n if (column.exportable !== false && column.field) {\n let cellData = ObjectUtils.resolveFieldData(record, column.field);\n if (cellData != null) {\n if (this.exportFunction) {\n cellData = this.exportFunction({\n data: cellData,\n field: column.field\n });\n }\n else\n cellData = String(cellData).replace(/\"/g, '\"\"');\n }\n else\n cellData = '';\n csv += '\"' + cellData + '\"';\n if (i < (columns.length - 1)) {\n csv += this.csvSeparator;\n }\n }\n }\n });\n let blob = new Blob([csv], {\n type: 'text/csv;charset=utf-8;'\n });\n let link = document.createElement(\"a\");\n link.style.display = 'none';\n document.body.appendChild(link);\n if (link.download !== undefined) {\n link.setAttribute('href', URL.createObjectURL(blob));\n link.setAttribute('download', this.exportFilename + '.csv');\n link.click();\n }\n else {\n csv = 'data:text/csv;charset=utf-8,' + csv;\n window.open(encodeURI(csv));\n }\n document.body.removeChild(link);\n }\n resetScrollTop() {\n if (this.virtualScroll)\n this.scrollToVirtualIndex(0);\n else\n this.scrollTo({ top: 0 });\n }\n scrollToVirtualIndex(index) {\n if (this.virtualScrollBody) {\n this.virtualScrollBody.scrollToIndex(index);\n }\n }\n onScrollIndexChange(index) {\n if (this.lazy) {\n if (this.virtualScrollTimeout) {\n clearTimeout(this.virtualScrollTimeout);\n }\n this.virtualScrollTimeout = setTimeout(() => {\n let page = Math.floor(index / this.rows);\n let virtualScrollOffset = page === 0 ? 0 : (page - 1) * this.rows;\n let virtualScrollChunkSize = page === 0 ? this.rows * 2 : this.rows * 3;\n if (page !== this.virtualPage) {\n this.virtualPage = page;\n if (this.lazyLoadOnInit || this.virtualScrollInitialized) {\n this.onLazyLoad.emit({\n first: virtualScrollOffset,\n rows: virtualScrollChunkSize,\n sortField: this.sortField,\n sortOrder: this.sortOrder,\n filters: this.filters,\n globalFilter: this.filters && this.filters['global'] ? this.filters['global'].value : null,\n multiSortMeta: this.multiSortMeta\n });\n }\n else {\n this.virtualScrollInitialized = true;\n }\n }\n }, this.virtualScrollDelay);\n }\n }\n scrollTo(options) {\n if (this.virtualScrollBody) {\n this.virtualScrollBody.scrollTo(options);\n }\n else if (this.wrapperViewChild && this.wrapperViewChild.nativeElement) {\n if (this.wrapperViewChild.nativeElement.scrollTo) {\n this.wrapperViewChild.nativeElement.scrollTo(options);\n }\n else {\n this.wrapperViewChild.nativeElement.scrollLeft = options.left;\n this.wrapperViewChild.nativeElement.scrollTop = options.top;\n }\n }\n }\n updateEditingCell(cell, data, field, index) {\n this.editingCell = cell;\n this.editingCellData = data;\n this.editingCellField = field;\n this.editingCellRowIndex = index;\n this.bindDocumentEditListener();\n }\n isEditingCellValid() {\n return (this.editingCell && DomHandler.find(this.editingCell, '.ng-invalid.ng-dirty').length === 0);\n }\n bindDocumentEditListener() {\n if (!this.documentEditListener) {\n this.documentEditListener = (event) => {\n if (this.editingCell && !this.selfClick && this.isEditingCellValid()) {\n DomHandler.removeClass(this.editingCell, 'p-cell-editing');\n this.editingCell = null;\n this.onEditComplete.emit({ field: this.editingCellField, data: this.editingCellData, originalEvent: event, index: this.editingCellRowIndex });\n this.editingCellField = null;\n this.editingCellData = null;\n this.editingCellRowIndex = null;\n this.unbindDocumentEditListener();\n this.cd.markForCheck();\n if (this.overlaySubscription) {\n this.overlaySubscription.unsubscribe();\n }\n }\n this.selfClick = false;\n };\n document.addEventListener('click', this.documentEditListener);\n }\n }\n unbindDocumentEditListener() {\n if (this.documentEditListener) {\n document.removeEventListener('click', this.documentEditListener);\n this.documentEditListener = null;\n }\n }\n initRowEdit(rowData) {\n let dataKeyValue = String(ObjectUtils.resolveFieldData(rowData, this.dataKey));\n this.editingRowKeys[dataKeyValue] = true;\n }\n saveRowEdit(rowData, rowElement) {\n if (DomHandler.find(rowElement, '.ng-invalid.ng-dirty').length === 0) {\n let dataKeyValue = String(ObjectUtils.resolveFieldData(rowData, this.dataKey));\n delete this.editingRowKeys[dataKeyValue];\n }\n }\n cancelRowEdit(rowData) {\n let dataKeyValue = String(ObjectUtils.resolveFieldData(rowData, this.dataKey));\n delete this.editingRowKeys[dataKeyValue];\n }\n toggleRow(rowData, event) {\n if (!this.dataKey) {\n throw new Error('dataKey must be defined to use row expansion');\n }\n let dataKeyValue = String(ObjectUtils.resolveFieldData(rowData, this.dataKey));\n if (this.expandedRowKeys[dataKeyValue] != null) {\n delete this.expandedRowKeys[dataKeyValue];\n this.onRowCollapse.emit({\n originalEvent: event,\n data: rowData\n });\n }\n else {\n if (this.rowExpandMode === 'single') {\n this.expandedRowKeys = {};\n }\n this.expandedRowKeys[dataKeyValue] = true;\n this.onRowExpand.emit({\n originalEvent: event,\n data: rowData\n });\n }\n if (event) {\n event.preventDefault();\n }\n if (this.isStateful()) {\n this.saveState();\n }\n }\n isRowExpanded(rowData) {\n return this.expandedRowKeys[String(ObjectUtils.resolveFieldData(rowData, this.dataKey))] === true;\n }\n isRowEditing(rowData) {\n return this.editingRowKeys[String(ObjectUtils.resolveFieldData(rowData, this.dataKey))] === true;\n }\n isSingleSelectionMode() {\n return this.selectionMode === 'single';\n }\n isMultipleSelectionMode() {\n return this.selectionMode === 'multiple';\n }\n onColumnResizeBegin(event) {\n let containerLeft = DomHandler.getOffset(this.containerViewChild.nativeElement).left;\n this.resizeColumnElement = event.target.parentElement;\n this.columnResizing = true;\n this.lastResizerHelperX = (event.pageX - containerLeft + this.containerViewChild.nativeElement.scrollLeft);\n this.onColumnResize(event);\n event.preventDefault();\n }\n onColumnResize(event) {\n let containerLeft = DomHandler.getOffset(this.containerViewChild.nativeElement).left;\n DomHandler.addClass(this.containerViewChild.nativeElement, 'p-unselectable-text');\n this.resizeHelperViewChild.nativeElement.style.height = this.containerViewChild.nativeElement.offsetHeight + 'px';\n this.resizeHelperViewChild.nativeElement.style.top = 0 + 'px';\n this.resizeHelperViewChild.nativeElement.style.left = (event.pageX - containerLeft + this.containerViewChild.nativeElement.scrollLeft) + 'px';\n this.resizeHelperViewChild.nativeElement.style.display = 'block';\n }\n onColumnResizeEnd() {\n let delta = this.resizeHelperViewChild.nativeElement.offsetLeft - this.lastResizerHelperX;\n let columnWidth = this.resizeColumnElement.offsetWidth;\n let newColumnWidth = columnWidth + delta;\n let minWidth = this.resizeColumnElement.style.minWidth || 15;\n if (newColumnWidth >= minWidth) {\n if (this.columnResizeMode === 'fit') {\n let nextColumn = this.resizeColumnElement.nextElementSibling;\n let nextColumnWidth = nextColumn.offsetWidth - delta;\n if (newColumnWidth > 15 && nextColumnWidth > 15) {\n this.resizeTableCells(newColumnWidth, nextColumnWidth);\n }\n }\n else if (this.columnResizeMode === 'expand') {\n let tableWidth = this.tableViewChild.nativeElement.offsetWidth + delta;\n this.tableViewChild.nativeElement.style.width = tableWidth + 'px';\n this.tableViewChild.nativeElement.style.minWidth = tableWidth + 'px';\n this.resizeTableCells(newColumnWidth, null);\n }\n this.onColResize.emit({\n element: this.resizeColumnElement,\n delta: delta\n });\n if (this.isStateful()) {\n this.saveState();\n }\n }\n this.resizeHelperViewChild.nativeElement.style.display = 'none';\n DomHandler.removeClass(this.containerViewChild.nativeElement, 'p-unselectable-text');\n }\n resizeTableCells(newColumnWidth, nextColumnWidth) {\n let colIndex = DomHandler.index(this.resizeColumnElement);\n let widths = [];\n const tableHead = DomHandler.findSingle(this.containerViewChild.nativeElement, '.p-datatable-thead');\n let headers = DomHandler.find(tableHead, 'tr > th');\n headers.forEach(header => widths.push(DomHandler.getOuterWidth(header)));\n this.destroyStyleElement();\n this.createStyleElement();\n let innerHTML = '';\n widths.forEach((width, index) => {\n let colWidth = index === colIndex ? newColumnWidth : (nextColumnWidth && index === colIndex + 1) ? nextColumnWidth : width;\n let style = this.scrollable ? `flex: 1 1 ${colWidth}px !important` : `width: ${colWidth}px !important`;\n innerHTML += `\n #${this.id} .p-datatable-thead > tr > th:nth-child(${index + 1}),\n #${this.id} .p-datatable-tbody > tr > td:nth-child(${index + 1}),\n #${this.id} .p-datatable-tfoot > tr > td:nth-child(${index + 1}) {\n ${style}\n }\n `;\n });\n this.styleElement.innerHTML = innerHTML;\n }\n onColumnDragStart(event, columnElement) {\n this.reorderIconWidth = DomHandler.getHiddenElementOuterWidth(this.reorderIndicatorUpViewChild.nativeElement);\n this.reorderIconHeight = DomHandler.getHiddenElementOuterHeight(this.reorderIndicatorDownViewChild.nativeElement);\n this.draggedColumn = columnElement;\n event.dataTransfer.setData('text', 'b'); // For firefox\n }\n onColumnDragEnter(event, dropHeader) {\n if (this.reorderableColumns && this.draggedColumn && dropHeader) {\n event.preventDefault();\n let containerOffset = DomHandler.getOffset(this.containerViewChild.nativeElement);\n let dropHeaderOffset = DomHandler.getOffset(dropHeader);\n if (this.draggedColumn != dropHeader) {\n let dragIndex = DomHandler.indexWithinGroup(this.draggedColumn, 'preorderablecolumn');\n let dropIndex = DomHandler.indexWithinGroup(dropHeader, 'preorderablecolumn');\n let targetLeft = dropHeaderOffset.left - containerOffset.left;\n let targetTop = containerOffset.top - dropHeaderOffset.top;\n let columnCenter = dropHeaderOffset.left + dropHeader.offsetWidth / 2;\n this.reorderIndicatorUpViewChild.nativeElement.style.top = dropHeaderOffset.top - containerOffset.top - (this.reorderIconHeight - 1) + 'px';\n this.reorderIndicatorDownViewChild.nativeElement.style.top = dropHeaderOffset.top - containerOffset.top + dropHeader.offsetHeight + 'px';\n if (event.pageX > columnCenter) {\n this.reorderIndicatorUpViewChild.nativeElement.style.left = (targetLeft + dropHeader.offsetWidth - Math.ceil(this.reorderIconWidth / 2)) + 'px';\n this.reorderIndicatorDownViewChild.nativeElement.style.left = (targetLeft + dropHeader.offsetWidth - Math.ceil(this.reorderIconWidth / 2)) + 'px';\n this.dropPosition = 1;\n }\n else {\n this.reorderIndicatorUpViewChild.nativeElement.style.left = (targetLeft - Math.ceil(this.reorderIconWidth / 2)) + 'px';\n this.reorderIndicatorDownViewChild.nativeElement.style.left = (targetLeft - Math.ceil(this.reorderIconWidth / 2)) + 'px';\n this.dropPosition = -1;\n }\n if ((dropIndex - dragIndex === 1 && this.dropPosition === -1) || (dropIndex - dragIndex === -1 && this.dropPosition === 1)) {\n this.reorderIndicatorUpViewChild.nativeElement.style.display = 'none';\n this.reorderIndicatorDownViewChild.nativeElement.style.display = 'none';\n }\n else {\n this.reorderIndicatorUpViewChild.nativeElement.style.display = 'block';\n this.reorderIndicatorDownViewChild.nativeElement.style.display = 'block';\n }\n }\n else {\n event.dataTransfer.dropEffect = 'none';\n }\n }\n }\n onColumnDragLeave(event) {\n if (this.reorderableColumns && this.draggedColumn) {\n event.preventDefault();\n this.reorderIndicatorUpViewChild.nativeElement.style.display = 'none';\n this.reorderIndicatorDownViewChild.nativeElement.style.display = 'none';\n }\n }\n onColumnDrop(event, dropColumn) {\n event.preventDefault();\n if (this.draggedColumn) {\n let dragIndex = DomHandler.indexWithinGroup(this.draggedColumn, 'preorderablecolumn');\n let dropIndex = DomHandler.indexWithinGroup(dropColumn, 'preorderablecolumn');\n let allowDrop = (dragIndex != dropIndex);\n if (allowDrop && ((dropIndex - dragIndex == 1 && this.dropPosition === -1) || (dragIndex - dropIndex == 1 && this.dropPosition === 1))) {\n allowDrop = false;\n }\n if (allowDrop && ((dropIndex < dragIndex && this.dropPosition === 1))) {\n dropIndex = dropIndex + 1;\n }\n if (allowDrop && ((dropIndex > dragIndex && this.dropPosition === -1))) {\n dropIndex = dropIndex - 1;\n }\n if (allowDrop) {\n ObjectUtils.reorderArray(this.columns, dragIndex, dropIndex);\n this.onColReorder.emit({\n dragIndex: dragIndex,\n dropIndex: dropIndex,\n columns: this.columns\n });\n if (this.isStateful()) {\n this.zone.runOutsideAngular(() => {\n setTimeout(() => {\n this.saveState();\n });\n });\n }\n }\n this.reorderIndicatorUpViewChild.nativeElement.style.display = 'none';\n this.reorderIndicatorDownViewChild.nativeElement.style.display = 'none';\n this.draggedColumn.draggable = false;\n this.draggedColumn = null;\n this.dropPosition = null;\n }\n }\n onRowDragStart(event, index) {\n this.rowDragging = true;\n this.draggedRowIndex = index;\n event.dataTransfer.setData('text', 'b'); // For firefox\n }\n onRowDragOver(event, index, rowElement) {\n if (this.rowDragging && this.draggedRowIndex !== index) {\n let rowY = DomHandler.getOffset(rowElement).top + DomHandler.getWindowScrollTop();\n let pageY = event.pageY;\n let rowMidY = rowY + DomHandler.getOuterHeight(rowElement) / 2;\n let prevRowElement = rowElement.previousElementSibling;\n if (pageY < rowMidY) {\n DomHandler.removeClass(rowElement, 'p-datatable-dragpoint-bottom');\n this.droppedRowIndex = index;\n if (prevRowElement)\n DomHandler.addClass(prevRowElement, 'p-datatable-dragpoint-bottom');\n else\n DomHandler.addClass(rowElement, 'p-datatable-dragpoint-top');\n }\n else {\n if (prevRowElement)\n DomHandler.removeClass(prevRowElement, 'p-datatable-dragpoint-bottom');\n else\n DomHandler.addClass(rowElement, 'p-datatable-dragpoint-top');\n this.droppedRowIndex = index + 1;\n DomHandler.addClass(rowElement, 'p-datatable-dragpoint-bottom');\n }\n }\n }\n onRowDragLeave(event, rowElement) {\n let prevRowElement = rowElement.previousElementSibling;\n if (prevRowElement) {\n DomHandler.removeClass(prevRowElement, 'p-datatable-dragpoint-bottom');\n }\n DomHandler.removeClass(rowElement, 'p-datatable-dragpoint-bottom');\n DomHandler.removeClass(rowElement, 'p-datatable-dragpoint-top');\n }\n onRowDragEnd(event) {\n this.rowDragging = false;\n this.draggedRowIndex = null;\n this.droppedRowIndex = null;\n }\n onRowDrop(event, rowElement) {\n if (this.droppedRowIndex != null) {\n let dropIndex = (this.draggedRowIndex > this.droppedRowIndex) ? this.droppedRowIndex : (this.droppedRowIndex === 0) ? 0 : this.droppedRowIndex - 1;\n ObjectUtils.reorderArray(this.value, this.draggedRowIndex, dropIndex);\n if (this.virtualScroll) {\n this._value = [...this._value];\n }\n this.onRowReorder.emit({\n dragIndex: this.draggedRowIndex,\n dropIndex: dropIndex\n });\n }\n //cleanup\n this.onRowDragLeave(event, rowElement);\n this.onRowDragEnd(event);\n }\n isEmpty() {\n let data = this.filteredValue || this.value;\n return data == null || data.length == 0;\n }\n getBlockableElement() {\n return this.el.nativeElement.children[0];\n }\n getStorage() {\n switch (this.stateStorage) {\n case 'local':\n return window.localStorage;\n case 'session':\n return window.sessionStorage;\n default:\n throw new Error(this.stateStorage + ' is not a valid value for the state storage, supported values are \"local\" and \"session\".');\n }\n }\n isStateful() {\n return this.stateKey != null;\n }\n saveState() {\n const storage = this.getStorage();\n let state = {};\n if (this.paginator) {\n state.first = this.first;\n state.rows = this.rows;\n }\n if (this.sortField) {\n state.sortField = this.sortField;\n state.sortOrder = this.sortOrder;\n }\n if (this.multiSortMeta) {\n state.multiSortMeta = this.multiSortMeta;\n }\n if (this.hasFilter()) {\n state.filters = this.filters;\n }\n if (this.resizableColumns) {\n this.saveColumnWidths(state);\n }\n if (this.reorderableColumns) {\n this.saveColumnOrder(state);\n }\n if (this.selection) {\n state.selection = this.selection;\n }\n if (Object.keys(this.expandedRowKeys).length) {\n state.expandedRowKeys = this.expandedRowKeys;\n }\n storage.setItem(this.stateKey, JSON.stringify(state));\n this.onStateSave.emit(state);\n }\n clearState() {\n const storage = this.getStorage();\n if (this.stateKey) {\n storage.removeItem(this.stateKey);\n }\n }\n restoreState() {\n const storage = this.getStorage();\n const stateString = storage.getItem(this.stateKey);\n const dateFormat = /\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3}Z/;\n const reviver = function (key, value) {\n if (typeof value === \"string\" && dateFormat.test(value)) {\n return new Date(value);\n }\n return value;\n };\n if (stateString) {\n let state = JSON.parse(stateString, reviver);\n if (this.paginator) {\n if (this.first !== undefined) {\n this.first = state.first;\n this.firstChange.emit(this.first);\n }\n if (this.rows !== undefined) {\n this.rows = state.rows;\n this.rowsChange.emit(this.rows);\n }\n }\n if (state.sortField) {\n this.restoringSort = true;\n this._sortField = state.sortField;\n this._sortOrder = state.sortOrder;\n }\n if (state.multiSortMeta) {\n this.restoringSort = true;\n this._multiSortMeta = state.multiSortMeta;\n }\n if (state.filters) {\n this.restoringFilter = true;\n this.filters = state.filters;\n }\n if (this.resizableColumns) {\n this.columnWidthsState = state.columnWidths;\n this.tableWidthState = state.tableWidth;\n }\n if (state.expandedRowKeys) {\n this.expandedRowKeys = state.expandedRowKeys;\n }\n if (state.selection) {\n Promise.resolve(null).then(() => this.selectionChange.emit(state.selection));\n }\n this.stateRestored = true;\n this.onStateRestore.emit(state);\n }\n }\n saveColumnWidths(state) {\n let widths = [];\n let headers = DomHandler.find(this.containerViewChild.nativeElement, '.p-datatable-thead > tr > th');\n headers.forEach(header => widths.push(DomHandler.getOuterWidth(header)));\n state.columnWidths = widths.join(',');\n if (this.columnResizeMode === 'expand') {\n state.tableWidth = DomHandler.getOuterWidth(this.tableViewChild.nativeElement) + 'px';\n }\n }\n restoreColumnWidths() {\n if (this.columnWidthsState) {\n let widths = this.columnWidthsState.split(',');\n if (this.columnResizeMode === 'expand' && this.tableWidthState) {\n this.tableViewChild.nativeElement.style.width = this.tableWidthState;\n this.tableViewChild.nativeElement.style.minWidth = this.tableWidthState;\n this.containerViewChild.nativeElement.style.width = this.tableWidthState;\n }\n if (ObjectUtils.isNotEmpty(widths)) {\n this.createStyleElement();\n let innerHTML = '';\n widths.forEach((width, index) => {\n let style = this.scrollable ? `flex: 1 1 ${width}px !important` : `width: ${width}px !important`;\n innerHTML += `\n #${this.id} .p-datatable-thead > tr > th:nth-child(${index + 1}),\n #${this.id} .p-datatable-tbody > tr > td:nth-child(${index + 1}),\n #${this.id} .p-datatable-tfoot > tr > td:nth-child(${index + 1}) {\n ${style}\n }\n `;\n });\n this.styleElement.innerHTML = innerHTML;\n }\n }\n }\n saveColumnOrder(state) {\n if (this.columns) {\n let columnOrder = [];\n this.columns.map(column => {\n columnOrder.push(column.field || column.key);\n });\n state.columnOrder = columnOrder;\n }\n }\n restoreColumnOrder() {\n const storage = this.getStorage();\n const stateString = storage.getItem(this.stateKey);\n if (stateString) {\n let state = JSON.parse(stateString);\n let columnOrder = state.columnOrder;\n if (columnOrder) {\n let reorderedColumns = [];\n columnOrder.map(key => {\n let col = this.findColumnByKey(key);\n if (col) {\n reorderedColumns.push(col);\n }\n });\n this.columnOrderStateRestored = true;\n this.columns = reorderedColumns;\n }\n }\n }\n findColumnByKey(key) {\n if (this.columns) {\n for (let col of this.columns) {\n if (col.key === key || col.field === key)\n return col;\n else\n continue;\n }\n }\n else {\n return null;\n }\n }\n createStyleElement() {\n this.styleElement = document.createElement('style');\n this.styleElement.type = 'text/css';\n document.head.appendChild(this.styleElement);\n }\n getGroupRowsMeta() {\n return { field: this.groupRowsBy, order: this.groupRowsByOrder };\n }\n createResponsiveStyle() {\n if (!this.responsiveStyleElement) {\n this.responsiveStyleElement = document.createElement('style');\n this.responsiveStyleElement.type = 'text/css';\n document.head.appendChild(this.responsiveStyleElement);\n let innerHTML = `\n@media screen and (max-width: ${this.breakpoint}) {\n #${this.id} .p-datatable-thead > tr > th,\n #${this.id} .p-datatable-tfoot > tr > td {\n display: none !important;\n }\n\n #${this.id} .p-datatable-tbody > tr > td {\n display: flex;\n width: 100% !important;\n align-items: center;\n justify-content: space-between;\n }\n\n #${this.id} .p-datatable-tbody > tr > td:not(:last-child) {\n border: 0 none;\n }\n\n #${this.id}.p-datatable-gridlines .p-datatable-tbody > tr > td:last-child {\n border-top: 0;\n border-right: 0;\n border-left: 0;\n }\n\n #${this.id} .p-datatable-tbody > tr > td > .p-column-title {\n display: block;\n }\n}\n`;\n this.responsiveStyleElement.innerHTML = innerHTML;\n }\n }\n destroyResponsiveStyle() {\n if (this.responsiveStyleElement) {\n document.head.removeChild(this.responsiveStyleElement);\n this.responsiveStyleElement = null;\n }\n }\n destroyStyleElement() {\n if (this.styleElement) {\n document.head.removeChild(this.styleElement);\n this.styleElement = null;\n }\n }\n ngOnDestroy() {\n this.unbindDocumentEditListener();\n this.editingCell = null;\n this.initialized = null;\n this.virtualScrollInitialized = null;\n if (this.virtualScrollSubscription) {\n this.virtualScrollSubscription.unsubscribe();\n }\n this.destroyStyleElement();\n this.destroyResponsiveStyle();\n }\n}\nTable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: Table, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: TableService }, { token: i0.ChangeDetectorRef }, { token: i1.FilterService }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });\nTable.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.7\", type: Table, selector: \"p-table\", inputs: { frozenColumns: \"frozenColumns\", frozenValue: \"frozenValue\", style: \"style\", styleClass: \"styleClass\", tableStyle: \"tableStyle\", tableStyleClass: \"tableStyleClass\", paginator: \"paginator\", pageLinks: \"pageLinks\", rowsPerPageOptions: \"rowsPerPageOptions\", alwaysShowPaginator: \"alwaysShowPaginator\", paginatorPosition: \"paginatorPosition\", paginatorDropdownAppendTo: \"paginatorDropdownAppendTo\", paginatorDropdownScrollHeight: \"paginatorDropdownScrollHeight\", currentPageReportTemplate: \"currentPageReportTemplate\", showCurrentPageReport: \"showCurrentPageReport\", showJumpToPageDropdown: \"showJumpToPageDropdown\", showJumpToPageInput: \"showJumpToPageInput\", showFirstLastIcon: \"showFirstLastIcon\", showPageLinks: \"showPageLinks\", defaultSortOrder: \"defaultSortOrder\", sortMode: \"sortMode\", resetPageOnSort: \"resetPageOnSort\", selectionMode: \"selectionMode\", selectionPageOnly: \"selectionPageOnly\", contextMenuSelection: \"contextMenuSelection\", contextMenuSelectionMode: \"contextMenuSelectionMode\", dataKey: \"dataKey\", metaKeySelection: \"metaKeySelection\", rowSelectable: \"rowSelectable\", rowTrackBy: \"rowTrackBy\", lazy: \"lazy\", lazyLoadOnInit: \"lazyLoadOnInit\", compareSelectionBy: \"compareSelectionBy\", csvSeparator: \"csvSeparator\", exportFilename: \"exportFilename\", filters: \"filters\", globalFilterFields: \"globalFilterFields\", filterDelay: \"filterDelay\", filterLocale: \"filterLocale\", expandedRowKeys: \"expandedRowKeys\", editingRowKeys: \"editingRowKeys\", rowExpandMode: \"rowExpandMode\", scrollable: \"scrollable\", scrollDirection: \"scrollDirection\", rowGroupMode: \"rowGroupMode\", scrollHeight: \"scrollHeight\", virtualScroll: \"virtualScroll\", virtualScrollDelay: \"virtualScrollDelay\", virtualRowHeight: \"virtualRowHeight\", frozenWidth: \"frozenWidth\", responsive: \"responsive\", contextMenu: \"contextMenu\", resizableColumns: \"resizableColumns\", columnResizeMode: \"columnResizeMode\", reorderableColumns: \"reorderableColumns\", loading: \"loading\", loadingIcon: \"loadingIcon\", showLoader: \"showLoader\", rowHover: \"rowHover\", customSort: \"customSort\", showInitialSortBadge: \"showInitialSortBadge\", autoLayout: \"autoLayout\", exportFunction: \"exportFunction\", exportHeader: \"exportHeader\", stateKey: \"stateKey\", stateStorage: \"stateStorage\", editMode: \"editMode\", groupRowsBy: \"groupRowsBy\", groupRowsByOrder: \"groupRowsByOrder\", minBufferPx: \"minBufferPx\", maxBufferPx: \"maxBufferPx\", responsiveLayout: \"responsiveLayout\", breakpoint: \"breakpoint\", value: \"value\", columns: \"columns\", first: \"first\", rows: \"rows\", totalRecords: \"totalRecords\", sortField: \"sortField\", sortOrder: \"sortOrder\", multiSortMeta: \"multiSortMeta\", selection: \"selection\", selectAll: \"selectAll\" }, outputs: { selectAllChange: \"selectAllChange\", selectionChange: \"selectionChange\", contextMenuSelectionChange: \"contextMenuSelectionChange\", onRowSelect: \"onRowSelect\", onRowUnselect: \"onRowUnselect\", onPage: \"onPage\", onSort: \"onSort\", onFilter: \"onFilter\", onLazyLoad: \"onLazyLoad\", onRowExpand: \"onRowExpand\", onRowCollapse: \"onRowCollapse\", onContextMenuSelect: \"onContextMenuSelect\", onColResize: \"onColResize\", onColReorder: \"onColReorder\", onRowReorder: \"onRowReorder\", onEditInit: \"onEditInit\", onEditComplete: \"onEditComplete\", onEditCancel: \"onEditCancel\", onHeaderCheckboxToggle: \"onHeaderCheckboxToggle\", sortFunction: \"sortFunction\", firstChange: \"firstChange\", rowsChange: \"rowsChange\", onStateSave: \"onStateSave\", onStateRestore: \"onStateRestore\" }, host: { classAttribute: \"p-element\" }, providers: [TableService], queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"containerViewChild\", first: true, predicate: [\"container\"], descendants: true }, { propertyName: \"resizeHelperViewChild\", first: true, predicate: [\"resizeHelper\"], descendants: true }, { propertyName: \"reorderIndicatorUpViewChild\", first: true, predicate: [\"reorderIndicatorUp\"], descendants: true }, { propertyName: \"reorderIndicatorDownViewChild\", first: true, predicate: [\"reorderIndicatorDown\"], descendants: true }, { propertyName: \"wrapperViewChild\", first: true, predicate: [\"wrapper\"], descendants: true }, { propertyName: \"tableViewChild\", first: true, predicate: [\"table\"], descendants: true }, { propertyName: \"tableHeaderViewChild\", first: true, predicate: [\"tableHeader\"], descendants: true }, { propertyName: \"virtualScrollBody\", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n
    \n
    \n \n
    \n
    \n \n
    \n \n\n
    \n \n \n \n \n \n \n \n \n \n \n
    \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n\n \n\n
    \n \n
    \n\n
    \n \n \n
    \n `, isInline: true, styles: [\".p-datatable{position:relative}.p-datatable table{border-collapse:collapse;min-width:100%;table-layout:fixed}.p-datatable .p-sortable-column{cursor:pointer;-webkit-user-select:none;user-select:none}.p-datatable .p-sortable-column .p-column-title,.p-datatable .p-sortable-column .p-sortable-column-icon,.p-datatable .p-sortable-column .p-sortable-column-badge{vertical-align:middle}.p-datatable .p-sortable-column .p-sortable-column-badge{display:inline-flex;align-items:center;justify-content:center}.p-datatable-auto-layout>.p-datatable-wrapper{overflow-x:auto}.p-datatable-auto-layout>.p-datatable-wrapper>table{table-layout:auto}.p-datatable-responsive-scroll>.p-datatable-wrapper{overflow-x:auto}.p-datatable-responsive-scroll>.p-datatable-wrapper>table,.p-datatable-auto-layout>.p-datatable-wrapper>table{table-layout:auto}.p-datatable-hoverable-rows .p-selectable-row{cursor:pointer}.p-datatable-scrollable .p-datatable-wrapper{position:relative;overflow:auto}.p-datatable-scrollable .p-datatable-thead,.p-datatable-scrollable .p-datatable-tbody,.p-datatable-scrollable .p-datatable-tfoot{display:block}.p-datatable-scrollable .p-datatable-thead>tr,.p-datatable-scrollable .p-datatable-tbody>tr,.p-datatable-scrollable .p-datatable-tfoot>tr{display:flex;flex-wrap:nowrap;width:100%}.p-datatable-scrollable .p-datatable-thead>tr>th,.p-datatable-scrollable .p-datatable-tbody>tr>td,.p-datatable-scrollable .p-datatable-tfoot>tr>td{display:flex;flex:1 1 0;align-items:center}.p-datatable-scrollable>.p-datatable-wrapper>.p-datatable-table>.p-datatable-thead,.p-datatable-scrollable>.p-datatable-wrapper>.p-datatable-virtual-scrollable-body>.cdk-virtual-scroll-content-wrapper>.p-datatable-table>.p-datatable-thead{position:sticky;top:0;z-index:1}.p-datatable-scrollable>.p-datatable-wrapper>.p-datatable-table>.p-datatable-frozen-tbody{position:sticky;z-index:1}.p-datatable-scrollable>.p-datatable-wrapper>.p-datatable-table>.p-datatable-tfoot{position:sticky;bottom:0;z-index:1}.p-datatable-scrollable .p-frozen-column{position:sticky;background:inherit}.p-datatable-scrollable th.p-frozen-column{z-index:1}.p-datatable-scrollable-both .p-datatable-thead>tr>th,.p-datatable-scrollable-both .p-datatable-tbody>tr>td,.p-datatable-scrollable-both .p-datatable-tfoot>tr>td,.p-datatable-scrollable-horizontal .p-datatable-thead>tr>th .p-datatable-scrollable-horizontal .p-datatable-tbody>tr>td,.p-datatable-scrollable-horizontal .p-datatable-tfoot>tr>td{flex:0 0 auto}.p-datatable-flex-scrollable{display:flex;flex-direction:column;height:100%}.p-datatable-flex-scrollable .p-datatable-wrapper{display:flex;flex-direction:column;flex:1;height:100%}.p-datatable-scrollable .p-rowgroup-header{position:sticky;z-index:1}.p-datatable-scrollable.p-datatable-grouped-header .p-datatable-thead,.p-datatable-scrollable.p-datatable-grouped-footer .p-datatable-tfoot{display:table;border-collapse:collapse;width:100%;table-layout:fixed}.p-datatable-scrollable.p-datatable-grouped-header .p-datatable-thead>tr,.p-datatable-scrollable.p-datatable-grouped-footer .p-datatable-tfoot>tr{display:table-row}.p-datatable-scrollable.p-datatable-grouped-header .p-datatable-thead>tr>th,.p-datatable-scrollable.p-datatable-grouped-footer .p-datatable-tfoot>tr>td{display:table-cell}.p-datatable-flex-scrollable{display:flex;flex-direction:column;flex:1;height:100%}.p-datatable-flex-scrollable .p-datatable-virtual-scrollable-body{flex:1}.p-datatable-resizable>.p-datatable-wrapper{overflow-x:auto}.p-datatable-resizable .p-datatable-thead>tr>th,.p-datatable-resizable .p-datatable-tfoot>tr>td,.p-datatable-resizable .p-datatable-tbody>tr>td{overflow:hidden;white-space:nowrap}.p-datatable-resizable .p-resizable-column:not(.p-frozen-column){background-clip:padding-box;position:relative}.p-datatable-resizable-fit .p-resizable-column:last-child .p-column-resizer{display:none}.p-datatable .p-column-resizer{display:block;position:absolute!important;top:0;right:0;margin:0;width:.5rem;height:100%;padding:0;cursor:col-resize;border:1px solid transparent}.p-datatable .p-column-resizer-helper{width:1px;position:absolute;z-index:10;display:none}.p-datatable .p-row-editor-init,.p-datatable .p-row-editor-save,.p-datatable .p-row-editor-cancel,.p-datatable .p-row-toggler{display:inline-flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-datatable-reorder-indicator-up,.p-datatable-reorder-indicator-down{position:absolute;display:none}.p-datatable-reorderablerow-handle,[pReorderableColumn]{cursor:move}.p-datatable .p-datatable-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}.p-column-filter-row{display:flex;align-items:center;width:100%}.p-column-filter-menu{display:inline-flex}.p-column-filter-row p-columnfilterformelement{flex:1 1 auto;width:1%}.p-column-filter-menu-button,.p-column-filter-clear-button{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;text-decoration:none;overflow:hidden;position:relative}.p-column-filter-overlay{position:absolute;top:0;left:0}.p-column-filter-row-items{margin:0;padding:0;list-style:none}.p-column-filter-row-item{cursor:pointer}.p-column-filter-add-button,.p-column-filter-remove-button{justify-content:center}.p-column-filter-add-button .p-button-label,.p-column-filter-remove-button .p-button-label{flex-grow:0}.p-column-filter-buttonbar{display:flex;align-items:center;justify-content:space-between}.p-column-filter-buttonbar .p-button{width:auto}.p-datatable .p-datatable-tbody>tr>td>.p-column-title{display:none}cdk-virtual-scroll-viewport{outline:0 none}\\n\"], components: [{ type: i0.forwardRef(function () { return i2.Paginator; }), selector: \"p-paginator\", inputs: [\"pageLinkSize\", \"style\", \"styleClass\", \"alwaysShow\", \"templateLeft\", \"templateRight\", \"dropdownAppendTo\", \"dropdownScrollHeight\", \"currentPageReportTemplate\", \"showCurrentPageReport\", \"showFirstLastIcon\", \"totalRecords\", \"rows\", \"rowsPerPageOptions\", \"showJumpToPageDropdown\", \"showJumpToPageInput\", \"showPageLinks\", \"dropdownItemTemplate\", \"first\"], outputs: [\"onPageChange\"] }, { type: i0.forwardRef(function () { return TableBody; }), selector: \"[pTableBody]\", inputs: [\"pTableBody\", \"pTableBodyTemplate\", \"value\", \"frozen\", \"frozenRows\"] }, { type: i0.forwardRef(function () { return i3.CdkVirtualScrollViewport; }), selector: \"cdk-virtual-scroll-viewport\", inputs: [\"orientation\", \"appendOnly\"], outputs: [\"scrolledIndexChange\"] }], directives: [{ type: i0.forwardRef(function () { return i4.NgStyle; }), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i0.forwardRef(function () { return i4.NgClass; }), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i0.forwardRef(function () { return i4.NgIf; }), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i0.forwardRef(function () { return i4.NgTemplateOutlet; }), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i0.forwardRef(function () { return i3.CdkFixedSizeVirtualScroll; }), selector: \"cdk-virtual-scroll-viewport[itemSize]\", inputs: [\"itemSize\", \"minBufferPx\", \"maxBufferPx\"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: Table, decorators: [{\n type: Component,\n args: [{ selector: 'p-table', template: `\n
    \n
    \n \n
    \n
    \n \n
    \n \n\n
    \n \n \n \n \n \n \n \n \n \n \n
    \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n\n \n\n
    \n \n
    \n\n
    \n \n \n
    \n `, providers: [TableService], changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, host: {\n 'class': 'p-element'\n }, styles: [\".p-datatable{position:relative}.p-datatable table{border-collapse:collapse;min-width:100%;table-layout:fixed}.p-datatable .p-sortable-column{cursor:pointer;-webkit-user-select:none;user-select:none}.p-datatable .p-sortable-column .p-column-title,.p-datatable .p-sortable-column .p-sortable-column-icon,.p-datatable .p-sortable-column .p-sortable-column-badge{vertical-align:middle}.p-datatable .p-sortable-column .p-sortable-column-badge{display:inline-flex;align-items:center;justify-content:center}.p-datatable-auto-layout>.p-datatable-wrapper{overflow-x:auto}.p-datatable-auto-layout>.p-datatable-wrapper>table{table-layout:auto}.p-datatable-responsive-scroll>.p-datatable-wrapper{overflow-x:auto}.p-datatable-responsive-scroll>.p-datatable-wrapper>table,.p-datatable-auto-layout>.p-datatable-wrapper>table{table-layout:auto}.p-datatable-hoverable-rows .p-selectable-row{cursor:pointer}.p-datatable-scrollable .p-datatable-wrapper{position:relative;overflow:auto}.p-datatable-scrollable .p-datatable-thead,.p-datatable-scrollable .p-datatable-tbody,.p-datatable-scrollable .p-datatable-tfoot{display:block}.p-datatable-scrollable .p-datatable-thead>tr,.p-datatable-scrollable .p-datatable-tbody>tr,.p-datatable-scrollable .p-datatable-tfoot>tr{display:flex;flex-wrap:nowrap;width:100%}.p-datatable-scrollable .p-datatable-thead>tr>th,.p-datatable-scrollable .p-datatable-tbody>tr>td,.p-datatable-scrollable .p-datatable-tfoot>tr>td{display:flex;flex:1 1 0;align-items:center}.p-datatable-scrollable>.p-datatable-wrapper>.p-datatable-table>.p-datatable-thead,.p-datatable-scrollable>.p-datatable-wrapper>.p-datatable-virtual-scrollable-body>.cdk-virtual-scroll-content-wrapper>.p-datatable-table>.p-datatable-thead{position:sticky;top:0;z-index:1}.p-datatable-scrollable>.p-datatable-wrapper>.p-datatable-table>.p-datatable-frozen-tbody{position:sticky;z-index:1}.p-datatable-scrollable>.p-datatable-wrapper>.p-datatable-table>.p-datatable-tfoot{position:sticky;bottom:0;z-index:1}.p-datatable-scrollable .p-frozen-column{position:sticky;background:inherit}.p-datatable-scrollable th.p-frozen-column{z-index:1}.p-datatable-scrollable-both .p-datatable-thead>tr>th,.p-datatable-scrollable-both .p-datatable-tbody>tr>td,.p-datatable-scrollable-both .p-datatable-tfoot>tr>td,.p-datatable-scrollable-horizontal .p-datatable-thead>tr>th .p-datatable-scrollable-horizontal .p-datatable-tbody>tr>td,.p-datatable-scrollable-horizontal .p-datatable-tfoot>tr>td{flex:0 0 auto}.p-datatable-flex-scrollable{display:flex;flex-direction:column;height:100%}.p-datatable-flex-scrollable .p-datatable-wrapper{display:flex;flex-direction:column;flex:1;height:100%}.p-datatable-scrollable .p-rowgroup-header{position:sticky;z-index:1}.p-datatable-scrollable.p-datatable-grouped-header .p-datatable-thead,.p-datatable-scrollable.p-datatable-grouped-footer .p-datatable-tfoot{display:table;border-collapse:collapse;width:100%;table-layout:fixed}.p-datatable-scrollable.p-datatable-grouped-header .p-datatable-thead>tr,.p-datatable-scrollable.p-datatable-grouped-footer .p-datatable-tfoot>tr{display:table-row}.p-datatable-scrollable.p-datatable-grouped-header .p-datatable-thead>tr>th,.p-datatable-scrollable.p-datatable-grouped-footer .p-datatable-tfoot>tr>td{display:table-cell}.p-datatable-flex-scrollable{display:flex;flex-direction:column;flex:1;height:100%}.p-datatable-flex-scrollable .p-datatable-virtual-scrollable-body{flex:1}.p-datatable-resizable>.p-datatable-wrapper{overflow-x:auto}.p-datatable-resizable .p-datatable-thead>tr>th,.p-datatable-resizable .p-datatable-tfoot>tr>td,.p-datatable-resizable .p-datatable-tbody>tr>td{overflow:hidden;white-space:nowrap}.p-datatable-resizable .p-resizable-column:not(.p-frozen-column){background-clip:padding-box;position:relative}.p-datatable-resizable-fit .p-resizable-column:last-child .p-column-resizer{display:none}.p-datatable .p-column-resizer{display:block;position:absolute!important;top:0;right:0;margin:0;width:.5rem;height:100%;padding:0;cursor:col-resize;border:1px solid transparent}.p-datatable .p-column-resizer-helper{width:1px;position:absolute;z-index:10;display:none}.p-datatable .p-row-editor-init,.p-datatable .p-row-editor-save,.p-datatable .p-row-editor-cancel,.p-datatable .p-row-toggler{display:inline-flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-datatable-reorder-indicator-up,.p-datatable-reorder-indicator-down{position:absolute;display:none}.p-datatable-reorderablerow-handle,[pReorderableColumn]{cursor:move}.p-datatable .p-datatable-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}.p-column-filter-row{display:flex;align-items:center;width:100%}.p-column-filter-menu{display:inline-flex}.p-column-filter-row p-columnfilterformelement{flex:1 1 auto;width:1%}.p-column-filter-menu-button,.p-column-filter-clear-button{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;text-decoration:none;overflow:hidden;position:relative}.p-column-filter-overlay{position:absolute;top:0;left:0}.p-column-filter-row-items{margin:0;padding:0;list-style:none}.p-column-filter-row-item{cursor:pointer}.p-column-filter-add-button,.p-column-filter-remove-button{justify-content:center}.p-column-filter-add-button .p-button-label,.p-column-filter-remove-button .p-button-label{flex-grow:0}.p-column-filter-buttonbar{display:flex;align-items:center;justify-content:space-between}.p-column-filter-buttonbar .p-button{width:auto}.p-datatable .p-datatable-tbody>tr>td>.p-column-title{display:none}cdk-virtual-scroll-viewport{outline:0 none}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: TableService }, { type: i0.ChangeDetectorRef }, { type: i1.FilterService }, { type: i1.OverlayService }]; }, propDecorators: { frozenColumns: [{\n type: Input\n }], frozenValue: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], tableStyle: [{\n type: Input\n }], tableStyleClass: [{\n type: Input\n }], paginator: [{\n type: Input\n }], pageLinks: [{\n type: Input\n }], rowsPerPageOptions: [{\n type: Input\n }], alwaysShowPaginator: [{\n type: Input\n }], paginatorPosition: [{\n type: Input\n }], paginatorDropdownAppendTo: [{\n type: Input\n }], paginatorDropdownScrollHeight: [{\n type: Input\n }], currentPageReportTemplate: [{\n type: Input\n }], showCurrentPageReport: [{\n type: Input\n }], showJumpToPageDropdown: [{\n type: Input\n }], showJumpToPageInput: [{\n type: Input\n }], showFirstLastIcon: [{\n type: Input\n }], showPageLinks: [{\n type: Input\n }], defaultSortOrder: [{\n type: Input\n }], sortMode: [{\n type: Input\n }], resetPageOnSort: [{\n type: Input\n }], selectionMode: [{\n type: Input\n }], selectionPageOnly: [{\n type: Input\n }], selectAllChange: [{\n type: Output\n }], selectionChange: [{\n type: Output\n }], contextMenuSelection: [{\n type: Input\n }], contextMenuSelectionChange: [{\n type: Output\n }], contextMenuSelectionMode: [{\n type: Input\n }], dataKey: [{\n type: Input\n }], metaKeySelection: [{\n type: Input\n }], rowSelectable: [{\n type: Input\n }], rowTrackBy: [{\n type: Input\n }], lazy: [{\n type: Input\n }], lazyLoadOnInit: [{\n type: Input\n }], compareSelectionBy: [{\n type: Input\n }], csvSeparator: [{\n type: Input\n }], exportFilename: [{\n type: Input\n }], filters: [{\n type: Input\n }], globalFilterFields: [{\n type: Input\n }], filterDelay: [{\n type: Input\n }], filterLocale: [{\n type: Input\n }], expandedRowKeys: [{\n type: Input\n }], editingRowKeys: [{\n type: Input\n }], rowExpandMode: [{\n type: Input\n }], scrollable: [{\n type: Input\n }], scrollDirection: [{\n type: Input\n }], rowGroupMode: [{\n type: Input\n }], scrollHeight: [{\n type: Input\n }], virtualScroll: [{\n type: Input\n }], virtualScrollDelay: [{\n type: Input\n }], virtualRowHeight: [{\n type: Input\n }], frozenWidth: [{\n type: Input\n }], responsive: [{\n type: Input\n }], contextMenu: [{\n type: Input\n }], resizableColumns: [{\n type: Input\n }], columnResizeMode: [{\n type: Input\n }], reorderableColumns: [{\n type: Input\n }], loading: [{\n type: Input\n }], loadingIcon: [{\n type: Input\n }], showLoader: [{\n type: Input\n }], rowHover: [{\n type: Input\n }], customSort: [{\n type: Input\n }], showInitialSortBadge: [{\n type: Input\n }], autoLayout: [{\n type: Input\n }], exportFunction: [{\n type: Input\n }], exportHeader: [{\n type: Input\n }], stateKey: [{\n type: Input\n }], stateStorage: [{\n type: Input\n }], editMode: [{\n type: Input\n }], groupRowsBy: [{\n type: Input\n }], groupRowsByOrder: [{\n type: Input\n }], minBufferPx: [{\n type: Input\n }], maxBufferPx: [{\n type: Input\n }], responsiveLayout: [{\n type: Input\n }], breakpoint: [{\n type: Input\n }], onRowSelect: [{\n type: Output\n }], onRowUnselect: [{\n type: Output\n }], onPage: [{\n type: Output\n }], onSort: [{\n type: Output\n }], onFilter: [{\n type: Output\n }], onLazyLoad: [{\n type: Output\n }], onRowExpand: [{\n type: Output\n }], onRowCollapse: [{\n type: Output\n }], onContextMenuSelect: [{\n type: Output\n }], onColResize: [{\n type: Output\n }], onColReorder: [{\n type: Output\n }], onRowReorder: [{\n type: Output\n }], onEditInit: [{\n type: Output\n }], onEditComplete: [{\n type: Output\n }], onEditCancel: [{\n type: Output\n }], onHeaderCheckboxToggle: [{\n type: Output\n }], sortFunction: [{\n type: Output\n }], firstChange: [{\n type: Output\n }], rowsChange: [{\n type: Output\n }], onStateSave: [{\n type: Output\n }], onStateRestore: [{\n type: Output\n }], containerViewChild: [{\n type: ViewChild,\n args: ['container']\n }], resizeHelperViewChild: [{\n type: ViewChild,\n args: ['resizeHelper']\n }], reorderIndicatorUpViewChild: [{\n type: ViewChild,\n args: ['reorderIndicatorUp']\n }], reorderIndicatorDownViewChild: [{\n type: ViewChild,\n args: ['reorderIndicatorDown']\n }], wrapperViewChild: [{\n type: ViewChild,\n args: ['wrapper']\n }], tableViewChild: [{\n type: ViewChild,\n args: ['table']\n }], tableHeaderViewChild: [{\n type: ViewChild,\n args: ['tableHeader']\n }], virtualScrollBody: [{\n type: ViewChild,\n args: [CdkVirtualScrollViewport]\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }], value: [{\n type: Input\n }], columns: [{\n type: Input\n }], first: [{\n type: Input\n }], rows: [{\n type: Input\n }], totalRecords: [{\n type: Input\n }], sortField: [{\n type: Input\n }], sortOrder: [{\n type: Input\n }], multiSortMeta: [{\n type: Input\n }], selection: [{\n type: Input\n }], selectAll: [{\n type: Input\n }] } });\nclass TableBody {\n constructor(dt, tableService, cd, el) {\n this.dt = dt;\n this.tableService = tableService;\n this.cd = cd;\n this.el = el;\n this.subscription = this.dt.tableService.valueSource$.subscribe(() => {\n if (this.dt.virtualScroll) {\n this.cd.detectChanges();\n }\n });\n }\n get value() {\n return this._value;\n }\n set value(val) {\n this._value = val;\n if (this.frozenRows) {\n this.updateFrozenRowStickyPosition();\n }\n if (this.dt.scrollable && this.dt.rowGroupMode === 'subheader') {\n this.updateFrozenRowGroupHeaderStickyPosition();\n }\n }\n ngAfterViewInit() {\n if (this.frozenRows) {\n this.updateFrozenRowStickyPosition();\n }\n if (this.dt.scrollable && this.dt.rowGroupMode === 'subheader') {\n this.updateFrozenRowGroupHeaderStickyPosition();\n }\n }\n shouldRenderRowGroupHeader(value, rowData, i) {\n let currentRowFieldData = ObjectUtils.resolveFieldData(rowData, this.dt.groupRowsBy);\n let prevRowData = value[i - 1];\n if (prevRowData) {\n let previousRowFieldData = ObjectUtils.resolveFieldData(prevRowData, this.dt.groupRowsBy);\n return currentRowFieldData !== previousRowFieldData;\n }\n else {\n return true;\n }\n }\n shouldRenderRowGroupFooter(value, rowData, i) {\n let currentRowFieldData = ObjectUtils.resolveFieldData(rowData, this.dt.groupRowsBy);\n let nextRowData = value[i + 1];\n if (nextRowData) {\n let nextRowFieldData = ObjectUtils.resolveFieldData(nextRowData, this.dt.groupRowsBy);\n return currentRowFieldData !== nextRowFieldData;\n }\n else {\n return true;\n }\n }\n shouldRenderRowspan(value, rowData, i) {\n let currentRowFieldData = ObjectUtils.resolveFieldData(rowData, this.dt.groupRowsBy);\n let prevRowData = value[i - 1];\n if (prevRowData) {\n let previousRowFieldData = ObjectUtils.resolveFieldData(prevRowData, this.dt.groupRowsBy);\n return currentRowFieldData !== previousRowFieldData;\n }\n else {\n return true;\n }\n }\n calculateRowGroupSize(value, rowData, index) {\n let currentRowFieldData = ObjectUtils.resolveFieldData(rowData, this.dt.groupRowsBy);\n let nextRowFieldData = currentRowFieldData;\n let groupRowSpan = 0;\n while (currentRowFieldData === nextRowFieldData) {\n groupRowSpan++;\n let nextRowData = value[++index];\n if (nextRowData) {\n nextRowFieldData = ObjectUtils.resolveFieldData(nextRowData, this.dt.groupRowsBy);\n }\n else {\n break;\n }\n }\n return groupRowSpan === 1 ? null : groupRowSpan;\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n updateFrozenRowStickyPosition() {\n this.el.nativeElement.style.top = DomHandler.getOuterHeight(this.el.nativeElement.previousElementSibling) + 'px';\n }\n updateFrozenRowGroupHeaderStickyPosition() {\n if (this.el.nativeElement.previousElementSibling) {\n let tableHeaderHeight = DomHandler.getOuterHeight(this.el.nativeElement.previousElementSibling);\n this.dt.rowGroupHeaderStyleObject.top = tableHeaderHeight + 'px';\n }\n }\n}\nTableBody.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: TableBody, deps: [{ token: Table }, { token: TableService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nTableBody.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.7\", type: TableBody, selector: \"[pTableBody]\", inputs: { columns: [\"pTableBody\", \"columns\"], template: [\"pTableBodyTemplate\", \"template\"], value: \"value\", frozen: \"frozen\", frozenRows: \"frozenRows\" }, host: { classAttribute: \"p-element\" }, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, directives: [{ type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i4.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i3.CdkVirtualForOf, selector: \"[cdkVirtualFor][cdkVirtualForOf]\", inputs: [\"cdkVirtualForOf\", \"cdkVirtualForTrackBy\", \"cdkVirtualForTemplate\", \"cdkVirtualForTemplateCacheSize\"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: TableBody, decorators: [{\n type: Component,\n args: [{\n selector: '[pTableBody]',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'p-element'\n }\n }]\n }], ctorParameters: function () { return [{ type: Table }, { type: TableService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { columns: [{\n type: Input,\n args: [\"pTableBody\"]\n }], template: [{\n type: Input,\n args: [\"pTableBodyTemplate\"]\n }], value: [{\n type: Input\n }], frozen: [{\n type: Input\n }], frozenRows: [{\n type: Input\n }] } });\nclass RowGroupHeader {\n constructor(dt) {\n this.dt = dt;\n }\n get getFrozenRowGroupHeaderStickyPosition() {\n return this.dt.rowGroupHeaderStyleObject ? this.dt.rowGroupHeaderStyleObject.top : '';\n }\n}\nRowGroupHeader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: RowGroupHeader, deps: [{ token: Table }], target: i0.ɵɵFactoryTarget.Directive });\nRowGroupHeader.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.7\", type: RowGroupHeader, selector: \"[pRowGroupHeader]\", host: { properties: { \"style.top\": \"getFrozenRowGroupHeaderStickyPosition\" }, classAttribute: \"p-rowgroup-header p-element\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: RowGroupHeader, decorators: [{\n type: Directive,\n args: [{\n selector: '[pRowGroupHeader]',\n host: {\n 'class': 'p-rowgroup-header p-element',\n '[style.top]': \"getFrozenRowGroupHeaderStickyPosition\"\n }\n }]\n }], ctorParameters: function () { return [{ type: Table }]; } });\nclass FrozenColumn {\n constructor(el) {\n this.el = el;\n this.alignFrozen = \"left\";\n this._frozen = true;\n }\n get frozen() {\n return this._frozen;\n }\n set frozen(val) {\n this._frozen = val;\n this.updateStickyPosition();\n }\n ngAfterViewInit() {\n this.updateStickyPosition();\n }\n updateStickyPosition() {\n if (this._frozen) {\n if (this.alignFrozen === 'right') {\n let right = 0;\n let next = this.el.nativeElement.nextElementSibling;\n if (next) {\n right = DomHandler.getOuterWidth(next) + (parseFloat(next.style.right) || 0);\n }\n this.el.nativeElement.style.right = right + 'px';\n }\n else {\n let left = 0;\n let prev = this.el.nativeElement.previousElementSibling;\n if (prev) {\n left = DomHandler.getOuterWidth(prev) + (parseFloat(prev.style.left) || 0);\n }\n this.el.nativeElement.style.left = left + 'px';\n }\n let filterRow = this.el.nativeElement.parentElement.nextElementSibling;\n if (filterRow) {\n let index = DomHandler.index(this.el.nativeElement);\n if (filterRow.children && filterRow.children[index]) {\n filterRow.children[index].style.left = this.el.nativeElement.style.left;\n filterRow.children[index].style.right = this.el.nativeElement.style.right;\n }\n }\n }\n }\n}\nFrozenColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: FrozenColumn, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nFrozenColumn.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.7\", type: FrozenColumn, selector: \"[pFrozenColumn]\", inputs: { frozen: \"frozen\", alignFrozen: \"alignFrozen\" }, host: { properties: { \"class.p-frozen-column\": \"frozen\" }, classAttribute: \"p-element\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: FrozenColumn, decorators: [{\n type: Directive,\n args: [{\n selector: '[pFrozenColumn]',\n host: {\n 'class': 'p-element',\n '[class.p-frozen-column]': 'frozen'\n }\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { frozen: [{\n type: Input\n }], alignFrozen: [{\n type: Input\n }] } });\nclass SortableColumn {\n constructor(dt) {\n this.dt = dt;\n if (this.isEnabled()) {\n this.subscription = this.dt.tableService.sortSource$.subscribe(sortMeta => {\n this.updateSortState();\n });\n }\n }\n ngOnInit() {\n if (this.isEnabled()) {\n this.updateSortState();\n }\n }\n updateSortState() {\n this.sorted = this.dt.isSorted(this.field);\n this.sortOrder = this.sorted ? (this.dt.sortOrder === 1 ? 'ascending' : 'descending') : 'none';\n }\n onClick(event) {\n if (this.isEnabled() && !this.isFilterElement(event.target)) {\n this.updateSortState();\n this.dt.sort({\n originalEvent: event,\n field: this.field\n });\n DomHandler.clearSelection();\n }\n }\n onEnterKey(event) {\n this.onClick(event);\n }\n isEnabled() {\n return this.pSortableColumnDisabled !== true;\n }\n isFilterElement(element) {\n return DomHandler.hasClass(element, 'pi-filter-icon') || DomHandler.hasClass(element, 'p-column-filter-menu-button');\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\nSortableColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: SortableColumn, deps: [{ token: Table }], target: i0.ɵɵFactoryTarget.Directive });\nSortableColumn.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.7\", type: SortableColumn, selector: \"[pSortableColumn]\", inputs: { field: [\"pSortableColumn\", \"field\"], pSortableColumnDisabled: \"pSortableColumnDisabled\" }, host: { listeners: { \"click\": \"onClick($event)\", \"keydown.enter\": \"onEnterKey($event)\" }, properties: { \"class.p-sortable-column\": \"isEnabled()\", \"class.p-highlight\": \"sorted\", \"attr.tabindex\": \"isEnabled() ? \\\"0\\\" : null\", \"attr.role\": \"\\\"columnheader\\\"\", \"attr.aria-sort\": \"sortOrder\" }, classAttribute: \"p-element\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: SortableColumn, decorators: [{\n type: Directive,\n args: [{\n selector: '[pSortableColumn]',\n host: {\n 'class': 'p-element',\n '[class.p-sortable-column]': 'isEnabled()',\n '[class.p-highlight]': 'sorted',\n '[attr.tabindex]': 'isEnabled() ? \"0\" : null',\n '[attr.role]': '\"columnheader\"',\n '[attr.aria-sort]': 'sortOrder'\n }\n }]\n }], ctorParameters: function () { return [{ type: Table }]; }, propDecorators: { field: [{\n type: Input,\n args: [\"pSortableColumn\"]\n }], pSortableColumnDisabled: [{\n type: Input\n }], onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }], onEnterKey: [{\n type: HostListener,\n args: ['keydown.enter', ['$event']]\n }] } });\nclass SortIcon {\n constructor(dt, cd) {\n this.dt = dt;\n this.cd = cd;\n this.subscription = this.dt.tableService.sortSource$.subscribe(sortMeta => {\n this.updateSortState();\n });\n }\n ngOnInit() {\n this.updateSortState();\n }\n onClick(event) {\n event.preventDefault();\n }\n updateSortState() {\n if (this.dt.sortMode === 'single') {\n this.sortOrder = this.dt.isSorted(this.field) ? this.dt.sortOrder : 0;\n }\n else if (this.dt.sortMode === 'multiple') {\n let sortMeta = this.dt.getSortMeta(this.field);\n this.sortOrder = sortMeta ? sortMeta.order : 0;\n }\n this.cd.markForCheck();\n }\n getMultiSortMetaIndex() {\n let multiSortMeta = this.dt._multiSortMeta;\n let index = -1;\n if (multiSortMeta && this.dt.sortMode === 'multiple' && (this.dt.showInitialSortBadge || multiSortMeta.length > 1)) {\n for (let i = 0; i < multiSortMeta.length; i++) {\n let meta = multiSortMeta[i];\n if (meta.field === this.field || meta.field === this.field) {\n index = i;\n break;\n }\n }\n }\n return index;\n }\n getBadgeValue() {\n let index = this.getMultiSortMetaIndex();\n return this.dt.groupRowsBy && index > -1 ? index : index + 1;\n }\n isMultiSorted() {\n return this.dt.sortMode === 'multiple' && this.getMultiSortMetaIndex() > -1;\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\nSortIcon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: SortIcon, deps: [{ token: Table }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nSortIcon.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.7\", type: SortIcon, selector: \"p-sortIcon\", inputs: { field: \"field\" }, host: { classAttribute: \"p-element\" }, ngImport: i0, template: `\n \n {{getBadgeValue()}}\n `, isInline: true, directives: [{ type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: SortIcon, decorators: [{\n type: Component,\n args: [{\n selector: 'p-sortIcon',\n template: `\n \n {{getBadgeValue()}}\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'p-element'\n }\n }]\n }], ctorParameters: function () { return [{ type: Table }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { field: [{\n type: Input\n }] } });\nclass SelectableRow {\n constructor(dt, tableService) {\n this.dt = dt;\n this.tableService = tableService;\n if (this.isEnabled()) {\n this.subscription = this.dt.tableService.selectionSource$.subscribe(() => {\n this.selected = this.dt.isSelected(this.data);\n });\n }\n }\n ngOnInit() {\n if (this.isEnabled()) {\n this.selected = this.dt.isSelected(this.data);\n }\n }\n onClick(event) {\n if (this.isEnabled()) {\n this.dt.handleRowClick({\n originalEvent: event,\n rowData: this.data,\n rowIndex: this.index\n });\n }\n }\n onTouchEnd(event) {\n if (this.isEnabled()) {\n this.dt.handleRowTouchEnd(event);\n }\n }\n onArrowDownKeyDown(event) {\n if (!this.isEnabled()) {\n return;\n }\n const row = event.currentTarget;\n const nextRow = this.findNextSelectableRow(row);\n if (nextRow) {\n nextRow.focus();\n }\n event.preventDefault();\n }\n onArrowUpKeyDown(event) {\n if (!this.isEnabled()) {\n return;\n }\n const row = event.currentTarget;\n const prevRow = this.findPrevSelectableRow(row);\n if (prevRow) {\n prevRow.focus();\n }\n event.preventDefault();\n }\n onEnterKeyDown(event) {\n if (!this.isEnabled()) {\n return;\n }\n this.dt.handleRowClick({\n originalEvent: event,\n rowData: this.data,\n rowIndex: this.index\n });\n }\n onPageDownKeyDown() {\n if (this.dt.virtualScroll) {\n this.dt.virtualScrollBody.elementRef.nativeElement.focus();\n }\n }\n onSpaceKeydown() {\n if (this.dt.virtualScroll && !this.dt.editingCell) {\n this.dt.virtualScrollBody.elementRef.nativeElement.focus();\n }\n }\n findNextSelectableRow(row) {\n let nextRow = row.nextElementSibling;\n if (nextRow) {\n if (DomHandler.hasClass(nextRow, 'p-selectable-row'))\n return nextRow;\n else\n return this.findNextSelectableRow(nextRow);\n }\n else {\n return null;\n }\n }\n findPrevSelectableRow(row) {\n let prevRow = row.previousElementSibling;\n if (prevRow) {\n if (DomHandler.hasClass(prevRow, 'p-selectable-row'))\n return prevRow;\n else\n return this.findPrevSelectableRow(prevRow);\n }\n else {\n return null;\n }\n }\n isEnabled() {\n return this.pSelectableRowDisabled !== true;\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\nSelectableRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: SelectableRow, deps: [{ token: Table }, { token: TableService }], target: i0.ɵɵFactoryTarget.Directive });\nSelectableRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.7\", type: SelectableRow, selector: \"[pSelectableRow]\", inputs: { data: [\"pSelectableRow\", \"data\"], index: [\"pSelectableRowIndex\", \"index\"], pSelectableRowDisabled: \"pSelectableRowDisabled\" }, host: { listeners: { \"click\": \"onClick($event)\", \"touchend\": \"onTouchEnd($event)\", \"keydown.arrowdown\": \"onArrowDownKeyDown($event)\", \"keydown.arrowup\": \"onArrowUpKeyDown($event)\", \"keydown.enter\": \"onEnterKeyDown($event)\", \"keydown.shift.enter\": \"onEnterKeyDown($event)\", \"keydown.meta.enter\": \"onEnterKeyDown($event)\", \"keydown.pagedown\": \"onPageDownKeyDown()\", \"keydown.pageup\": \"onPageDownKeyDown()\", \"keydown.home\": \"onPageDownKeyDown()\", \"keydown.end\": \"onPageDownKeyDown()\", \"keydown.space\": \"onSpaceKeydown()\" }, properties: { \"class.p-selectable-row\": \"isEnabled()\", \"class.p-highlight\": \"selected\", \"attr.tabindex\": \"isEnabled() ? 0 : undefined\" }, classAttribute: \"p-element\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: SelectableRow, decorators: [{\n type: Directive,\n args: [{\n selector: '[pSelectableRow]',\n host: {\n 'class': 'p-element',\n '[class.p-selectable-row]': 'isEnabled()',\n '[class.p-highlight]': 'selected',\n '[attr.tabindex]': 'isEnabled() ? 0 : undefined'\n }\n }]\n }], ctorParameters: function () { return [{ type: Table }, { type: TableService }]; }, propDecorators: { data: [{\n type: Input,\n args: [\"pSelectableRow\"]\n }], index: [{\n type: Input,\n args: [\"pSelectableRowIndex\"]\n }], pSelectableRowDisabled: [{\n type: Input\n }], onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }], onTouchEnd: [{\n type: HostListener,\n args: ['touchend', ['$event']]\n }], onArrowDownKeyDown: [{\n type: HostListener,\n args: ['keydown.arrowdown', ['$event']]\n }], onArrowUpKeyDown: [{\n type: HostListener,\n args: ['keydown.arrowup', ['$event']]\n }], onEnterKeyDown: [{\n type: HostListener,\n args: ['keydown.enter', ['$event']]\n }, {\n type: HostListener,\n args: ['keydown.shift.enter', ['$event']]\n }, {\n type: HostListener,\n args: ['keydown.meta.enter', ['$event']]\n }], onPageDownKeyDown: [{\n type: HostListener,\n args: ['keydown.pagedown']\n }, {\n type: HostListener,\n args: ['keydown.pageup']\n }, {\n type: HostListener,\n args: ['keydown.home']\n }, {\n type: HostListener,\n args: ['keydown.end']\n }], onSpaceKeydown: [{\n type: HostListener,\n args: ['keydown.space']\n }] } });\nclass SelectableRowDblClick {\n constructor(dt, tableService) {\n this.dt = dt;\n this.tableService = tableService;\n if (this.isEnabled()) {\n this.subscription = this.dt.tableService.selectionSource$.subscribe(() => {\n this.selected = this.dt.isSelected(this.data);\n });\n }\n }\n ngOnInit() {\n if (this.isEnabled()) {\n this.selected = this.dt.isSelected(this.data);\n }\n }\n onClick(event) {\n if (this.isEnabled()) {\n this.dt.handleRowClick({\n originalEvent: event,\n rowData: this.data,\n rowIndex: this.index\n });\n }\n }\n isEnabled() {\n return this.pSelectableRowDisabled !== true;\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\nSelectableRowDblClick.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: SelectableRowDblClick, deps: [{ token: Table }, { token: TableService }], target: i0.ɵɵFactoryTarget.Directive });\nSelectableRowDblClick.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.7\", type: SelectableRowDblClick, selector: \"[pSelectableRowDblClick]\", inputs: { data: [\"pSelectableRowDblClick\", \"data\"], index: [\"pSelectableRowIndex\", \"index\"], pSelectableRowDisabled: \"pSelectableRowDisabled\" }, host: { listeners: { \"dblclick\": \"onClick($event)\" }, properties: { \"class.p-selectable-row\": \"isEnabled()\", \"class.p-highlight\": \"selected\" }, classAttribute: \"p-element\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: SelectableRowDblClick, decorators: [{\n type: Directive,\n args: [{\n selector: '[pSelectableRowDblClick]',\n host: {\n 'class': 'p-element',\n '[class.p-selectable-row]': 'isEnabled()',\n '[class.p-highlight]': 'selected'\n }\n }]\n }], ctorParameters: function () { return [{ type: Table }, { type: TableService }]; }, propDecorators: { data: [{\n type: Input,\n args: [\"pSelectableRowDblClick\"]\n }], index: [{\n type: Input,\n args: [\"pSelectableRowIndex\"]\n }], pSelectableRowDisabled: [{\n type: Input\n }], onClick: [{\n type: HostListener,\n args: ['dblclick', ['$event']]\n }] } });\nclass ContextMenuRow {\n constructor(dt, tableService, el) {\n this.dt = dt;\n this.tableService = tableService;\n this.el = el;\n if (this.isEnabled()) {\n this.subscription = this.dt.tableService.contextMenuSource$.subscribe((data) => {\n this.selected = this.dt.equals(this.data, data);\n });\n }\n }\n onContextMenu(event) {\n if (this.isEnabled()) {\n this.dt.handleRowRightClick({\n originalEvent: event,\n rowData: this.data,\n rowIndex: this.index\n });\n this.el.nativeElement.focus();\n event.preventDefault();\n }\n }\n isEnabled() {\n return this.pContextMenuRowDisabled !== true;\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\nContextMenuRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: ContextMenuRow, deps: [{ token: Table }, { token: TableService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nContextMenuRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.7\", type: ContextMenuRow, selector: \"[pContextMenuRow]\", inputs: { data: [\"pContextMenuRow\", \"data\"], index: [\"pContextMenuRowIndex\", \"index\"], pContextMenuRowDisabled: \"pContextMenuRowDisabled\" }, host: { listeners: { \"contextmenu\": \"onContextMenu($event)\" }, properties: { \"class.p-highlight-contextmenu\": \"selected\", \"attr.tabindex\": \"isEnabled() ? 0 : undefined\" }, classAttribute: \"p-element\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: ContextMenuRow, decorators: [{\n type: Directive,\n args: [{\n selector: '[pContextMenuRow]',\n host: {\n 'class': 'p-element',\n '[class.p-highlight-contextmenu]': 'selected',\n '[attr.tabindex]': 'isEnabled() ? 0 : undefined'\n }\n }]\n }], ctorParameters: function () { return [{ type: Table }, { type: TableService }, { type: i0.ElementRef }]; }, propDecorators: { data: [{\n type: Input,\n args: [\"pContextMenuRow\"]\n }], index: [{\n type: Input,\n args: [\"pContextMenuRowIndex\"]\n }], pContextMenuRowDisabled: [{\n type: Input\n }], onContextMenu: [{\n type: HostListener,\n args: ['contextmenu', ['$event']]\n }] } });\nclass RowToggler {\n constructor(dt) {\n this.dt = dt;\n }\n onClick(event) {\n if (this.isEnabled()) {\n this.dt.toggleRow(this.data, event);\n event.preventDefault();\n }\n }\n isEnabled() {\n return this.pRowTogglerDisabled !== true;\n }\n}\nRowToggler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: RowToggler, deps: [{ token: Table }], target: i0.ɵɵFactoryTarget.Directive });\nRowToggler.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.7\", type: RowToggler, selector: \"[pRowToggler]\", inputs: { data: [\"pRowToggler\", \"data\"], pRowTogglerDisabled: \"pRowTogglerDisabled\" }, host: { listeners: { \"click\": \"onClick($event)\" }, classAttribute: \"p-element\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: RowToggler, decorators: [{\n type: Directive,\n args: [{\n selector: '[pRowToggler]',\n host: {\n 'class': 'p-element'\n }\n }]\n }], ctorParameters: function () { return [{ type: Table }]; }, propDecorators: { data: [{\n type: Input,\n args: ['pRowToggler']\n }], pRowTogglerDisabled: [{\n type: Input\n }], onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] } });\nclass ResizableColumn {\n constructor(dt, el, zone) {\n this.dt = dt;\n this.el = el;\n this.zone = zone;\n }\n ngAfterViewInit() {\n if (this.isEnabled()) {\n DomHandler.addClass(this.el.nativeElement, 'p-resizable-column');\n this.resizer = document.createElement('span');\n this.resizer.className = 'p-column-resizer';\n this.el.nativeElement.appendChild(this.resizer);\n this.zone.runOutsideAngular(() => {\n this.resizerMouseDownListener = this.onMouseDown.bind(this);\n this.resizer.addEventListener('mousedown', this.resizerMouseDownListener);\n });\n }\n }\n bindDocumentEvents() {\n this.zone.runOutsideAngular(() => {\n this.documentMouseMoveListener = this.onDocumentMouseMove.bind(this);\n document.addEventListener('mousemove', this.documentMouseMoveListener);\n this.documentMouseUpListener = this.onDocumentMouseUp.bind(this);\n document.addEventListener('mouseup', this.documentMouseUpListener);\n });\n }\n unbindDocumentEvents() {\n if (this.documentMouseMoveListener) {\n document.removeEventListener('mousemove', this.documentMouseMoveListener);\n this.documentMouseMoveListener = null;\n }\n if (this.documentMouseUpListener) {\n document.removeEventListener('mouseup', this.documentMouseUpListener);\n this.documentMouseUpListener = null;\n }\n }\n onMouseDown(event) {\n if (event.which === 1) {\n this.dt.onColumnResizeBegin(event);\n this.bindDocumentEvents();\n }\n }\n onDocumentMouseMove(event) {\n this.dt.onColumnResize(event);\n }\n onDocumentMouseUp(event) {\n this.dt.onColumnResizeEnd();\n this.unbindDocumentEvents();\n }\n isEnabled() {\n return this.pResizableColumnDisabled !== true;\n }\n ngOnDestroy() {\n if (this.resizerMouseDownListener) {\n this.resizer.removeEventListener('mousedown', this.resizerMouseDownListener);\n }\n this.unbindDocumentEvents();\n }\n}\nResizableColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: ResizableColumn, deps: [{ token: Table }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nResizableColumn.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.7\", type: ResizableColumn, selector: \"[pResizableColumn]\", inputs: { pResizableColumnDisabled: \"pResizableColumnDisabled\" }, host: { classAttribute: \"p-element\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: ResizableColumn, decorators: [{\n type: Directive,\n args: [{\n selector: '[pResizableColumn]',\n host: {\n 'class': 'p-element'\n }\n }]\n }], ctorParameters: function () { return [{ type: Table }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { pResizableColumnDisabled: [{\n type: Input\n }] } });\nclass ReorderableColumn {\n constructor(dt, el, zone) {\n this.dt = dt;\n this.el = el;\n this.zone = zone;\n }\n ngAfterViewInit() {\n if (this.isEnabled()) {\n this.bindEvents();\n }\n }\n bindEvents() {\n this.zone.runOutsideAngular(() => {\n this.mouseDownListener = this.onMouseDown.bind(this);\n this.el.nativeElement.addEventListener('mousedown', this.mouseDownListener);\n this.dragStartListener = this.onDragStart.bind(this);\n this.el.nativeElement.addEventListener('dragstart', this.dragStartListener);\n this.dragOverListener = this.onDragEnter.bind(this);\n this.el.nativeElement.addEventListener('dragover', this.dragOverListener);\n this.dragEnterListener = this.onDragEnter.bind(this);\n this.el.nativeElement.addEventListener('dragenter', this.dragEnterListener);\n this.dragLeaveListener = this.onDragLeave.bind(this);\n this.el.nativeElement.addEventListener('dragleave', this.dragLeaveListener);\n });\n }\n unbindEvents() {\n if (this.mouseDownListener) {\n document.removeEventListener('mousedown', this.mouseDownListener);\n this.mouseDownListener = null;\n }\n if (this.dragOverListener) {\n document.removeEventListener('dragover', this.dragOverListener);\n this.dragOverListener = null;\n }\n if (this.dragEnterListener) {\n document.removeEventListener('dragenter', this.dragEnterListener);\n this.dragEnterListener = null;\n }\n if (this.dragEnterListener) {\n document.removeEventListener('dragenter', this.dragEnterListener);\n this.dragEnterListener = null;\n }\n if (this.dragLeaveListener) {\n document.removeEventListener('dragleave', this.dragLeaveListener);\n this.dragLeaveListener = null;\n }\n }\n onMouseDown(event) {\n if (event.target.nodeName === 'INPUT' || event.target.nodeName === 'TEXTAREA' || DomHandler.hasClass(event.target, 'p-column-resizer'))\n this.el.nativeElement.draggable = false;\n else\n this.el.nativeElement.draggable = true;\n }\n onDragStart(event) {\n this.dt.onColumnDragStart(event, this.el.nativeElement);\n }\n onDragOver(event) {\n event.preventDefault();\n }\n onDragEnter(event) {\n this.dt.onColumnDragEnter(event, this.el.nativeElement);\n }\n onDragLeave(event) {\n this.dt.onColumnDragLeave(event);\n }\n onDrop(event) {\n if (this.isEnabled()) {\n this.dt.onColumnDrop(event, this.el.nativeElement);\n }\n }\n isEnabled() {\n return this.pReorderableColumnDisabled !== true;\n }\n ngOnDestroy() {\n this.unbindEvents();\n }\n}\nReorderableColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: ReorderableColumn, deps: [{ token: Table }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nReorderableColumn.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.7\", type: ReorderableColumn, selector: \"[pReorderableColumn]\", inputs: { pReorderableColumnDisabled: \"pReorderableColumnDisabled\" }, host: { listeners: { \"drop\": \"onDrop($event)\" }, classAttribute: \"p-element\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: ReorderableColumn, decorators: [{\n type: Directive,\n args: [{\n selector: '[pReorderableColumn]',\n host: {\n 'class': 'p-element'\n }\n }]\n }], ctorParameters: function () { return [{ type: Table }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { pReorderableColumnDisabled: [{\n type: Input\n }], onDrop: [{\n type: HostListener,\n args: ['drop', ['$event']]\n }] } });\nclass EditableColumn {\n constructor(dt, el, zone) {\n this.dt = dt;\n this.el = el;\n this.zone = zone;\n }\n ngAfterViewInit() {\n if (this.isEnabled()) {\n DomHandler.addClass(this.el.nativeElement, 'p-editable-column');\n }\n }\n onClick(event) {\n if (this.isEnabled()) {\n this.dt.selfClick = true;\n if (this.dt.editingCell) {\n if (this.dt.editingCell !== this.el.nativeElement) {\n if (!this.dt.isEditingCellValid()) {\n return;\n }\n this.closeEditingCell(true, event);\n this.openCell();\n }\n }\n else {\n this.openCell();\n }\n }\n }\n openCell() {\n this.dt.updateEditingCell(this.el.nativeElement, this.data, this.field, this.rowIndex);\n DomHandler.addClass(this.el.nativeElement, 'p-cell-editing');\n this.dt.onEditInit.emit({ field: this.field, data: this.data, index: this.rowIndex });\n this.zone.runOutsideAngular(() => {\n setTimeout(() => {\n let focusCellSelector = this.pFocusCellSelector || 'input, textarea, select';\n let focusableElement = DomHandler.findSingle(this.el.nativeElement, focusCellSelector);\n if (focusableElement) {\n focusableElement.focus();\n }\n }, 50);\n });\n this.overlayEventListener = (e) => {\n if (this.el && this.el.nativeElement.contains(e.target)) {\n this.dt.selfClick = true;\n }\n };\n this.dt.overlaySubscription = this.dt.overlayService.clickObservable.subscribe(this.overlayEventListener);\n }\n closeEditingCell(completed, event) {\n if (completed)\n this.dt.onEditComplete.emit({ field: this.dt.editingCellField, data: this.dt.editingCellData, originalEvent: event, index: this.dt.editingCellRowIndex });\n else\n this.dt.onEditCancel.emit({ field: this.dt.editingCellField, data: this.dt.editingCellData, originalEvent: event, index: this.dt.editingCellRowIndex });\n DomHandler.removeClass(this.dt.editingCell, 'p-cell-editing');\n this.dt.editingCell = null;\n this.dt.editingCellData = null;\n this.dt.editingCellField = null;\n this.dt.unbindDocumentEditListener();\n if (this.dt.overlaySubscription) {\n this.dt.overlaySubscription.unsubscribe();\n }\n }\n onEnterKeyDown(event) {\n if (this.isEnabled()) {\n if (this.dt.isEditingCellValid()) {\n this.closeEditingCell(true, event);\n }\n event.preventDefault();\n }\n }\n onEscapeKeyDown(event) {\n if (this.isEnabled()) {\n if (this.dt.isEditingCellValid()) {\n this.closeEditingCell(false, event);\n }\n event.preventDefault();\n }\n }\n onShiftKeyDown(event) {\n if (this.isEnabled()) {\n if (event.shiftKey)\n this.moveToPreviousCell(event);\n else {\n this.moveToNextCell(event);\n }\n }\n }\n onArrowDown(event) {\n if (this.isEnabled()) {\n let currentCell = this.findCell(event.target);\n if (currentCell) {\n let cellIndex = DomHandler.index(currentCell);\n let targetCell = this.findNextEditableColumnByIndex(currentCell, cellIndex);\n if (targetCell) {\n if (this.dt.isEditingCellValid()) {\n this.closeEditingCell(true, event);\n }\n DomHandler.invokeElementMethod(event.target, 'blur');\n DomHandler.invokeElementMethod(targetCell, 'click');\n }\n event.preventDefault();\n }\n }\n }\n onArrowUp(event) {\n if (this.isEnabled()) {\n let currentCell = this.findCell(event.target);\n if (currentCell) {\n let cellIndex = DomHandler.index(currentCell);\n let targetCell = this.findPrevEditableColumnByIndex(currentCell, cellIndex);\n if (targetCell) {\n if (this.dt.isEditingCellValid()) {\n this.closeEditingCell(true, event);\n }\n DomHandler.invokeElementMethod(event.target, 'blur');\n DomHandler.invokeElementMethod(targetCell, 'click');\n }\n event.preventDefault();\n }\n }\n }\n onArrowLeft(event) {\n if (this.isEnabled()) {\n this.moveToPreviousCell(event);\n }\n }\n onArrowRight(event) {\n if (this.isEnabled()) {\n this.moveToNextCell(event);\n }\n }\n findCell(element) {\n if (element) {\n let cell = element;\n while (cell && !DomHandler.hasClass(cell, 'p-cell-editing')) {\n cell = cell.parentElement;\n }\n return cell;\n }\n else {\n return null;\n }\n }\n moveToPreviousCell(event) {\n let currentCell = this.findCell(event.target);\n if (currentCell) {\n let targetCell = this.findPreviousEditableColumn(currentCell);\n if (targetCell) {\n if (this.dt.isEditingCellValid()) {\n this.closeEditingCell(true, event);\n }\n DomHandler.invokeElementMethod(event.target, 'blur');\n DomHandler.invokeElementMethod(targetCell, 'click');\n event.preventDefault();\n }\n }\n }\n moveToNextCell(event) {\n let currentCell = this.findCell(event.target);\n if (currentCell) {\n let targetCell = this.findNextEditableColumn(currentCell);\n if (targetCell) {\n if (this.dt.isEditingCellValid()) {\n this.closeEditingCell(true, event);\n }\n DomHandler.invokeElementMethod(event.target, 'blur');\n DomHandler.invokeElementMethod(targetCell, 'click');\n event.preventDefault();\n }\n }\n }\n findPreviousEditableColumn(cell) {\n let prevCell = cell.previousElementSibling;\n if (!prevCell) {\n let previousRow = cell.parentElement.previousElementSibling;\n if (previousRow) {\n prevCell = previousRow.lastElementChild;\n }\n }\n if (prevCell) {\n if (DomHandler.hasClass(prevCell, 'p-editable-column'))\n return prevCell;\n else\n return this.findPreviousEditableColumn(prevCell);\n }\n else {\n return null;\n }\n }\n findNextEditableColumn(cell) {\n let nextCell = cell.nextElementSibling;\n if (!nextCell) {\n let nextRow = cell.parentElement.nextElementSibling;\n if (nextRow) {\n nextCell = nextRow.firstElementChild;\n }\n }\n if (nextCell) {\n if (DomHandler.hasClass(nextCell, 'p-editable-column'))\n return nextCell;\n else\n return this.findNextEditableColumn(nextCell);\n }\n else {\n return null;\n }\n }\n findNextEditableColumnByIndex(cell, index) {\n let nextRow = cell.parentElement.nextElementSibling;\n if (nextRow) {\n let nextCell = nextRow.children[index];\n if (nextCell && DomHandler.hasClass(nextCell, 'p-editable-column')) {\n return nextCell;\n }\n return null;\n }\n else {\n return null;\n }\n }\n findPrevEditableColumnByIndex(cell, index) {\n let prevRow = cell.parentElement.previousElementSibling;\n if (prevRow) {\n let prevCell = prevRow.children[index];\n if (prevCell && DomHandler.hasClass(prevCell, 'p-editable-column')) {\n return prevCell;\n }\n return null;\n }\n else {\n return null;\n }\n }\n isEnabled() {\n return this.pEditableColumnDisabled !== true;\n }\n ngOnDestroy() {\n if (this.dt.overlaySubscription) {\n this.dt.overlaySubscription.unsubscribe();\n }\n }\n}\nEditableColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: EditableColumn, deps: [{ token: Table }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nEditableColumn.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.7\", type: EditableColumn, selector: \"[pEditableColumn]\", inputs: { data: [\"pEditableColumn\", \"data\"], field: [\"pEditableColumnField\", \"field\"], rowIndex: [\"pEditableColumnRowIndex\", \"rowIndex\"], pEditableColumnDisabled: \"pEditableColumnDisabled\", pFocusCellSelector: \"pFocusCellSelector\" }, host: { listeners: { \"click\": \"onClick($event)\", \"keydown.enter\": \"onEnterKeyDown($event)\", \"keydown.escape\": \"onEscapeKeyDown($event)\", \"keydown.tab\": \"onShiftKeyDown($event)\", \"keydown.shift.tab\": \"onShiftKeyDown($event)\", \"keydown.meta.tab\": \"onShiftKeyDown($event)\", \"keydown.arrowdown\": \"onArrowDown($event)\", \"keydown.arrowup\": \"onArrowUp($event)\", \"keydown.arrowleft\": \"onArrowLeft($event)\", \"keydown.arrowright\": \"onArrowRight($event)\" }, classAttribute: \"p-element\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: EditableColumn, decorators: [{\n type: Directive,\n args: [{\n selector: '[pEditableColumn]',\n host: {\n 'class': 'p-element'\n }\n }]\n }], ctorParameters: function () { return [{ type: Table }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { data: [{\n type: Input,\n args: [\"pEditableColumn\"]\n }], field: [{\n type: Input,\n args: [\"pEditableColumnField\"]\n }], rowIndex: [{\n type: Input,\n args: [\"pEditableColumnRowIndex\"]\n }], pEditableColumnDisabled: [{\n type: Input\n }], pFocusCellSelector: [{\n type: Input\n }], onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }], onEnterKeyDown: [{\n type: HostListener,\n args: ['keydown.enter', ['$event']]\n }], onEscapeKeyDown: [{\n type: HostListener,\n args: ['keydown.escape', ['$event']]\n }], onShiftKeyDown: [{\n type: HostListener,\n args: ['keydown.tab', ['$event']]\n }, {\n type: HostListener,\n args: ['keydown.shift.tab', ['$event']]\n }, {\n type: HostListener,\n args: ['keydown.meta.tab', ['$event']]\n }], onArrowDown: [{\n type: HostListener,\n args: ['keydown.arrowdown', ['$event']]\n }], onArrowUp: [{\n type: HostListener,\n args: ['keydown.arrowup', ['$event']]\n }], onArrowLeft: [{\n type: HostListener,\n args: ['keydown.arrowleft', ['$event']]\n }], onArrowRight: [{\n type: HostListener,\n args: ['keydown.arrowright', ['$event']]\n }] } });\nclass EditableRow {\n constructor(el) {\n this.el = el;\n }\n isEnabled() {\n return this.pEditableRowDisabled !== true;\n }\n}\nEditableRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: EditableRow, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nEditableRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.7\", type: EditableRow, selector: \"[pEditableRow]\", inputs: { data: [\"pEditableRow\", \"data\"], pEditableRowDisabled: \"pEditableRowDisabled\" }, host: { classAttribute: \"p-element\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: EditableRow, decorators: [{\n type: Directive,\n args: [{\n selector: '[pEditableRow]',\n host: {\n 'class': 'p-element'\n }\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { data: [{\n type: Input,\n args: [\"pEditableRow\"]\n }], pEditableRowDisabled: [{\n type: Input\n }] } });\nclass InitEditableRow {\n constructor(dt, editableRow) {\n this.dt = dt;\n this.editableRow = editableRow;\n }\n onClick(event) {\n this.dt.initRowEdit(this.editableRow.data);\n event.preventDefault();\n }\n}\nInitEditableRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: InitEditableRow, deps: [{ token: Table }, { token: EditableRow }], target: i0.ɵɵFactoryTarget.Directive });\nInitEditableRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.7\", type: InitEditableRow, selector: \"[pInitEditableRow]\", host: { listeners: { \"click\": \"onClick($event)\" }, classAttribute: \"p-element\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: InitEditableRow, decorators: [{\n type: Directive,\n args: [{\n selector: '[pInitEditableRow]',\n host: {\n 'class': 'p-element'\n }\n }]\n }], ctorParameters: function () { return [{ type: Table }, { type: EditableRow }]; }, propDecorators: { onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] } });\nclass SaveEditableRow {\n constructor(dt, editableRow) {\n this.dt = dt;\n this.editableRow = editableRow;\n }\n onClick(event) {\n this.dt.saveRowEdit(this.editableRow.data, this.editableRow.el.nativeElement);\n event.preventDefault();\n }\n}\nSaveEditableRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: SaveEditableRow, deps: [{ token: Table }, { token: EditableRow }], target: i0.ɵɵFactoryTarget.Directive });\nSaveEditableRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.7\", type: SaveEditableRow, selector: \"[pSaveEditableRow]\", host: { listeners: { \"click\": \"onClick($event)\" }, classAttribute: \"p-element\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: SaveEditableRow, decorators: [{\n type: Directive,\n args: [{\n selector: '[pSaveEditableRow]',\n host: {\n 'class': 'p-element'\n }\n }]\n }], ctorParameters: function () { return [{ type: Table }, { type: EditableRow }]; }, propDecorators: { onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] } });\nclass CancelEditableRow {\n constructor(dt, editableRow) {\n this.dt = dt;\n this.editableRow = editableRow;\n }\n onClick(event) {\n this.dt.cancelRowEdit(this.editableRow.data);\n event.preventDefault();\n }\n}\nCancelEditableRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: CancelEditableRow, deps: [{ token: Table }, { token: EditableRow }], target: i0.ɵɵFactoryTarget.Directive });\nCancelEditableRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.7\", type: CancelEditableRow, selector: \"[pCancelEditableRow]\", host: { listeners: { \"click\": \"onClick($event)\" }, classAttribute: \"p-element\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: CancelEditableRow, decorators: [{\n type: Directive,\n args: [{\n selector: '[pCancelEditableRow]',\n host: {\n 'class': 'p-element'\n }\n }]\n }], ctorParameters: function () { return [{ type: Table }, { type: EditableRow }]; }, propDecorators: { onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] } });\nclass CellEditor {\n constructor(dt, editableColumn, editableRow) {\n this.dt = dt;\n this.editableColumn = editableColumn;\n this.editableRow = editableRow;\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'input':\n this.inputTemplate = item.template;\n break;\n case 'output':\n this.outputTemplate = item.template;\n break;\n }\n });\n }\n get editing() {\n return (this.dt.editingCell && this.editableColumn && this.dt.editingCell === this.editableColumn.el.nativeElement) ||\n (this.editableRow && this.dt.editMode === 'row' && this.dt.isRowEditing(this.editableRow.data));\n }\n}\nCellEditor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: CellEditor, deps: [{ token: Table }, { token: EditableColumn, optional: true }, { token: EditableRow, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nCellEditor.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.7\", type: CellEditor, selector: \"p-cellEditor\", host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, directives: [{ type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }], encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: CellEditor, decorators: [{\n type: Component,\n args: [{\n selector: 'p-cellEditor',\n template: `\n \n \n \n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'p-element'\n }\n }]\n }], ctorParameters: function () {\n return [{ type: Table }, { type: EditableColumn, decorators: [{\n type: Optional\n }] }, { type: EditableRow, decorators: [{\n type: Optional\n }] }];\n }, propDecorators: { templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }] } });\nclass TableRadioButton {\n constructor(dt, tableService, cd) {\n this.dt = dt;\n this.tableService = tableService;\n this.cd = cd;\n this.subscription = this.dt.tableService.selectionSource$.subscribe(() => {\n this.checked = this.dt.isSelected(this.value);\n this.cd.markForCheck();\n });\n }\n ngOnInit() {\n this.checked = this.dt.isSelected(this.value);\n }\n onClick(event) {\n if (!this.disabled) {\n this.dt.toggleRowWithRadio({\n originalEvent: event,\n rowIndex: this.index\n }, this.value);\n }\n DomHandler.clearSelection();\n }\n onFocus() {\n this.focused = true;\n }\n onBlur() {\n this.focused = false;\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\nTableRadioButton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: TableRadioButton, deps: [{ token: Table }, { token: TableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nTableRadioButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.7\", type: TableRadioButton, selector: \"p-tableRadioButton\", inputs: { disabled: \"disabled\", value: \"value\", index: \"index\", inputId: \"inputId\", name: \"name\", ariaLabel: \"ariaLabel\" }, host: { classAttribute: \"p-element\" }, ngImport: i0, template: `\n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n `, isInline: true, directives: [{ type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: TableRadioButton, decorators: [{\n type: Component,\n args: [{\n selector: 'p-tableRadioButton',\n template: `\n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'p-element'\n }\n }]\n }], ctorParameters: function () { return [{ type: Table }, { type: TableService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { disabled: [{\n type: Input\n }], value: [{\n type: Input\n }], index: [{\n type: Input\n }], inputId: [{\n type: Input\n }], name: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }] } });\nclass TableCheckbox {\n constructor(dt, tableService, cd) {\n this.dt = dt;\n this.tableService = tableService;\n this.cd = cd;\n this.subscription = this.dt.tableService.selectionSource$.subscribe(() => {\n this.checked = this.dt.isSelected(this.value);\n this.cd.markForCheck();\n });\n }\n ngOnInit() {\n this.checked = this.dt.isSelected(this.value);\n }\n onClick(event) {\n if (!this.disabled) {\n this.dt.toggleRowWithCheckbox({\n originalEvent: event,\n rowIndex: this.index\n }, this.value);\n }\n DomHandler.clearSelection();\n }\n onFocus() {\n this.focused = true;\n }\n onBlur() {\n this.focused = false;\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\nTableCheckbox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: TableCheckbox, deps: [{ token: Table }, { token: TableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nTableCheckbox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.7\", type: TableCheckbox, selector: \"p-tableCheckbox\", inputs: { disabled: \"disabled\", value: \"value\", index: \"index\", inputId: \"inputId\", name: \"name\", required: \"required\", ariaLabel: \"ariaLabel\" }, host: { classAttribute: \"p-element\" }, ngImport: i0, template: `\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n `, isInline: true, directives: [{ type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: TableCheckbox, decorators: [{\n type: Component,\n args: [{\n selector: 'p-tableCheckbox',\n template: `\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'p-element'\n }\n }]\n }], ctorParameters: function () { return [{ type: Table }, { type: TableService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { disabled: [{\n type: Input\n }], value: [{\n type: Input\n }], index: [{\n type: Input\n }], inputId: [{\n type: Input\n }], name: [{\n type: Input\n }], required: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }] } });\nclass TableHeaderCheckbox {\n constructor(dt, tableService, cd) {\n this.dt = dt;\n this.tableService = tableService;\n this.cd = cd;\n this.valueChangeSubscription = this.dt.tableService.valueSource$.subscribe(() => {\n this.checked = this.updateCheckedState();\n });\n this.selectionChangeSubscription = this.dt.tableService.selectionSource$.subscribe(() => {\n this.checked = this.updateCheckedState();\n });\n }\n ngOnInit() {\n this.checked = this.updateCheckedState();\n }\n onClick(event) {\n if (!this.disabled) {\n if (this.dt.value && this.dt.value.length > 0) {\n this.dt.toggleRowsWithCheckbox(event, !this.checked);\n }\n }\n DomHandler.clearSelection();\n }\n onFocus() {\n this.focused = true;\n }\n onBlur() {\n this.focused = false;\n }\n isDisabled() {\n return this.disabled || !this.dt.value || !this.dt.value.length;\n }\n ngOnDestroy() {\n if (this.selectionChangeSubscription) {\n this.selectionChangeSubscription.unsubscribe();\n }\n if (this.valueChangeSubscription) {\n this.valueChangeSubscription.unsubscribe();\n }\n }\n updateCheckedState() {\n this.cd.markForCheck();\n if (this.dt._selectAll !== null) {\n return this.dt._selectAll;\n }\n else {\n const data = this.dt.selectionPageOnly ? this.dt.dataToRender : (this.dt.filteredValue || this.dt.value || []);\n const val = this.dt.frozenValue ? [...this.dt.frozenValue, ...data] : data;\n const selectableVal = this.dt.rowSelectable ? val.filter((data, index) => this.dt.rowSelectable({ data, index })) : val;\n return ObjectUtils.isNotEmpty(selectableVal) && ObjectUtils.isNotEmpty(this.dt.selection) && selectableVal.every(v => this.dt.selection.some(s => this.dt.equals(v, s)));\n }\n }\n}\nTableHeaderCheckbox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: TableHeaderCheckbox, deps: [{ token: Table }, { token: TableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nTableHeaderCheckbox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.7\", type: TableHeaderCheckbox, selector: \"p-tableHeaderCheckbox\", inputs: { disabled: \"disabled\", inputId: \"inputId\", name: \"name\", ariaLabel: \"ariaLabel\" }, host: { classAttribute: \"p-element\" }, ngImport: i0, template: `\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n `, isInline: true, directives: [{ type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: TableHeaderCheckbox, decorators: [{\n type: Component,\n args: [{\n selector: 'p-tableHeaderCheckbox',\n template: `\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'p-element'\n }\n }]\n }], ctorParameters: function () { return [{ type: Table }, { type: TableService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { disabled: [{\n type: Input\n }], inputId: [{\n type: Input\n }], name: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }] } });\nclass ReorderableRowHandle {\n constructor(el) {\n this.el = el;\n }\n ngAfterViewInit() {\n DomHandler.addClass(this.el.nativeElement, 'p-datatable-reorderablerow-handle');\n }\n}\nReorderableRowHandle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: ReorderableRowHandle, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nReorderableRowHandle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.7\", type: ReorderableRowHandle, selector: \"[pReorderableRowHandle]\", inputs: { index: [\"pReorderableRowHandle\", \"index\"] }, host: { classAttribute: \"p-element\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: ReorderableRowHandle, decorators: [{\n type: Directive,\n args: [{\n selector: '[pReorderableRowHandle]',\n host: {\n 'class': 'p-element'\n }\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { index: [{\n type: Input,\n args: [\"pReorderableRowHandle\"]\n }] } });\nclass ReorderableRow {\n constructor(dt, el, zone) {\n this.dt = dt;\n this.el = el;\n this.zone = zone;\n }\n ngAfterViewInit() {\n if (this.isEnabled()) {\n this.el.nativeElement.droppable = true;\n this.bindEvents();\n }\n }\n bindEvents() {\n this.zone.runOutsideAngular(() => {\n this.mouseDownListener = this.onMouseDown.bind(this);\n this.el.nativeElement.addEventListener('mousedown', this.mouseDownListener);\n this.dragStartListener = this.onDragStart.bind(this);\n this.el.nativeElement.addEventListener('dragstart', this.dragStartListener);\n this.dragEndListener = this.onDragEnd.bind(this);\n this.el.nativeElement.addEventListener('dragend', this.dragEndListener);\n this.dragOverListener = this.onDragOver.bind(this);\n this.el.nativeElement.addEventListener('dragover', this.dragOverListener);\n this.dragLeaveListener = this.onDragLeave.bind(this);\n this.el.nativeElement.addEventListener('dragleave', this.dragLeaveListener);\n });\n }\n unbindEvents() {\n if (this.mouseDownListener) {\n document.removeEventListener('mousedown', this.mouseDownListener);\n this.mouseDownListener = null;\n }\n if (this.dragStartListener) {\n document.removeEventListener('dragstart', this.dragStartListener);\n this.dragStartListener = null;\n }\n if (this.dragEndListener) {\n document.removeEventListener('dragend', this.dragEndListener);\n this.dragEndListener = null;\n }\n if (this.dragOverListener) {\n document.removeEventListener('dragover', this.dragOverListener);\n this.dragOverListener = null;\n }\n if (this.dragLeaveListener) {\n document.removeEventListener('dragleave', this.dragLeaveListener);\n this.dragLeaveListener = null;\n }\n }\n onMouseDown(event) {\n if (DomHandler.hasClass(event.target, 'p-datatable-reorderablerow-handle'))\n this.el.nativeElement.draggable = true;\n else\n this.el.nativeElement.draggable = false;\n }\n onDragStart(event) {\n this.dt.onRowDragStart(event, this.index);\n }\n onDragEnd(event) {\n this.dt.onRowDragEnd(event);\n this.el.nativeElement.draggable = false;\n }\n onDragOver(event) {\n this.dt.onRowDragOver(event, this.index, this.el.nativeElement);\n event.preventDefault();\n }\n onDragLeave(event) {\n this.dt.onRowDragLeave(event, this.el.nativeElement);\n }\n isEnabled() {\n return this.pReorderableRowDisabled !== true;\n }\n onDrop(event) {\n if (this.isEnabled() && this.dt.rowDragging) {\n this.dt.onRowDrop(event, this.el.nativeElement);\n }\n event.preventDefault();\n }\n ngOnDestroy() {\n this.unbindEvents();\n }\n}\nReorderableRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: ReorderableRow, deps: [{ token: Table }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nReorderableRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.7\", type: ReorderableRow, selector: \"[pReorderableRow]\", inputs: { index: [\"pReorderableRow\", \"index\"], pReorderableRowDisabled: \"pReorderableRowDisabled\" }, host: { listeners: { \"drop\": \"onDrop($event)\" }, classAttribute: \"p-element\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: ReorderableRow, decorators: [{\n type: Directive,\n args: [{\n selector: '[pReorderableRow]',\n host: {\n 'class': 'p-element'\n }\n }]\n }], ctorParameters: function () { return [{ type: Table }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { index: [{\n type: Input,\n args: [\"pReorderableRow\"]\n }], pReorderableRowDisabled: [{\n type: Input\n }], onDrop: [{\n type: HostListener,\n args: ['drop', ['$event']]\n }] } });\nclass ColumnFilterFormElement {\n constructor(dt) {\n this.dt = dt;\n this.useGrouping = true;\n }\n ngOnInit() {\n this.filterCallback = value => {\n this.filterConstraint.value = value;\n this.dt._filter();\n };\n }\n onModelChange(value) {\n this.filterConstraint.value = value;\n if (this.type === 'boolean' || value === '') {\n this.dt._filter();\n }\n }\n onTextInputEnterKeyDown(event) {\n this.dt._filter();\n event.preventDefault();\n }\n onNumericInputKeyDown(event) {\n if (event.key === 'Enter') {\n this.dt._filter();\n event.preventDefault();\n }\n }\n}\nColumnFilterFormElement.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: ColumnFilterFormElement, deps: [{ token: Table }], target: i0.ɵɵFactoryTarget.Component });\nColumnFilterFormElement.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.7\", type: ColumnFilterFormElement, selector: \"p-columnFilterFormElement\", inputs: { field: \"field\", type: \"type\", filterConstraint: \"filterConstraint\", filterTemplate: \"filterTemplate\", placeholder: \"placeholder\", minFractionDigits: \"minFractionDigits\", maxFractionDigits: \"maxFractionDigits\", prefix: \"prefix\", suffix: \"suffix\", locale: \"locale\", localeMatcher: \"localeMatcher\", currency: \"currency\", currencyDisplay: \"currencyDisplay\", useGrouping: \"useGrouping\" }, host: { classAttribute: \"p-element\" }, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: i5.InputNumber, selector: \"p-inputNumber\", inputs: [\"showButtons\", \"format\", \"buttonLayout\", \"inputId\", \"styleClass\", \"style\", \"placeholder\", \"size\", \"maxlength\", \"tabindex\", \"title\", \"ariaLabel\", \"ariaRequired\", \"name\", \"required\", \"autocomplete\", \"min\", \"max\", \"incrementButtonClass\", \"decrementButtonClass\", \"incrementButtonIcon\", \"decrementButtonIcon\", \"readonly\", \"step\", \"allowEmpty\", \"locale\", \"localeMatcher\", \"mode\", \"currency\", \"currencyDisplay\", \"useGrouping\", \"minFractionDigits\", \"maxFractionDigits\", \"prefix\", \"suffix\", \"inputStyle\", \"inputStyleClass\", \"showClear\", \"disabled\"], outputs: [\"onInput\", \"onFocus\", \"onBlur\", \"onKeyDown\", \"onClear\"] }, { type: i6.TriStateCheckbox, selector: \"p-triStateCheckbox\", inputs: [\"disabled\", \"name\", \"ariaLabelledBy\", \"tabindex\", \"inputId\", \"style\", \"styleClass\", \"label\", \"readonly\", \"checkboxTrueIcon\", \"checkboxFalseIcon\"], outputs: [\"onChange\"] }, { type: i7.Calendar, selector: \"p-calendar\", inputs: [\"style\", \"styleClass\", \"inputStyle\", \"inputId\", \"name\", \"inputStyleClass\", \"placeholder\", \"ariaLabelledBy\", \"iconAriaLabel\", \"disabled\", \"dateFormat\", \"multipleSeparator\", \"rangeSeparator\", \"inline\", \"showOtherMonths\", \"selectOtherMonths\", \"showIcon\", \"icon\", \"appendTo\", \"readonlyInput\", \"shortYearCutoff\", \"monthNavigator\", \"yearNavigator\", \"hourFormat\", \"timeOnly\", \"stepHour\", \"stepMinute\", \"stepSecond\", \"showSeconds\", \"required\", \"showOnFocus\", \"showWeek\", \"showClear\", \"dataType\", \"selectionMode\", \"maxDateCount\", \"showButtonBar\", \"todayButtonStyleClass\", \"clearButtonStyleClass\", \"autoZIndex\", \"baseZIndex\", \"panelStyleClass\", \"panelStyle\", \"keepInvalid\", \"hideOnDateTimeSelect\", \"touchUI\", \"timeSeparator\", \"focusTrap\", \"showTransitionOptions\", \"hideTransitionOptions\", \"tabindex\", \"view\", \"defaultDate\", \"minDate\", \"maxDate\", \"disabledDates\", \"disabledDays\", \"yearRange\", \"showTime\", \"responsiveOptions\", \"numberOfMonths\", \"firstDayOfWeek\", \"locale\"], outputs: [\"onFocus\", \"onBlur\", \"onClose\", \"onSelect\", \"onClear\", \"onInput\", \"onTodayClick\", \"onClearClick\", \"onMonthChange\", \"onYearChange\", \"onClickOutside\", \"onShow\"] }], directives: [{ type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i4.NgSwitch, selector: \"[ngSwitch]\", inputs: [\"ngSwitch\"] }, { type: i4.NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: [\"ngSwitchCase\"] }, { type: i8.InputText, selector: \"[pInputText]\" }, { type: i9.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { type: i9.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }], encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: ColumnFilterFormElement, decorators: [{\n type: Component,\n args: [{\n selector: 'p-columnFilterFormElement',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'p-element'\n }\n }]\n }], ctorParameters: function () { return [{ type: Table }]; }, propDecorators: { field: [{\n type: Input\n }], type: [{\n type: Input\n }], filterConstraint: [{\n type: Input\n }], filterTemplate: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], minFractionDigits: [{\n type: Input\n }], maxFractionDigits: [{\n type: Input\n }], prefix: [{\n type: Input\n }], suffix: [{\n type: Input\n }], locale: [{\n type: Input\n }], localeMatcher: [{\n type: Input\n }], currency: [{\n type: Input\n }], currencyDisplay: [{\n type: Input\n }], useGrouping: [{\n type: Input\n }] } });\nclass ColumnFilter {\n constructor(el, dt, renderer, config, overlayService) {\n this.el = el;\n this.dt = dt;\n this.renderer = renderer;\n this.config = config;\n this.overlayService = overlayService;\n this.type = 'text';\n this.display = 'row';\n this.showMenu = true;\n this.operator = FilterOperator.AND;\n this.showOperator = true;\n this.showClearButton = true;\n this.showApplyButton = true;\n this.showMatchModes = true;\n this.showAddButton = true;\n this.hideOnClear = false;\n this.maxConstraints = 2;\n this.useGrouping = true;\n }\n ngOnInit() {\n if (!this.dt.filters[this.field]) {\n this.initFieldFilterConstraint();\n }\n this.translationSubscription = this.config.translationObserver.subscribe(() => {\n this.generateMatchModeOptions();\n this.generateOperatorOptions();\n });\n this.resetSubscription = this.dt.tableService.resetSource$.subscribe(() => {\n this.initFieldFilterConstraint();\n });\n this.generateMatchModeOptions();\n this.generateOperatorOptions();\n }\n generateMatchModeOptions() {\n var _a;\n this.matchModes = this.matchModeOptions ||\n ((_a = this.config.filterMatchModeOptions[this.type]) === null || _a === void 0 ? void 0 : _a.map(key => {\n return { label: this.config.getTranslation(key), value: key };\n }));\n }\n generateOperatorOptions() {\n this.operatorOptions = [\n { label: this.config.getTranslation(TranslationKeys.MATCH_ALL), value: FilterOperator.AND },\n { label: this.config.getTranslation(TranslationKeys.MATCH_ANY), value: FilterOperator.OR }\n ];\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'header':\n this.headerTemplate = item.template;\n break;\n case 'filter':\n this.filterTemplate = item.template;\n break;\n case 'footer':\n this.footerTemplate = item.template;\n break;\n default:\n this.filterTemplate = item.template;\n break;\n }\n });\n }\n initFieldFilterConstraint() {\n let defaultMatchMode = this.getDefaultMatchMode();\n this.dt.filters[this.field] = this.display == 'row' ? { value: null, matchMode: defaultMatchMode } : [{ value: null, matchMode: defaultMatchMode, operator: this.operator }];\n }\n onMenuMatchModeChange(value, filterMeta) {\n filterMeta.matchMode = value;\n if (!this.showApplyButton) {\n this.dt._filter();\n }\n }\n onRowMatchModeChange(matchMode) {\n this.dt.filters[this.field].matchMode = matchMode;\n this.dt._filter();\n this.hide();\n }\n onRowMatchModeKeyDown(event) {\n let item = event.target;\n switch (event.key) {\n case 'ArrowDown':\n var nextItem = this.findNextItem(item);\n if (nextItem) {\n item.removeAttribute('tabindex');\n nextItem.tabIndex = '0';\n nextItem.focus();\n }\n event.preventDefault();\n break;\n case 'ArrowUp':\n var prevItem = this.findPrevItem(item);\n if (prevItem) {\n item.removeAttribute('tabindex');\n prevItem.tabIndex = '0';\n prevItem.focus();\n }\n event.preventDefault();\n break;\n }\n }\n onRowClearItemClick() {\n this.clearFilter();\n this.hide();\n }\n isRowMatchModeSelected(matchMode) {\n return this.dt.filters[this.field].matchMode === matchMode;\n }\n addConstraint() {\n this.dt.filters[this.field].push({ value: null, matchMode: this.getDefaultMatchMode(), operator: this.getDefaultOperator() });\n this.dt._filter();\n }\n removeConstraint(filterMeta) {\n this.dt.filters[this.field] = this.dt.filters[this.field].filter(meta => meta !== filterMeta);\n this.dt._filter();\n }\n onOperatorChange(value) {\n this.dt.filters[this.field].forEach(filterMeta => {\n filterMeta.operator = value;\n this.operator = value;\n });\n if (!this.showApplyButton) {\n this.dt._filter();\n }\n }\n toggleMenu() {\n this.overlayVisible = !this.overlayVisible;\n }\n onToggleButtonKeyDown(event) {\n switch (event.key) {\n case 'Escape':\n case 'Tab':\n this.overlayVisible = false;\n break;\n case 'ArrowDown':\n if (this.overlayVisible) {\n let focusable = DomHandler.getFocusableElements(this.overlay);\n if (focusable) {\n focusable[0].focus();\n }\n event.preventDefault();\n }\n else if (event.altKey) {\n this.overlayVisible = true;\n event.preventDefault();\n }\n break;\n }\n }\n onEscape() {\n this.overlayVisible = false;\n this.icon.nativeElement.focus();\n }\n findNextItem(item) {\n let nextItem = item.nextElementSibling;\n if (nextItem)\n return DomHandler.hasClass(nextItem, 'p-column-filter-separator') ? this.findNextItem(nextItem) : nextItem;\n else\n return item.parentElement.firstElementChild;\n }\n findPrevItem(item) {\n let prevItem = item.previousElementSibling;\n if (prevItem)\n return DomHandler.hasClass(prevItem, 'p-column-filter-separator') ? this.findPrevItem(prevItem) : prevItem;\n else\n return item.parentElement.lastElementChild;\n }\n onContentClick() {\n this.selfClick = true;\n }\n onOverlayAnimationStart(event) {\n switch (event.toState) {\n case 'visible':\n this.overlay = event.element;\n document.body.appendChild(this.overlay);\n ZIndexUtils.set('overlay', this.overlay, this.config.zIndex.overlay);\n DomHandler.absolutePosition(this.overlay, this.icon.nativeElement);\n this.bindDocumentClickListener();\n this.bindDocumentResizeListener();\n this.bindScrollListener();\n this.overlayEventListener = (e) => {\n if (this.overlay && this.overlay.contains(e.target)) {\n this.selfClick = true;\n }\n };\n this.overlaySubscription = this.overlayService.clickObservable.subscribe(this.overlayEventListener);\n break;\n case 'void':\n this.onOverlayHide();\n if (this.overlaySubscription) {\n this.overlaySubscription.unsubscribe();\n }\n break;\n }\n }\n onOverlayAnimationEnd(event) {\n switch (event.toState) {\n case 'void':\n ZIndexUtils.clear(event.element);\n break;\n }\n }\n getDefaultMatchMode() {\n if (this.matchMode) {\n return this.matchMode;\n }\n else {\n if (this.type === 'text')\n return FilterMatchMode.STARTS_WITH;\n else if (this.type === 'numeric')\n return FilterMatchMode.EQUALS;\n else if (this.type === 'date')\n return FilterMatchMode.DATE_IS;\n else\n return FilterMatchMode.CONTAINS;\n }\n }\n getDefaultOperator() {\n return this.dt.filters ? this.dt.filters[this.field][0].operator : this.operator;\n }\n hasRowFilter() {\n return this.dt.filters[this.field] && !this.dt.isFilterBlank(this.dt.filters[this.field].value);\n }\n get fieldConstraints() {\n return this.dt.filters ? this.dt.filters[this.field] : null;\n }\n get showRemoveIcon() {\n return this.fieldConstraints ? this.fieldConstraints.length > 1 : false;\n }\n get showMenuButton() {\n return this.showMenu && (this.display === 'row' ? this.type !== 'boolean' : true);\n }\n get isShowOperator() {\n return this.showOperator && this.type !== 'boolean';\n }\n get isShowAddConstraint() {\n return this.showAddButton && this.type !== 'boolean' && (this.fieldConstraints && this.fieldConstraints.length < this.maxConstraints);\n }\n get applyButtonLabel() {\n return this.config.getTranslation(TranslationKeys.APPLY);\n }\n get clearButtonLabel() {\n return this.config.getTranslation(TranslationKeys.CLEAR);\n }\n get addRuleButtonLabel() {\n return this.config.getTranslation(TranslationKeys.ADD_RULE);\n }\n get removeRuleButtonLabel() {\n return this.config.getTranslation(TranslationKeys.REMOVE_RULE);\n }\n get noFilterLabel() {\n return this.config.getTranslation(TranslationKeys.NO_FILTER);\n }\n hasFilter() {\n let fieldFilter = this.dt.filters[this.field];\n if (fieldFilter) {\n if (Array.isArray(fieldFilter))\n return !this.dt.isFilterBlank(fieldFilter[0].value);\n else\n return !this.dt.isFilterBlank(fieldFilter.value);\n }\n return false;\n }\n isOutsideClicked(event) {\n return !(this.overlay.isSameNode(event.target) || this.overlay.contains(event.target)\n || this.icon.nativeElement.isSameNode(event.target) || this.icon.nativeElement.contains(event.target)\n || DomHandler.hasClass(event.target, 'p-column-filter-add-button') || DomHandler.hasClass(event.target.parentElement, 'p-column-filter-add-button')\n || DomHandler.hasClass(event.target, 'p-column-filter-remove-button') || DomHandler.hasClass(event.target.parentElement, 'p-column-filter-remove-button'));\n }\n bindDocumentClickListener() {\n if (!this.documentClickListener) {\n const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';\n this.documentClickListener = this.renderer.listen(documentTarget, 'mousedown', event => {\n if (this.overlayVisible && !this.selfClick && this.isOutsideClicked(event)) {\n this.hide();\n }\n this.selfClick = false;\n });\n }\n }\n unbindDocumentClickListener() {\n if (this.documentClickListener) {\n this.documentClickListener();\n this.documentClickListener = null;\n this.selfClick = false;\n }\n }\n bindDocumentResizeListener() {\n this.documentResizeListener = () => this.hide();\n window.addEventListener('resize', this.documentResizeListener);\n }\n unbindDocumentResizeListener() {\n if (this.documentResizeListener) {\n window.removeEventListener('resize', this.documentResizeListener);\n this.documentResizeListener = null;\n }\n }\n bindScrollListener() {\n if (!this.scrollHandler) {\n this.scrollHandler = new ConnectedOverlayScrollHandler(this.icon.nativeElement, () => {\n if (this.overlayVisible) {\n this.hide();\n }\n });\n }\n this.scrollHandler.bindScrollListener();\n }\n unbindScrollListener() {\n if (this.scrollHandler) {\n this.scrollHandler.unbindScrollListener();\n }\n }\n hide() {\n this.overlayVisible = false;\n }\n onOverlayHide() {\n this.unbindDocumentClickListener();\n this.unbindDocumentResizeListener();\n this.unbindScrollListener();\n this.overlay = null;\n }\n clearFilter() {\n this.initFieldFilterConstraint();\n this.dt._filter();\n if (this.hideOnClear)\n this.hide();\n }\n applyFilter() {\n this.dt._filter();\n this.hide();\n }\n ngOnDestroy() {\n if (this.overlay) {\n this.el.nativeElement.appendChild(this.overlay);\n ZIndexUtils.clear(this.overlay);\n this.onOverlayHide();\n }\n if (this.translationSubscription) {\n this.translationSubscription.unsubscribe();\n }\n if (this.resetSubscription) {\n this.resetSubscription.unsubscribe();\n }\n if (this.overlaySubscription) {\n this.overlaySubscription.unsubscribe();\n }\n }\n}\nColumnFilter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: ColumnFilter, deps: [{ token: i0.ElementRef }, { token: Table }, { token: i0.Renderer2 }, { token: i1.PrimeNGConfig }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });\nColumnFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.7\", type: ColumnFilter, selector: \"p-columnFilter\", inputs: { field: \"field\", type: \"type\", display: \"display\", showMenu: \"showMenu\", matchMode: \"matchMode\", operator: \"operator\", showOperator: \"showOperator\", showClearButton: \"showClearButton\", showApplyButton: \"showApplyButton\", showMatchModes: \"showMatchModes\", showAddButton: \"showAddButton\", hideOnClear: \"hideOnClear\", placeholder: \"placeholder\", matchModeOptions: \"matchModeOptions\", maxConstraints: \"maxConstraints\", minFractionDigits: \"minFractionDigits\", maxFractionDigits: \"maxFractionDigits\", prefix: \"prefix\", suffix: \"suffix\", locale: \"locale\", localeMatcher: \"localeMatcher\", currency: \"currency\", currencyDisplay: \"currencyDisplay\", useGrouping: \"useGrouping\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"icon\", first: true, predicate: [\"icon\"], descendants: true }], ngImport: i0, template: `\n
    \n \n \n \n
    \n \n
      \n
    • {{matchMode.label}}
    • \n
    • \n
    • {{noFilterLabel}}
    • \n
    \n \n
    \n \n
    \n
    \n
    \n \n \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n \n
    \n
    \n \n
    \n
    \n `, isInline: true, components: [{ type: ColumnFilterFormElement, selector: \"p-columnFilterFormElement\", inputs: [\"field\", \"type\", \"filterConstraint\", \"filterTemplate\", \"placeholder\", \"minFractionDigits\", \"maxFractionDigits\", \"prefix\", \"suffix\", \"locale\", \"localeMatcher\", \"currency\", \"currencyDisplay\", \"useGrouping\"] }, { type: i10.Dropdown, selector: \"p-dropdown\", inputs: [\"scrollHeight\", \"filter\", \"name\", \"style\", \"panelStyle\", \"styleClass\", \"panelStyleClass\", \"readonly\", \"required\", \"editable\", \"appendTo\", \"tabindex\", \"placeholder\", \"filterPlaceholder\", \"filterLocale\", \"inputId\", \"selectId\", \"dataKey\", \"filterBy\", \"autofocus\", \"resetFilterOnHide\", \"dropdownIcon\", \"optionLabel\", \"optionValue\", \"optionDisabled\", \"optionGroupLabel\", \"optionGroupChildren\", \"autoDisplayFirst\", \"group\", \"showClear\", \"emptyFilterMessage\", \"emptyMessage\", \"virtualScroll\", \"itemSize\", \"autoZIndex\", \"baseZIndex\", \"showTransitionOptions\", \"hideTransitionOptions\", \"ariaFilterLabel\", \"ariaLabel\", \"ariaLabelledBy\", \"filterMatchMode\", \"maxlength\", \"tooltip\", \"tooltipPosition\", \"tooltipPositionStyle\", \"tooltipStyleClass\", \"autofocusFilter\", \"disabled\", \"options\", \"filterValue\"], outputs: [\"onChange\", \"onFilter\", \"onFocus\", \"onBlur\", \"onClick\", \"onShow\", \"onHide\", \"onClear\"] }], directives: [{ type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i4.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i9.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { type: i9.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { type: i11.ButtonDirective, selector: \"[pButton]\", inputs: [\"iconPos\", \"loadingIcon\", \"label\", \"icon\", \"loading\"] }], animations: [\n trigger('overlayAnimation', [\n transition(':enter', [\n style({ opacity: 0, transform: 'scaleY(0.8)' }),\n animate('.12s cubic-bezier(0, 0, 0.2, 1)')\n ]),\n transition(':leave', [\n animate('.1s linear', style({ opacity: 0 }))\n ])\n ])\n ], encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: ColumnFilter, decorators: [{\n type: Component,\n args: [{\n selector: 'p-columnFilter',\n template: `\n
    \n \n \n \n
    \n \n
      \n
    • {{matchMode.label}}
    • \n
    • \n
    • {{noFilterLabel}}
    • \n
    \n \n
    \n \n
    \n
    \n
    \n \n \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n \n
    \n
    \n \n
    \n
    \n `,\n animations: [\n trigger('overlayAnimation', [\n transition(':enter', [\n style({ opacity: 0, transform: 'scaleY(0.8)' }),\n animate('.12s cubic-bezier(0, 0, 0.2, 1)')\n ]),\n transition(':leave', [\n animate('.1s linear', style({ opacity: 0 }))\n ])\n ])\n ],\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'p-element'\n }\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: Table }, { type: i0.Renderer2 }, { type: i1.PrimeNGConfig }, { type: i1.OverlayService }]; }, propDecorators: { field: [{\n type: Input\n }], type: [{\n type: Input\n }], display: [{\n type: Input\n }], showMenu: [{\n type: Input\n }], matchMode: [{\n type: Input\n }], operator: [{\n type: Input\n }], showOperator: [{\n type: Input\n }], showClearButton: [{\n type: Input\n }], showApplyButton: [{\n type: Input\n }], showMatchModes: [{\n type: Input\n }], showAddButton: [{\n type: Input\n }], hideOnClear: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], matchModeOptions: [{\n type: Input\n }], maxConstraints: [{\n type: Input\n }], minFractionDigits: [{\n type: Input\n }], maxFractionDigits: [{\n type: Input\n }], prefix: [{\n type: Input\n }], suffix: [{\n type: Input\n }], locale: [{\n type: Input\n }], localeMatcher: [{\n type: Input\n }], currency: [{\n type: Input\n }], currencyDisplay: [{\n type: Input\n }], useGrouping: [{\n type: Input\n }], icon: [{\n type: ViewChild,\n args: ['icon']\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }] } });\nclass TableModule {\n}\nTableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: TableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: TableModule, declarations: [Table, SortableColumn, FrozenColumn, RowGroupHeader, SelectableRow, RowToggler, ContextMenuRow, ResizableColumn, ReorderableColumn, EditableColumn, CellEditor, TableBody, SortIcon, TableRadioButton, TableCheckbox, TableHeaderCheckbox, ReorderableRowHandle, ReorderableRow, SelectableRowDblClick, EditableRow, InitEditableRow, SaveEditableRow, CancelEditableRow, ColumnFilter, ColumnFilterFormElement], imports: [CommonModule, PaginatorModule, InputTextModule, DropdownModule, ScrollingModule, FormsModule, ButtonModule, SelectButtonModule, CalendarModule, InputNumberModule, TriStateCheckboxModule], exports: [Table, SharedModule, SortableColumn, FrozenColumn, RowGroupHeader, SelectableRow, RowToggler, ContextMenuRow, ResizableColumn, ReorderableColumn, EditableColumn, CellEditor, SortIcon, TableRadioButton, TableCheckbox, TableHeaderCheckbox, ReorderableRowHandle, ReorderableRow, SelectableRowDblClick, EditableRow, InitEditableRow, SaveEditableRow, CancelEditableRow, ScrollingModule, ColumnFilter] });\nTableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: TableModule, imports: [[CommonModule, PaginatorModule, InputTextModule, DropdownModule, ScrollingModule, FormsModule, ButtonModule, SelectButtonModule, CalendarModule, InputNumberModule, TriStateCheckboxModule], SharedModule,\n ScrollingModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: TableModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, PaginatorModule, InputTextModule, DropdownModule, ScrollingModule, FormsModule, ButtonModule, SelectButtonModule, CalendarModule, InputNumberModule, TriStateCheckboxModule],\n exports: [Table, SharedModule, SortableColumn, FrozenColumn, RowGroupHeader, SelectableRow, RowToggler, ContextMenuRow, ResizableColumn, ReorderableColumn, EditableColumn, CellEditor, SortIcon,\n TableRadioButton, TableCheckbox, TableHeaderCheckbox, ReorderableRowHandle, ReorderableRow, SelectableRowDblClick, EditableRow, InitEditableRow, SaveEditableRow, CancelEditableRow, ScrollingModule, ColumnFilter],\n declarations: [Table, SortableColumn, FrozenColumn, RowGroupHeader, SelectableRow, RowToggler, ContextMenuRow, ResizableColumn, ReorderableColumn, EditableColumn, CellEditor, TableBody, SortIcon,\n TableRadioButton, TableCheckbox, TableHeaderCheckbox, ReorderableRowHandle, ReorderableRow, SelectableRowDblClick, EditableRow, InitEditableRow, SaveEditableRow, CancelEditableRow, ColumnFilter, ColumnFilterFormElement]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CancelEditableRow, CellEditor, ColumnFilter, ColumnFilterFormElement, ContextMenuRow, EditableColumn, EditableRow, FrozenColumn, InitEditableRow, ReorderableColumn, ReorderableRow, ReorderableRowHandle, ResizableColumn, RowGroupHeader, RowToggler, SaveEditableRow, SelectableRow, SelectableRowDblClick, SortIcon, SortableColumn, Table, TableBody, TableCheckbox, TableHeaderCheckbox, TableModule, TableRadioButton, TableService };\n","import * as i0 from '@angular/core';\nimport { Directive, Input, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';\nimport { ZIndexUtils } from 'primeng/utils';\nimport * as i1 from 'primeng/api';\n\nclass Tooltip {\n constructor(el, zone, config) {\n this.el = el;\n this.zone = zone;\n this.config = config;\n this.escape = true;\n this._tooltipOptions = {\n tooltipPosition: 'right',\n tooltipEvent: 'hover',\n appendTo: 'body',\n tooltipZIndex: 'auto',\n escape: true,\n positionTop: 0,\n positionLeft: 0\n };\n }\n get disabled() {\n return this._disabled;\n }\n set disabled(val) {\n this._disabled = val;\n this.deactivate();\n }\n ngAfterViewInit() {\n this.zone.runOutsideAngular(() => {\n if (this.getOption('tooltipEvent') === 'hover') {\n this.mouseEnterListener = this.onMouseEnter.bind(this);\n this.mouseLeaveListener = this.onMouseLeave.bind(this);\n this.clickListener = this.onClick.bind(this);\n this.el.nativeElement.addEventListener('mouseenter', this.mouseEnterListener);\n this.el.nativeElement.addEventListener('mouseleave', this.mouseLeaveListener);\n this.el.nativeElement.addEventListener('click', this.clickListener);\n }\n else if (this.getOption('tooltipEvent') === 'focus') {\n this.focusListener = this.onFocus.bind(this);\n this.blurListener = this.onBlur.bind(this);\n let target = this.getTarget(this.el.nativeElement);\n target.addEventListener('focus', this.focusListener);\n target.addEventListener('blur', this.blurListener);\n }\n });\n }\n ngOnChanges(simpleChange) {\n if (simpleChange.tooltipPosition) {\n this.setOption({ tooltipPosition: simpleChange.tooltipPosition.currentValue });\n }\n if (simpleChange.tooltipEvent) {\n this.setOption({ tooltipEvent: simpleChange.tooltipEvent.currentValue });\n }\n if (simpleChange.appendTo) {\n this.setOption({ appendTo: simpleChange.appendTo.currentValue });\n }\n if (simpleChange.positionStyle) {\n this.setOption({ positionStyle: simpleChange.positionStyle.currentValue });\n }\n if (simpleChange.tooltipStyleClass) {\n this.setOption({ tooltipStyleClass: simpleChange.tooltipStyleClass.currentValue });\n }\n if (simpleChange.tooltipZIndex) {\n this.setOption({ tooltipZIndex: simpleChange.tooltipZIndex.currentValue });\n }\n if (simpleChange.escape) {\n this.setOption({ escape: simpleChange.escape.currentValue });\n }\n if (simpleChange.showDelay) {\n this.setOption({ showDelay: simpleChange.showDelay.currentValue });\n }\n if (simpleChange.hideDelay) {\n this.setOption({ hideDelay: simpleChange.hideDelay.currentValue });\n }\n if (simpleChange.life) {\n this.setOption({ life: simpleChange.life.currentValue });\n }\n if (simpleChange.positionTop) {\n this.setOption({ positionTop: simpleChange.positionTop.currentValue });\n }\n if (simpleChange.positionLeft) {\n this.setOption({ positionLeft: simpleChange.positionLeft.currentValue });\n }\n if (simpleChange.disabled) {\n this.setOption({ disabled: simpleChange.disabled.currentValue });\n }\n if (simpleChange.text) {\n this.setOption({ tooltipLabel: simpleChange.text.currentValue });\n if (this.active) {\n if (simpleChange.text.currentValue) {\n if (this.container && this.container.offsetParent) {\n this.updateText();\n this.align();\n }\n else {\n this.show();\n }\n }\n else {\n this.hide();\n }\n }\n }\n if (simpleChange.tooltipOptions) {\n this._tooltipOptions = Object.assign(Object.assign({}, this._tooltipOptions), simpleChange.tooltipOptions.currentValue);\n this.deactivate();\n if (this.active) {\n if (this.getOption('tooltipLabel')) {\n if (this.container && this.container.offsetParent) {\n this.updateText();\n this.align();\n }\n else {\n this.show();\n }\n }\n else {\n this.hide();\n }\n }\n }\n }\n onMouseEnter(e) {\n if (!this.container && !this.showTimeout) {\n this.activate();\n }\n }\n onMouseLeave(e) {\n this.deactivate();\n }\n onFocus(e) {\n this.activate();\n }\n onBlur(e) {\n this.deactivate();\n }\n onClick(e) {\n this.deactivate();\n }\n activate() {\n this.active = true;\n this.clearHideTimeout();\n if (this.getOption('showDelay'))\n this.showTimeout = setTimeout(() => { this.show(); }, this.getOption('showDelay'));\n else\n this.show();\n if (this.getOption('life')) {\n let duration = this.getOption('showDelay') ? this.getOption('life') + this.getOption('showDelay') : this.getOption('life');\n this.hideTimeout = setTimeout(() => { this.hide(); }, duration);\n }\n }\n deactivate() {\n this.active = false;\n this.clearShowTimeout();\n if (this.getOption('hideDelay')) {\n this.clearHideTimeout(); //life timeout\n this.hideTimeout = setTimeout(() => { this.hide(); }, this.getOption('hideDelay'));\n }\n else {\n this.hide();\n }\n }\n create() {\n if (this.container) {\n this.clearHideTimeout();\n this.remove();\n }\n this.container = document.createElement('div');\n let tooltipArrow = document.createElement('div');\n tooltipArrow.className = 'p-tooltip-arrow';\n this.container.appendChild(tooltipArrow);\n this.tooltipText = document.createElement('div');\n this.tooltipText.className = 'p-tooltip-text';\n this.updateText();\n if (this.getOption('positionStyle')) {\n this.container.style.position = this.getOption('positionStyle');\n }\n this.container.appendChild(this.tooltipText);\n if (this.getOption('appendTo') === 'body')\n document.body.appendChild(this.container);\n else if (this.getOption('appendTo') === 'target')\n DomHandler.appendChild(this.container, this.el.nativeElement);\n else\n DomHandler.appendChild(this.container, this.getOption('appendTo'));\n this.container.style.display = 'inline-block';\n }\n show() {\n if (!this.getOption('tooltipLabel') || this.getOption('disabled')) {\n return;\n }\n this.create();\n this.align();\n DomHandler.fadeIn(this.container, 250);\n if (this.getOption('tooltipZIndex') === 'auto')\n ZIndexUtils.set('tooltip', this.container, this.config.zIndex.tooltip);\n else\n this.container.style.zIndex = this.getOption('tooltipZIndex');\n this.bindDocumentResizeListener();\n this.bindScrollListener();\n }\n hide() {\n if (this.getOption('tooltipZIndex') === 'auto') {\n ZIndexUtils.clear(this.container);\n }\n this.remove();\n }\n updateText() {\n if (this.getOption('escape')) {\n this.tooltipText.innerHTML = '';\n this.tooltipText.appendChild(document.createTextNode(this.getOption('tooltipLabel')));\n }\n else {\n this.tooltipText.innerHTML = this.getOption('tooltipLabel');\n }\n }\n align() {\n let position = this.getOption('tooltipPosition');\n switch (position) {\n case 'top':\n this.alignTop();\n if (this.isOutOfBounds()) {\n this.alignBottom();\n if (this.isOutOfBounds()) {\n this.alignRight();\n if (this.isOutOfBounds()) {\n this.alignLeft();\n }\n }\n }\n break;\n case 'bottom':\n this.alignBottom();\n if (this.isOutOfBounds()) {\n this.alignTop();\n if (this.isOutOfBounds()) {\n this.alignRight();\n if (this.isOutOfBounds()) {\n this.alignLeft();\n }\n }\n }\n break;\n case 'left':\n this.alignLeft();\n if (this.isOutOfBounds()) {\n this.alignRight();\n if (this.isOutOfBounds()) {\n this.alignTop();\n if (this.isOutOfBounds()) {\n this.alignBottom();\n }\n }\n }\n break;\n case 'right':\n this.alignRight();\n if (this.isOutOfBounds()) {\n this.alignLeft();\n if (this.isOutOfBounds()) {\n this.alignTop();\n if (this.isOutOfBounds()) {\n this.alignBottom();\n }\n }\n }\n break;\n }\n }\n getHostOffset() {\n if (this.getOption('appendTo') === 'body' || this.getOption('appendTo') === 'target') {\n let offset = this.el.nativeElement.getBoundingClientRect();\n let targetLeft = offset.left + DomHandler.getWindowScrollLeft();\n let targetTop = offset.top + DomHandler.getWindowScrollTop();\n return { left: targetLeft, top: targetTop };\n }\n else {\n return { left: 0, top: 0 };\n }\n }\n alignRight() {\n this.preAlign('right');\n let hostOffset = this.getHostOffset();\n let left = hostOffset.left + DomHandler.getOuterWidth(this.el.nativeElement);\n let top = hostOffset.top + (DomHandler.getOuterHeight(this.el.nativeElement) - DomHandler.getOuterHeight(this.container)) / 2;\n this.container.style.left = left + this.getOption('positionLeft') + 'px';\n this.container.style.top = top + this.getOption('positionTop') + 'px';\n }\n alignLeft() {\n this.preAlign('left');\n let hostOffset = this.getHostOffset();\n let left = hostOffset.left - DomHandler.getOuterWidth(this.container);\n let top = hostOffset.top + (DomHandler.getOuterHeight(this.el.nativeElement) - DomHandler.getOuterHeight(this.container)) / 2;\n this.container.style.left = left + this.getOption('positionLeft') + 'px';\n this.container.style.top = top + this.getOption('positionTop') + 'px';\n }\n alignTop() {\n this.preAlign('top');\n let hostOffset = this.getHostOffset();\n let left = hostOffset.left + (DomHandler.getOuterWidth(this.el.nativeElement) - DomHandler.getOuterWidth(this.container)) / 2;\n let top = hostOffset.top - DomHandler.getOuterHeight(this.container);\n this.container.style.left = left + this.getOption('positionLeft') + 'px';\n this.container.style.top = top + this.getOption('positionTop') + 'px';\n }\n alignBottom() {\n this.preAlign('bottom');\n let hostOffset = this.getHostOffset();\n let left = hostOffset.left + (DomHandler.getOuterWidth(this.el.nativeElement) - DomHandler.getOuterWidth(this.container)) / 2;\n let top = hostOffset.top + DomHandler.getOuterHeight(this.el.nativeElement);\n this.container.style.left = left + this.getOption('positionLeft') + 'px';\n this.container.style.top = top + this.getOption('positionTop') + 'px';\n }\n setOption(option) {\n this._tooltipOptions = Object.assign(Object.assign({}, this._tooltipOptions), option);\n }\n getOption(option) {\n return this._tooltipOptions[option];\n }\n getTarget(el) {\n return DomHandler.hasClass(el, 'p-inputwrapper') ? DomHandler.findSingle(el, 'input') : el;\n }\n preAlign(position) {\n this.container.style.left = -999 + 'px';\n this.container.style.top = -999 + 'px';\n let defaultClassName = 'p-tooltip p-component p-tooltip-' + position;\n this.container.className = this.getOption('tooltipStyleClass') ? defaultClassName + ' ' + this.getOption('tooltipStyleClass') : defaultClassName;\n }\n isOutOfBounds() {\n let offset = this.container.getBoundingClientRect();\n let targetTop = offset.top;\n let targetLeft = offset.left;\n let width = DomHandler.getOuterWidth(this.container);\n let height = DomHandler.getOuterHeight(this.container);\n let viewport = DomHandler.getViewport();\n return (targetLeft + width > viewport.width) || (targetLeft < 0) || (targetTop < 0) || (targetTop + height > viewport.height);\n }\n onWindowResize(e) {\n this.hide();\n }\n bindDocumentResizeListener() {\n this.zone.runOutsideAngular(() => {\n this.resizeListener = this.onWindowResize.bind(this);\n window.addEventListener('resize', this.resizeListener);\n });\n }\n unbindDocumentResizeListener() {\n if (this.resizeListener) {\n window.removeEventListener('resize', this.resizeListener);\n this.resizeListener = null;\n }\n }\n bindScrollListener() {\n if (!this.scrollHandler) {\n this.scrollHandler = new ConnectedOverlayScrollHandler(this.el.nativeElement, () => {\n if (this.container) {\n this.hide();\n }\n });\n }\n this.scrollHandler.bindScrollListener();\n }\n unbindScrollListener() {\n if (this.scrollHandler) {\n this.scrollHandler.unbindScrollListener();\n }\n }\n unbindEvents() {\n if (this.getOption('tooltipEvent') === 'hover') {\n this.el.nativeElement.removeEventListener('mouseenter', this.mouseEnterListener);\n this.el.nativeElement.removeEventListener('mouseleave', this.mouseLeaveListener);\n this.el.nativeElement.removeEventListener('click', this.clickListener);\n }\n else if (this.getOption('tooltipEvent') === 'focus') {\n let target = this.getTarget(this.el.nativeElement);\n target.removeEventListener('focus', this.focusListener);\n target.removeEventListener('blur', this.blurListener);\n }\n this.unbindDocumentResizeListener();\n }\n remove() {\n if (this.container && this.container.parentElement) {\n if (this.getOption('appendTo') === 'body')\n document.body.removeChild(this.container);\n else if (this.getOption('appendTo') === 'target')\n this.el.nativeElement.removeChild(this.container);\n else\n DomHandler.removeChild(this.container, this.getOption('appendTo'));\n }\n this.unbindDocumentResizeListener();\n this.unbindScrollListener();\n this.clearTimeouts();\n this.container = null;\n this.scrollHandler = null;\n }\n clearShowTimeout() {\n if (this.showTimeout) {\n clearTimeout(this.showTimeout);\n this.showTimeout = null;\n }\n }\n clearHideTimeout() {\n if (this.hideTimeout) {\n clearTimeout(this.hideTimeout);\n this.hideTimeout = null;\n }\n }\n clearTimeouts() {\n this.clearShowTimeout();\n this.clearHideTimeout();\n }\n ngOnDestroy() {\n this.unbindEvents();\n if (this.container) {\n ZIndexUtils.clear(this.container);\n }\n this.remove();\n if (this.scrollHandler) {\n this.scrollHandler.destroy();\n this.scrollHandler = null;\n }\n }\n}\nTooltip.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: Tooltip, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Directive });\nTooltip.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.7\", type: Tooltip, selector: \"[pTooltip]\", inputs: { tooltipPosition: \"tooltipPosition\", tooltipEvent: \"tooltipEvent\", appendTo: \"appendTo\", positionStyle: \"positionStyle\", tooltipStyleClass: \"tooltipStyleClass\", tooltipZIndex: \"tooltipZIndex\", escape: \"escape\", showDelay: \"showDelay\", hideDelay: \"hideDelay\", life: \"life\", positionTop: \"positionTop\", positionLeft: \"positionLeft\", text: [\"pTooltip\", \"text\"], disabled: [\"tooltipDisabled\", \"disabled\"], tooltipOptions: \"tooltipOptions\" }, host: { classAttribute: \"p-element\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: Tooltip, decorators: [{\n type: Directive,\n args: [{\n selector: '[pTooltip]',\n host: {\n 'class': 'p-element'\n }\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.PrimeNGConfig }]; }, propDecorators: { tooltipPosition: [{\n type: Input\n }], tooltipEvent: [{\n type: Input\n }], appendTo: [{\n type: Input\n }], positionStyle: [{\n type: Input\n }], tooltipStyleClass: [{\n type: Input\n }], tooltipZIndex: [{\n type: Input\n }], escape: [{\n type: Input\n }], showDelay: [{\n type: Input\n }], hideDelay: [{\n type: Input\n }], life: [{\n type: Input\n }], positionTop: [{\n type: Input\n }], positionLeft: [{\n type: Input\n }], text: [{\n type: Input,\n args: ['pTooltip']\n }], disabled: [{\n type: Input,\n args: [\"tooltipDisabled\"]\n }], tooltipOptions: [{\n type: Input\n }] } });\nclass TooltipModule {\n}\nTooltipModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: TooltipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTooltipModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: TooltipModule, declarations: [Tooltip], imports: [CommonModule], exports: [Tooltip] });\nTooltipModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: TooltipModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: TooltipModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n exports: [Tooltip],\n declarations: [Tooltip]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Tooltip, TooltipModule };\n","import * as i0 from '@angular/core';\nimport { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nconst TRISTATECHECKBOX_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TriStateCheckbox),\n multi: true\n};\nclass TriStateCheckbox {\n constructor(cd) {\n this.cd = cd;\n this.checkboxTrueIcon = 'pi pi-check';\n this.checkboxFalseIcon = 'pi pi-times';\n this.onChange = new EventEmitter();\n this.onModelChange = () => { };\n this.onModelTouched = () => { };\n }\n onClick(event, input) {\n if (!this.disabled && !this.readonly) {\n this.toggle(event);\n this.focused = true;\n input.focus();\n }\n }\n onKeydown(event) {\n if (event.keyCode == 32) {\n event.preventDefault();\n }\n }\n onKeyup(event) {\n if (event.keyCode == 32 && !this.readonly) {\n this.toggle(event);\n event.preventDefault();\n }\n }\n toggle(event) {\n if (this.value == null || this.value == undefined)\n this.value = true;\n else if (this.value == true)\n this.value = false;\n else if (this.value == false)\n this.value = null;\n this.onModelChange(this.value);\n this.onChange.emit({\n originalEvent: event,\n value: this.value\n });\n }\n onFocus() {\n this.focused = true;\n }\n onBlur() {\n this.focused = false;\n this.onModelTouched();\n }\n registerOnChange(fn) {\n this.onModelChange = fn;\n }\n registerOnTouched(fn) {\n this.onModelTouched = fn;\n }\n writeValue(value) {\n this.value = value;\n this.cd.markForCheck();\n }\n setDisabledState(disabled) {\n this.disabled = disabled;\n this.cd.markForCheck();\n }\n}\nTriStateCheckbox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: TriStateCheckbox, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nTriStateCheckbox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.7\", type: TriStateCheckbox, selector: \"p-triStateCheckbox\", inputs: { disabled: \"disabled\", name: \"name\", ariaLabelledBy: \"ariaLabelledBy\", tabindex: \"tabindex\", inputId: \"inputId\", style: \"style\", styleClass: \"styleClass\", label: \"label\", readonly: \"readonly\", checkboxTrueIcon: \"checkboxTrueIcon\", checkboxFalseIcon: \"checkboxFalseIcon\" }, outputs: { onChange: \"onChange\" }, host: { classAttribute: \"p-element\" }, providers: [TRISTATECHECKBOX_VALUE_ACCESSOR], ngImport: i0, template: `\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n `, isInline: true, directives: [{ type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: TriStateCheckbox, decorators: [{\n type: Component,\n args: [{\n selector: 'p-triStateCheckbox',\n template: `\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n `,\n providers: [TRISTATECHECKBOX_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'p-element'\n }\n }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { disabled: [{\n type: Input\n }], name: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], inputId: [{\n type: Input\n }], style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], label: [{\n type: Input\n }], readonly: [{\n type: Input\n }], checkboxTrueIcon: [{\n type: Input\n }], checkboxFalseIcon: [{\n type: Input\n }], onChange: [{\n type: Output\n }] } });\nclass TriStateCheckboxModule {\n}\nTriStateCheckboxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: TriStateCheckboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTriStateCheckboxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: TriStateCheckboxModule, declarations: [TriStateCheckbox], imports: [CommonModule], exports: [TriStateCheckbox] });\nTriStateCheckboxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: TriStateCheckboxModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: TriStateCheckboxModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n exports: [TriStateCheckbox],\n declarations: [TriStateCheckbox]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { TRISTATECHECKBOX_VALUE_ACCESSOR, TriStateCheckbox, TriStateCheckboxModule };\n","class ObjectUtils {\n static equals(obj1, obj2, field) {\n if (field)\n return (this.resolveFieldData(obj1, field) === this.resolveFieldData(obj2, field));\n else\n return this.equalsByValue(obj1, obj2);\n }\n static equalsByValue(obj1, obj2) {\n if (obj1 === obj2)\n return true;\n if (obj1 && obj2 && typeof obj1 == 'object' && typeof obj2 == 'object') {\n var arrA = Array.isArray(obj1), arrB = Array.isArray(obj2), i, length, key;\n if (arrA && arrB) {\n length = obj1.length;\n if (length != obj2.length)\n return false;\n for (i = length; i-- !== 0;)\n if (!this.equalsByValue(obj1[i], obj2[i]))\n return false;\n return true;\n }\n if (arrA != arrB)\n return false;\n var dateA = obj1 instanceof Date, dateB = obj2 instanceof Date;\n if (dateA != dateB)\n return false;\n if (dateA && dateB)\n return obj1.getTime() == obj2.getTime();\n var regexpA = obj1 instanceof RegExp, regexpB = obj2 instanceof RegExp;\n if (regexpA != regexpB)\n return false;\n if (regexpA && regexpB)\n return obj1.toString() == obj2.toString();\n var keys = Object.keys(obj1);\n length = keys.length;\n if (length !== Object.keys(obj2).length)\n return false;\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(obj2, keys[i]))\n return false;\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (!this.equalsByValue(obj1[key], obj2[key]))\n return false;\n }\n return true;\n }\n return obj1 !== obj1 && obj2 !== obj2;\n }\n static resolveFieldData(data, field) {\n if (data && field) {\n if (this.isFunction(field)) {\n return field(data);\n }\n else if (field.indexOf('.') == -1) {\n return data[field];\n }\n else {\n let fields = field.split('.');\n let value = data;\n for (let i = 0, len = fields.length; i < len; ++i) {\n if (value == null) {\n return null;\n }\n value = value[fields[i]];\n }\n return value;\n }\n }\n else {\n return null;\n }\n }\n static isFunction(obj) {\n return !!(obj && obj.constructor && obj.call && obj.apply);\n }\n static reorderArray(value, from, to) {\n let target;\n if (value && from !== to) {\n if (to >= value.length) {\n to %= value.length;\n from %= value.length;\n }\n value.splice(to, 0, value.splice(from, 1)[0]);\n }\n }\n static insertIntoOrderedArray(item, index, arr, sourceArr) {\n if (arr.length > 0) {\n let injected = false;\n for (let i = 0; i < arr.length; i++) {\n let currentItemIndex = this.findIndexInList(arr[i], sourceArr);\n if (currentItemIndex > index) {\n arr.splice(i, 0, item);\n injected = true;\n break;\n }\n }\n if (!injected) {\n arr.push(item);\n }\n }\n else {\n arr.push(item);\n }\n }\n static findIndexInList(item, list) {\n let index = -1;\n if (list) {\n for (let i = 0; i < list.length; i++) {\n if (list[i] == item) {\n index = i;\n break;\n }\n }\n }\n return index;\n }\n static contains(value, list) {\n if (value != null && list && list.length) {\n for (let val of list) {\n if (this.equals(value, val))\n return true;\n }\n }\n return false;\n }\n static removeAccents(str) {\n if (str && str.search(/[\\xC0-\\xFF]/g) > -1) {\n str = str\n .replace(/[\\xC0-\\xC5]/g, \"A\")\n .replace(/[\\xC6]/g, \"AE\")\n .replace(/[\\xC7]/g, \"C\")\n .replace(/[\\xC8-\\xCB]/g, \"E\")\n .replace(/[\\xCC-\\xCF]/g, \"I\")\n .replace(/[\\xD0]/g, \"D\")\n .replace(/[\\xD1]/g, \"N\")\n .replace(/[\\xD2-\\xD6\\xD8]/g, \"O\")\n .replace(/[\\xD9-\\xDC]/g, \"U\")\n .replace(/[\\xDD]/g, \"Y\")\n .replace(/[\\xDE]/g, \"P\")\n .replace(/[\\xE0-\\xE5]/g, \"a\")\n .replace(/[\\xE6]/g, \"ae\")\n .replace(/[\\xE7]/g, \"c\")\n .replace(/[\\xE8-\\xEB]/g, \"e\")\n .replace(/[\\xEC-\\xEF]/g, \"i\")\n .replace(/[\\xF1]/g, \"n\")\n .replace(/[\\xF2-\\xF6\\xF8]/g, \"o\")\n .replace(/[\\xF9-\\xFC]/g, \"u\")\n .replace(/[\\xFE]/g, \"p\")\n .replace(/[\\xFD\\xFF]/g, \"y\");\n }\n return str;\n }\n static isEmpty(value) {\n return (value === null || value === undefined || value === '' ||\n (Array.isArray(value) && value.length === 0) ||\n (!(value instanceof Date) && typeof value === 'object' && Object.keys(value).length === 0));\n }\n static isNotEmpty(value) {\n return !this.isEmpty(value);\n }\n}\n\nvar lastId = 0;\nfunction UniqueComponentId() {\n let prefix = 'pr_id_';\n lastId++;\n return `${prefix}${lastId}`;\n}\n\nfunction ZIndexUtils() {\n let zIndexes = [];\n const generateZIndex = (key, baseZIndex) => {\n let lastZIndex = zIndexes.length > 0 ? zIndexes[zIndexes.length - 1] : { key, value: baseZIndex };\n let newZIndex = lastZIndex.value + (lastZIndex.key === key ? 0 : baseZIndex) + 1;\n zIndexes.push({ key, value: newZIndex });\n return newZIndex;\n };\n const revertZIndex = (zIndex) => {\n zIndexes = zIndexes.filter(obj => obj.value !== zIndex);\n };\n const getCurrentZIndex = () => {\n return zIndexes.length > 0 ? zIndexes[zIndexes.length - 1].value : 0;\n };\n const getZIndex = (el) => {\n return el ? parseInt(el.style.zIndex, 10) || 0 : 0;\n };\n return {\n get: getZIndex,\n set: (key, el, baseZIndex) => {\n if (el) {\n el.style.zIndex = String(generateZIndex(key, baseZIndex));\n }\n },\n clear: (el) => {\n if (el) {\n revertZIndex(getZIndex(el));\n el.style.zIndex = '';\n }\n },\n getCurrent: () => getCurrentZIndex()\n };\n}\nvar zindexutils = ZIndexUtils();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ObjectUtils, UniqueComponentId, zindexutils as ZIndexUtils };\n"],"names":["getCompositeRect","getLayoutRect","listScrollParents","getOffsetParent","getComputedStyle","orderModifiers","debounce","validateModifiers","uniqueBy","getBasePlacement","mergeByName","detectOverflow","isElement","auto","INVALID_ELEMENT_ERROR","INFINITE_LOOP_ERROR","DEFAULT_OPTIONS","placement","modifiers","strategy","areValidElements","_len","arguments","length","args","Array","_key","some","element","getBoundingClientRect","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","createPopper","reference","popper","options","state","orderedModifiers","Object","assign","modifiersData","elements","attributes","styles","effectCleanupFns","isDestroyed","instance","setOptions","setOptionsAction","cleanupModifierEffects","scrollParents","contextElement","concat","filter","m","enabled","process","env","NODE_ENV","_ref","name","flipModifier","find","_ref2","console","error","join","_getComputedStyle","marginTop","marginRight","marginBottom","marginLeft","margin","parseFloat","warn","runModifierEffects","update","forceUpdate","_state$elements","rects","reset","forEach","modifier","data","__debug_loops__","index","_state$orderedModifie","fn","_state$orderedModifie2","_options","Promise","resolve","destroy","then","onFirstUpdate","_ref3","_ref3$options","effect","cleanupFn","noopFn","push","f","exports","module","define","amd","g","window","global","self","localforage","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","_dereq_","Mutation","MutationObserver","WebKitMutationObserver","scheduleDrain","called","observer","nextTick","document","createTextNode","observe","characterData","setImmediate","MessageChannel","channel","port1","onmessage","port2","postMessage","createElement","scriptEl","onreadystatechange","parentNode","removeChild","documentElement","appendChild","setTimeout","draining","queue","oldQueue","len","immediate","task","INTERNAL","handlers","REJECTED","FULFILLED","PENDING","resolver","TypeError","outcome","safelyResolveThenable","prototype","onRejected","onFulfilled","promise","constructor","unwrap","QueueItem","callFulfilled","otherCallFulfilled","callRejected","otherCallRejected","value","reject","func","returnValue","result","tryCatch","getThen","status","thenable","obj","appyThen","apply","onError","onSuccess","tryToUnwrap","out","reason","all","iterable","toString","values","resolved","allResolver","resolveFromAll","outValue","race","response","_typeof","Symbol","iterator","_classCallCheck","Constructor","getIDB","indexedDB","webkitIndexedDB","mozIndexedDB","OIndexedDB","msIndexedDB","idb","isIndexedDBValid","open","isSafari","openDatabase","test","navigator","userAgent","platform","hasFetch","fetch","indexOf","IDBKeyRange","createBlob","parts","properties","Blob","Builder","BlobBuilder","MSBlobBuilder","MozBlobBuilder","WebKitBlobBuilder","builder","append","getBlob","type","Promise$1","executeCallback","callback","executeTwoCallbacks","errorCallback","normalizeKey","key","String","getCallback","DETECT_BLOB_SUPPORT_STORE","supportsBlobs","dbContexts","READ_ONLY","READ_WRITE","_binStringToArrayBuffer","bin","buf","ArrayBuffer","arr","Uint8Array","charCodeAt","_checkBlobSupportWithoutCaching","txn","transaction","blob","objectStore","put","onabort","preventDefault","stopPropagation","oncomplete","matchedChrome","match","matchedEdge","parseInt","_checkBlobSupport","_deferReadiness","dbInfo","dbContext","deferredOperation","deferredOperations","dbReady","_advanceReadiness","pop","_rejectReadiness","err","_getConnection","upgradeNeeded","createDbContext","db","close","dbArgs","version","openreq","onupgradeneeded","createObjectStore","storeName","oldVersion","ex","newVersion","onerror","onsuccess","onversionchange","target","_getOriginalConnection","_getUpgradedConnection","_isUpgradeNeeded","defaultVersion","isNewStore","objectStoreNames","contains","isDowngrade","isUpgrade","incVersion","_encodeBlob","reader","FileReader","onloadend","base64","btoa","__local_forage_encoded_blob","readAsBinaryString","_decodeBlob","encodedBlob","arrayBuff","atob","_isEncodedBlob","_fullyReady","_initReady","_dbInfo","_tryReconnect","forages","forage","createTransaction","mode","retries","undefined","tx","_initStorage","ready","initPromises","ignoreErrors","j","slice","_defaultConfig","k","getItem","store","req","get","iterate","openCursor","iterationNumber","cursor","setItem","blobSupport","removeItem","clear","count","advanced","openKeyCursor","advance","keys","dropInstance","currentConfig","config","isCurrentDb","dbPromise","dropDBPromise","deleteDatabase","onblocked","_forage","dropObjectPromise","deleteObjectStore","_forage2","asyncStorage","_driver","_support","isWebSQLValid","BASE_CHARS","BLOB_TYPE_PREFIX","BLOB_TYPE_PREFIX_REGEX","SERIALIZED_MARKER","SERIALIZED_MARKER_LENGTH","TYPE_ARRAYBUFFER","TYPE_BLOB","TYPE_INT8ARRAY","TYPE_UINT8ARRAY","TYPE_UINT8CLAMPEDARRAY","TYPE_INT16ARRAY","TYPE_INT32ARRAY","TYPE_UINT16ARRAY","TYPE_UINT32ARRAY","TYPE_FLOAT32ARRAY","TYPE_FLOAT64ARRAY","TYPE_SERIALIZED_MARKER_LENGTH","toString$1","stringToBuffer","serializedString","bufferLength","p","encoded1","encoded2","encoded3","encoded4","buffer","bytes","bufferToString","base64String","substring","serialize","valueType","marker","fileReader","onload","str","readAsArrayBuffer","JSON","stringify","deserialize","parse","blobType","matcher","Int8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","localforageSerializer","createDbTable","executeSql","_initStorage$1","dbInfoPromise","description","size","serializer","tryExecuteSql","sqlStatement","SYNTAX_ERR","results","rows","getItem$1","item","iterate$1","_setItem","retriesLeft","originalValue","sqlError","QUOTA_ERR","setItem$1","removeItem$1","clear$1","length$1","c","key$1","keys$1","getAllStoreNames","storeNames","dropInstance$1","operationInfo","dropTable","operations","webSQLStorage","isLocalStorageValid","localStorage","_getKeyPrefix","defaultConfig","keyPrefix","checkIfLocalStorageThrows","localStorageTestKey","_isLocalStorageUsable","_initStorage$2","clear$2","getItem$2","iterate$2","keyPrefixLength","key$2","keys$2","itemKey","length$2","removeItem$2","setItem$2","dropInstance$2","localStorageWrapper","sameValue","x","y","isNaN","includes","array","searchElement","isArray","arg","DefinedDrivers","DriverSupport","DefaultDrivers","INDEXEDDB","WEBSQL","LOCALSTORAGE","DefaultDriverOrder","OptionalDriverMethods","LibraryMethods","DefaultConfig","driver","callWhenReady","localForageInstance","libraryMethod","_args","extend","hasOwnProperty","LocalForage","driverTypeKey","driverName","defineDriver","_config","_driverSet","_initDriver","_ready","_wrapLibraryMethodsWithReady","setDriver","replace","driverObject","complianceError","driverMethods","driverMethodName","isRequired","configureMissingMethods","methodNotImplementedFactory","methodName","_i","optionalDriverMethod","setDriverSupport","support","info","getDriver","getDriverPromise","getSerializer","serializerPromise","drivers","supportedDrivers","_getSupportedDrivers","setDriverToConfig","extendSelfWithDriver","_extend","initDriver","currentDriverIndex","driverPromiseLoop","oldDriverSetDone","supports","libraryMethodsAndProperties","createInstance","localforage_js","VERSION","LARGE_ARRAY_SIZE","CORE_ERROR_TEXT","FUNC_ERROR_TEXT","INVALID_TEMPL_VAR_ERROR_TEXT","HASH_UNDEFINED","MAX_MEMOIZE_SIZE","PLACEHOLDER","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","WRAP_BIND_FLAG","WRAP_BIND_KEY_FLAG","WRAP_CURRY_BOUND_FLAG","WRAP_CURRY_FLAG","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","WRAP_FLIP_FLAG","DEFAULT_TRUNC_LENGTH","DEFAULT_TRUNC_OMISSION","HOT_COUNT","HOT_SPAN","LAZY_FILTER_FLAG","LAZY_MAP_FLAG","LAZY_WHILE_FLAG","INFINITY","MAX_SAFE_INTEGER","MAX_INTEGER","NAN","MAX_ARRAY_LENGTH","MAX_ARRAY_INDEX","HALF_MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","asyncTag","boolTag","dateTag","domExcTag","errorTag","funcTag","genTag","mapTag","numberTag","nullTag","objectTag","promiseTag","proxyTag","regexpTag","setTag","stringTag","symbolTag","undefinedTag","weakMapTag","weakSetTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","RegExp","source","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","rsComboMarksRange","reComboHalfMarksRange","rsComboSymbolsRange","rsComboRange","rsDingbatRange","rsLowerRange","rsMathOpRange","rsNonCharRange","rsPunctuationRange","rsSpaceRange","rsUpperRange","rsVarRange","rsBreakRange","rsApos","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsZWJ","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsOptVar","rsOptJoin","rsOrdLower","rsOrdUpper","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","deburredLetters","htmlEscapes","htmlUnescapes","stringEscapes","freeParseFloat","freeParseInt","freeGlobal","freeSelf","root","Function","freeExports","nodeType","freeModule","moduleExports","freeProcess","nodeUtil","types","binding","nodeIsArrayBuffer","isArrayBuffer","nodeIsDate","isDate","nodeIsMap","isMap","nodeIsRegExp","isRegExp","nodeIsSet","isSet","nodeIsTypedArray","isTypedArray","thisArg","arrayAggregator","setter","iteratee","accumulator","arrayEach","arrayEachRight","arrayEvery","predicate","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayMap","arrayPush","offset","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","asciiToArray","string","split","asciiWords","baseFindKey","collection","eachFunc","baseFindIndex","fromIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","object","basePropertyOf","baseReduce","baseSortBy","comparer","sort","current","baseTimes","baseToPairs","props","baseTrim","trimmedEndIndex","baseUnary","baseValues","cacheHas","cache","has","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","countHolders","placeholder","deburrLetter","escapeHtmlChar","escapeStringChar","chr","getValue","hasUnicode","hasUnicodeWord","iteratorToArray","next","done","mapToArray","map","overArg","transform","replaceHolders","setToArray","set","setToPairs","strictLastIndexOf","stringSize","unicodeSize","stringToArray","unicodeToArray","charAt","unescapeHtmlChar","lastIndex","unicodeWords","runInContext","context","_","defaults","pick","Date","Math","arrayProto","funcProto","objectProto","coreJsData","funcToString","idCounter","maskSrcKey","uid","exec","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","Buffer","allocUnsafe","getPrototype","getPrototypeOf","objectCreate","create","propertyIsEnumerable","splice","spreadableSymbol","isConcatSpreadable","symIterator","symToStringTag","toStringTag","defineProperty","getNative","ctxClearTimeout","clearTimeout","ctxNow","now","ctxSetTimeout","nativeCeil","ceil","nativeFloor","floor","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","isBuffer","nativeIsFinite","isFinite","nativeJoin","nativeKeys","nativeMax","max","nativeMin","min","nativeNow","nativeParseInt","nativeRandom","random","nativeReverse","reverse","DataView","Map","Set","WeakMap","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","valueOf","symbolToString","lodash","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","proto","isObject","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","templateSettings","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","lazyClone","copyArray","lazyReverse","clone","lazyValue","dir","isArr","isRight","arrLength","view","getView","start","end","iteratees","iterLength","takeCount","baseWrapperValue","outer","iterIndex","computed","Hash","entries","entry","hashClear","__data__","hashDelete","hashGet","hashHas","hashSet","ListCache","listCacheClear","listCacheDelete","assocIndexOf","listCacheGet","listCacheHas","listCacheSet","MapCache","mapCacheClear","mapCacheDelete","getMapData","mapCacheGet","mapCacheHas","mapCacheSet","SetCache","add","setCacheAdd","setCacheHas","Stack","stackClear","stackDelete","stackGet","stackHas","stackSet","pairs","arrayLikeKeys","inherited","isArg","isArguments","isBuff","isType","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","baseClamp","arrayShuffle","assignMergeValue","eq","baseAssignValue","assignValue","objValue","baseAggregator","baseEach","baseAssign","copyObject","baseAssignIn","keysIn","baseAt","paths","skip","number","lower","upper","baseClone","bitmask","customizer","stack","isDeep","isFlat","isFull","initCloneArray","tag","getTag","isFunc","cloneBuffer","initCloneObject","copySymbolsIn","copySymbols","initCloneByTag","stacked","subValue","keysFunc","getAllKeysIn","getAllKeys","baseConforms","baseConformsTo","baseDelay","wait","baseDifference","isCommon","valuesLength","valuesIndex","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","isSymbol","baseFill","toInteger","toLength","baseFilter","baseFlatten","depth","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","isFunction","baseGet","path","castPath","toKey","baseGetAllKeys","symbolsFunc","baseGetTag","getRawTag","objectToString","baseGt","other","baseHas","baseHasIn","baseInRange","baseIntersection","arrays","othLength","othIndex","caches","maxLength","Infinity","seen","baseInverter","baseInvoke","parent","last","baseIsArguments","baseIsArrayBuffer","baseIsDate","baseIsEqual","baseIsEqualDeep","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","equalObjects","baseIsMap","baseIsMatch","matchData","noCustomizer","srcValue","baseIsNative","isMasked","pattern","baseIsRegExp","baseIsSet","baseIsTypedArray","isLength","baseIteratee","identity","baseMatchesProperty","baseMatches","property","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","isArrayLike","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","baseMergeDeep","newValue","safeGet","mergeFunc","isTyped","isArrayLikeObject","cloneTypedArray","isPlainObject","toPlainObject","baseNth","baseOrderBy","orders","getIteratee","criteria","compareMultiple","basePick","basePickBy","baseSet","basePropertyDeep","basePullAll","basePullAt","indexes","previous","baseUnset","baseRange","step","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","nested","baseSetData","baseSetToString","constant","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","low","high","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","actions","action","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","id","copy","cloneArrayBuffer","arrayBuffer","byteLength","cloneDataView","dataView","byteOffset","cloneRegExp","regexp","cloneSymbol","symbol","typedArray","compareAscending","valIsDefined","valIsReflexive","objCriteria","othCriteria","ordersLength","order","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","getSymbols","getSymbolsIn","createAggregator","initializer","createAssigner","assigner","sources","guard","isIterateeCall","createBind","isBind","Ctor","createCtor","wrapper","createCaseFirst","trailing","createCompounder","words","deburr","thisBinding","createCurry","arity","getHolder","createRecurry","createHybrid","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","thru","getFuncName","funcName","getData","isLaziable","plant","partialsRight","holdersRight","argPos","ary","isAry","isBindKey","isFlip","holdersCount","newHolders","reorder","createInverter","toIteratee","createMathOperation","operator","defaultValue","createOver","arrayFunc","createPadding","chars","charsLength","createPartial","createRange","toFinite","createRelationalOperation","toNumber","wrapFunc","isCurry","newHoldersRight","newPartials","newPartialsRight","newData","setData","setWrapToString","createRound","precision","pair","noop","createToPairs","createWrap","mergeData","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","isPartial","arrStacked","othStacked","arrValue","othValue","compared","message","convert","objProps","objLength","othProps","objStacked","skipCtor","objCtor","othCtor","flatten","otherFunc","isKeyable","isOwn","unmasked","stubArray","ctorString","transforms","getWrapDetails","hasPath","hasFunc","input","insertWrapDetails","details","isMaskable","stubFalse","memoizeCapped","memoize","srcBitmask","newBitmask","isCombo","otherArgs","oldArray","shortOut","updateWrapDetails","lastCalled","stamp","remaining","rand","quote","subString","chunk","compact","difference","differenceBy","differenceWith","drop","dropRight","dropRightWhile","dropWhile","fill","findIndex","findLastIndex","flattenDeep","flattenDepth","fromPairs","head","initial","intersection","mapped","intersectionBy","intersectionWith","separator","lastIndexOf","nth","pull","pullAll","pullAllBy","pullAllWith","pullAt","remove","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sortedUniq","sortedUniqBy","tail","take","takeRight","takeRightWhile","takeWhile","union","unionBy","unionWith","uniq","uniqBy","uniqWith","unzip","group","unzipWith","without","xor","xorBy","xorWith","zip","zipObject","zipObjectDeep","zipWith","chain","tap","interceptor","wrapperAt","wrapperChain","wrapperCommit","wrapperNext","toArray","wrapperToIterator","wrapperPlant","wrapperReverse","wrapped","wrapperValue","countBy","every","findLast","flatMap","flatMapDeep","flatMapDepth","forEachRight","groupBy","isString","invokeMap","keyBy","orderBy","partition","reduce","reduceRight","negate","sample","sampleSize","shuffle","sortBy","after","before","bind","bindKey","curry","curryRight","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","time","leadingEdge","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","timeWaiting","shouldInvoke","trailingEdge","cancel","flush","debounced","isInvoking","defer","delay","flip","memoized","Cache","once","overArgs","funcsLength","partial","partialRight","rearg","rest","spread","throttle","unary","wrap","castArray","cloneWith","cloneDeep","cloneDeepWith","conformsTo","gt","gte","isBoolean","isEmpty","isEqual","isEqualWith","isError","isInteger","isMatch","isMatchWith","isNumber","isNative","isNull","isNil","isSafeInteger","isUndefined","isWeakMap","isWeakSet","lt","lte","sign","remainder","isBinary","toSafeInteger","assignIn","assignInWith","assignWith","at","propsIndex","propsLength","defaultsDeep","mergeWith","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","functions","functionsIn","invert","invertBy","invoke","mapKeys","mapValues","merge","omit","omitBy","pickBy","prop","setWith","toPairs","toPairsIn","isArrLike","unset","updateWith","valuesIn","clamp","inRange","floating","temp","camelCase","word","toLowerCase","capitalize","upperFirst","endsWith","position","escape","escapeRegExp","kebabCase","lowerCase","lowerFirst","pad","strLength","padEnd","padStart","radix","repeat","snakeCase","limit","startCase","startsWith","template","settings","imports","importsKeys","importsValues","isEscaping","isEvaluating","interpolate","reDelimiters","evaluate","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","variable","attempt","toLower","toUpper","toUpperCase","trim","trimEnd","trimStart","truncate","omission","search","newEnd","unescape","upperCase","bindAll","methodNames","cond","conforms","defaultTo","flow","flowRight","matches","matchesProperty","method","methodOf","mixin","noConflict","nthArg","over","overEvery","overSome","propertyOf","range","rangeRight","stubObject","stubString","stubTrue","times","toPath","uniqueId","prefix","augend","addend","divide","dividend","divisor","maxBy","mean","meanBy","minBy","multiply","multiplier","multiplicand","round","subtract","minuend","subtrahend","sum","sumBy","entriesIn","extendWith","each","eachRight","first","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","commit","toJSON","i0","Injectable","Pipe","Component","ChangeDetectionStrategy","Input","ViewChild","HostListener","NgModule","BehaviorSubject","Subject","takeUntil","trigger","style","transition","animate","i2","CommonModule","i1","LOADERS","DEFAULTS","BD_COLOR","SPINNER_COLOR","SPINNER_TYPE","Z_INDEX","PRIMARY_SPINNER","NgxSpinner","init","NgxSpinnerService","spinnerObservable","getSpinner","asObservable","pipe","show","spinner","_reject","hide","ɵfac","ɵprov","providedIn","SafeHtmlPipe","_sanitizer","v","bypassSecurityTrustHtml","DomSanitizer","ɵpipe","NgxSpinnerComponent","spinnerService","changeDetector","elementRef","disableAnimation","ngUnsubscribe","setDefaultOptions","bdColor","color","fullScreen","divArray","divCount","zIndex","showSpinner","handleKeyboardEvent","event","spinnerDOM","nativeElement","isSpinnerZone","ngOnInit","subscribe","onInputChange","detectChanges","parentElement","ngOnChanges","changes","propName","changedProp","isFirstChange","currentValue","previousValue","getClass","sizeClass","class","ngOnDestroy","complete","ChangeDetectorRef","ElementRef","ɵcmp","NgIf","NgForOf","opacity","selector","templateUrl","styleUrls","changeDetection","OnPush","animations","NgxSpinnerModule","ɵmod","ɵinj","declarations","ɵAnimationGroupPlayer","NoopAnimationPlayer","AUTO_STYLE","ɵPRE_STYLE","sequence","ɵRuntimeError","NG_DEV_MODE$1","ngDevMode","LINE_START","invalidTimingValue","exp","negativeStepValue","negativeDelayValue","invalidStyleParams","varName","invalidParamValue","invalidNodeType","invalidCssUnitValue","userProvidedProperty","invalidTrigger","invalidDefinition","invalidState","metadataName","missingSubs","invalidStyleValue","invalidProperty","invalidParallelAnimation","firstStart","firstEnd","secondStart","secondEnd","invalidKeyframes","invalidOffset","keyframeOffsetsOutOfOrder","keyframesMissingOffsets","invalidStagger","invalidQuery","invalidExpression","expr","invalidTransitionAlias","alias","validationFailed","errors","buildingFailed","triggerBuildFailed","animationFailed","registerFailed","missingOrDestroyedAnimation","createAnimationFailed","missingPlayer","missingTrigger","phase","missingEvent","unsupportedTriggerEvent","unregisteredTrigger","triggerTransitionsFailed","triggerParsingFailed","transitionFailed","isBrowser","isNode","optimizeGroupPlayer","players","normalizeKeyframes","normalizer","keyframes","preStyles","postStyles","normalizedKeyframes","previousOffset","previousKeyframe","kf","isSameOffset","normalizedKeyframe","normalizedProp","normalizedValue","normalizePropertyName","normalizeStyleValue","listenOnPlayer","player","eventName","onStart","copyAnimationEvent","onDone","onDestroy","phaseName","totalTime","disabled","makeAnimationEvent","triggerName","fromState","toState","getOrSetAsInMap","parseTimelineCommand","command","separatorPos","substr","_contains","elm1","elm2","_query","multi","_documentElement","getParentElement","host","_isNode","Element","from","querySelectorAll","elem","querySelector","containsVendorPrefix","_CACHED_BODY","_IS_WEBKIT","validateStyleProperty","getBodyNode","camelProp","body","containsElement","invokeQuery","hypenatePropsObject","newObj","newProp","NoopAnimationDriver","matchesElement","_element","_selector","query","computeStyle","duration","easing","previousPlayers","scrubberAccessRequested","AnimationDriver","NOOP","ONE_SECOND","SUBSTITUTION_EXPR_START","SUBSTITUTION_EXPR_END","ENTER_CLASSNAME","LEAVE_CLASSNAME","NG_TRIGGER_CLASSNAME","NG_TRIGGER_SELECTOR","NG_ANIMATING_CLASSNAME","NG_ANIMATING_SELECTOR","resolveTimingValue","_convertTimeValueToMS","unit","resolveTiming","timings","allowNegativeValues","parseTimeExpression","regex","delayMatch","easingVal","containsErrors","startIndex","copyObj","destination","normalizeStyles","normalizedStyles","copyStyles","readPrototype","getStyleAttributeString","writeStyleAttribute","styleAttrValue","getPropertyValue","dashKey","camelCaseToDashCase","setAttribute","setStyles","formerStyles","dashCaseToCamelCase","eraseStyles","normalizeAnimationEntry","steps","validateStyleParams","params","extractStyleParams","PARAM_REGEX","interpolateParams","original","localVal","DASH_CASE_REGEXP","allowPreviousPlayerStylesMerge","balancePreviousStylesIntoKeyframes","previousStyles","previousStyleProps","startingKeyframe","missingStyleProps","visitDslNode","visitor","node","visitTrigger","visitState","visitTransition","visitSequence","visitGroup","visitAnimate","visitKeyframes","visitStyle","visitReference","visitAnimateChild","visitAnimateRef","visitQuery","visitStagger","NG_DEV_MODE","createListOfWarnings","warnings","Boolean","warning","warnValidation","warnTriggerBuild","warnRegister","triggerParsingWarnings","pushUnrecognizedPropertiesWarning","ANY_STATE","parseTransitionExpr","transitionValue","expressions","parseInnerTransitionStr","eventStr","parseAnimationAlias","makeLambdaFromStates","isFullAnyStateExpr","TRUE_BOOLEAN_VALUES","FALSE_BOOLEAN_VALUES","lhs","rhs","LHS_MATCH_BOOLEAN","RHS_MATCH_BOOLEAN","lhsMatch","rhsMatch","SELF_TOKEN","SELF_TOKEN_REGEX","buildAnimationAst","metadata","AnimationAstBuilderVisitor","build","ROOT_SELECTOR","AnimationAstBuilderContext","_resetContextStyleTimingState","ast","unsupportedCSSPropertiesFound","currentQuerySelector","collectedStyles","currentTime","queryCount","depCount","states","transitions","definitions","def","stateDef","styleAst","astParams","containsDynamicStyles","stylesObj","sub","missingSubsArr","animation","matchers","normalizeAnimationOptions","furthestTime","innerAst","timingAst","constructTimingAst","currentAnimateTimings","styleMetadata","newStyleData","_styleAst","isEmptyStep","_makeStyleAst","_validateStyleAst","styleTuple","collectedEasing","styleData","styleMap","endTime","startTime","tuple","collectedEntry","updateCollectedStyle","MAX_KEYFRAME_OFFSET","totalKeyframesWithOffsets","offsets","offsetsOutOfOrder","keyframesOutOfRange","offsetVal","consumeOffset","generatedOffset","animateDuration","durationUpToThisFrame","parentSelector","currentQuery","includeSelf","normalizeSelector","optional","originalSelector","hasAmpersand","token","normalizeParams","currentTransition","makeTimingAst","strValue","isDynamic","dynamic","createTimelineInstruction","preStyleProps","postStyleProps","subTimeline","ElementInstructionMap","_map","instructions","existingInstructions","ONE_FRAME_IN_MILLISECONDS","ENTER_TOKEN","ENTER_TOKEN_REGEX","LEAVE_TOKEN","LEAVE_TOKEN_REGEX","buildAnimationTimelines","rootElement","enterClassName","leaveClassName","startingStyles","finalStyles","subInstructions","AnimationTimelineBuilderVisitor","buildKeyframes","AnimationTimelineContext","currentTimeline","timelines","timeline","containsAnimation","lastRootTimeline","allowOnlyTimelineStyles","elementInstructions","innerContext","createSubContext","_visitSubInstructions","transformIntoNewTimeline","previousNode","instruction","instructionTimings","appendInstructionToTimeline","updateOptions","subContextCount","ctx","snapshotCurrentStyles","DEFAULT_NOOP_PREVIOUS_NODE","delayNextStep","applyStylesToKeyframe","innerTimelines","mergeTimelineCollectedStyles","_visitTiming","timingValue","incrementTime","getCurrentStyleProperties","forwardFrame","applyEmptyStep","innerTimeline","forwardTime","elms","currentQueryTotal","sameElementTimeline","currentQueryIndex","parentContext","tl","abs","maxTime","staggerTransformer","currentStaggerTime","startingTime","_enterClassName","_leaveClassName","initialTimeline","TimelineBuilder","skipIfExists","newOptions","optionsToUpdate","newParams","paramsToUpdate","_copyOptions","oldParams","newTime","fork","updatedTimings","SubTimelineBuilder","stretchStartingKeyframe","_elementTimelineStylesLookup","_previousKeyframe","_currentKeyframe","_keyframes","_styleSummary","_pendingStyles","_backFill","_currentEmptyStepKeyframe","_localTimelineStyles","_globalTimelineStyles","_loadKeyframe","hasPreStyleStep","_updateStyle","flattenStyles","val","getFinalKeyframe","details0","details1","finalKeyframes","keyframe","finalKeyframe","preProps","postProps","kf0","kf1","_stretchStartingKeyframe","newKeyframes","startingGap","newFirstKeyframe","oldFirstKeyframe","roundOffset","oldOffset","timeAtKeyframe","decimalPoints","mult","pow","allStyles","allProperties","Animation","_animationAst","buildTimelines","destinationStyles","dest","AnimationStyleNormalizer","NoopAnimationStyleNormalizer","propertyName","normalizedProperty","WebAnimationsStyleNormalizer","strVal","DIMENSIONAL_PROP_MAP","valAndSuffixMatch","makeBooleanMap","createTransitionInstruction","isRemovalTransition","fromStyles","toStyles","queriedElements","EMPTY_OBJECT","AnimationTransitionFactory","_triggerName","_stateStyles","currentState","nextState","oneOrMoreTransitionsMatch","buildStyles","stateName","backupStateStyler","stateStyler","backupStyles","currentOptions","nextOptions","skipAstBuild","transitionAnimationParams","currentAnimationParams","currentStateStyles","nextAnimationParams","nextStateStyles","preStyleMap","postStyleMap","isRemoval","animationOptions","elm","queriedElementsList","matchFns","AnimationStateStyles","defaultParams","combinedParams","styleObj","buildTrigger","AnimationTrigger","_normalizer","transitionFactories","balanceProperties","fallbackTransition","createFallbackTransition","containsQueries","matchTransition","matchStyles","key1","key2","EMPTY_INSTRUCTION_MAP","TimelineAnimationEngine","bodyNode","_animations","_playersById","register","_buildPlayer","autoStylesMap","inst","_getPlayer","listen","baseEvent","play","pause","restart","finish","setPosition","QUEUED_CLASSNAME","QUEUED_SELECTOR","DISABLED_CLASSNAME","DISABLED_SELECTOR","STAR_CLASSNAME","STAR_SELECTOR","EMPTY_PLAYER_ARRAY","NULL_REMOVAL_STATE","namespaceId","setForRemoval","setForMove","hasAnimation","removedBeforeQueried","NULL_REMOVED_QUERIED_STATE","REMOVAL_FLAG","StateValue","isObj","normalizeTriggerValue","absorbOptions","VOID_VALUE","DEFAULT_STATE_VALUE","AnimationTransitionNamespace","hostElement","_engine","_triggers","_queue","_elementListeners","_hostClassName","addClass","isTriggerEventValid","listeners","triggersWithStates","statesByElement","afterFlush","_getTrigger","defaultToFallback","TransitionAnimationPlayer","objEquals","reportError","playersOnElement","playersByElement","queued","isFallbackTransition","totalQueuedPlayers","removeClass","deregister","stateMap","clearElementCache","delete","elementPlayers","_signalRemovalForInnerTriggers","namespaces","fetchNamespacesByElement","ns","triggerLeaveAnimation","afterFlushAnimationsDone","destroyAfterComplete","triggerStates","previousTriggersValues","markElementAsRemoved","processLeaveNode","prepareLeaveAnimationListeners","elementStates","visitedTriggers","listener","removeNode","engine","childElementCount","containsPotentialParentTransition","totalAnimations","currentPlayers","playersByQueriedElement","triggers","removalFlag","destroyInnerAnimations","_onRemovalComplete","insertNode","drainQueuedTransitions","microtaskId","destroyed","markedForDestroy","b","d0","d1","elementContainsData","containsData","TransitionAnimationEngine","newHostElements","disabledNodes","_namespaceLookup","_namespaceList","_flushFns","_whenQuietFns","namespacesByHostElement","collectedEnterElements","collectedLeaveElements","onRemovalComplete","queuedPlayers","createNamespace","_balanceNamespaceList","collectEnterElement","namespaceList","found","ancestor","ancestorNs","nextNamespace","unshift","registerTrigger","_fetchNamespace","nsId","isElementNode","insertBefore","markElementAsDisabled","isHostElement","hostNS","_buildInstruction","subTimelines","skipBuildAst","containerElement","destroyActiveAnimationsForElement","finishActiveQueriedAnimationOnElement","whenRenderingDone","_a","classList","cleanupFns","_flushAnimations","quietFns","skippedPlayers","skippedPlayersMap","queuedInstructions","allPreStyleElements","allPostStyleElements","disabledElementsSet","nodesThatAreDisabled","allTriggerElements","enterNodeMap","buildRootMap","enterNodeMapIds","nodes","className","allLeaveNodes","mergedLeaveNodes","leaveNodesWithoutAnimations","leaveNodeMapIds","leaveNodeMap","allPlayers","erroneousTransitions","nodeIsOrphaned","stringMap","setVal","allPreviousPlayersMap","animationElementMap","_beforeAnimationBuild","_getPreviousPlayers","prevPlayer","replaceNodes","replacePostStylesAsPre","postStylesMap","allLeaveQueriedNodes","cloakAndComputeStyles","preStylesMap","post","pre","rootPlayers","subPlayers","NO_PARENT_ANIMATION_ELEMENT_DETECTED","overrideTotalTime","parentWithAnimation","parentsToAdd","detectedParent","innerPlayer","_buildAnimation","setRealPlayer","parentPlayers","parentPlayer","playersForElement","syncPlayerEvents","queriedPlayerResults","queriedInnerElements","queriedPlayers","activePlayers","removeNodesAfterAnimationDone","isQueriedElement","toStateValue","queriedElementPlayers","isRemovalAnimation","targetNameSpaceId","targetTriggerName","timelineInstruction","realPlayer","getRealPlayer","beforeDestroy","allQueriedPlayers","allConsumedElements","allSubElements","allNewPlayers","flattenGroupPlayers","pp","wrappedPlayer","deleteOrUnsetInMap","_player","_containsRealPlayer","_queuedCallbacks","triggerCallback","_queueEvent","hasStarted","getPosition","currentValues","cloakElement","oldValue","display","valuesMap","elementPropsMap","defaultStyle","cloakVals","failedElements","roots","rootMap","NULL_NODE","nodeSet","localRootMap","getRoot","finalPlayers","_flattenGroupPlayersRecur","k1","k2","postEntry","preEntry","AnimationEngine","_triggerCache","_transitionEngine","_timelineEngine","componentId","cacheKey","onInsert","onRemove","disableAnimations","disable","eventPhase","packageNonAnimatableStyles","startStyles","endStyles","filterNonAnimatableStyles","SpecialCasedStyles","_startStyles","_endStyles","_state","initialStyles","initialStylesByElement","_initialStyles","isNonAnimatableStyle","WebAnimationsPlayer","_specialStyles","_onDoneFns","_onStartFns","_onDestroyFns","_initialized","_finished","_started","_destroyed","currentSnapshot","_duration","_delay","_onFinish","_preparePlayerBeforeStart","domPlayer","_triggerWebAnimation","_finalKeyframe","addEventListener","_resetDomPlayerState","methods","WebAnimationsDriver","playerOptions","previousWebAnimationPlayers","specialStyles","ɵAnimation","ɵAnimationEngine","ɵAnimationStyleNormalizer","ɵNoopAnimationDriver","ɵNoopAnimationStyleNormalizer","ɵWebAnimationsDriver","ɵWebAnimationsPlayer","ɵWebAnimationsStyleNormalizer","ɵallowPreviousPlayerStylesMerge","ɵcontainsElement","ɵgetParentElement","ɵinvokeQuery","ɵvalidateStyleProperty","InjectionToken","ɵɵinject","Inject","Optional","EventEmitter","ɵfindLocaleData","ɵLocaleDataIndex","ɵgetLocaleCurrencyCode","ɵgetLocalePluralCase","LOCALE_ID","ɵregisterLocaleData","ɵisListLikeIterable","ɵstringify","Directive","NgModuleRef","ComponentFactoryResolver","Host","Attribute","ɵisPromise","ɵisSubscribable","DEFAULT_CURRENCY_CODE","Version","ɵɵdefineInjectable","_DOM","getDOM","setDOM","adapter","setRootDomAdapter","DomAdapter","DOCUMENT","PlatformLocation","historyGo","relativePosition","useBrowserPlatformLocation","useFactory","BrowserPlatformLocation","LOCATION_INITIALIZED","_doc","_init","location","_history","history","getBaseHrefFromDOM","getBaseHref","onPopState","getGlobalEventTarget","removeEventListener","onHashChange","href","protocol","hostname","port","pathname","hash","newPath","pushState","title","url","supportsState","replaceState","forward","back","go","getState","createBrowserPlatformLocation","decorators","joinWithSlash","slashes","stripTrailingSlash","pathEndIdx","droppedSlashIdx","normalizeQueryParams","LocationStrategy","provideLocationStrategy","platformLocation","PathLocationStrategy","origin","APP_BASE_HREF","_platformLocation","_removeListenerFns","_baseHref","prepareExternalUrl","internal","includeHash","queryParams","externalUrl","_b","HashLocationStrategy","Location","platformStrategy","_subject","_urlChangeListeners","_platformStrategy","browserBaseHref","_stripIndexHtml","ev","emit","normalize","isCurrentPathEqualTo","_stripBaseHref","_notifyUrlChangeListeners","onUrlChange","_urlChangeSubscription","onNext","onThrow","onReturn","createLocation","baseHref","CURRENCIES_EN","NumberFormatStyle","Plural","FormStyle","TranslationWidth","FormatWidth","NumberSymbol","WeekDay","getLocaleId","locale","LocaleId","getLocaleDayPeriods","formStyle","width","amPmData","DayPeriodsFormat","DayPeriodsStandalone","amPm","getLastDefinedValue","getLocaleDayNames","daysData","DaysFormat","DaysStandalone","days","getLocaleMonthNames","monthsData","MonthsFormat","MonthsStandalone","months","getLocaleEraNames","erasData","Eras","getLocaleFirstDayOfWeek","FirstDayOfWeek","getLocaleWeekEndRange","WeekendRange","getLocaleDateFormat","DateFormat","getLocaleTimeFormat","TimeFormat","getLocaleDateTimeFormat","dateTimeFormatData","DateTimeFormat","getLocaleNumberSymbol","res","NumberSymbols","CurrencyDecimal","Decimal","CurrencyGroup","Group","getLocaleNumberFormat","NumberFormats","getLocaleCurrencySymbol","CurrencySymbol","getLocaleCurrencyName","CurrencyName","getLocaleCurrencyCode","getLocaleCurrencies","Currencies","getLocalePluralCase","checkFullData","ExtraData","getLocaleExtraDayPeriodRules","rules","rule","extractTime","getLocaleExtraDayPeriods","dayPeriodsData","dayPeriods","getLocaleDirection","Directionality","h","hours","minutes","getCurrencySymbol","format","currency","symbolNarrow","DEFAULT_NB_OF_CURRENCY_DIGITS","getNumberOfCurrencyDigits","digits","ISO8601_DATE_REGEX","NAMED_FORMATS","DATE_FORMATS_SPLIT","ZoneWidth","DateType","TranslationType","formatDate","timezone","date","toDate","namedFormat","getNamedFormat","part","dateTimezoneOffset","getTimezoneOffset","timezoneToOffset","convertTimezoneToLocal","text","dateFormatter","getDateFormatter","createDate","year","month","newDate","setFullYear","setHours","localeId","formatValue","Short","Medium","Long","Full","shortTime","shortDate","formatDateTime","mediumTime","mediumDate","longTime","longDate","fullTime","fullDate","opt_values","padNumber","num","minusSign","negWrap","neg","strNum","formatFractionalSeconds","milliseconds","strMs","dateGetter","getDatePart","Hours","FractionalSeconds","localeMinus","MinusSign","FullYear","getFullYear","Month","getMonth","getDate","getHours","Minutes","getMinutes","Seconds","getSeconds","getMilliseconds","Day","getDay","dateStrGetter","form","Format","extended","getDateTranslation","Months","Days","DayPeriods","currentHours","currentMinutes","to","afterFrom","beforeTo","unexpected","timeZoneGetter","zone","ShortGMT","Extended","JANUARY","THURSDAY","getFirstThursdayOfYear","firstDayOfYear","getThursdayThisWeek","datetime","weekGetter","monthBased","nbDaysBefore1stDayOfMonth","today","thisThurs","firstThurs","diff","getTime","weekNumberingYearGetter","weekNumberingYear","DATE_FORMATS","formatter","Abbreviated","Wide","Narrow","Standalone","fallback","requestedTimezoneOffset","addDateMinutes","setMinutes","reverseValue","timezoneOffset","d","parsedNb","isoStringToDate","tzHour","tzMin","dateSetter","setUTCFullYear","timeSetter","setUTCHours","Number","ms","NUMBER_FORMAT_REGEXP","MAX_DIGITS","DECIMAL_SEP","ZERO_CHAR","PATTERN_SEP","GROUP_SEP","DIGIT_CHAR","CURRENCY_CHAR","PERCENT_CHAR","formatNumberToLocaleString","groupSymbol","decimalSymbol","digitsInfo","isPercent","formattedText","isZero","parsedNumber","parseNumber","toPercent","minInt","minFraction","minFrac","maxFraction","maxFrac","minIntPart","minFractionPart","maxFractionPart","parseIntAutoRadix","roundNumber","integerLen","exponent","decimals","groups","lgSize","gSize","Exponential","negPre","negSuf","posPre","posSuf","formatCurrency","currencyCode","Currency","parseNumberFormat","formatPercent","Percent","PercentSign","formatNumber","patternParts","positive","negative","positiveParts","integer","fraction","ch","trunkLen","pos","fractionLen","numStr","zeros","fractionSize","roundAt","digit","dropTrailingZeros","minLen","carry","NgLocalization","NgLocaleLocalization","deps","getPluralCategory","cases","ngLocalization","plural","Zero","One","Two","Few","Many","registerLocaleData","extraData","parseCookieValue","cookieStr","encodeURIComponent","cookie","eqIndex","cookieName","cookieValue","decodeURIComponent","NgClass","_iterableDiffers","_keyValueDiffers","_ngEl","_renderer","_iterableDiffer","_keyValueDiffer","_initialClasses","_rawClass","klass","_removeClasses","_applyClasses","ngClass","ngDoCheck","iterableChanges","_applyIterableChanges","keyValueChanges","_applyKeyValueChanges","forEachAddedItem","record","_toggleClass","forEachChangedItem","forEachRemovedItem","rawClassVal","IterableDiffers","KeyValueDiffers","Renderer2","ɵdir","NgComponentOutlet","_viewContainerRef","_componentRef","_moduleRef","ngComponentOutlet","elInjector","ngComponentOutletInjector","parentInjector","ngComponentOutletNgModuleFactory","parentModule","injector","componentFactoryResolver","componentFactory","resolveComponentFactory","createComponent","ngComponentOutletContent","ViewContainerRef","NgForOfContext","$implicit","ngForOf","even","odd","_viewContainer","_template","_differs","_ngForOf","_ngForOfDirty","_differ","ngForTrackBy","_trackByFn","ngForTemplate","getTypeName","_applyChanges","viewContainer","forEachOperation","adjustedPreviousIndex","currentIndex","previousIndex","createEmbeddedView","move","applyViewChange","ilen","viewRef","forEachIdentityChange","ngTemplateContextGuard","TemplateRef","templateRef","_context","NgIfContext","_thenTemplateRef","_elseTemplateRef","_thenViewRef","_elseViewRef","ngIf","condition","_updateView","ngIfThen","assertTemplate","ngIfElse","isTemplateRefOrNull","SwitchView","_templateRef","_created","enforceState","created","NgSwitch","_defaultUsed","_caseCount","_lastCaseCheckIndex","_lastCasesMatched","ngSwitch","_ngSwitch","_updateDefaultCases","_addCase","_addDefault","_defaultViews","_matchCase","matched","useDefault","defaultView","NgSwitchCase","throwNgSwitchProviderNotFoundError","_view","ngSwitchCase","NgSwitchDefault","attrName","directiveName","NgPlural","_localization","_caseViews","ngPlural","_switchValue","addCase","switchView","_clearViews","_activateView","_activeView","NgPluralCase","isANumber","NgStyle","_ngStyle","ngStyle","_setStyle","nameAndUnit","setStyle","removeStyle","NgTemplateOutlet","_viewRef","ngTemplateOutletContext","ngTemplateOutlet","viewContainerRef","COMMON_DIRECTIVES","invalidPipeArgumentError","errorMessage","SubscribableStrategy","createSubscription","async","updateLatestValue","dispose","subscription","unsubscribe","PromiseStrategy","_promiseStrategy","_subscribableStrategy","AsyncPipe","_latestValue","_subscription","_obj","_strategy","_dispose","_subscribe","_selectStrategy","_updateLatestValue","markForCheck","pure","LowerCasePipe","unicodeWordMatch","TitleCasePipe","txt","UpperCasePipe","DATE_PIPE_DEFAULT_TIMEZONE","DatePipe","defaultTimezone","_INTERPOLATION_REGEXP","I18nPluralPipe","pluralMap","I18nSelectPipe","mapping","JsonPipe","makeKeyValuePair","KeyValuePipe","differs","keyValues","compareFn","defaultComparator","differ","differChanges","compareFnChanged","forEachItem","keyValueA","keyValueB","aString","bString","DecimalPipe","_locale","isValue","strToNumber","PercentPipe","CurrencyPipe","_defaultCurrencyCode","SlicePipe","COMMON_PIPES","PLATFORM_BROWSER_ID","PLATFORM_SERVER_ID","PLATFORM_WORKER_APP_ID","PLATFORM_WORKER_UI_ID","isPlatformBrowser","platformId","isPlatformServer","isPlatformWorkerApp","isPlatformWorkerUi","ViewportScroller","factory","BrowserViewportScroller","setOffset","getScrollPosition","supportsScrolling","pageXOffset","pageYOffset","scrollToPosition","scrollTo","scrollToAnchor","elSelected","findAnchorFromDocument","scrollToElement","focus","setHistoryScrollRestoration","scrollRestoration","supportScrollRestoration","el","rect","left","top","scrollRestorationDescriptor","getScrollRestorationProperty","writable","getOwnPropertyDescriptor","documentResult","getElementById","getElementsByName","createTreeWalker","createShadowRoot","attachShadow","treeWalker","NodeFilter","SHOW_ELEMENT","currentNode","shadowRoot","nextNode","NullViewportScroller","anchor","XhrFactory","ɵBrowserPlatformLocation","ɵDomAdapter","ɵNullViewportScroller","ɵPLATFORM_BROWSER_ID","ɵPLATFORM_SERVER_ID","ɵPLATFORM_WORKER_APP_ID","ɵPLATFORM_WORKER_UI_ID","ɵgetDOM","ɵparseCookieValue","ɵsetRootDomAdapter","XhrFactory$1","PLATFORM_ID","of","Observable","concatMap","HttpHandler","HttpBackend","HttpHeaders","headers","normalizedNames","lazyUpdate","lazyInit","line","maybeSetNormalizedName","getAll","op","lcName","copyFrom","applyUpdate","base","toDelete","existing","HttpUrlEncodingCodec","encodeKey","standardEncoding","encodeValue","decodeKey","decodeValue","paramParser","rawParams","codec","param","eqIdx","list","STANDARD_ENCODING_REGEX","STANDARD_ENCODING_REPLACEMENTS","valueToString","HttpParams","updates","cloneFrom","encoder","fromString","fromObject","appendAll","_value","eKey","idx","HttpContextToken","HttpContext","mightHaveBody","isBlob","isFormData","FormData","isUrlSearchParams","URLSearchParams","HttpRequest","third","fourth","reportProgress","withCredentials","responseType","urlWithParams","qIdx","sep","serializeBody","detectContentTypeHeader","setHeaders","setParams","HttpEventType","HttpResponseBase","defaultStatus","defaultStatusText","statusText","ok","HttpHeaderResponse","ResponseHeader","HttpResponse","Response","HttpErrorResponse","addBody","HttpClient","handler","request","events$","handle","res$","jsonp","callbackParam","patch","HttpInterceptorHandler","intercept","HTTP_INTERCEPTORS","NoopInterceptor","nextRequestId","foreignDocument","JSONP_ERR_NO_CALLBACK","JSONP_ERR_WRONG_METHOD","JSONP_ERR_WRONG_RESPONSE_TYPE","JsonpCallbackContext","JsonpClientBackend","callbackMap","resolvedPromise","nextCallback","src","finished","cleanup","onLoad","Sent","removeListeners","script","implementation","createHTMLDocument","adoptNode","JsonpInterceptor","XSSI_PREFIX","getResponseUrl","xhr","responseURL","getAllResponseHeaders","getResponseHeader","HttpXhrBackend","xhrFactory","setRequestHeader","detectedType","reqBody","headerResponse","partialFromXhr","responseText","originalBody","sentHeaders","onDownProgress","progressEvent","DownloadProgress","loaded","lengthComputable","total","partialText","onUpProgress","progress","UploadProgress","upload","send","readyState","DONE","abort","XSRF_COOKIE_NAME","XSRF_HEADER_NAME","HttpXsrfTokenExtractor","HttpXsrfCookieExtractor","doc","lastCookieString","lastToken","parseCount","getToken","cookieString","HttpXsrfInterceptor","tokenService","headerName","lcUrl","HttpInterceptingHandler","backend","interceptors","Injector","interceptingHandler","jsonpCallbackContext","HttpClientXsrfModule","ngModule","providers","provide","useClass","withOptions","useValue","useExisting","HttpClientModule","HttpClientJsonpModule","ɵHttpInterceptingHandler","forwardRef","ɵisObservable","Self","SkipSelf","Output","forkJoin","BaseControlValueAccessor","_elementRef","onChange","onTouched","setProperty","registerOnTouched","registerOnChange","setDisabledState","isDisabled","BuiltInControlValueAccessor","NG_VALUE_ACCESSOR","CHECKBOX_VALUE_ACCESSOR","CheckboxControlValueAccessor","writeValue","DEFAULT_VALUE_ACCESSOR","DefaultValueAccessor","_isAndroid","getUserAgent","COMPOSITION_BUFFER_MODE","renderer","_compositionMode","_composing","_handleInput","_compositionStart","_compositionEnd","isEmptyInputValue","hasValidLength","NG_VALIDATORS","NG_ASYNC_VALIDATORS","EMAIL_REGEXP","Validators","minValidator","maxValidator","required","control","requiredValidator","requiredTrue","requiredTrueValidator","email","emailValidator","minLength","minLengthValidator","maxLengthValidator","patternValidator","nullValidator","compose","validators","composeAsync","regexStr","isPresent","toObservable","obs","mergeErrors","arrayOfErrors","executeValidators","validator","isValidatorFn","validate","normalizeValidators","presentValidators","composeValidators","observables","composeAsyncValidators","mergeValidators","controlValidators","dirValidator","getControlValidators","_rawValidators","getControlAsyncValidators","_rawAsyncValidators","makeValidatorsArray","hasValidator","addValidators","currentValidators","validatorsToAdd","removeValidators","AbstractControlDirective","_onDestroyCallbacks","valid","invalid","pending","pristine","dirty","touched","untouched","statusChanges","valueChanges","_setValidators","_composedValidatorFn","_setAsyncValidators","_composedAsyncValidatorFn","asyncValidator","_registerOnDestroy","_invokeOnDestroyCallbacks","hasError","errorCode","getError","NgControl","_parent","valueAccessor","ControlContainer","formDirective","AbstractControlStatus","cd","_cd","is","_c","submitted","ngControlStatusHost","ngGroupStatusHost","NgControlStatus","NgControlStatusGroup","formControlNameExample","formGroupNameExample","formArrayNameExample","ngModelGroupExample","ngModelWithFormGroupExample","controlParentException","ngModelGroupException","missingFormException","groupParentException","arrayParentException","disabledAttrWarning","ngModelWarning","describeKey","isFormGroup","noControlsError","missingControlError","missingControlValueError","controlPath","setUpControl","_throwError","setUpValidators","setUpViewChangePipeline","setUpModelChangePipeline","setUpBlurPipeline","setUpDisabledChangeHandler","cleanUpControl","validateControlPresenceOnChange","_noControlError","cleanUpValidators","_registerOnCollectionChange","registerOnValidatorChange","onDisabledChange","registerOnDisabledChange","_unregisterOnDisabledChange","setValidators","asyncValidators","setAsyncValidators","onValidatorChange","updateValueAndValidity","isControlUpdated","updatedValidators","updatedAsyncValidators","_pendingValue","_pendingChange","_pendingDirty","updateOn","updateControl","_pendingTouched","markAsTouched","markAsDirty","setValue","emitModelToViewChange","viewToModelUpdate","emitModelEvent","_unregisterOnChange","setUpFormContainer","cleanUpFormContainer","messageEnd","_describeControlLocation","_throwInvalidValueAccessorError","loc","isPropertyUpdated","viewModel","change","isBuiltInAccessor","syncPendingControls","directives","_syncPendingControls","selectValueAccessor","valueAccessors","defaultAccessor","builtinAccessor","customAccessor","removeListItem","_ngModelWarning","warningConfig","_ngModelWarningSentOnce","_ngModelWarningSent","VALID","INVALID","DISABLED","_find","delimiter","controlToFind","controls","isFormArray","pickValidators","validatorOrOpts","isOptionsObj","coerceToValidator","pickAsyncValidators","coerceToAsyncValidator","isFormControl","FormControl","FormGroup","FormArray","getRawValue","assertControlPresent","isGroup","assertAllValuesPresent","_forEachChild","AbstractControl","_hasOwnPendingAsyncValidator","_onCollectionChange","_onDisabledChange","validatorFn","asyncValidatorFn","_updateOn","addAsyncValidators","removeAsyncValidators","hasAsyncValidator","clearValidators","clearAsyncValidators","opts","onlySelf","markAllAsTouched","markAsUntouched","_updateTouched","markAsPristine","_updatePristine","markAsPending","emitEvent","skipPristineCheck","_parentMarkedDirty","_updateValue","_updateAncestors","changeFn","enable","setParent","_setInitialStatus","_cancelExistingSubscription","_runValidator","_calculateStatus","_runAsyncValidator","_updateTreeValidity","ctrl","_allControlsDisabled","_asyncValidationSubscription","setErrors","_updateControlsErrors","_initObservables","_anyControlsHaveStatus","_anyControls","_anyControlsDirty","_anyControlsTouched","_isBoxedValue","formState","_setUpdateStrategy","parentDirty","_onChange","_applyFormState","initialValueIsDefault","emitViewToModelChange","patchValue","cb","_setUpControls","registerControl","addControl","removeControl","setControl","controlName","_reduceChildren","acc","subtreeUpdated","updated","child","_reduceValue","initValue","_registerControl","insert","removeAt","formDirectiveProvider$1","NgForm","resolvedPromise$1","_directives","ngSubmit","ngAfterViewInit","container","_findContainer","getControl","addFormGroup","removeFormGroup","getFormGroup","updateModel","onSubmit","$event","onReset","resetForm","outputs","exportAs","AbstractFormGroupDirective","_checkParentType","modelParentException","formGroupNameException","missingNameException","modelGroupParentException","modelGroupProvider","NgModelGroup","formControlBinding$1","NgModel","_changeDetectorRef","_registered","_checkForErrors","_checkName","oldName","_getPath","_setUpControl","_updateDisabled","model","_isStandalone","_setUpStandalone","standalone","disabledValue","ɵNgNoValidate","NUMBER_VALUE_ACCESSOR","NumberValueAccessor","RADIO_VALUE_ACCESSOR","RadioControlValueAccessor","throwNameError","RadioControlRegistryModule","RadioControlRegistry","_accessors","accessor","select","_isSameGroup","fireUncheck","controlPair","_control","_registry","_injector","_fn","formControlName","RANGE_VALUE_ACCESSOR","RangeValueAccessor","NG_MODEL_WITH_FORM_CONTROL_WARNING","formControlBinding","FormControlDirective","_ngModelWarningConfig","_isControlChanged","previousForm","formDirectiveProvider","FormGroupDirective","_updateDomValue","_checkFormPresent","_updateValidators","_updateRegistrations","_oldForm","_setUpFormContainer","_cleanUpFormContainer","addFormArray","removeFormArray","getFormArray","oldCtrl","newCtrl","formGroupNameProvider","FormGroupName","_hasInvalidParent","formArrayNameProvider","FormArrayName","controlNameBinding","FormControlName","_added","SELECT_VALUE_ACCESSOR","SelectControlValueAccessor","_buildValueString$1","_extractId$1","valueString","_optionMap","_idCounter","_compareWith","compareWith","_getOptionId","_getOptionValue","_registerOption","NgSelectOption","_select","ngValue","_setElementValue","SELECT_MULTIPLE_VALUE_ACCESSOR","SelectMultipleControlValueAccessor","_buildValueString","_extractId","HTMLCollection","optionSelectedStateSetter","ids","opt","_setSelected","selected","selectedOptions","ɵNgSelectMultipleOption","toBoolean","toFloat","AbstractValidatorDirective","_validator","inputName","normalizeInput","_enabled","createValidator","MAX_VALIDATOR","MaxValidator","MIN_VALIDATOR","MinValidator","REQUIRED_VALIDATOR","RequiredValidator","CHECKBOX_REQUIRED_VALIDATOR","CheckboxRequiredValidator","EMAIL_VALIDATOR","EmailValidator","MIN_LENGTH_VALIDATOR","MinLengthValidator","minlength","MAX_LENGTH_VALIDATOR","MaxLengthValidator","maxlength","PATTERN_VALIDATOR","PatternValidator","SHARED_FORM_DIRECTIVES","TEMPLATE_DRIVEN_DIRECTIVES","REACTIVE_DRIVEN_DIRECTIVES","ɵInternalFormsSharedModule","FormsModule","ReactiveFormsModule","withConfig","warnOnNgModelWithFormControl","isAbstractControlOptions","FormBuilder","controlsConfig","_reduceControls","_createControl","controlConfig","ViewEncapsulation","RendererFactory2","NgZone","ɵDomRendererFactory2","BrowserModule","AnimationBuilder","AnimationFactory","BrowserAnimationBuilder","rootRenderer","_nextAnimationId","typeData","encapsulation","None","createRenderer","issueAnimationCommand","BrowserAnimationFactory","_id","RendererAnimationPlayer","_command","_listen","ANIMATION_PREFIX","DISABLE_ANIMATIONS_FLAG","AnimationRendererFactory","delegate","_zone","_currentId","_microtaskId","_animationCallbacksBuffer","_rendererCache","_cdRecurDepth","EMPTY_NAMESPACE_ID","BaseAnimationRenderer","animationTriggers","AnimationRenderer","begin","_scheduleCountTask","scheduleListenerCallback","run","runOutsideAngular","destroyNode","namespace","createComment","createText","newChild","refChild","isMove","oldChild","selectRootElement","selectorOrNode","preserveContent","nextSibling","removeAttribute","flags","resolveElementFromTarget","parseTriggerCallbackName","countId","dotIndex","InjectableAnimationEngine","instantiateDefaultStyleNormalizer","instantiateRendererFactory","ANIMATION_MODULE_TYPE","SHARED_ANIMATION_PROVIDERS","BROWSER_ANIMATIONS_PROVIDERS","BROWSER_NOOP_ANIMATIONS_PROVIDERS","BrowserAnimationsModule","NoopAnimationsModule","ɵAnimationRenderer","ɵAnimationRendererFactory","ɵBrowserAnimationBuilder","ɵBrowserAnimationFactory","ɵInjectableAnimationEngine","ApplicationInitStatus","APP_INITIALIZER","setTestabilityGetter","ɵglobal","APP_ID","RendererStyleFlags2","ErrorHandler","ɵsetDocument","PLATFORM_INITIALIZER","createPlatformFactory","platformCore","ɵINJECTOR_SCOPE","Testability","ApplicationModule","ApplicationRef","ɵConsole","SecurityContext","ɵallowSanitizationBypassAndThrow","ɵunwrapSafeValue","ɵgetSanitizationBypassType","ɵ_sanitizeUrl","ɵ_sanitizeHtml","ɵbypassSanitizationTrustHtml","ɵbypassSanitizationTrustStyle","ɵbypassSanitizationTrustScript","ɵbypassSanitizationTrustUrl","ɵbypassSanitizationTrustResourceUrl","GenericBrowserDomAdapter","supportsDOMEvents","BrowserDomAdapter","makeCurrent","onAndCancel","evt","dispatchEvent","tagName","getDefaultDocument","createHtmlDocument","Node","ELEMENT_NODE","isShadowRoot","DocumentFragment","getBaseElementHref","relativePath","resetBaseElement","baseElement","getCookie","getAttribute","urlParsingNode","pathName","TRANSITION_ID","appInitializerFactory","transitionId","donePromise","dom","SERVER_TRANSITION_PROVIDERS","BrowserGetTestability","addToWindow","registry","findInAncestors","testability","findTestabilityInTree","getAllTestabilities","getAllRootElements","whenAllStable","testabilities","didWork","decrement","didWork_","whenStable","getTestability","BrowserXhr","XMLHttpRequest","EVENT_MANAGER_PLUGINS","EventManager","plugins","_eventNameToPlugin","manager","_plugins","plugin","_findPluginFor","addGlobalEventListener","getZone","EventManagerPlugin","SharedStylesHost","_stylesSet","addStyles","additions","onStylesAdded","getAllStyles","DomSharedStylesHost","_hostNodes","_addStylesToHost","styleNodes","styleEl","textContent","addHost","hostNode","removeHost","styleNode","NAMESPACE_URIS","COMPONENT_REGEX","COMPONENT_VARIABLE","HOST_ATTR","CONTENT_ATTR","shimContentAttribute","componentShortId","shimHostAttribute","compId","decoratePreventDefault","eventHandler","allowDefaultBehavior","hasLoggedNativeEncapsulationWarning","DomRendererFactory2","eventManager","sharedStylesHost","appId","rendererByCompId","defaultRenderer","DefaultDomRenderer2","Emulated","EmulatedEncapsulationDomRenderer2","applyToHost","ShadowDom","ShadowDomRenderer","createElementNS","namespaceUri","setAttributeNS","removeAttributeNS","DashCase","Important","removeProperty","checkNoSyntheticProp","nodeValue","AT_CHARCODE","nameKind","component","contentAttr","hostAttr","hostEl","nodeOrShadowRoot","DomEventsPlugin","MODIFIER_KEYS","DOM_KEY_LOCATION_NUMPAD","_keyMap","_chromeNumKeyPadMap","MODIFIER_KEY_GETTERS","altKey","ctrlKey","metaKey","shiftKey","KeyEventsPlugin","parseEventName","parsedEvent","outsideHandler","eventCallback","domEventName","shift","_normalizeKey","fullKey","modifierName","getEventFullKey","getEventKey","modifierGetter","runGuarded","keyName","keyIdentifier","fromCharCode","initDomAdapter","errorHandler","_document","INTERNAL_BROWSER_PLATFORM_PROVIDERS","platformBrowser","BROWSER_MODULE_PROVIDERS","withServerTransition","createMeta","Meta","_dom","addTag","forceCreation","_getOrCreateElement","addTags","tags","attrSelector","getTags","updateTag","_parseSelector","meta","_setMetaElementAttributes","removeTag","removeTagElement","_containsAttributes","getElementsByTagName","_getMetaKeyMap","attr","META_KEYS_MAP","httpEquiv","createTitle","Title","getTitle","setTitle","newTitle","CAMEL_CASE_REGEXP","exportNgVar","COMPILED","ng","win","ChangeDetectionPerfRecord","msPerTick","numTicks","AngularProfiler","ref","appRef","timeChangeDetection","profileName","isProfilerAvailable","profile","performanceNow","tick","profileEnd","log","toFixed","performance","PROFILER_GLOBAL_NAME","enableDebugTools","disableDebugTools","escapeHtml","escapedText","unescapeHtml","unescapedText","makeStateKey","TransferState","onSerializeCallbacks","initState","transferState","hasKey","onSerialize","toJson","initTransferState","initialState","BrowserTransferStateModule","By","css","debugElement","elementMatches","directive","debugNode","providerTokens","msMatchesSelector","webkitMatchesSelector","EVENT_NAMES","HAMMER_GESTURE_CONFIG","HAMMER_LOADER","HammerGestureConfig","events","overrides","buildHammer","mc","Hammer","HammerGesturesPlugin","loader","_loaderPromise","isCustomEvent","cancelRegistration","catch","eventObj","on","off","HammerModule","DomSanitizerImpl","domSanitizerImplFactory","sanitize","NONE","HTML","STYLE","SCRIPT","URL","RESOURCE_URL","bypassSecurityTrustStyle","bypassSecurityTrustScript","bypassSecurityTrustUrl","bypassSecurityTrustResourceUrl","ɵBrowserDomAdapter","ɵBrowserGetTestability","ɵDomEventsPlugin","ɵDomSanitizerImpl","ɵDomSharedStylesHost","ɵHammerGesturesPlugin","ɵINTERNAL_BROWSER_PLATFORM_PROVIDERS","ɵKeyEventsPlugin","ɵNAMESPACE_URIS","ɵSharedStylesHost","ɵTRANSITION_ID","ɵescapeHtml","ɵflattenStyles","ɵinitDomAdapter","ɵshimContentAttribute","ɵshimHostAttribute","InjectFlags","NgModuleFactory","HostBinding","ContentChildren","Compiler","NgProbeToken","ANALYZE_FOR_ENTRY_COMPONENTS","APP_BOOTSTRAP_LISTENER","combineLatest","throwError","EmptyError","EMPTY","ConnectableObservable","switchMap","startWith","scan","catchError","last$1","mergeMap","takeLast","refCount","finalize","mergeAll","i3","RouterEvent","NavigationStart","navigationTrigger","restoredState","NavigationEnd","urlAfterRedirects","NavigationCancel","NavigationError","RoutesRecognized","GuardsCheckStart","GuardsCheckEnd","shouldActivate","ResolveStart","ResolveEnd","RouteConfigLoadStart","route","RouteConfigLoadEnd","ChildActivationStart","snapshot","routeConfig","ChildActivationEnd","ActivationStart","ActivationEnd","Scroll","routerEvent","PRIMARY_OUTLET","ParamsAsMap","convertToParamMap","NAVIGATION_CANCELING_ERROR","navigationCancelingError","isNavigationCancelingError","defaultUrlMatcher","segments","segmentGroup","pathMatch","hasChildren","posParams","segment","isParameter","consumed","shallowEqualArrays","shallowEqual","equalArraysOrString","aSorted","bSorted","and","bools","wrapIntoObservable","createEmptyUrlTree","UrlTree","UrlSegmentGroup","pathCompareMap","equalSegmentGroups","containsSegmentGroup","paramCompareMap","equalParams","containsParams","containsTree","containee","matrixParams","fragment","equalPath","matrixParamsMatch","numberOfChildren","children","containsSegmentGroupHelper","containeePaths","containerPaths","containeeSegment","parameters","queryParamMap","_queryParamMap","DEFAULT_SERIALIZER","serializePaths","UrlSegment","parameterMap","_parameterMap","serializePath","equalSegments","as","bs","mapChildrenIntoArray","childOutlet","UrlSerializer","DefaultUrlSerializer","UrlParser","parseRootSegment","parseQueryParams","parseFragment","tree","serializeSegment","serializeQueryParams","encodeUriFragment","primary","encodeUriString","encodeUriQuery","encodeURI","encodeUriSegment","decode","decodeQuery","serializeMatrixParams","strParams","SEGMENT_RE","matchSegments","QUERY_PARAM_RE","matchQueryParams","QUERY_PARAM_VALUE_RE","matchUrlQueryParamValue","consumeOptional","peekStartsWith","parseChildren","parseQueryParam","parseSegment","capture","parseParens","parseMatrixParams","parseParam","valueMatch","decodedKey","decodedVal","currentVal","allowPrimary","outletName","Tree","_root","pathFromRoot","findNode","firstChild","siblings","findPath","cc","TreeNode","nodeChildrenAsMap","outlet","RouterState","setRouterState","createEmptyState","urlTree","rootComponent","createEmptyStateSnapshot","emptyUrl","emptyParams","emptyData","emptyQueryParams","activated","ActivatedRoute","ActivatedRouteSnapshot","RouterStateSnapshot","futureSnapshot","_futureSnapshot","_routerState","paramMap","_paramMap","inheritedParamsDataResolve","paramsInheritanceStrategy","inheritingStartingFrom","flattenInherited","curr","_resolvedData","urlSegment","lastPathIndex","_urlSegment","_lastPathIndex","_resolve","serializeNode","advanceActivatedRoute","nextSnapshot","equalParamsAndUrlSegments","equalUrlParams","parentsMismatch","createRouterState","routeReuseStrategy","prevState","createNode","shouldReuseRoute","createOrReuseChildren","shouldAttach","detachedRouteHandle","retrieve","createActivatedRoute","createUrlTree","commands","nav","computeNavigation","toRoot","startingPosition","findStartingPosition","processChildren","updateSegmentGroupChildren","updateSegmentGroup","isMatrixParams","outlets","segmentPath","isCommandWithOutlets","oldRoot","oldSegmentGroup","newSegmentGroup","qp","newRoot","replaceSegment","oldSegment","newSegment","Navigation","isAbsolute","numberOfDoubleDots","cmdWithOutlet","cmd","cmdIdx","urlPart","partIndex","Position","createPositionApplyingDoubleDots","ci","dd","getOutlets","prefixedWith","slicedCommands","commandIndex","pathIndex","createNewSegmentGroup","currentCommandIndex","currentPathIndex","noMatch","compare","createNewSegmentChildren","activateRoutes","rootContexts","forwardEvent","ActivateRoutes","targetRouterState","currentRouterState","activate","futureState","currState","parentContexts","futureRoot","currRoot","deactivateChildRoutes","activateChildRoutes","futureNode","currNode","contexts","futureChild","childOutletName","deactivateRoutes","childName","deactivateRouteAndItsChildren","future","getContext","shouldDetach","detachAndStoreRouteSubtree","deactivateRouteAndOutlet","componentRef","detach","onOutletDeactivated","deactivate","attachRef","getOrCreateContext","stored","onOutletReAttached","attach","parentLoadedConfig","cmpFactoryResolver","activateWith","_loadedConfig","LoadedRouterConfig","routes","isUrlTree","isCanLoad","canLoad","isCanActivate","canActivate","isCanActivateChild","canActivateChild","isCanDeactivate","canDeactivate","INITIAL_VALUE","prioritizedGuardValue","isPending","innerAcc","OutletContext","ChildrenOutletContexts","onChildOutletCreated","onChildOutletDestroyed","RouterOutlet","_activatedRoute","activateEvents","deactivateEvents","attachEvents","detachEvents","isActivated","activatedRoute","activatedRouteData","cmp","hostView","childContexts","OutletInjector","notFoundValue","ɵEmptyOutletComponent","validateConfig","parentPath","fullPath","getFullPath","validateNode","loadChildren","redirectTo","currentRoute","standardizeConfig","getOutlet","sortByMatchingOutlets","sortedConfig","noMatch$1","consumedSegments","remainingSegments","positionalParamSegments","slicedSegments","relativeLinkResolution","containsEmptyPathMatchesWithNamedOutlets","createChildrenForEmptyPaths","_sourceSegment","_segmentIndexShift","containsEmptyPathMatches","addEmptyPathsToChildrenIfNeeded","emptyPathMatch","primarySegment","isImmediateMatch","rawSegment","noLeftoversInUrl","NoMatch$1","AbsoluteRedirect","absoluteRedirect","newTree","namedOutletsRedirect","canLoadFails","applyRedirects$1","moduleInjector","configLoader","urlSerializer","ApplyRedirects","allowRedirects","splitGroup","rootSegmentGroup","expanded$","expandSegmentGroup","urlTrees$","squashSegmentGroup","noMatchError","mapped$","rootCandidate","expandChildren","expandSegment","childOutlets","sortedRoutes","expandedChild","expandSegmentAgainstRoute","matchSegmentAgainstRoute","expandSegmentAgainstRouteUsingRedirect","expandWildCardWithParamsAgainstRouteUsingRedirect","expandRegularSegmentAgainstRouteUsingRedirect","applyRedirectCommands","lineralizeSegments","newSegments","rawSegmentGroup","loaded$","load","cfg","childConfig$","getChildConfig","routerConfig","childModule","childConfig","splitSegmentGroup","matchedOnOutlet","cs","runCanLoadGuards","shouldLoadResult","canLoadObservables","injectionToken","guardVal","applyRedirectCreatreUrlTree","createSegmentGroup","createQueryParams","redirectToParams","actualParams","copySourceValue","sourceName","updatedSegments","createSegments","redirectToSegments","actualSegments","findPosParam","findOrReturn","redirectToUrlSegment","mergeTrivialChildren","newChildren","childCandidate","applyRedirects","extractedUrl","CanActivate","CanDeactivate","getAllRouteGuards","getChildRouteGuards","getCanActivateChild","guards","getClosestLoadedConfig","futurePath","checks","canDeactivateChecks","canActivateChecks","prevChildren","getRouteGuards","shouldRun","shouldRunGuardsAndResolvers","runGuardsAndResolvers","checkGuards","targetSnapshot","guardsResult","runCanDeactivateChecks","runCanActivateChecks","futureRSS","currRSS","check","runCanDeactivate","fireChildActivationStart","fireActivationStart","runCanActivateChild","runCanActivate","futureARS","canActivateObservables","observable","canActivateChildGuards","canActivateChildGuardsMapped","guardsMapped","currARS","canDeactivateObservables","NoMatch","newObservableError","recognize$1","rootComponentType","Recognizer","recognize","processSegmentGroup","freeze","rootNode","routeState","inheritParamsAndData","routeNode","processSegment","outletChildren","mergedChildren","mergeEmptyPathMatches","checkOutletNameUniqueness","sortActivatedRouteSnapshots","processSegmentAgainstRoute","getSourceSegmentGroup","getPathIndexShift","getResolve","localeCompare","hasEmptyPathConfig","mergedNodes","duplicateEmptyPathNode","resultNode","mergedNode","names","routeWithSameOutletName","resolveData","canActivateChecksResolved","runResolve","resolveNode","resolvedData","getDataKeys","getResolver","switchTap","nextResult","RouteReuseStrategy","BaseRouteReuseStrategy","detachedTree","DefaultRouteReuseStrategy","ROUTES","RouterConfigLoader","compiler","onLoadStartListener","onLoadEndListener","_loader$","moduleFactory$","loadModuleFactory","loadRunner","compileModuleAsync","UrlHandlingStrategy","DefaultUrlHandlingStrategy","shouldProcessUrl","extract","newUrlPart","wholeUrl","defaultErrorHandler","defaultMalformedUriErrorHandler","defaultRouterHook","runExtras","exactMatchOptions","subsetMatchOptions","Router","lastSuccessfulNavigation","currentNavigation","disposed","navigationId","currentPageId","isNgZoneEnabled","malformedUriErrorHandler","navigated","lastSuccessfulId","hooks","beforePreactivation","afterPreactivation","urlHandlingStrategy","onSameUrlNavigation","urlUpdateStrategy","canceledNavigationResolution","onLoadStart","triggerEvent","onLoadEnd","ngZone","isInAngularZone","resetConfig","currentUrlTree","rawUrlTree","browserUrlTree","routerState","targetPageId","currentRawUrl","rawUrl","extras","navigations","setupNavigations","processNavigations","browserPageId","ɵrouterPageId","eventsSubject","completed","errored","initialUrl","previousNavigation","urlTransition","processCurrentUrl","isBrowserTriggeredNavigation","serializeUrl","finalUrl","skipLocationChange","setBrowserUrl","routesRecognized","processPreviousUrl","navStart","replaceUrl","appliedUrlTree","guardsStart","guardsEnd","restoreHistory","cancelNavigationTransition","resolveStart","dataResolved","resolveEnd","cancelationReason","redirecting","navCancel","mergedTree","scheduleNavigation","navError","ee","resetRootComponentType","setTransition","initialNavigation","setUpLocationChangeListener","navigateByUrl","locationSubscription","stateCopy","parseUrl","getCurrentNavigation","navigationExtras","relativeTo","queryParamsHandling","preserveFragment","q","removeEmptyProps","navigate","validateCommands","isActive","matchOptions","priorPromise","rej","isInitialPage","generateNgRouterState","restoringFromCaughtError","targetPagePosition","browserUrlUpdateOccurred","resetState","resetUrlToCurrentUrlTree","routerPageId","Type","RouterLink","router","tabIndexAttribute","onChanges","setTabIndexIfNotOnNativeEl","newTabIndex","routerLink","onClick","attrBoolValue","RouterLinkWithHref","locationStrategy","updateTargetUrlAndHref","button","RouterLinkActive","cdr","link","linkWithHref","classes","routerLinkActiveOptions","exact","isActiveChange","routerEventsSubscription","ngAfterContentInit","links","linksWithHrefs","subscribeToEachLinkOnChanges","linkInputChangesSubscription","allLinkChanges","isLinkActive","routerLinkActive","hasActiveLinks","isActiveMatchOptions","isActiveCheckFn","descendants","PreloadingStrategy","PreloadAllModules","preload","NoPreloading","RouterPreloader","preloadingStrategy","onStartLoad","onEndLoad","setUpPreloading","processRoutes","preloadConfig","RouterScroller","viewportScroller","lastId","lastSource","restoredId","scrollPositionRestoration","anchorScrolling","createScrollEvents","scrollEventsSubscription","consumeScrollEvents","scheduleScrollEvent","ROUTER_DIRECTIVES","ROUTER_CONFIGURATION","ROUTER_FORROOT_GUARD","ROUTER_PROVIDERS","setupRouter","rootRoute","enableTracing","routerNgProbeToken","RouterModule","forRoot","provideRoutes","provideForRootGuard","createRouterScroller","provideRouterInitializer","forChild","scrollOffset","platformLocationStrategy","useHash","assignExtraOptionsToRouter","groupEnd","RouterInitializer","initNavigation","resultOfPreactivationDone","appInitializer","bootstrapListener","bootstrappedComponentRef","preloader","routerScroller","components","componentTypes","getAppInitializer","getBootstrapListener","ROUTER_INITIALIZER","ɵROUTER_PROVIDERS","ɵassignExtraOptionsToRouter","ɵflatten","makeNull","exists","allowEmptyString","missing","missingOrEmpty","toStringOrNull","attrToNumber","valueParsed","attrToBoolean","attrToString","referenceCompare","right","jsonEquals","val1","val2","val1Json","val2Json","valueA","valueB","accentedCompare","valueAMissing","valueBMissing","doQuickCompare","GenericUtils","__proto__","ColumnKeyCreator","existingKeys","addExistingKeys","getUniqueKey","colId","colField","idToTry","iterateObject","cloneObject","deepCloneObject","deepCloneDefinition","keysToSkip","sourceIsSimpleObject","isNonNullObject","getProperty","copyPropertiesIfPresent","copyPropertyIfPresent","getAllKeysInObjects","objects","allValues","getAllValuesInObject","anyObject","ret","mergeDeep","copyUndefined","makeCopyOfSimpleObjects","sourceValue","destValue","objectIsDueToBeCopied","dontCopy","missingOrEmptyObject","expression","objectToRead","objectToUpdate","getValueUsingField","field","fieldContainsDots","fields","currentObject","removeAllReferences","objectName","defineProperties","ObjectUtils","doOnceFlags","doOnce","getFunctionName","funcConstructor","executeInAWhile","executeAfter","executeNextVMTurnFuncs","executeNextVMTurnPending","executeNextVMTurn","funcsCopy","timeout","previousCall","currentCall","waitUntil","timeoutMessage","timeStamp","interval","executed","internalCallback","reachedTimeout","clearInterval","setInterval","fns","composed","callIfPresent","FunctionUtils","ModuleNames","ModuleRegistry","__register","registerModules","modules","__registerModules","moduleBased","gridId","runVersionChecks","areGridScopedModules","gridModulesMap","moduleName","globalModulesMap","setModuleBased","__unRegisterGridModules","isValidModuleVersion","moduleMajor","moduleMinor","currentModuleMajor","currentModuleMinor","currentModuleVersion","isValid","errorResult","__setIsBundled","isBundled","__assertRegistered","__isRegistered","warningKey","warningMessage","modName","__getRegisteredModules","__getGridRegisteredModules","__isPackageBased","Context","logger","beanWrappers","beanClasses","contextParams","createBeans","beanInstances","getBeanInstances","wireBeans","beanEntry","beanInstance","createBean","bean","afterPreCreateCallback","autoWireBeans","methodWireBeans","callLifeCycleMethods","createBeanWrapper","constructorParamsMeta","__agBeanMetaData","autowireMethods","agConstructor","constructorParams","getBeansForParameters","newInstance","createdBeanNames","BeanClass","metaData","beanName","forEachMetaDataInHierarchy","agClassAttributes","attribute","otherBean","lookupBeanInstance","attributeName","wireParams","initParams","getBeanName","constructorString","beansList","paramIndex","otherBeanName","wiringBean","providedBeanInstances","lifeCycleMethod","callLifeCycleMethodsOnBean","methodToIgnore","allMethods","allMethodsList","getBean","destroyBeans","destroyBean","beans","beanAny","getGridId","PreConstruct","descriptor","getOrCreateProps$1","preConstructMethods","PostConstruct","postConstructMethods","PreDestroy","preDestroyMethods","Bean","classConstructor","Autowired","propertyKey","autowiredFunc","classPrototype","methodOrAttributeName","Qualifier","__decorate$2E","__decorate","desc","Reflect","decorate","__param$a","__param","decorator","EventService","allSyncListeners","allAsyncListeners","globalSyncListeners","globalAsyncListeners","asyncFunctionsQueue","scheduled","firedEvents","setBeans","loggerFactory","gridOptionsService","frameworkOverrides","globalEventListener","useAsyncEvents","addGlobalListener","getListeners","eventType","autoCreateListenerCollection","listenerMap","noRegisteredListenersExist","removeGlobalListener","agEvent","api","columnApi","dispatchToListeners","dispatchEventOnce","browserEvent","Event","eventPath","composedPath","processEventListeners","dispatchAsync","globalListeners","flushAsyncQueue","queueCopy","__decorate$2D","instanceIdSequence$4","getNextColInstanceId","Column","colDef","userProvidedColDef","instanceId","autoHeaderHeight","moving","menuVisible","filterActive","eventService","tooltipEnabled","rowGroupActive","pivotActive","aggregationActive","setState","getInstanceId","initialSort","sortIndex","initialSortIndex","initialHide","visible","pinned","setPinned","initialPinned","flex","initialFlex","setColDef","initMinAndMaxWidths","initDotNotation","createColumnEvent","getUserProvidedColDef","getParent","setOriginalParent","originalParent","getOriginalParent","initialise","resetActualWidth","initTooltip","suppressDotNotation","tooltipFieldContainsDots","tooltipField","minWidth","columnUtils","calculateColMinWidth","maxWidth","calculateColMaxWidth","tooltipValueGetter","tooltipComponent","initialWidth","calculateColInitialWidth","setActualWidth","isEmptyGroup","isRowGroupDisplayed","showRowGroup","showingAllGroups","showingThisGroup","isPrimary","isFilterAllowed","filterDefined","isFieldContainsDots","isTooltipEnabled","isTooltipFieldContainsDots","colDefAny","warnOnce","msg","usingCSRM","isRowModelType","RowGroupingModule","rowGroupingItems","itemsUsed","cellEditor","RichSelectModule","isTreeData","itemsNotAllowedWithTreeData","menuTabs","communityMenuTabs","enterpriseMenuTabs","MenuModule","tab","columnsMenuParams","ColumnsToolPanelModule","columnGroupShow","createColumnFunctionCallbackParams","rowNode","column","isSuppressNavigable","suppressNavigable","userFunc","isCellEditable","isColumnFunc","editable","isSuppressFillHandle","suppressFillHandle","isAutoHeight","autoHeight","isAutoHeaderHeight","isRowDrag","rowDrag","isDndSource","dndSource","isCellCheckboxSelection","checkboxSelection","isSuppressPaste","suppressPaste","isResizable","resizable","editableFunc","setMoving","columns","isMoving","getSort","setSort","dispatchStateUpdatedEvent","setMenuVisible","isMenuVisible","isSortAscending","isSortDescending","isSortNone","isSorting","getSortIndex","setSortIndex","sortOrder","setAggFunc","aggFunc","getAggFunc","getLeft","getOldLeft","oldLeft","getRight","actualWidth","setLeft","isFilterActive","setFilterActive","active","additionalEventAttributes","filterChangedEvent","isHovered","columnHoverService","setFirstRightPinned","firstRightPinned","setLastLeftPinned","lastLeftPinned","isFirstRightPinned","isLastLeftPinned","isPinned","isPinnedLeft","isPinnedRight","getPinned","setVisible","isVisible","isSpanHeaderHeight","getColDef","suppressSpanHeaderHeight","getColumnGroupShow","getColId","getId","getUniqueId","getDefinition","getActualWidth","getAutoHeaderHeight","setAutoHeaderHeight","height","changed","createBaseColDefParams","getColSpan","colSpan","getRowSpan","rowSpan","silent","fireColumnWidthChangedEvent","isGreaterThanMax","getMinWidth","getMaxWidth","getFlex","setFlex","setMinimum","setRowGroupActive","rowGroup","isRowGroupActive","setPivotActive","pivot","isPivotActive","isAnyFunctionActive","isValueActive","isAnyFunctionAllowed","isAllowPivot","isAllowRowGroup","isAllowValue","setValueActive","enablePivot","enableValue","enableRowGroup","getMenuTabs","defaultValues","EVENT_STATE_UPDATED","EVENT_MOVING_CHANGED","EVENT_LEFT_CHANGED","EVENT_WIDTH_CHANGED","EVENT_LAST_LEFT_PINNED_CHANGED","EVENT_FIRST_RIGHT_PINNED_CHANGED","EVENT_VISIBLE_CHANGED","EVENT_FILTER_CHANGED","EVENT_FILTER_ACTIVE_CHANGED","EVENT_SORT_CHANGED","EVENT_COL_DEF_CHANGED","EVENT_MENU_VISIBLE_CHANGED","EVENT_ROW_GROUP_CHANGED","EVENT_PIVOT_CHANGED","EVENT_VALUE_CHANGED","__decorate$2C","ProvidedColumnGroup","colGroupDef","groupId","padding","level","localEventService","expandable","expandableListenerRemoveCallback","expanded","openByDefault","getLevel","isPadding","setExpanded","EVENT_EXPANDED_CHANGED","isExpandable","isExpanded","getGroupId","setChildren","getChildren","getColGroupDef","getLeafColumns","addLeafColumns","leafColumns","setupExpandable","setExpandable","onColumnVisibilityChanged","col","atLeastOneShowingWhenOpen","atLeastOneShowingWhenClosed","atLeastOneChangeable","findChildrenRemovingPadding","abstractColumn","headerGroupShow","EVENT_EXPANDABLE_CHANGED","items","skipBecausePadding","DefaultColumnTypes","numericColumn","headerClass","cellClass","rightAligned","firstExistingValue","existsAndNotEmpty","areEqual","shallowCompare","arr1","arr2","sortNumerically","removeRepeatsFromArray","thisOneMatches","nextOneMatches","removeFromArray","removeAllFromArray","toRemove","insertIntoArray","toIndex","insertArrayIntoArray","moveInArray","objectsToMove","arrayOfArrays","pushAll","toStrings","forEachReverse","ArrayUtils","AG_GRID_STOP_PROPAGATION","PASSIVE_EVENTS$1","stopPropagationForAgGrid","isStopPropagationForAgGrid","isEventSupported","submit","eventChecker","getCtrlForEventTarget","eventTarget","sourceElement","renderedComp","getDomData","isElementInEventPath","getEventPath","createEventPath","pointer","eventNoType","addSafePassiveEventListener","eElement","isPassive","passive","EventUtils","__decorate$2B","BeanStub","destroyFunctions","__v_skip","isAlive","getFrameworkOverrides","EVENT_DESTROYED","dispatchEventAsync","addManagedListener","HTMLElement","destroyFunc","addManagedPropertyListener","addDestroyFunc","createManagedBean","__decorate$2A","__param$9","ColumnFactory","createColumnTree","defs","primaryColumns","existingTree","columnKeyCreator","existingCols","existingGroups","existingColKeys","extractExistingTreeData","unbalancedTree","recursivelyCreateColumns","treeDept","findMaxDept","columnTree","balanceColumnTree","deptFirstCallback","depthFirstOriginalTreeSearch","createForAutoGroups","autoGroupCols","gridBalancedTree","createAutoGroupTreeItem","balancedColumnTree","dept","findDepth","nextChild","autoGroup","currentDept","columnDept","originalGroup","firstPaddedGroup","currentPaddedGroup","newColId","colGroupDefMerged","createMergedColGroupDef","paddedGroup","hasGroups","leaf","treeChildren","maxDeptThisLevel","newDept","existingColsCopy","isColumnGroup","createColumnGroup","createColumn","existingColumns","providedGroup","existingGroup","findExistingGroup","findExistingColumn","colDefMerged","mergeColDefs","applyColumnState","dataTypeService","addColumnListeners","noFlexThisCol","widthBeforeUpdate","newColDef","existingCol","existingColDef","newHasId","newHasField","newGroupDef","existingDef","defaultColDef","columnType","updateColDefAndGetColumnType","assignColumnTypes","autoGroupColDef","isSortingCoupled","isColumnsSortingCoupledToGroup","validateColDef","typeKeys","allColumnTypes","userTypes","typeColDef","abstractColDef","__decorate$2z","ColumnGroup","providedColumnGroup","partId","displayedChildren","createUniqueId","allLeafColumns","getProvidedColumnGroup","checkLeft","lastChild","lastChildLeft","firstChildLeft","createAgEvent","getPartId","isChildInThisGroupDeepSearch","wantedChild","foundChild","groupActualWidth","groupChild","addChild","getDisplayedChildren","getDisplayedLeafColumns","addDisplayedLeafColumns","getPaddingLevel","calculateDisplayedColumns","parentWithExpansion","EVENT_DISPLAYED_CHILDREN_CHANGED","emptyGroup","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_TOOL_PANEL_SIZE_CHANGED","EVENT_COLUMN_PANEL_ITEM_DRAG_START","EVENT_COLUMN_PANEL_ITEM_DRAG_END","EVENT_MODEL_UPDATED","EVENT_CUT_START","EVENT_CUT_END","EVENT_PASTE_START","EVENT_PASTE_END","EVENT_FILL_START","EVENT_FILL_END","EVENT_RANGE_DELETE_START","EVENT_RANGE_DELETE_END","EVENT_UNDO_STARTED","EVENT_UNDO_ENDED","EVENT_REDO_STARTED","EVENT_REDO_ENDED","EVENT_KEY_SHORTCUT_CHANGED_CELL_START","EVENT_KEY_SHORTCUT_CHANGED_CELL_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_CELL_FOCUS_CLEARED","EVENT_FULL_WIDTH_ROW_FOCUSED","EVENT_ROW_SELECTED","EVENT_SELECTION_CHANGED","EVENT_CELL_KEY_DOWN","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_STORE_REFRESHED","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_HEADER_HEIGHT_CHANGED","EVENT_COLUMN_HEADER_HEIGHT_CHANGED","EVENT_ROW_DRAG_ENTER","EVENT_ROW_DRAG_MOVE","EVENT_ROW_DRAG_LEAVE","EVENT_ROW_DRAG_END","EVENT_GRID_STYLES_CHANGED","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","EVENT_FILTER_DESTROYED","EVENT_ROW_DATA_UPDATE_STARTED","GroupInstanceIdCreator","existingIds","getInstanceIdForKey","lastResult","__decorate$2y","GROUP_AUTO_COLUMN_ID","AutoGroupColService","createAutoGroupColumns","rowGroupColumns","groupAutoColumns","doingTreeData","doingMultiAutoColumn","isGroupMultiAutoColumn","rowGroupCol","createOneAutoGroupColumn","defaultAutoColDef","generateDefaultColDef","userAutoColDef","columnFactory","noFieldOrValueGetter","valueGetter","filterValueGetter","headerCheckboxSelection","newCol","userDef","localeTextFunc","localeService","getLocaleTextFunc","userHasProvidedGroupCellRenderer","cellRenderer","cellRendererSelector","columnModel","getDisplayNameForColumn","headerValueGetter","cellRendererParams","innerRenderer","innerRendererParams","HTML_ESCAPES","utf8_encode","stringFromCharCode","ucs2decode","output","counter","extra","checkScalarValue","point","createByte","encodeCodePoint","convertedCode","paddedCode","codePoints","codePoint","byteString","capitalise","escapeString","toEscape","skipEscapingHtmlChars","stringResult","camelCaseToHumanText","rex","rexCaps","camelCaseToHyphenated","toLocaleLowerCase","StringUtils","convertToMap","mapById","MapUtils","ColDefUtil","ColDefPropertyMap","toolPanelClass","pivotKeys","cellDataType","headerTooltip","initialAggFunc","defaultAggFunc","chartDataType","cellEditorPopupPosition","headerGroupComponent","headerGroupComponentParams","cellStyle","cellEditorParams","filterParams","pivotValueColumn","headerComponent","headerComponentParams","floatingFilterComponent","floatingFilterComponentParams","tooltipComponentParams","refData","sortingOrder","allowedAggFuncs","pivotTotalColumnIds","cellClassRules","icons","rowGroupIndex","initialRowGroupIndex","pivotIndex","initialPivotIndex","suppressCellFlash","suppressColumnsToolPanel","suppressFiltersToolPanel","marryChildren","suppressStickyLabel","initialRowGroup","initialPivot","showDisabledCheckboxes","headerCheckboxSelectionFilteredOnly","headerCheckboxSelectionCurrentPageOnly","suppressMenu","suppressMovable","lockPosition","lockVisible","lockPinned","unSortIcon","suppressSizeToFit","suppressAutoSize","enableCellChangeFlash","wrapText","sortable","singleClickEdit","floatingFilter","cellEditorPopup","wrapHeaderText","dndSourceOnRowDrag","valueSetter","keyCreator","valueFormatter","valueParser","equals","pivotComparator","suppressKeyboardEvent","suppressHeaderKeyboardEvent","getQuickFilterText","onCellValueChanged","onCellClicked","onCellDoubleClicked","onCellContextMenu","rowDragText","cellEditorSelector","useValueFormatterForExport","useValueParserForImport","ALL_PROPERTIES","PropertyKeys","STRING_PROPERTIES","OBJECT_PROPERTIES","ARRAY_PROPERTIES","NUMBER_PROPERTIES","BOOLEAN_PROPERTIES","FUNCTIONAL_PROPERTIES","CALLBACK_PROPERTIES","FUNCTION_PROPERTIES","ComponentUtil","getCallbackForEvent","getCoercionLookup","coercionLookup","EVENT_CALLBACKS","rawValue","coercionStep","getGridOptionKeys","isVue","copyAttributesToGridOptions","gridOptions","pGridOptions","coercedValue","processOnChange","changesToApply","columnTypes","setColumnTypes","autoGroupColumnDef","setAutoGroupColumnDef","setDefaultColDef","columnDefs","setColumnDefs","gridKey","__setProperty","EVENTS","EXCLUDED_INTERNAL_EVENTS","PUBLIC_EVENTS","ALL_PROPERTIES_SET","fuzzyCheckStrings","inputValues","validValues","allSuggestions","fuzzyMatches","invalidInputs","inputValue","validValue","invalidInput","fuzzySuggestions","hideIrrelevant","filterByPercentageOfBestMatch","thisSuggestions","relevance","stringWeightedDistances","suggestion","bestMatch","str1","str2","weight","FuzzyMatchUtils","__decorate$2x","logDeprecation","oldProp","newPropMsg","VUE_FRAMEWORK_PROPS","GridOptionsValidator","deprecatedProperties","rememberGroupStateWhenNewData","serverSideFilteringAlwaysResets","copyToNewProp","serverSideSortingAlwaysResets","suppressReactUi","processSecondaryColDef","processSecondaryColGroupDef","getServerSideStoreParams","serverSideInfiniteScroll","enableChartToolPanelsButton","functionsPassive","onColumnRowGroupChangeRequest","onColumnPivotChangeRequest","onColumnValueChangeRequest","onColumnAggFuncChangeRequest","serverSideFilterAllLevels","suppressAggAtRootLevel","excludeHiddenColumnsFromQuickFilter","enterMovesDown","enterMovesDownAfterEdit","pickOneWarning","prop1","prop2","checkForDeprecated","checkForViolations","suppressPropertyNamesCheck","checkGridOptionsProperties","checkColumnDefProperties","checkColumnDefViolations","alt","RangeSelectionModule","validateRegistered","SideBarModule","StatusBarModule","GridChartsModule","validProperties","userProperties","getOwnPropertyNames","checkProperties","rowModel","unsupportedPropertiesMap","infinite","viewport","serverSide","clientSide","unsupportedProperties","validPropertiesAndExceptions","containerName","docsUrl","invalidProperties","oldPropValue","newPropValue","serverSideStoreType","suppressServerSideInfiniteScroll","treeDataViolations","matchesGroupDisplayType","toMatch","supplied","groupDisplayTypeValues","matchesTreeDataDisplayType","treeDataDisplayTypeValues","__decorate$2w","__param$8","__rest","ColumnModel","primaryHeaderRowCount","secondaryHeaderRowCount","gridHeaderRowCount","displayedColumnsLeft","displayedColumnsRight","displayedColumnsCenter","displayedColumns","displayedColumnsAndGroupsMap","viewportColumns","viewportColumnsHash","headerViewportColumns","viewportColumnsCenter","headerViewportColumnsCenter","autoHeightActiveAtLeastOnce","valueColumns","pivotColumns","autoGroupsNeedBuilding","forceRecreateAutoGroups","pivotMode","bodyWidth","leftWidth","rightWidth","bodyWidthDirty","shouldQueueResizeOperations","resizeOperationQueue","suppressColumnVirtualisation","isPivotSettingAllowed","usingTreeData","onAutoGroupColumnDefChanged","onSharedColDefChanged","updateGridColumns","updateDisplayedColumns","createColumnsFromColumnDefs","colsPreviouslyExisted","recreateColumnDefs","destroyOldColumns","oldTree","oldObjectsById","colsToDestroy","destroyColumns","primaryColumnTree","secondaryBalancedTree","groupAutoColsBalancedTree","dispatchEventsFunc","compareColumnStatesAndDispatchEvents","valueCache","expire","oldPrimaryColumns","oldPrimaryTree","balancedTreeResult","getColumnsFromTree","primaryColumnsMap","extractRowGroupColumns","extractPivotColumns","extractValueColumns","gridColsNotProcessed","gridColsArePrimary","processGridCols","orderGridColumnsLikePrimary","checkViewportColumns","dispatchEverythingChanged","dispatchNewColumnsLoaded","newColumnsLoadedEvent","eventEverythingChanged","gridColumns","colA","colB","primaryIndexA","primaryIndexB","indexAPresent","indexBPresent","gridIndexA","gridIndexB","placeLockedColumns","getAllDisplayedAutoHeightCols","displayedAutoHeightCols","setViewport","viewportLeft","scrollPosition","scrollWidth","viewportRight","getDisplayedColumnsStartingAt","currentColumn","getDisplayedColAfter","viewportColumnsChanged","extractViewport","setViewportPosition","isPivotMode","setPivotMode","getSecondaryPivotColumn","valueColKey","secondaryColumns","valueColumnToFind","getPrimaryColumn","foundColumn","thisPivotKeys","pivotKeyMatches","pivotValueMatches","setFirstRightAndLastLeftPinned","lastLeft","firstRight","autoSizeColumns","skipHeader","skipHeaderGroups","stopAtGroup","animationFrameService","flushAllFrames","columnsAutosized","changesThisTimeAround","shouldSkipHeader","shouldSkipHeaderGroups","actionOnGridColumns","preferredWidth","autoWidthCalculator","getPreferredWidthForColumn","newWidth","normaliseColumnWidth","autoSizeColumnGroupsByColumns","dispatchColumnResizedEvent","flexColumns","dispatchColumnChangedEvent","dispatchColumnMovedEvent","movedColumns","dispatchColumnPinnedEvent","changedColumns","getCommonValue","dispatchColumnVisibleEvent","autoSizeColumn","columnGroups","getGridColumns","headerGroupCtrl","resizedColumns","columnGroup","headerContainerCtrl","ctrlsService","getHeaderRowContainerCtrls","getHeaderCtrlForColumn","resizeLeafColumnsToFit","autoSizeAllColumns","allDisplayedColumns","getAllDisplayedColumns","rootColumns","recursiveFindColumns","childColumns","getAllDisplayedTrees","displayedTreeLeft","displayedTreeRight","displayedTreeCentre","getPrimaryColumnTree","getHeaderRowCount","getDisplayedTreeLeft","getDisplayedTreeRight","getDisplayedTreeCentre","isColumnDisplayed","getViewportColumns","getDisplayedLeftColumnsForRow","colSpanActive","getDisplayedColumnsForRow","getDisplayedRightColumnsForRow","isColSpanActive","filterCallback","emptySpaceBeforeColumn","lastConsideredCol","maxAllowedColSpan","columnsToCheckFilter","colsToRemove","filterPasses","colForFilter","gapBeforeColumn","getViewportCenterColumnsForRow","isColumnInRowViewport","getAriaColumnIndex","getAllGridColumns","isColumnInHeaderViewport","columnLeft","columnRight","leftBounds","rightBounds","columnToMuchLeft","columnToMuchRight","getDisplayedColumnsLeftWidth","getWidthOfColsInList","getDisplayedColumnsRightWidth","updatePrimaryColumnList","masterList","actionIsAdd","columnCallback","atLeastOne","columnToAdd","setRowGroupColumns","colKeys","setPrimaryColumnList","setColumnVisible","addRowGroupColumn","addRowGroupColumns","removeRowGroupColumns","removeRowGroupColumn","addPivotColumns","setPivotColumns","added","addPivotColumn","removePivotColumns","removePivotColumn","setValueColumns","aggFuncService","getDefaultAggFunc","addValueColumns","addValueColumn","colKey","removeValueColumn","removeValueColumns","getPrimaryOrGridColumn","getGridColumn","setColumnWidths","columnWidths","sets","columnWidth","ratios","defaultIsShift","otherCol","widthDiff","otherColWidth","resizeColumnSets","resizeSets","checkMinAndMaxWidthsForSet","columnResizeSet","minWidthAccumulated","maxWidthAccumulated","maxWidthActive","minWidthPasses","maxWidthPasses","passMinMaxCheck","changedCols","allResizedCols","newWidths","finishedCols","finishedColsGrew","loopCount","subsetCols","subsetRatioTotal","pixelsToDistribute","thisColFinished","ratioThisCol","ratioScale","lastCol","colNewWidth","atLeastOneColChanged","flexedCols","refreshFlexedColumns","resizingCols","skipSetLeft","setLeftValues","updateBodyWidths","colsForEvent","setColumnAggFunc","moveRowGroupColumn","moveColumns","columnsToMoveKeys","columnAnimationService","failedRules","doesMovePassRules","columnsToMove","proposedColumnOrder","getProposedColumnOrder","doesOrderPassRules","gridOrder","doesMovePassMarryChildren","doesMovePassLockedPositions","sortColumnsLikeGridColumns","cols","notAllColsInGridColumns","indexA","indexB","lastPlacement","rulePassed","lockPositionToPlacement","allColumnsCopy","newIndexes","newColIndex","maxIndex","minIndex","maxSpread","moveColumn","moveColumnByIndex","getColumnDefs","lastPrimaryOrder","columnDefFactory","buildColumnDefs","getBodyContainerWidth","getContainerWidth","newBodyWidth","newLeftWidth","newRightWidth","atLeastOneChanged","getValueColumns","getPivotColumns","getRowGroupColumns","getDisplayedCenterColumns","getDisplayedLeftColumns","getDisplayedRightColumns","getDisplayedColumns","getAllPrimaryColumns","getSecondaryColumns","getAllColumnsForQuickFilter","columnsForQuickFilter","isRowGroupEmpty","setColumnsVisible","setColumnPinned","setColumnsPinned","isDomLayout","actualPinned","createEvent","updatedColumns","resultOfAction","getDisplayedColBefore","oldIndex","getDisplayedGroupAfter","getDisplayedGroupAtDirection","getDisplayedGroupBefore","direction","requiredLevel","colGroupLeafColumns","getDisplayColMethod","groupPointer","getColumnGroupAtLevel","originalGroupLevel","groupPointerLevel","groupPointerProvidedColumnGroup","isPinningLeft","isPinningRight","getPrimaryAndSecondaryAndAutoColumns","createStateItemFromColumn","getColumnState","colsForState","orderColumnStateList","columnStateList","colIdToGridIndexMap","itemA","itemB","posA","posB","resetColumnState","columnStates","letRowGroupIndex","letPivotIndex","colsToProcess","stateItem","getColumnStateFromColDef","applyOrder","getValueOrNull","applyStates","getById","columnsWithNoState","rowGroupIndexes","pivotIndexes","autoGroupColumnStates","unmatchedAndAutoStates","unmatchedCount","previousRowGroupCols","previousPivotCols","isAutoGroupColumn","syncColumnWithStateItem","defaultState","applyDefaultsFunc","oldList","aHasIndex","bHasIndex","oldIndexA","oldIndexB","aHasOldIndex","bHasOldIndex","autoGroupColsCopy","autoCol","getAutoColumn","applyOrderAfterApplyState","getSecondaryColumn","newOrder","processedColIds","gridColumnsMap","autoGroupInsertIndex","alreadyProcessed","isAutoGroupCol","startState","columnStateBefore","columnStateBeforeMap","dispatchWhenListsDifferent","colsBefore","colsAfter","idMapper","beforeList","afterList","unchanged","getChangedColumns","changedPredicate","colStateBefore","columnIdMapper","valueChangePredicate","oldActive","activeChanged","aggFuncChanged","changedValues","resizeChangePredicate","pinnedChangePredicate","visibilityChangePredicate","sortChangePredicate","sortController","dispatchSortChangedEvents","normaliseColumnMovedEventForColumnState","firstValue","colStateAfter","colStateAfterMapped","colsIntersectIds","beforeFiltered","afterFiltered","csAfter","csBefore","gridCol","value1","value2","calculated","minColWidth","getColumns","columnLookupCallback","foundColumns","getColumnWithValidation","getColumn","secondaryColumnsMap","columnList","columnMap","columnsMatch","getSourceColumnsForGroupColumn","groupCol","sourceColumnId","columnMatches","colDefMatches","idMatches","includeAggFunc","getHeaderName","wrapHeaderNameWithAggFunc","getDisplayNameForProvidedColumnGroup","getDisplayNameForColumnGroup","expressionService","pivotActiveOnThisColumn","aggFuncFound","isCollapsedHeaderEnabled","isTotalColumn","measureActive","aggregationPresent","aggFuncString","aggFuncStringTranslated","getColumnGroup","allColumnGroups","checkPartId","depthFirstAllColumnTreeSearch","isReady","extractColumns","flag","previousCols","setFlagFunc","getIndexFunc","getInitialIndexFunc","getValueFunc","getInitialValueFunc","colsWithIndex","colsWithValue","colIsNew","initialValue","initialIndex","include","valuePresent","indexPresent","initialValuePresent","initialIndexPresent","useIndex","getIndexForCol","defaultIndex","resetColumnGroupState","stateItems","groupState","setColumnGroupState","getColumnGroupState","columnGroupState","impactedGroups","groupKey","updateGroupsAndDisplayedColumns","setColumnGroupOpened","keyAsString","calculateColumnsForDisplay","columnsForDisplay","isValueCol","checkColSpanActiveInCols","calculateColumnsForGroupDisplay","groupDisplayColumns","groupDisplayColumnsMap","checkFunc","underlyingColumn","getGroupDisplayColumns","getGroupDisplayColumnForGroup","rowGroupColumnId","buildDisplayedTrees","isSecondaryColumnsPresent","setSecondaryColumns","colDefs","newColsPresent","processSecondaryColumnDefinitions","previousSecondaryColumns","groupCallback","searchForColDefs","colDefs2","prevGridCols","lastSecondaryOrder","sortOrderToRecover","hasSameColumns","areAutoColsChanged","createGroupAutoColumnsIfNeeded","groupAutoColsMap","addAutoGroupToGridColumns","orderGridColsLike","refreshQuickFilterColumns","clearDisplayedAndViewportColumns","setAutoHeightActive","autoHeightActive","supportedRowModel","colsOrder","lastOrderMapped","noColsFound","gridColsMap","oldColsOrdered","oldColsMap","newColsOrdered","newGridColumns","leafCols","leafCol","presentInNewGriColumns","noYetInSiblings","isPrimaryColumnGroupsPresent","normal","newAutoColsTree","viewportRowLeft","viewportRowRight","viewportRowCenter","updateOpenClosedVisibilityInColumnGroups","deriveDisplayedColumns","derivedDisplayedColumnsFromDisplayedTree","joinDisplayedColumns","isAutoRowHeightActive","wasAutoRowHeightEverActive","setLeftValuesOfColumns","setLeftValuesOfGroups","allColumns","doingRtl","depthFirstDisplayedColumnTreeSearch","extractViewportColumns","getVirtualHeaderGroupRow","calculateHeaderRows","virtualColIds","testGroup","addThisItem","hashColumn","newHash","viewportWidth","flexViewportWidth","flexAfterDisplayIndex","indexOfCol","isColFlex","afterResizingCols","knownWidthColumns","flexingColumns","flexingColumnSizes","spaceForFlexingColumns","totalFlex","widthByFlexRule","constrainedWidth","remainingSpace","fireResizedEvent","sizeColumnsToFit","gridWidth","_d","_e","limitsMap","columnLimits","dimensions","doColumnsAlreadyFit","colsToSpread","colsToNotSpread","colsToDispatchEventFor","finishedResizing","moveToNotSpread","availablePixels","widthOverride","defaultMinWidth","scale","pixelsForLastCol","minOverride","maxOverride","defaultMaxWidth","colMinWidth","colMaxWidth","MAX_VALUE","visibleColumns","leftVisibleColumns","rightVisibleColumns","centerVisibleColumns","groupInstanceIdCreator","displayedGroupCreator","createDisplayedGroups","updateDisplayedMap","isDisplayed","fromMap","getGroupAutoColumns","groupFullWidthRow","isGroupUseEntireRow","suppressAutoColumn","isGroupSuppressAutoColumn","groupingActive","needAutoColumns","newAutoGroupCols","autoGroupColService","autoColsDifferent","autoColsEqual","groupDisplayType","isCustomRowGroups","treeDataDisplayType","colsA","colsB","getGridBalancedTree","hasFloatingFilters","getFirstDisplayedColumn","isRtl","queryOrder","setColumnHeaderHeight","getColumnGroupHeaderRowHeight","getPivotGroupHeaderHeight","getGroupHeaderHeight","getColumnHeaderRowHeight","defaultHeight","getPivotHeaderHeight","getHeaderHeight","displayedHeights","getNum","environment","getFromTheme","getFloatingFiltersHeight","queueResizeOperations","processResizeOperations","resizeOperation","resetColumnDefIntoColumn","userColDef","generateColumnStateForRowGroupAndPivotIndexes","updatedRowGroupColumnState","updatedPivotColumnState","existingColumnStateUpdates","orderColumns","updatedColumnState","colList","enableProp","initialEnableProp","indexProp","initialIndexProp","updatedColIdArray","updatedColIds","newColIds","allColIds","colIdsInOriginalOrder","originalOrderMap","orderIndex","hasAddedNewCols","processPrecedingNewCols","originalOrderIndex","missingIndex","propEnabled","__decorate$2v","ColumnUtils","getMinColWidth","maxColWidth","colDefWidth","colDefInitialWidth","getOriginalPathForColumn","originalBalancedTree","recursePath","__decorate$2u","DisplayedGroupCreator","sortedVisibleColumns","oldDisplayedGroups","previousRealPath","previousOriginalPath","oldColumnsMapped","mapOldGroupsById","currentOriginalPath","currentRealPath","firstColumn","newGroup","noColumnGroups","leafGroup","setupParentsIntoColumns","displayedGroups","recursive","columnsOrGroups","columnOrGroup","columnsOrGroup","__decorate$2t","AgStackComponentsRegistry","componentsMappedByName","setupComponents","componentMeta","addComponent","classEscaped","componentName","classUpperCase","componentClass","getComponentClass","htmlTag","toggleAriaAttribute","removeAriaAttribute","setAriaAttribute","ariaAttributeName","setAriaRole","role","getAriaSortState","sortDirection","getAriaLevel","getAriaPosInSet","getAriaDescribedBy","setAriaLabel","label","setAriaLabelledBy","labelledBy","setAriaDescription","setAriaDescribedBy","describedby","setAriaLive","live","setAriaLevel","setAriaDisabled","setAriaHidden","hidden","setAriaExpanded","removeAriaExpanded","setAriaSetSize","setsize","setAriaPosInSet","setAriaMultiSelectable","multiSelectable","setAriaRowCount","rowCount","setAriaRowIndex","rowIndex","setAriaColCount","colCount","setAriaColIndex","colIndex","setAriaColSpan","setAriaSort","removeAriaSort","setAriaSelected","setAriaChecked","checked","setAriaControls","controllerElement","controlledElement","getAriaCheckboxStateName","translate","AriaUtils","safariVersion","isChrome","isFirefox","isMacOs","isIOS","invisibleScrollbar","browserScrollbarWidth","isBrowserSafari","getSafariVersion","versionMatch","isBrowserChrome","chrome","webstore","runtime","vendor","isBrowserFirefox","isMacOsUserAgent","isIOSUserAgent","maxTouchPoints","browserSupportsPreventScroll","getTabIndex","numberTabIndex","tabIndex","getMaxDivHeight","testUpTo","div","clientHeight","getBodyWidth","clientWidth","innerHeight","getBodyHeight","getScrollbarWidth","initScrollbarWidthAndVisibility","overflow","msOverflowStyle","offsetWidth","isInvisibleScrollbar","BrowserUtils","padStartWidthZeros","totalStringSize","createArrayOfNumbers","cleanNumber","decToHex","hex","formatNumberTwoDecimalPlacesAndCommas","thousandSeparator","decimalSeparator","formatNumberCommas","zeroOrGreater","oneOrGreater","valueNumber","NumberUtils","serialiseDate","includeTime","serialised","calculateOrdinal","dateToFormattedString","fullYear","YYYY","YY","Y","MMMM","MMM","MM","Mo","M","Do","DD","D","dddd","ddd","do","parseDateTimeFromString","dateStr","timeStr","day","seconds","setSeconds","DateUtils","rtlNegativeScroll","radioCssClass","elementClass","otherElementClass","sibling","toggle","FOCUSABLE_SELECTOR","FOCUSABLE_EXCLUDE","isFocusableFormField","inputSelector","isFocusable","isNotFocusable","isElementVisible","focusable","setDisplayed","displayed","skipAriaHidden","setDisabled","addOrRemoveDisabledAttribute","nodeListForEach","isElementChildOfClass","cls","maxNest","getElementSize","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","paddingTop","paddingRight","paddingBottom","paddingLeft","boxSizing","getInnerHeight","getInnerWidth","getAbsoluteHeight","offsetHeight","getAbsoluteWidth","marginWidth","getElementRectWithOffset","offsetElementRect","bottom","isRtlNegativeScroll","innerHTML","scrollLeft","getScrollLeft","rtl","setScrollLeft","clearElement","removeElement","cssSelector","removeFromParent","offsetParent","loadTemplate","tempDiv","appendHtml","eContainer","htmlTemplate","insertAdjacentHTML","getElementAttribute","ensureDomOrder","eChild","eChildBefore","focusedEl","activeElement","eChildHasFocus","insertAdjacentElement","preventScroll","setDomChildOrder","orderedChildren","correctCellAtIndex","actualCellAtIndex","insertWithDomOrder","eToInsert","prependDC","documentFragment","addStylesToElement","parsedKey","valueAsString","parsedValue","priority","isHorizontalScrollShowing","isVerticalScrollShowing","scrollHeight","setElementWidth","setFixedWidth","formatSize","setElementHeight","setFixedHeight","maxHeight","minHeight","isNodeOrElement","copyNodeList","nodeList","iterateNamedNodeMap","addOrRemoveAttribute","DomUtils","iconNameClassMap","columnGroupOpened","columnGroupClosed","columnSelectClosed","columnSelectOpen","columnSelectIndeterminate","columnMovePin","columnMoveHide","columnMoveMove","columnMoveLeft","columnMoveRight","columnMoveGroup","columnMoveValue","columnMovePivot","dropNotAllowed","groupContracted","groupExpanded","setFilterGroupClosed","setFilterGroupOpen","setFilterGroupIndeterminate","chart","linked","unlinked","colorPicker","groupLoading","menu","maximize","minimize","menuPin","menuValue","menuAddRowGroup","menuRemoveRowGroup","clipboardCopy","clipboardCut","clipboardPaste","pivotPanel","rowGroupPanel","valuePanel","columnDrag","save","csvExport","excelExport","smallDown","smallLeft","smallRight","smallUp","sortAscending","sortDescending","sortUnSort","createIcon","iconName","iconContents","createIconNoSpan","eResult","forceCreate","userProvidedIcon","optionsIcons","rendererResult","span","cssClass","IconUtils","KeyCode","BACKSPACE","TAB","ENTER","ESCAPE","SPACE","LEFT","UP","RIGHT","DOWN","DELETE","F2","PAGE_UP","PAGE_DOWN","PAGE_HOME","PAGE_END","A","C","V","X","Z","A_KEYCODE","C_KEYCODE","V_KEYCODE","D_KEYCODE","Z_KEYCODE","Y_KEYCODE","isEventFromPrintableCharacter","printableCharacter","isUserSuppressingKeyboardEvent","keyboardEvent","editing","colDefFunc","colDefFuncResult","isUserSuppressingHeaderKeyboardEvent","headerRowIndex","normaliseQwertyAzerty","keyCode","isDeleteKey","alwaysReturnFalseOnBackspace","KeyboardUtils","areEventsNear","e1","e2","pixelCount","diffX","clientX","diffY","clientY","MouseUtils","sortRowNodesByOrder","rowNodes","rowNodeOrder","nodeA","nodeB","positionA","positionB","bothNodesAreUserNodes","bothNodesAreFillerNodes","__objectId","rowNodeA","rowNodeB","atLeastOneOutOfOrder","traverseNodesWithKey","keyParts","recursiveSearchNodes","currentNodes","childrenAfterGroup","RowNodeUtils","convertToSet","SetUtils","utils","NumberSequence","nextValue","valToReturn","peek","AgPromiseStatus","AgPromise","IN_PROGRESS","resolution","waiters","onReject","promises","remainingToResolve","combinedValues","RESOLVED","resolveNow","ifNotResolvedValue","ifResolved","waiter","Timer","timestamp","print","__decorate$2s","TooltipStates","CustomTooltipFeature","parentComp","DEFAULT_SHOW_TOOLTIP_DELAY","DEFAULT_HIDE_TOOLTIP_DELAY","SHOW_QUICK_TOOLTIP_DIFF","FADE_OUT_TOOLTIP_TIMEOUT","NOTHING","tooltipInstanceCount","tooltipMouseTrack","postConstruct","tooltipShowDelay","getTooltipDelay","tooltipHideDelay","getGui","onMouseEnter","onMouseLeave","onMouseMove","onMouseDown","onKeyDown","setToDoNothing","isLastTooltipHiddenRecently","showTooltipTimeoutId","showTooltip","lastMouseEvent","WAITING_TO_SHOW","SHOWING","hideTooltip","clearTimeouts","tooltipComp","positionTooltipUnderLastMouseEvent","capitalisedType","destroyTooltipComp","lastTooltipHideTime","tooltipPopupDestroyFunc","getTooltipParams","newTooltipComponentCallback","userDetails","userComponentFactory","getTooltipCompDetails","newAgStackInstance","tooltipInstanceCopy","compNoLongerNeeded","eGui","addPopupRes","popupService","addPopup","ariaLabel","hideFunc","hideTooltipTimeoutId","positionPopupUnderMouseEvent","mouseEvent","ePopup","nudgeY","skipObserver","CssClassManager","cssClassStates","addCssClass","updateNeeded","removeCssClass","containsCssClass","addOrRemoveCssClass","addOrRemove","__decorate$2r","compIdSequence","cssClassManager","setTemplate","preConstructOnComponent","usingBrowserTooltips","getCompId","tooltipText","setTooltip","newTooltipText","removeTooltip","tooltipFeature","addTooltip","createChildComponentsFromTags","paramsMap","childNodeList","childNodes","childNode","childComp","createComponentFromElement","childGui","copyAttributesFromNode","addItems","swapComponentForNode","nodeName","componentParams","ComponentClass","agStackComponentsRegistry","elementGettingCreated","newComponent","setParentComponent","eComponent","replaceChild","swapInComponentForQuerySelectors","thisNoType","iterateOverQuerySelectors","thisPrototype","__agComponentMetaData","currentProtoName","querySelectors","activateTabIndex","setTemplateFromElement","__agComponent","wireQuerySelectors","createChildComponentsPreConstruct","setResult","topLevelRefMatch","refSelector","resultOfQuery","getFocusableElement","parentComponent","getParentComponent","setGui","queryForHtmlElement","queryForHtmlInputElement","childComponent","EVENT_DISPLAYED_CHANGED","addGuiEventListener","getRefElement","refName","QuerySelector","querySelectorFunc","RefSelector","addToObjectProps","getOrCreateProps","instanceName","__decorate$2q","ReadOnlyFloatingFilter","displayName","eFloatingFilterText","setInputAriaLabel","onParentModelChanged","parentModel","parentFilterInstance","filterInstance","getModelAsString","modelAsString","DateCompWrapper","dateComponentParams","eParent","alive","compDetails","getDateCompDetails","dateComp","afterGuiAttached","tempValue","setDate","setDateCompDisabled","setInputPlaceholder","OptionsFactory","customFilterOptions","filterOptions","mapCustomOptions","selectDefaultItem","getFilterOptions","filterOption","requiredProperties","propertyCheck","displayKey","defaultOption","firstFilterOption","getDefaultOption","getCustomOption","DEFAULT_FILTER_LOCALE_TEXT","applyFilter","clearFilter","resetFilter","cancelFilter","textFilter","numberFilter","dateFilter","setFilter","filterOoo","empty","notEqual","lessThan","greaterThan","inRangeStart","inRangeEnd","lessThanOrEqual","greaterThanOrEqual","notContains","blank","notBlank","andCondition","orCondition","dateFormatOoo","__decorate$2p","ManagedFocusFeature","eFocusableElement","callbacks","shouldStopEventPropagation","onTabKeyDown","defaultPrevented","nextRoot","focusService","findNextFocusableElement","FOCUS_MANAGED_CLASS","addKeyDownListeners","onFocusIn","onFocusOut","handleKeyDown","__decorate$2o","RESIZE_CONTAINER_STYLE","RESIZE_TEMPLATE","PositionableFeature","dragStartPosition","lastSize","positioned","resizersAdded","resizeListeners","boundaryEl","isResizing","movable","currentResizer","popup","center","getWidth","getHeight","offsetElement","initialisePosition","centered","forcePopupParentAsOffsetParent","setOffsetParent","computedMinHeight","computedMinWidth","findBoundaryElement","offsetParentComputedStyles","paddingWidth","paddingHeight","setWidth","setHeight","refreshSize","initialisedDuringPositioning","isPositioned","setMovable","moveElement","moveElementDragListener","onDragStart","onMoveStart","onDragging","onMove","onDragStop","onMoveEnd","dragService","addDragSource","removeDragSource","setResizable","clearResizeListeners","addResizers","removeResizers","topLeft","topRight","bottomRight","bottomLeft","side","resizableStructure","isSideResizable","resizerEl","getResizerElement","dragStartPixels","onResizeStart","onResize","onResizeEnd","pointerEvents","removeSizeFromEl","restoreLastSize","availableHeight","getAvailableHeight","elRect","offsetParentRect","yPosition","parentTop","additionalHeight","parentEl","xPosition","positionPopup","keepWithinBounds","updatePosition","constrainSizeToAvailableHeight","constrain","applyMaxHeightToElement","resizeObserverSubscriber","resizeObserverService","observeResize","getPopupParent","updateDragStartPosition","calculateMouseMovement","isLeft","isTop","anywhereWithin","topBuffer","xDiff","yDiff","movementX","shouldSkipX","movementY","shouldSkipY","parentRect","boundaryElRect","skipX","skipY","createResizeMap","resizerMap","parser","DOMParser","resizers","parseFromString","isBottom","applySizeToSiblings","getSiblings","getMinSizeOfSiblings","currentEl","isFlex","nextHeight","nextWidth","computedStyle","vertical","containerToFlex","isHorizontal","isVertical","offsetLeft","offsetTop","oldWidth","skipWidth","oldHeight","newHeight","skipHeight","calculateTopBuffer","__decorate$2n","ProvidedFilter","filterNameKey","applyActive","hidePopup","debouncePending","appliedModel","resetTemplate","positionableFeature","getPositionableElement","getFilterTitle","onFormSubmit","templateString","getCssIdentifier","createBodyTemplate","isReadOnly","providedFilterParams","readOnly","resetUiToDefaults","updateUiVisibility","setupOnBtApplyDebounce","isUseApplyButton","createButtonPanel","buttons","eButtonsPanel","addButton","clickListener","onBtApply","onBtClear","onBtReset","onBtCancel","buttonType","getDefaultDebounceMs","debounceMs","getDebounceMs","debounceFunc","checkApplyDebounce","onBtApplyDebounce","getModel","setModel","setModelIntoUi","applyModel","resetUiToActiveModel","handleCancelEnd","closeOnApply","currentModel","afterUiUpdatedFunc","afterAppliedFunc","onUiChanged","newModel","getModelFromUi","isModelValid","previousModel","areModelsEqual","afterFloatingFilter","afterDataChange","filterChangedCallback","onNewRowsLoaded","fromFloatingFilter","filterModifiedCallback","refreshFilterResizer","containerType","isFloatingFilter","afterGuiDetached","debounceDefault","getCellValue","eFilterBody","__decorate$2m","AgAbstractLabel","labelSeparator","labelAlignment","eLabel","labelWidth","setLabelSeparator","setLabel","setLabelWidth","setLabelAlignment","refreshLabel","innerText","getLabelId","getLabel","alignment","eGuiClassList","setLabelEllipsis","hasEllipsis","AgAbstractField","onValueChange","callbackFn","EVENT_CHANGED","getPreviousValue","__decorate$2l","AgPickerField","pickerIcon","ariaRole","isPickerDisplayed","isDestroyingPicker","skipClick","displayId","eDisplayField","eWrapper","clickHandler","pickerComponent","showPicker","icon","eIcon","setInputWidth","__decorate$2k","AgList","cssIdentifier","itemEls","highlightedEl","setValueByIndex","isDown","itemToHighlight","currentIdx","nextPos","highlightItem","addOptions","listOptions","listOption","addOption","sanitisedText","renderOption","updateIndices","option","itemEl","clearHighlighted","fireItemSelected","displayValue","fireChangeEvent","getDisplayValue","refreshHighlighted","ACTIVE_CLASS","EVENT_ITEM_SELECTED","__decorate$2j","AgSelect","listComponent","hideList","listGui","eDocument","getDocument","destroyMouseWheelFunc","destroyFocusOutFunc","relatedTarget","modal","closeOnEsc","closedCallback","positionPopupByComponent","eventSource","fromPicker","__decorate$2i","AgAbstractInputField","inputType","displayFieldTag","setInputType","eInput","addInputListeners","getInputElement","setInputName","setMaxLength","AgCheckbox","onCheckboxClick","getNextValue","setPassive","setReadOnly","isSelected","dispatchChange","refreshSelectedClass","setSelected","setName","indeterminate","checkboxChangedEvent","AgRadioButton","SimpleFilterModelFormatter","optionsFactory","isCombined","combinedModel","conditions","condition1","condition2","customOptions","joinOperatorTranslateKey","SimpleFilter","BLANK","NOT_BLANK","customOption","numberOfInputs","conditionToString","eTypes","eJoinOperatorPanels","eJoinOperatorsAnd","eJoinOperatorsOr","eConditionBodies","lastUiCompletePosition","joinOperatorId","getNumberOfInputs","customOpts","zeroInputTypes","IN_RANGE","onFloatingFilterChanged","setTypeFromFloatingFilter","setValueFromFloatingFilter","eType","getUiCompleteConditions","maxNumConditions","filterType","getFilterType","getJoinOperator","getConditionTypes","getConditionType","defaultJoinOperator","aIsSimple","bIsSimple","oneSimpleOneCombined","aSimple","bSimple","areSimpleModelsEqual","aCombined","bCombined","aModel","bModel","numConditions","validateAndUpdateConditions","numPrevConditions","getNumConditions","removeConditionsAndOperators","createJoinOperatorPanel","createOption","orChecked","eJoinOperatorAnd","eJoinOperatorOr","setConditionIntoUi","simpleModel","createMissingConditionsAndOperators","doesFilterPass","models","combineFunction","individualConditionPasses","setNumConditions","getDefaultJoinOperator","filterPlaceholder","getDefaultFilterOptions","createFilterListOptions","suppressAndOrCondition","alwaysShowBothConditions","numAlwaysVisibleConditions","eConditionBody","createValueElement","putOptionsIntoDropdown","resetType","forEachPositionInput","resetInput","addChangedListeners","eJoinOperatorPanel","createJoinOperator","uniqueGroupId","resetJoinOperatorAnd","resetJoinOperatorOr","eJoinOperators","andOr","eJoinOperator","filterListOptions","createBoilerplateListOption","createCustomListOption","isAllowTwoConditions","joinOperator","updateNumConditions","updateConditionStatusesAndValues","areAllConditionsUiComplete","isConditionUiComplete","shouldAddNewConditionAtEnd","activePosition","removeStartPosition","numConditionsToRemove","isConditionDisabled","isConditionBodyVisible","forEachInput","setElementDisplayed","setElementDisabled","resetPlaceholder","startPosition","deleteCount","removeComponents","removeElements","removeValueElements","joinOperatorIndex","removedElements","removeItems","removedComponents","comp","suppressFocus","firstInput","getInputs","hasInvalidInputs","updatedLastUiCompletePosition","conditionsRemoved","shouldRemovePositionAtEnd","positionBeforeLastUiCompletePosition","shouldUpdateConditionStatusesAndValues","updateJoinOperatorsDisabled","getPlaceholderText","defaultPlaceholder","filterPlaceholderFn","filterOptionKey","globalTranslate","setElementValue","attachElementOnChange","forEachPositionTypeInput","inputs","getValues","createCondition","filteringLabel","resetJoinOperator","isDefaultOperator","updateJoinOperatorDisabled","mapValuesFromModel","elPosition","filterModel","cellValue","customFilterOption","customFilterResult","evaluateCustomFilter","evaluateNullValue","evaluateNonNullValue","isBlank","EQUALS","NOT_EQUAL","LESS_THAN","LESS_THAN_OR_EQUAL","GREATER_THAN","GREATER_THAN_OR_EQUAL","CONTAINS","NOT_CONTAINS","STARTS_WITH","ENDS_WITH","ScalarFilter","scalarFilterParams","includeBlanksInEquals","includeBlanksInGreaterThan","includeBlanksInLessThan","includeBlanksInRange","compareResult","compareToResult","inRangeInclusive","__decorate$2h","DEFAULT_MIN_YEAR","DEFAULT_MAX_YEAR","DateFilterModelFormatter","dateFilterParams","isRange","dateFrom","dateTo","inRangeFloatingFilterDateFormat","formattedFrom","formattedTo","DateFilter","eConditionPanelsFrom","eConditionPanelsTo","dateConditionFromComps","dateConditionToComps","minValidYear","maxValidYear","filterDate","cellAsDate","yearParser","filterModelFormatter","createDateCompWrapper","dateCompWrapper","onDateChanged","DEFAULT_FILTER_OPTIONS","eCondition","createFromToElement","eConditionPanels","dateConditionComps","fromTo","eConditionPanel","removeDateComps","isValidDate","getUTCFullYear","_elPosition","SimpleFloatingFilter","isEventFromFloatingFilter","isEventFromDataChange","getLastType","lastType","setLastTypeFromModel","canWeEditAfterModelFromParentFilter","isTypeEditable","setEditable","doesFilterHaveSingleInput","uneditableTypes","__decorate$2g","DateFloatingFilter","createDateComponent","eReadOnlyText","eDateWrapper","allowEditing","dateModel","filterValueDate","filterValueText","getFilterModelFormatter","__decorate$2f","DefaultDateComponent","inputElement","eDateInput","shouldUseBrowserDatePicker","usingSafariDatePicker","browserDatePicker","AgInputTextField","allowedCharPattern","preventDisallowedCharacters","setStartValue","preventCharacters","clipboardData","AgInputNumberField","floatedValue","normalizeValue","onWheel","adjustPrecision","isScientificNotation","floatString","setMin","setMax","setPrecision","setStep","setValueOrInputValue","setValueFunc","setInputValueOnlyFunc","setInputValueOnly","validity","NumberFilterModelFormatter","filterTo","getAllowedCharPattern","NumberFilter","eValuesFrom","eValuesTo","processValue","numberFilterParams","eValues","eValue","stringToFloat","filterText","numberParser","TextFilterModelFormatter","TextFilter","trimInput","trimmedInput","textFilterParams","getTextMatcher","textFormatter","caseSensitive","DEFAULT_FORMATTER","DEFAULT_LOWERCASE_FORMATTER","legacyComparator","textCustomComparator","textMatcher","DEFAULT_MATCHER","cleanValue","filterTypesAllowNulls","formattedValues","cellValueFormatted","matcherParams","__decorate$2e","FloatingFilterTextInputService","setupGui","eFloatingFilterTextInput","addValueChangedListener","inputGui","TextInputFloatingFilter","floatingFilterInputService","createFloatingFilterInputService","eFloatingFilterInputContainer","toDebounce","syncUpWithParentFilter","isEnterKey","FloatingFilterNumberInputService","numberInputActive","eFloatingFilterNumberInput","getActiveInputElement","setupListeners","NumberFloatingFilter","TextFloatingFilter","TouchListener","preventMouseClick","destroyFuncs","touching","startListener","onTouchStart","moveListener","onTouchMove","endListener","onTouchEnd","getActiveTouch","touchList","identifier","touchStart","touchEvent","touches","moved","touchStartCopy","touchesMatch","EVENT_LONG_TAP","touch","eventIsFarAway","EVENT_TAP","checkForDoubleTap","cancelable","lastTapTime","DOUBLE_TAP_MILLIS","EVENT_DOUBLE_TAP","__decorate$2d","SortIndicatorComp","skipTemplate","TEMPLATE","attachCustomElements","eSortOrder","eSortAsc","eSortDesc","eSortMixed","eSortNone","setupSort","suppressOrder","setupMultiSortIndicator","canSort","addInIcon","onSortChanged","updateIcons","updateSortOrder","getDisplaySortForColumn","isAscending","isDescending","alwaysHideNoSort","isNone","isColumnShowingRowGroup","areGroupsCoupled","updateMultiSortIndicator","isMixedSort","allColumnsWithSorting","getColumnsWithSortingOrdered","indexThisCol","getDisplaySortIndexForColumn","moreThanOneColSorting","showIndex","__decorate$2c","HeaderComp","lastMovingChanged","refresh","workOutTemplate","currentTemplate","workOutShowMenu","currentShowMenu","workOutSort","currentSort","setDisplayName","setupTap","setupIcons","setMenu","setupFilterIcon","currentDisplayName","displayNameSanitised","eText","eMenu","eFilter","touchListener","suppressMenuHide","tapMenuButton","menuTouchListener","enableMenu","showMenuFn","showColumnMenuAfterMouseClick","enableSorting","tapListener","progressSort","menuHides","onIpadAndMenuHides","showMenu","menuFactory","showMenuAfterButtonClick","eSortIndicator","sortUsingCtrl","nowTime","movedRecently","columnMoving","multiSort","onSortingChanged","sourceColumns","sortDirectionsMatch","sourceCol","isMultiSorting","onFilterChanged","filterPresent","__decorate$2b","HeaderGroupComp","checkWarnings","setupLabel","addGroupExpandIcon","setupExpandIcons","paramsAny","expandAction","newExpandedValue","addTouchAndClickListeners","eCloseIcon","eOpenIcon","stopPropagationAction","updateIconVisibility","PopupComponent","isPopup","hasParent","__decorate$2a","LargeTextCellEditor","focusAfterAttached","cellStartedEdit","eTextArea","setCols","setRows","parseValue","__decorate$29","SelectCellEditor","startedByEnter","eventKey","hasValue","valueFormatted","valueFormatterService","valueFormattedExits","eSelect","stopEditing","focusIn","__decorate$28","SimpleCellEditor","cellEditorInput","getTemplate","startValue","getStartValue","highlightAllOnFocus","inputEl","setCaret","focusEl","TextCellEditorInput","useFormatter","setSelectionRange","TextCellEditor","__decorate$27","ARROW_UP","ARROW_DOWN","AnimateShowChangeCellRenderer","refreshCount","eDelta","showDelta","delta","absDelta","valueToUse","deltaUp","setTimerToRemoveDelta","refreshCountCopy","hideDeltaValue","lastValue","filterManager","isSuppressFlashingCellsBecauseFiltering","__decorate$26","AnimateSlideCellRenderer","eCurrent","addSlideAnimation","ePrevious","RowNode","childrenMapped","rowTop","oldRowTop","selectable","OBJECT_ID_SEQUENCE","__autoHeights","alreadyRendered","highlighted","hovered","setDataCommon","updateData","oldData","onDataChanged","updateDataOnDetailNode","checkRowSelectable","resetQuickFilterAggregateText","createDataChangedEvent","dispatchLocalEvent","detailNode","EVENT_DATA_CHANGED","createLocalRowEvent","getRowIndexString","rowPinned","createDaemonNode","oldNode","__daemon","setDataAndId","setId","selectionService","syncInRowNode","isRowSelectableFunc","setRowSelectable","newVal","EVENT_SELECTABLE_CHANGED","isGroupSelectsChildren","calculateSelectedFromChildren","setSelectedParams","getRowIdFunc","parentKeys","getGroupKeys","ID_PREFIX_ROW_GROUP","excludeSelf","isPixelInRange","pixel","rowHeight","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","setHovered","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","activeColsForRow","getRowHeightForNode","onRowHeightChangedDebounced","EVENT_ROW_INDEX_CHANGED","setUiLevel","uiLevel","EVENT_UI_LEVEL_CHANGED","createGlobalRowEvent","rowNodeEventThrottle","dispatchExpanded","rowRenderer","refreshCells","setDataValue","getColumnFromKey","getValueFromValueService","dispatchEventForSaveValueReadOnly","valueChanged","valueService","dispatchCellChangedEvent","lockedClosedGroup","isOpenGroup","footer","groupFootersEnabled","groupAlwaysShowAggData","ignoreAggData","setGroupValue","groupData","columnId","setAggData","newAggData","colIds","aggData","oldAggData","isSsrm","isGroupFunc","stub","__hasChildren","EVENT_HAS_CHILDREN_CHANGED","isEmptyRowGroupNode","cellChangedEvent","EVENT_CELL_CHANGED","quickFilterAggregateText","depthFirstSearch","atLeastOneSelected","atLeastOneDeSelected","atLeastOneMixed","childState","setSelectedInitialValue","selectThisNode","selectionNotAllowed","selectionNotChanged","clearSelection","rangeSelect","setNodesSelected","isRowPinned","isParentOfNode","potentialParent","EVENT_MOUSE_ENTER","EVENT_MOUSE_LEAVE","getFirstChildOfFirstChild","rowGroupColumn","currentRowNode","isCandidate","foundFirstChildPath","nodeToSwapIn","parentRowNode","isFullWidthCell","isFullWidthCellFunc","getRoute","createFooter","footerNode","ID_PREFIX_TOP_PINNED","ID_PREFIX_BOTTOM_PINNED","__decorate$25","CheckboxSelectionComponent","eCheckbox","getCheckboxId","onSelectionChanged","onSelectableChanged","showOrHideSelect","onClicked","groupSelectsFiltered","shouldHandleIndeterminateState","checkboxVisibleIsDynamic","getIsVisible","showOrHideSelectListener","extraParams","callbackParams","disableInsteadOfHide","removeHidden","__decorate$24","DragAndDropService_1","DragSourceType","VerticalDirection","HorizontalDirection","DragAndDropService","dragSourceAndParamsList","dropTargets","ePinnedIcon","eHideIcon","eMoveIcon","eLeftIcon","eRightIcon","eGroupIcon","eAggregateIcon","ePivotIcon","eDropNotAllowedIcon","dragSource","allowTouch","includeTouch","sourceAndParams","clearDragSourceParamsList","nudge","eventLastTime","dragItem","getDragItem","lastDropTarget","dragSourceDropTarget","onDragStarted","createGhost","onDragStopped","draggingEvent","createDropTargetEvent","removeGhost","fromNudge","hDirection","getHorizontalDirection","vDirection","getVerticalDirection","positionGhost","validDropTargets","isMouseOnDropTarget","dropTarget","findCurrentDropTarget","leaveLastTargetIfExists","onGridExit","onGridEnter","enterDragTargetIfExists","getAllContainersFromDropTarget","secondaryContainers","getSecondaryContainers","containers","getContainer","allContainersIntersect","horizontalFit","verticalFit","allContainersFromDropTarget","mouseOverTarget","currentContainers","targetContainsSource","isInterestedIn","getRootNode","elementStack","elementsFromPoint","onDragEnter","dragEnterEvent","setGhostIcon","getIconName","onDragLeave","dragLeaveEvent","addDropTarget","removeDropTarget","hasExternalDropZones","zones","external","findExternalZone","externalTargets","eClientX","Left","Right","eClientY","Up","Down","dropZoneTarget","gridApi","ghost","eGhost","ghostRect","ghostHeight","browserWidth","browserHeight","offsetParentSize","windowScrollY","scrollTop","windowScrollX","eGhostParent","GHOST_TEMPLATE","mouseEventService","stampTopLevelGridCompWithGridInstance","theme","getTheme","eGhostIcon","dragItemName","targetEl","fullscreenElement","ShadowRoot","shake","defaultIconName","ICON_NOT_ALLOWED","ICON_PINNED","ICON_MOVE","ICON_LEFT","ICON_RIGHT","ICON_GROUP","ICON_AGGREGATE","ICON_PIVOT","ICON_HIDE","__decorate$23","RowDragComp","cellValueFn","customGui","suppressVisibilityChange","isCustomGui","setDragElement","checkCompatibility","ManagedVisibilityStrategy","NonManagedVisibilityStrategy","dragElement","getSelectedNodes","isRowDragMultiRow","selection","managed","treeData","defaultTextValue","getRowDragText","RowDrag","dragItemCount","dragSourceDomDataKey","getDomDataKey","dragAndDropService","VisibilityStrategy","setDisplayedOrVisible","neverDisplayed","displayedOptions","shown","isShownSometimes","onSuppressRowDrag","workOutVisibility","gridBodyCon","getGridBodyCtrl","rowDragFeature","getRowDragFeature","shouldPreventRowMove","suppressRowDrag","__decorate$22","GroupCellRendererCtrl","eExpanded","eContracted","compClass","topLevelFooter","isTopLevelFooter","embeddedRowMismatch","isEmbeddedRowMismatch","isNullValueAndNotMaster","skipCell","cellIsBlank","setupShowingValueForOpenedParent","findDisplayedGroupNode","addFullWidthRowDraggerIfNeeded","addExpandAndContract","addCheckboxIfNeeded","addValueElement","setupIndent","refreshAriaExpanded","expandListener","eParentOfValue","doingFullWidth","rowGroupCols","firstRowGroupCol","fullWidth","pinnedLeftCell","pinnedRightCell","bodyCell","showingValueForOpenedParent","displayedGroupNode","showingGroupNode","keyOfGroupingColumn","configuredToShowThisGroupLevel","valPresent","addFooterValue","addGroupValue","addChildCount","paramsAdjusted","adjustParamsWithDetailsFromRelatedColumn","innerCompDetails","getInnerCompDetails","valueWhenNoRenderer","setInnerRenderer","relatedColumn","notFullWidth","showingThisRowGroup","footerValueGetter","footerValue","paramsClone","getFullWidthGroupRowInnerCellRenderer","getInnerRendererDetails","isGroupRowRenderer","relatedColDef","relatedCompDetails","getCellRendererDetails","suppressCount","updateChildCount","showingGroupForThisNode","isShowRowGroupForThisRow","showCount","countString","setChildCount","thisColumnIsInterested","eExpandedIcon","eContractedIcon","eGroupCell","eGridCell","isDoubleClickEdit","suppressDoubleClickExpand","onCellDblClicked","onExpandClicked","showExpandAndContractIcons","expandableChangedListener","onRowNodeIsExpandableChanged","onExpandOrContract","nextExpandState","sticky","scrollToStickyNode","gridBodyCtrl","scrollFeature","getScrollFeature","setVerticalScrollPosition","stickyRowTop","reducedLeafNode","expandableGroup","displayingForOneColumnOnly","showing","displayedGroup","setExpandedDisplayed","setContractedDisplayed","pivotModeAndLeafGroup","addExpandableCss","isTotalFooterNode","setIndent","suppressPadding","fullWithRow","manyDimensionThisColumn","paddingCount","indentClass","rowDragComp","isUserWantsSelected","paramsCheckbox","checkbox","checkboxNeeded","detail","cbSelectionComponent","setCheckboxVisible","suppressEnterExpand","cellEditable","targetIsExpandIcon","__decorate$21","GroupCellRenderer","compProxy","valueToDisplay","setRenderDetails","eChildCount","componentPromise","destroyComp","innerCellRenderer","__decorate$20","LoadingCellRenderer","failedLoad","setupFailed","setupLoading","eLoadingText","eLoadingIcon","LoadingOverlayComponent$1","DEFAULT_LOADING_OVERLAY_TEMPLATE","localisedTemplate","NoRowsOverlayComponent$1","DEFAULT_NO_ROWS_TEMPLATE","TooltipComponent$1","NumberCellEditorInput","showStepperButtons","NumberCellEditor","DateCellEditorInput","DateCellEditor","__decorate$1$","DateStringCellEditorInput","getDataTypeService","parseDate","getDateParserFunction","getDateFormatterFunction","DateStringCellEditor","__decorate$1_","CheckboxCellRenderer","updateCheckbox","onCheckboxChanged","eventStarted","eventStopped","__decorate$1Z","CheckboxCellEditor","__decorate$1Y","UserComponentRegistry","agGridDefaults","agDateInput","agColumnHeader","agColumnGroupHeader","agSortIndicator","agTextColumnFloatingFilter","agNumberColumnFloatingFilter","agDateColumnFloatingFilter","agReadOnlyFloatingFilter","agAnimateShowChangeCellRenderer","agAnimateSlideCellRenderer","agGroupCellRenderer","agGroupRowRenderer","agLoadingCellRenderer","agCheckboxCellRenderer","agCellEditor","agTextCellEditor","agNumberCellEditor","agDateCellEditor","agDateStringCellEditor","agSelectCellEditor","agLargeTextCellEditor","agCheckboxCellEditor","agTextColumnFilter","agNumberColumnFilter","agDateColumnFilter","agLoadingOverlay","agNoRowsOverlay","agTooltipComponent","enterpriseAgDefaultCompsModule","agSetColumnFilter","SetFilterModule","agSetColumnFloatingFilter","agMultiColumnFilter","MultiFilterModule","agMultiColumnFloatingFilter","agGroupColumnFilter","agGroupColumnFloatingFilter","agRichSelect","agRichSelectCellEditor","agDetailCellRenderer","MasterDetailModule","agSparklineCellRenderer","SparklinesModule","jsComps","registerJsComponent","registerDefaultComponent","createResult","componentFromFramework","registeredViaFrameworkComp","frameworkComponent","jsComponent","isFwkComp","isFrameworkComponent","defaultComponent","moduleForComponent","warnAboutMissingComponent","validComponents","suggestions","DateComponent","HeaderComponent","HeaderGroupComponent","CellRendererComponent","CellEditorComponent","InnerRendererComponent","LoadingOverlayComponent","NoRowsOverlayComponent","TooltipComponent","FilterComponent","FloatingFilterComponent","ToolPanelComponent","StatusPanelComponent","FullWidth","FullWidthLoading","FullWidthGroup","FullWidthDetail","FloatingFilterMapper","getFloatingFilterType","filterToFloatingFilterMapping","__decorate$1X","UserComponentFactory","getHeaderCompDetails","getCompDetails","getHeaderGroupCompDetails","getFullWidthCellRendererDetails","getFullWidthLoadingCellRendererDetails","getFullWidthGroupCellRendererDetails","getFullWidthDetailCellRendererDetails","getCellEditorDetails","getFilterDetails","defaultFilter","getLoadingOverlayCompDetails","getNoRowsOverlayCompDetails","getSetFilterCellRendererDetails","getFloatingFilterCompDetails","defaultFloatingFilter","getToolPanelCompDetails","toolPanelDef","getStatusPanelCompDetails","defObject","defaultName","mandatory","compName","jsComp","fwComp","paramsFromSelector","popupFromSelector","popupPositionFromSelector","getCompKeys","lookupFromRegistry","userComponentRegistry","agComponentUtils","doesImplementIComponent","adaptFunction","paramsMerged","mergeParamsWithApplicationProvidedParams","defObjectAny","selectorFunc","selectorRes","assignComp","providedJsComp","popupPosition","thisComponentConfig","componentMetadataProvider","frameworkComponentWrapper","mandatoryMethodList","optionalMethodList","deferredInit","initComponent","paramsFromGrid","userParams","userParamsFromFunc","getDefaultFloatingFilterType","getFromDefault","defaultFloatingFilterType","usingDefaultFilter","ExcelFactoryMode","__decorate$1W","DragService","dragEndFunctions","dragSources","removeAllListeners","removeListener","dragSourceAndListener","mouseDownListener","touchEnabled","touchStartListener","isDragging","mouseListener","stopPropagationForTouch","suppressTouch","getStartTarget","startTarget","currentDragParams","touchLastTime","touchMoveEvent","touchEndEvent","onTouchUp","documentTouchMove","addTemporaryEvents","onCommonMove","skipMouseEvent","_alreadyProcessedByDragService","shouldPreventMouseEvent","mouseStartEvent","mouseMoveEvent","mouseUpEvent","onMouseUp","contextEvent","currentEvent","isEventNearStartEvent","startEvent","requiredPixelDiff","getFirstActiveTouch","isEnableCellTextSelect","isMouseMove","isEventFromThisGrid","isOverFormFieldElement","changedTouches","onUpCommon","eventOrTouch","RowHighlightPosition","ClientSideRowModelSteps","__decorate$1V","unwrapUserComp","compAsAny","isProxy","getFrameworkComponentInstance","GridApi","detailGridInfoMap","destroyCalled","registerOverlayWrapperComp","overlayWrapperComp","registerSideBarComp","sideBarComp","getType","clientSideRowModel","infiniteRowModel","serverSideRowModel","whenReady","__getAlignedGridService","alignedGridsService","__getContext","getSetterMethod","setterName","dynamicApi","addDetailGridInfo","gridInfo","removeDetailGridInfo","getDetailGridInfo","forEachDetailGridInfo","getDataAsCsv","CsvExportModule","csvCreator","exportDataAsCsv","getExcelExportMode","baseParams","mergedParams","exportMode","assertNotExcelMultiSheet","ExcelExportModule","excelCreator","getFactoryMode","MULTI_SHEET","getDataAsExcel","exportDataAsExcel","getSheetDataForExcel","setFactoryMode","getMultipleSheetsAsExcel","exportMultipleSheetsAsExcel","setGridAriaProperty","eGrid","ariaProperty","logMissingRowModel","apiMethod","requiredRowModels","setServerSideDatasource","datasource","setDatasource","setCacheBlockSize","blockSize","resetRootStore","setViewportDatasource","viewportDatasource","setRowData","rowData","missingImmutableService","immutableService","setPinnedTopRowData","pinnedRowModel","setPinnedBottomRowData","getPinnedTopRowCount","getPinnedBottomRowCount","getPinnedTopRow","getPinnedBottomRow","expireValueCache","getVerticalPixelRange","getVScrollPosition","getHorizontalPixelRange","getHScrollPosition","setAlwaysShowHorizontalScroll","setAlwaysShowVerticalScroll","flashCells","redrawRows","setFunctionsReadOnly","refreshHeader","isAnyFilterPresent","isColumnFilterPresent","isAggregateFilterPresent","isQuickFilterPresent","setRowNodeExpanded","expandParents","onGroupExpandedOrCollapsed","refreshModel","MAP","refreshClientSideRowModel","isAnimationFrameQueueEmpty","isQueueEmpty","flushAllAnimationFrames","getRowNode","getSizesForCurrentTheme","getRowHeightAsNumber","headerHeight","expandAll","expandOrCollapseAll","collapseAll","addRenderedRowListener","getQuickFilter","setQuickFilter","newFilter","setExcludeHiddenColumnsFromQuickFilter","setIncludeHiddenColumnsInQuickFilter","allNodesValid","nodesAsRowNode","selectAll","selectAllRowNodes","deselectAll","deselectAllRowNodes","selectAllFiltered","justFiltered","deselectAllFiltered","getServerSideSelectionState","setServerSideSelectionState","selectAllOnCurrentPage","justCurrentPage","deselectAllOnCurrentPage","showLoadingOverlay","showNoRowsOverlay","hideOverlay","getSelectedRows","getBestCostNodeSelection","getRenderedNodes","ensureColumnVisible","ensureIndexVisible","ensureNodeVisible","nodeSelector","forEachLeafNode","forEachNode","includeFooterNodes","forEachNodeAfterFilter","forEachNodeAfterFilterAndSort","getFilterInstance","getFilterInstanceImpl","unwrapped","filterPromise","getFilterComponent","filterComp","destroyFilter","getStatusPanel","statusBarService","getColumnDef","setFilterModel","getFilterModel","getFocusedCell","clearFocusedCell","setFocusedCell","forceBrowserFocus","setSuppressRowDrag","setSuppressMoveWhenRowDragging","setSuppressRowClickSelection","addRowDropZone","removeRowDropZone","activeDropTarget","getRowDropZoneParams","getRowDropZone","setHeaderHeight","setDomLayout","domLayout","setEnableCellTextSelection","setCellTextSelection","setFillHandleDirection","setGroupHeaderHeight","setFloatingFiltersHeight","setPivotHeaderHeight","setPivotGroupHeaderHeight","setAnimateRows","animateRows","setIsExternalFilterPresent","isExternalFilterPresentFunc","setDoesExternalFilterPass","doesExternalFilterPassFunc","setNavigateToNextCell","navigateToNextCellFunc","setTabToNextCell","tabToNextCellFunc","setTabToNextHeader","tabToNextHeaderFunc","setNavigateToNextHeader","navigateToNextHeaderFunc","setRowGroupPanelShow","rowGroupPanelShow","setGetGroupRowAgg","getGroupRowAggFunc","setGetBusinessKeyForNode","getBusinessKeyForNodeFunc","setGetChildCount","getChildCountFunc","setProcessRowPostCreate","processRowPostCreateFunc","setGetRowId","setGetRowClass","rowClassFunc","setIsFullWidthRow","isFullWidthRowFunc","setIsRowSelectable","setIsRowMaster","isRowMasterFunc","setPostSortRows","postSortRowsFunc","setGetDocument","getDocumentFunc","setGetContextMenuItems","getContextMenuItemsFunc","setGetMainMenuItems","getMainMenuItemsFunc","setProcessCellForClipboard","processCellForClipboardFunc","setSendToClipboard","sendToClipboardFunc","setProcessCellFromClipboard","processCellFromClipboardFunc","setProcessSecondaryColDef","processSecondaryColDefFunc","setProcessPivotResultColDef","setProcessSecondaryColGroupDef","processSecondaryColGroupDefFunc","setProcessPivotResultColGroupDef","processPivotResultColDefFunc","processPivotResultColGroupDefFunc","setPostProcessPopup","postProcessPopupFunc","setInitialGroupOrderComparator","initialGroupOrderComparatorFunc","setGetChartToolbarItems","getChartToolbarItemsFunc","setPaginationNumberFormatter","paginationNumberFormatterFunc","setGetServerSideStoreParams","getServerSideStoreParamsFunc","setGetServerSideGroupLevelParams","getServerSideGroupLevelParamsFunc","setIsServerSideGroupOpenByDefault","isServerSideGroupOpenByDefaultFunc","setIsApplyServerSideTransaction","isApplyServerSideTransactionFunc","setIsServerSideGroup","isServerSideGroupFunc","setGetServerSideGroupKey","getServerSideGroupKeyFunc","setGetRowStyle","rowStyleFunc","setGetRowHeight","rowHeightFunc","assertSideBarLoaded","isSideBarVisible","setSideBarVisible","setSideBarPosition","openToolPanel","closeToolPanel","getOpenedToolPanel","openedItem","refreshToolPanel","isToolPanelShowing","getToolPanelInstance","getSideBar","getDef","setSideBar","setSuppressClipboardPaste","resetRowHeights","setGroupRemoveSingleChildren","setGroupRemoveLowestSingleChildren","setGroupDisplayType","setRowClass","setDeltaSort","setRowCount","maxRowFound","onRowHeightChanged","gridCtrl","getGridCtrl","destroyGridUi","cleanDownReferencesToAvoidMemoryLeakInCaseApplicationIsKeepingReferenceToDestroyedGrid","warnIfDestroyed","resetQuickFilter","resetQuickFilterCache","getCellRanges","rangeService","addCellRange","clearRangeSelection","removeAllCellRanges","undoCellEditing","undoRedoService","undo","redoCellEditing","redo","getCurrentUndoSize","getCurrentUndoStackSize","getCurrentRedoSize","getCurrentRedoStackSize","getChartModels","chartService","getChartRef","chartId","getChartImageDataURL","downloadChart","openChartToolPanel","closeChartToolPanel","createRangeChart","createPivotChart","createCrossFilterChart","updateChart","restoreChart","chartModel","chartContainer","copyToClipboard","ClipboardModule","clipboardService","cutToClipboard","copySelectedRowsToClipboard","copySelectedRangeToClipboard","copySelectedRangeDown","copyRangeDown","pasteFromClipboard","showColumnMenuAfterButtonClick","buttonElement","showMenuAfterMouseEvent","hidePopupMenu","contextMenuFactory","hideActiveMenu","setPopupParent","ePopupParent","tabToNextCell","navigationService","tabToPreviousCell","getCellRendererInstances","getCellEditorInstances","getEditingCells","startEditingCell","cellPosition","notPinned","cell","getCellByPosition","startRowOrCellEdit","addAggFunc","addAggFuncs","aggFuncs","clearAggFuncs","applyServerSideTransaction","serverSideTransactionManager","applyTransaction","applyServerSideTransactionAsync","applyTransactionAsync","retryServerSideLoads","retryLoads","flushServerSideAsyncTransactions","flushAsyncTransactions","rowDataTransaction","updateRowData","batchUpdateRowData","setSuppressModelUpdateAfterUpdateTransaction","refreshInfiniteCache","refreshCache","purgeInfiniteCache","purgeCache","refreshServerSide","refreshStore","refreshServerSideStore","getServerSideStoreState","getServerSideGroupLevelState","getStoreState","getInfiniteRowCount","getRowCount","isLastRowIndexKnown","getCacheBlockState","rowNodeBlockLoader","getBlockState","getFirstDisplayedRow","getFirstVirtualRenderedRow","getLastDisplayedRow","getLastVirtualRenderedRow","getDisplayedRowAtIndex","getRow","getDisplayedRowCount","setDataTypeDefinitions","dataTypeDefinitions","setPagination","paginationIsLastPageFound","paginationProxy","isLastPageFound","paginationGetPageSize","getPageSize","paginationSetPageSize","paginationGetCurrentPage","getCurrentPage","paginationGetTotalPages","getTotalPages","paginationGetRowCount","getMasterRowCount","paginationGoToNextPage","goToNextPage","paginationGoToPreviousPage","goToPreviousPage","paginationGoToFirstPage","goToFirstPage","paginationGoToLastPage","goToLastPage","paginationGoToPage","page","goToPage","__decorate$1U","FilterManager_1","FilterManager","allColumnFilters","allColumnListeners","activeAggregateFilters","activeColumnFilters","quickFilter","quickFilterParts","processingFilterChange","onColumnsChanged","refreshFiltersForAggregations","onIncludeHiddenColumnsInQuickFilterChanged","parseQuickFilter","setQuickFilterParts","allowShowChangeAfterFilter","externalFilterPresent","isExternalFilterPresentCallback","updateAggFiltering","isFilterPresent","doesExternalFilterPass","allPromises","modelKeys","filterWrapper","setModelOnFilterWrapper","getOrCreateFilterWrapper","promiseFilter","isExternalFilterPresent","doAggregateFiltersPass","filterToSkip","doColumnFiltersPass","updateActiveFilters","groupFilterEnabled","getGroupAggFiltering","isAggFilter","isSecondary","isShowingPrimaryColumns","updateFilterFlagInColumns","targetAggregates","targetedFilters","targetedData","parsedFilter","isAggFiltering","callOnFilterChangedOutsideRenderCycle","isRefreshInProgress","updateDependantFilters","onAnyFilterChanged","aggFiltering","isAggregateQuickFilterPresent","isNonAggregateQuickFilterPresent","doesRowPassOtherFilters","doesRowPassFilter","filterInstanceToSkip","doesRowPassQuickFilterNoCache","filterPart","getQuickFilterTextForColumn","doesRowPassQuickFilterCache","aggregateRowForQuickFilter","doesRowPassQuickFilter","usingCache","doesRowPassAggregateFilters","stringParts","QUICK_FILTER_SEPARATOR","createValueGetter","createIfDoesNotExist","cachedFilter","createFilterWrapper","checkDestroyFilter","putIntoGui","getDefaultFilter","getDefaultFloatingFilter","createFilterInstance","createFilterParams","doesRowPassOtherFilter","compiledElement","guiPromise","eFilterGui","guiFromFilter","disposeFilterWrapper","disposeColumnListener","groupColumns","groupColumn","showParentFilter","finalFilterParams","filterComponent","currentParentModel","getCurrentFloatingFilterParentModel","suppressFilterButton","columnListener","areFilterCompsDifferent","oldCompDetails","newCompDetails","oldComponentClass","newComponentClass","isSameComponentClass","render","AbstractHeaderCellComp","getCtrl","__decorate$1T","HeaderFilterCellComp","cssClassName","addOrRemoveBodyCssClass","eFloatingFilterBody","setButtonWrapperDisplayed","eButtonWrapper","setCompDetails","getFloatingFilterComp","compPromise","setMenuIcon","eButtonShowMainFilter","setComp","destroyFloatingFilterComp","afterCompCreated","floatingFilterComp","__decorate$1S","LayoutCssClasses","LayoutFeature","updateLayoutClasses","getDomLayout","AUTO_HEIGHT","PRINT","NORMAL","validLayouts","__decorate$1R","ScrollDirection","ScrollSource","GridBodyScrollFeature","eBodyViewport","lastScrollSource","nextScrollTop","resetLastHScrollDebounced","Horizontal","resetLastVScrollDebounced","Vertical","enableRtl","onDisplayedColumnsWidthChanged","centerRowContainerCtrl","addScrollListener","fakeHScroll","getFakeHScrollComp","fakeVScroll","getFakeVScrollComp","getViewportElement","onHScroll","onScrollCallback","onFakeHScroll","isDebounce","onVScroll","onFakeVScroll","horizontallyScrollHeaderCenterAndFloatingCenter","notYetInitialised","getCenterViewportScrollLeft","topCenterContainer","getTopCenterRowContainerCtrl","stickyTopCenterContainer","getStickyTopCenterRowContainerCtrl","bottomCenterContainer","getBottomCenterRowContainerCtrl","centerHeaderContainer","getHeaderRowContainerCtrl","setHorizontalScroll","setContainerTranslateX","centerViewport","isCenterViewportLastHorizontal","Container","setScrollPosition","isControllingScroll","FakeContainer","onHScrollCommon","centerContainerViewport","shouldBlockScrollUpdate","newScrollLeft","doHorizontalScroll","onVScrollCommon","setScrollTop","scrollGridIfNeeded","schedule","fakeScrollLeft","fireScrollEvent","onHorizontalViewportChanged","bodyScrollEvent","scrollTimer","bodyScrollEndEvent","touchOnly","shouldBlockVerticalScroll","shouldBlockHorizontalScroll","getCenterWidth","redrawRowsAfterScroll","checkScrollLeft","frameNeeded","setHorizontalScrollPosition","hScrollPosition","fromAlignedGridsService","minScrollLeft","maxScrollLeft","vScrollPosition","scrollHorizontally","pixels","oldScrollPosition","scrollToTop","indexToSelect","isPaging","paginationPanelEnabled","goToPageWithIndex","stickyTopHeight","getStickyTopHeight","rowGotShiftedDuringOperation","startingRowTop","startingRowHeight","paginationOffset","getPixelOffset","rowTopPixel","rowBottomPixel","heightOffset","heightScaler","getDivStretchOffset","vScrollTop","vScrollBottom","viewportHeight","pxTop","getScrollPositionForPixel","pxBottom","pxMiddle","rowAboveViewport","rowBelowViewport","newScrollPosition","redraw","newHorizontalScroll","getPositionedHorizontalScroll","setCenterViewportScrollLeft","columnBeforeStart","columnAfterEnd","isColumnOutsideViewport","viewportTooSmallForColumn","alignColToStart","alignColToEnd","isMiddle","colLeft","colMiddle","colRight","getColumnBounds","viewportStart","viewportEnd","getViewportBounds","colWidth","colLeftPixel","colRightPixel","colMidPixel","viewportStartPixel","viewportEndPixel","AutoScrollService","tickingInterval","scrollContainer","scrollAxis","scrollVertically","scrollByTick","getVerticalPosition","setVerticalPosition","getHorizontalPosition","setHorizontalPosition","shouldSkipVerticalScroll","shouldSkipHorizontalScroll","forceSkipVerticalScroll","skipVerticalScroll","scrollTick","tickLeft","tickRight","tickUp","tickDown","ensureTickingStarted","ensureCleared","doTick","tickCount","tickAmount","__decorate$1Q","RowDragFeature","isMultiRowDrag","isGridSorted","isGridFiltered","refreshStatus","onRowGroupChanged","autoScrollService","getBodyViewportElement","lastDraggingEvent","isSortActive","rowGroups","managedDrag","getRowNodes","isFromThisGrid","selectedNodes","getRowIndexNumber","dispatchGridEvent","onEnterOrDragging","isDropZoneWithinThisGrid","gridGui","getNormalisedPosition","doManagedDrag","highlightRowAtPixel","moveRows","moveRowAndClearHighlight","lastHighlightedRowNode","getLastHighlightedRowNode","isBelow","Below","increment","addIndex","getRowIndexAtPixel","getHighlightPosition","Above","clearRowHighlight","rowWasMoved","ensureRowsAtPixel","processedParams","fromGrid","draggingToRowDragEvent","yNormalised","mouseIsPastLastRow","getCurrentPageHeight","overIndex","overNode","vDirectionString","stopDragging","__decorate$1P","RowAnimationCssClasses","CSS_CLASS_FORCE_VERTICAL_SCROLL","CSS_CLASS_CELL_SELECTABLE","CSS_CLASS_COLUMN_MOVING","GridBodyCtrl","bodyScrollFeature","eGridBody","eTop","eBottom","eStickyTop","addRowDragListener","setupRowAnimationCssClass","addEventListeners","addFocusListeners","onGridColumnsChanged","addBodyViewportListener","setFloatingHeights","disableBrowserDragging","addStopEditingWhenGridLosesFocus","registerGridBodyCtrl","getComp","onScrollVisibilityChanged","onPinnedRowDataChanged","onHeaderHeightChanged","isFocusedElementNested","gridContainRelatedTarget","isNestedRelatedTarget","isNestedTarget","setColumnMovingCss","setCellSelectableCss","scrollVisibleService","setVerticalScrollPaddingVisible","setStickyTopWidth","scrollbarWidth","requestAnimationFrame","setBodyViewportWidth","setColumnCount","HTMLImageElement","focusOutListener","elementWithFocus","clickInsideGrid","viewports","isElementInThisGrid","getActivePopups","isElementWithinCustomPopup","updateRowCount","headerCount","headerNavigationService","registerBodyViewportResizeListener","overflowY","setPinnedTopBottomOverflowY","allowVerticalScroll","setAlwaysVerticalScrollClass","isAnimateRows","rowContainerHeightService","isStretching","animateRowsCssClass","ANIMATION_ON","ANIMATION_OFF","setRowAnimationCssOnBodyViewport","getGridBodyElement","onBodyViewportContextMenu","mockContextMenuForIPad","onBodyViewportWheel","onStickyTopWheel","addFullWidthContainerWheelListener","fullWidthContainer","eCenterColsViewport","onFullWidthContainerWheel","deltaX","deltaY","scrollBy","getCenterRowContainerCtrl","onContextMenu","longTapListener","hasAnchoredPopup","offsetY","floatingTopHeight","getPinnedTopTotalHeight","floatingBottomHeight","getPinnedBottomTotalHeight","setTopHeight","setBottomHeight","setTopDisplay","setBottomDisplay","setStickyTopOffsetTop","setStickyTopHeight","vScrollVisible","headerCtrl","getGridHeaderCtrl","pinnedTopHeight","setStickyTopTop","nextTimeout","removeScrollWidth","scrollWidthToRemove","bodyViewportWidth","availableWidth","addScrollEventListener","removeScrollEventListener","SelectionHandleType","CellRangeType","CSS_CELL_RANGE_SELECTED","CSS_CELL_RANGE_CHART","CSS_CELL_RANGE_SINGLE_CELL","CSS_CELL_RANGE_CHART_CATEGORY","CSS_CELL_RANGE_HANDLE","CSS_CELL_RANGE_TOP","CSS_CELL_RANGE_RIGHT","CSS_CELL_RANGE_BOTTOM","CSS_CELL_RANGE_LEFT","CellRangeFeature","cellCtrl","cellComp","onRangeSelectionChanged","rangeCount","getCellRangeCount","getCellPosition","hasChartRange","getHasChartRange","isSingleCell","updateRangeBorders","refreshHandle","rangeBorders","getRangeBorders","isMoreThanOneCell","cellRanges","DIMENSION","VALUE","updateRangeBordersIfRangeCount","thisCol","leftCol","rightCol","ranges","isCellInSpecificRange","startRow","getRangeStartRow","endRow","getRangeEndRow","rowPositionUtils","sameRow","shouldHaveSelectionHandle","selectionHandle","addSelectionHandle","rangesLen","cellRange","isFillHandleAvailable","isRangeHandleAvailable","handleIsAvailable","isEditing","hasCategoryRange","isCategoryCell","isContiguousRange","isBottomRightCell","cellRangeType","selectionHandleFill","FILL","RANGE","selectionHandleFactory","createSelectionHandle","CellPositionFeature","setupColSpan","setupRowSpan","onLeftChanged","onWidthChanged","applyRowSpan","onDisplayColumnsChanged","colsSpanning","getColSpanningList","getCellWidth","modifyLeftForPrintLayout","getCellLeft","mostLeftCol","leftPosition","isPrintLayout","singleRowHeight","totalRowHeight","CellCustomStyleFeature","staticClasses","applyUserStyles","applyCellClassRules","applyClassesFromColDef","cellClassParams","stylingService","processClassRules","cellStyleParams","cellStyleFunc","setUserStyles","getStaticCellClasses","TooltipFeature","setupTooltip","browserTooltips","updateTooltipText","tooltip","createTooltipFeatureIfNeeded","getTooltipValue","genericTooltipFeature","refreshToolTip","getLocation","getRowIndex","getTooltipText","getValueFormatted","__decorate$1O","Beans","doingMasterDetail","isMasterDetail","CellMouseListenerFeature","onMouseEvent","onMouseOut","onMouseOver","isDoubleClickOnIPad","isMultiKey","intersectLastRange","cellClickedEvent","editOnSingleClick","nowMillis","lastIPadMouseClickEvent","cellDoubleClickedEvent","editOnDoubleClick","isRightClickInExistingRange","focusCell","containsWidget","thisCell","extendLatestRangeToCell","setRangeToCell","cellInRange","isCellInAnyRange","mouseStayingInsideCell","cellMouseOutEvent","clearMouseOver","cellMouseOverEvent","setMouseOver","cellContainsTarget","cellContainsRelatedTarget","CellKeyboardListenerFeature","rowCtrl","onEnterKeyDown","onF2KeyDown","onEscapeKeyDown","onBackspaceOrDeleteKeyDown","onNavigationKeyDown","isRangeSelectionEnabled","onShiftRangeSelect","navigateToNextCell","endCell","extendLatestRangeInDirection","ensureCellVisible","isEnableRangeSelection","clearCellRangeCellValues","dispatchWrapperEvents","wrapperEventSource","stopEditingAndFocus","stopRowOrCellEdit","processCharacter","eventOnChildComponent","onSpaceKeyDown","isRowSelection","currentSelection","newSelection","updatedCount","__decorate$1N","DndSourceComp","eCell","checkVisibility","dragEvent","providedOnRowDrag","dataTransfer","setDragImage","defaultOnRowDrag","jsonData","CSS_CELL","CSS_AUTO_HEIGHT","CSS_NORMAL_HEIGHT","CSS_CELL_FOCUS","CSS_CELL_FIRST_RIGHT_PINNED","CSS_CELL_LAST_LEFT_PINNED","CSS_CELL_NOT_INLINE_EDITING","CSS_COLUMN_HOVER","CSS_CELL_WRAP_TEXT","instanceIdSequence$3","CellCtrl","cellRangeFeature","cellPositionFeature","cellCustomStyleFeature","cellMouseListenerFeature","cellKeyboardListenerFeature","suppressRefreshCell","onCellCompAttachedFuncs","createCellPosition","addFeatures","shouldRestoreFocus","rangeSelectionEnabled","addTooltipFeature","tooltipCtrl","eCellWrapper","printLayout","startEditing","updateAndFormatValue","addDomData","onCellFocused","applyStaticCssClasses","setWrapText","onFirstRightPinnedChanged","onLastLeftPinnedChanged","onColumnHover","setupControlComps","setupAutoHeight","setTabIndex","colIdSanitised","setColId","setRole","showValue","eParentCell","minRowHeight","measureHeight","timesCalled","extraHeight","wrapperHeight","notYetInDom","possiblyNoContentYet","destroyResizeObserver","forceNewCellRendererInstance","createCellRendererParams","includeSelection","isIncludeControl","includeRowDrag","includeDndSource","setIncludeSelection","setIncludeDndSource","setIncludeRowDrag","isForceWrapper","forceWrapper","rowNodePinned","refreshShouldDestroy","selectionChanged","rowDragChanged","dndSourceChanged","editorParams","createCellEditorParams","setEditing","setEditDetails","stopRowEditing","onPopupEditorClosed","takeValueFromCellEditor","noValueResult","newValueExists","getCellEditor","userWantsToCancel","isCancelAfterEnd","saveNewValue","refreshCell","forceRefresh","suppressFlash","dispatchEditingStoppedEvent","editingStoppedEvent","getParentOfValue","registerRowDragger","rowDraggerElement","valueParserService","setFocusOutOnEditor","focusOut","setFocusInOnEditor","onCellChanged","eventImpactsThisCell","noValueProvided","valuesDifferent","dataNeedsUpdating","flashCell","suppressNavigateAfterEdit","navigateAfterEdit","enterNavigatesVerticallyAfterEdit","delays","flashDelay","fadeDelay","animateCell","cssName","fullName","animationFullName","onFlashCells","cellId","cellPositionUtils","createId","shouldFlash","cells","callValueFormatter","force","oldValueFormatted","valuesAreEqual","setDomData","DOM_DATA_KEY_CELL_CTRL","domEvent","onDisplayedColumnsChanged","colIdx","getBeans","htmlElement","startRowEditing","getRowCtrl","getRowPosition","onRowIndexChanged","cellFocused","isCellFocused","preventScrollOnBrowserFocus","fullRowEdit","onColDefChanged","dispatchCellContextMenuEvent","cellContextMenuEvent","getCellRenderer","createSelectionCheckbox","createDndSource","dndSourceComp","customElement","customRowDragComp","newComp","createRowDragComp","pagination","rowDragManaged","clientSideRowModelActive","RowType$1","RowType","instanceIdSequence$2","RowCtrl","animateIn","useAnimationFrameForCreate","allRowGuis","centerCellCtrls","leftCellCtrls","rightCellCtrls","slideInAnimation","fadeInAnimation","lastMouseDownOnDragger","updateColumnListsPending","businessKeySanitised","paginationPage","setAnimateFlags","initRowBusinessKey","rowFocused","isRowFocused","rowLevel","rowCssClassCalculator","calculateRowLevel","setRowType","addListeners","businessKeyForNodeFunc","updateRowBusinessKey","businessKey","isSticky","rowComp","gui","RowContainerType","leftGui","rightGui","FULL_WIDTH","fullWidthGui","centerGui","initialiseRowComp","rowType","dispatchFirstDataRenderedEvent","unsetComp","rowGui","isCacheable","setCached","cached","rg","gos","listenOnDomOrder","updateRowIndexes","setFocusedClasses","setStylesFromGridOptions","onRowSelected","updateColumnLists","initialRowClasses","getInitialRowClasses","executeSlideAndFadeAnimations","setRowCompRowId","setRowCompRowBusinessKey","isFullWidth","DOM_DATA_KEY_ROW_CTRL","createTask","addHoverFunctionality","setupFullWidth","addRowDraggerToRow","addDestroyTask","executeProcessRowPostCreateFunc","setRowBusinessKey","rowId","setRowId","shouldSlide","onTopChanged","shouldFade","getPinnedForContainer","createFullWidthParams","showFullWidth","getFullWidthCellRenderer","getCellElement","getCellCtrl","areAllContainersReady","eRow","ePinnedLeftRow","ePinnedRightRow","isLeftReady","isCenterReady","isRightReady","isStub","isDetailCell","isGroupRow","isFullWidthGroup","Normal","suppressAnimationFrame","useFlushSync","noAnimation","updateColumnListsImpl","createCellCtrls","prev","addCell","colInstanceId","prevCellCtrl","cellInResult","keepCell","isCellEligibleToBeRemoved","centerCols","leftCols","rightCols","cellControls","setCellCtrls","nextContainerPinned","REMOVE_CELL","KEEP_CELL","focused","mightWantToKeepCell","cellStillDisplayed","isEnsureDomOrder","setDomOrder","oldRowTopExists","pinningLeft","pinningRight","editingRow","getRowType","refreshFullWidth","tryRefresh","refreshSucceeded","fullWidthSuccess","centerSuccess","leftSuccess","rightSuccess","allFullWidthRowsRefreshed","updateExpandedCss","onRowNodeDataChanged","onRowNodeCellChanged","onRowNodeHighlightChanged","onRowNodeDraggingChanged","onUiLevelChanged","onPaginationPixelOffsetChanged","onVirtualColumnsChanged","onCellFocusCleared","onPaginationChanged","onModelUpdated","onColumnMoved","addListenersForCellComps","getAllCellCtrls","refreshFullWidthRow","postProcessCss","postProcessClassesFromGridOptions","postProcessRowClassRules","postProcessRowDragging","aboveOn","belowOn","onKeyboardNavigate","currentFullWidthComp","currentFullWidthContainer","isFullWidthContainerFocused","lastFocusedCell","nextEl","onFullWidthRowFocused","isFocused","removeCellCtrl","cellCtrlToRemove","onRowDblClick","onRowClick","onRowMouseDown","createRowEvent","createRowEventWithSource","stop","isShiftKey","groupSelectsChildren","multiSelectOnClick","rowDeselectionWithCtrl","setupDetailRowAutoHeight","eDetailGui","checkRowSizeFunc","updateRowHeightFunc","resizeObserverDestroyFunc","addFullWidthRowDragging","newLevel","classToAdd","classToRemove","isFirstRowOnPage","getPageFirstRow","isLastRowOnPage","getPageLastRow","refreshFirstAndLastRowStyles","newFirst","newLast","firstRowOnPage","lastRowOnPage","stoppingRowEdit","isRowEdit","fireRowEditEvent","setEditingRow","setInlineEditingCss","sourceRenderedCell","atLeastOneEditing","cssClasses","processClassesFromGridOptions","classStr","processRowClassRules","rowStyles","processStylesFromGridOptions","forEachGui","rowContainerType","fadeRowIn","rowIsEven","fullWidthRow","rowStyle","rowStyleFuncResult","createAriaLabel","isUseAnimationFrameForCreate","roundRowTopToBounds","minPixel","applyPaginationOffset","maxPixel","defaultRowHeight","getDefaultRowHeight","isHeightFromFunc","isGetRowHeightFunction","heightFromFunc","lineHeight","destroyFirstPass","setupRemoveAnimation","rowStillVisibleJustNotInViewport","destroySecondPass","destroyCellCtrls","ctrls","onCellFocusChanged","currentPage","topPx","pixelOffset","afterPaginationPixels","skipScaling","afterScalingPixels","getRealPixelPosition","setRowTopStyle","getInitialRowTop","suppressRowTransform","getInitialRowTopShared","getInitialTransform","setTop","setTransform","rowIndexStr","headerRowCount","ariaRowIndex","getPinnedLeftRowElement","getPinnedRightRowElement","getBodyRowElement","getFullWidthRowElement","__decorate$1M","RowContainerEventsFeature","addKeyboardListeners","addMouseListeners","processKeyboardEvent","mouseDownEvent","eventNames","processMouseEvent","getRowForEvent","getRenderedCellForEvent","handleContextMenuMouseEvent","rowCon","anchorToElement","getControlsForEventTarget","processCellKeyboardEvent","processFullWidthRowKeyboardEvent","gridProcessingAllowed","wasScrollKey","handlePageScrollingKey","doGridOperations","cellKeyDownEvent","focusedCell","onCtrlAndA","onCtrlAndC","onCtrlAndD","onCtrlAndV","onCtrlAndX","onCtrlAndY","onCtrlAndZ","isRowsToRender","isEmptyPinnedTop","isEmptyPinnedBottom","floatingStart","floatingEnd","rowEnd","getPinnedBottomRowData","setCellRange","rowStartIndex","rowStartPinned","rowEndIndex","rowEndPinned","columnStart","columnEnd","__decorate$1L","ViewportSizeFeature","centerContainerCtrl","listenForResize","onScrollbarWidthChanged","onCenterViewportResized","registerViewportResizeListener","checkViewportAndScrolls","isViewportVisible","centerWidth","bodyHeight","updateScrollVisibleService","checkBodyHeight","updateScrollVisibleServiceImpl","horizontalScrollShowing","verticalScrollShowing","setScrollsVisible","getViewportScrollLeft","__decorate$1K","SetPinnedLeftWidthFeature","onPinnedLeftWidthChanged","pinnedWidthService","getPinnedLeftWidth","__decorate$1J","SetPinnedRightWidthFeature","onPinnedRightWidthChanged","getPinnedRightWidth","__decorate$1I","SetHeightFeature","onHeightChanged","maxDivHeightScaler","getUiContainerHeight","heightString","__decorate$1H","DragListenerFeature","__decorate$1G","CenterWidthFeature","addSpacer","totalWidth","relevantWidth","__decorate$1F","RowContainerName","getRowContainerTypeForName","CENTER","TOP_CENTER","STICKY_TOP_CENTER","BOTTOM_CENTER","TOP_LEFT","STICKY_TOP_LEFT","BOTTOM_LEFT","TOP_RIGHT","STICKY_TOP_RIGHT","BOTTOM_RIGHT","TOP_FULL_WIDTH","STICKY_TOP_FULL_WIDTH","BOTTOM_FULL_WIDTH","ContainerCssClasses","ViewportCssClasses","WrapperCssClasses","RowContainerCtrl","EMPTY_CTRLS","isFullWithContainer","getRowContainerCssClasses","containerClass","viewportClass","wrapperClass","embedFullWidthRows","forContainers","viewportSizeFeature","registerWithCtrlsService","registerCenterRowContainerCtrl","registerLeftRowContainerCtrl","registerRightRowContainerCtrl","registerTopCenterRowContainerCtrl","registerTopLeftRowContainerCon","registerTopRightRowContainerCtrl","registerStickyTopCenterRowContainerCtrl","registerStickyTopLeftRowContainerCon","registerStickyTopRightRowContainerCtrl","registerBottomCenterRowContainerCtrl","registerBottomLeftRowContainerCtrl","registerBottomRightRowContainerCtrl","getContainerElement","getViewportSizeFeature","eViewport","addPreventScrollWhileDragging","stopHScrollOnPinnedRows","allTopNoFW","allStickyTopNoFW","allBottomNoFW","allMiddleNoFW","allNoFW","allMiddle","allCenter","allLeft","allRight","pinnedWidthFeature","onPinnedWidthChanged","setContainerWidth","pinnedWidthChangedEvent","refreshPaddingForFakeScrollbar","sideToCheck","pinnedWidth","marginSide","onDisplayedRowsChanged","afterScroll","allStickyContainers","isStickContainer","resetScrollLeft","setViewportHeight","unsubscribeFromResize","isAlwaysShowHorizontalScroll","amount","isContainerVisible","doesRowMatch","embedFW","rowsThisContainer","getRowCtrls","setRowCtrls","getTopRowCtrls","getStickyTopRowCtrls","getBottomRowCtrls","__decorate$1E","GRID_BODY_TEMPLATE","GridBodyComp","classLists","eBodyClipper","eBody","ct","bodyViewportClassList","getFloatingTopBottom","__decorate$1D","ScrollVisibleService","updateImpl","centerRowCtrl","atLeastOneDifferent","__decorate$1C","MouseEventService_1","MouseEventService","gridInstanceId","gridInstanceSequence","eGridDiv","GRID_DOM_KEY","eventFromThisGrid","getCellPositionForEvent","gridPanelHasScrolls","vRange","hRange","__decorate$1B","NavigationService","onPageDown","onPageUp","fromFullWidth","rangeServiceShouldHandleShift","currentCell","processed","onHomeOrEndKey","onCtrlUpDownLeftRight","handlePageUpDown","navigateTo","navigateParams","scrollIndex","scrollType","scrollColumn","focusIndex","focusColumn","isAsync","gridCell","pixelsInOnePage","getViewportHeight","pagingPixelOffset","currentPageBottomPixel","currentPageBottomRow","navigateToNextPageWithAutoHeight","navigateToNextPage","currentPageTopPixel","currentPageTopRow","up","firstRow","lastRow","rowPixelDiff","nextCellPixel","isRowTallerThanView","getNextFocusIndexForAutoHeight","lastRowIndex","pixelSum","currentCellHeight","cellToFocus","cellNavigationService","getNextCellToFocus","homeKey","columnToSelect","backwards","movedToNextCell","tabToNextCellCommon","focusNextGridCoreContainer","focusLastHeader","cellOrRow","getRowByPosition","row","moveToNextEditingRow","moveToNextEditingCell","moveToNextCellNotEditing","getFocusedHeader","previousCell","previousPos","nextCell","findNextCellToFocusOn","previousEditable","nextEditable","rowsMatch","pRow","nRow","cellPos","tryToFocusFullWidthRow","previousPosition","nextPosition","getLastCellOfColSpan","getNextTabbedCell","previousCellPosition","nextCellPosition","userCell","headerLen","focusHeaderPosition","headerPosition","cellIsEditable","lookupRowNodeForCell","allowUserOverride","hitEdgeOfGrid","isValidNavigateCell","normalisedPosition","focusPosition","currentCellFocused","fromBelow","focusEvent","colSpanningList","isGroupStickyEnabled","isGroupRowsSticky","skipScrollToRow","__decorate$1A","PopupEditorWrapper","DOM_KEY_POPUP_EDITOR_WRAPPER","addKeyDownListener","CellComp","rendererVersion","editorVersion","refreshWrapper","actualElement","eCellValue","isInlineEditing","cellEditorPopupWrapper","firstRender","controlWrapperChanged","refreshEditStyles","neverRefresh","cellRendererRefreshSuccessful","refreshCellRenderer","destroyRenderer","createCellRendererInstance","insertValueWithoutCellRenderer","createCellEditorInstance","destroyEditor","removeControls","checkboxSelectionComp","rowDraggingComp","providingControls","usingWrapper","putWrapperIn","takeWrapperOut","usingCellValue","putCellValueIn","takeCellValueOut","templateChanged","addControls","versionCopy","cellEditorPromise","afterCellEditorCreated","cellEditorAsync","escapedValue","destroyEditorAndRenderer","cellRendererGui","hideEditorPopup","cellEditorGui","compClassAndParams","cellRendererClass","useTaskService","displayComponentVersionCopy","createCellRendererFunc","staleTask","afterCellRendererCreated","cellRendererVersion","requestVersion","staleComp","editingCancelledByUserComp","isCancelBeforeStart","cellEditorInPopup","addPopupCellEditor","addInCellEditor","clearParentOfValue","ePopupGui","useModelPopup","positionToUse","getPopupPosition","positionParams","alignSide","positionCallback","RowComp","cellComps","getInitialStyle","domOrder","cellCtrls","setFullWidthRowComp","cellsToRemove","existingCellComp","newCellComp","cellCompsToRemove","destroyCells","elementsInOrder","destroyAllCells","cellsToDestroy","cp","fullWidthRowComponent","fullWidthCellRenderer","__decorate$1z","templateFactory","template1","template2","RowContainerComp","rowComps","rowCtrls","preDestroy","oldRows","lastPlacedElement","processRow","existingRowComp","appendRow","oldRowComp","__decorate$1y","BodyDropPivotTarget","columnsToAggregate","columnsToGroup","columnsToPivot","clearColumnsList","dragColumns","totalColumns","__decorate$1x","MoveColumnFeature","needToMoveLeft","needToMoveRight","lastMovedInfo","centerContainer","dragCameFromToolPanel","ToolPanel","visibleState","ensureIntervalCleared","allowedCols","normaliseX","checkCenterForScrolling","xAdjustedForScroll","firstVisiblePixel","lastVisiblePixel","ensureIntervalStarted","fromEnter","fakeEvent","mouseX","normaliseDirection","dragSourceType","allMovingColumns","attemptMoveColumns","draggingLeft","draggingRight","HeaderCell","newCols","movingGroup","allMovingColumnsOrdered","validMoves","calculateValidMoves","calculateOldIndex","firstValidMove","constrainDirection","displayedCols","potentialMoves","targetOrder","displayedOrder","fragCount","groupFragCount","movingCols","gridCols","firstIndex","gapsExist","parents","isMoveBlocked","allDisplayedCols","allGridCols","movingDisplayedCols","otherDisplayedCols","otherGridCols","displayIndex","widthOfMovingDisplayedCols","leftColumn","numberComparator","displacedCol","isColumnHidden","firstDisplayIndex","movingIntervalId","intervalCount","failedMoveAttempts","moveInterval","pixelsToMove","pixelsMoved","columnsThatCanPin","pinType","__decorate$1w","BodyDropTarget","eSecondaryContainers","leftRowContainerCtrl","bottomLeftRowContainerCtrl","topLeftRowContainerCtrl","rightRowContainerCtrl","bottomRightRowContainerCtrl","topRightRowContainerCtrl","bottomCenterRowContainerCtrl","topCenterRowContainerCtrl","moveColumnFeature","bodyDropPivotTarget","currentDropListener","isDropColumnInPivotMode","CssClassApplier","getHeaderClassesFromColDef","getColumnClassesFromCollDef","getToolPanelClassesFromColDef","getClassParams","classesOrFunc","classToUse","__decorate$1v","HeaderCellComp","headerCompVersion","getColumnGroupChild","setUserCompDetails","getUserCompInstance","headerComp","eResize","eHeaderCompWrapper","selectAllGui","getSelectAllGui","destroyHeaderComp","headerCompGui","setDragSource","__decorate$1u","HeaderGroupCellComp","setResizableDisplayed","afterHeaderCompCreated","headerGroupComp","eHeaderGroupGui","__decorate$1t","HeaderRowType","HeaderRowComp","headerComps","extraClass","COLUMN_GROUP","FLOATING_FILTER","setHeaderCtrls","destroyHeaderCtrls","oldComps","createHeaderComp","comps","leftA","leftB","__decorate$1s","instanceIdSequence$1","AbstractHeaderCellCtrl","columnGroupChild","parentRowCtrl","lastFocusEvent","getWrapperHasFocus","activeEl","wrapperHasFocus","DOM_DATA_KEY_HEADER_CTRL","getParentRowCtrl","__decorate$1r","SetLeftFeature","ariaEl","setColsSpanning","getColumnOrGroup","setLeftFirstTime","suppressMoveAnimation","oldLeftExists","animateColumnMove","animateInLeft","colOrGroup","oldActualLeft","actualLeft","indexColumn","__decorate$1q","HoverFeature","addMouseHoverListeners","__decorate$1p","HeaderFilterCellCtrl","iconCreated","setupActive","setupWidth","setupLeft","setupHover","setupFocus","setupAria","setupFilterButton","setupUserComp","setupSyncWithFilter","setupUi","setupFilterChangedListener","filterExists","floatingFilterExists","eMenuIcon","nextFocusableEl","scrollToColumn","nextFocusableColumn","findNextColumnWithFloatingFilter","columModel","nextCol","focusInto","isRelatedWithin","notFromHeaderWrapper","fromWithinHeader","fromTab","shouldFocusLast","setFocusedHeader","setLeftFeature","userCompDetails","syncWithFilter","destroySyncListener","destroyFilterChangedListener","updateFilterButton","wasActive","becomeActive","updateCompDetails","compInstance","__decorate$1o","ResizeFeature","destroyResizeFuncs","canResize","canAutosize","addResize","finishedWithResizeFunc","horizontalResizeService","addResizeBar","eResizeBar","onResizing","skipHeaderOnAutoSize","autoSizeColListener","removeResize","resize","autoSize","propertyChange","addRefreshFunction","resizeAmount","resizeAmountNormalised","normaliseResizeAmount","resizeStartWidth","resizeWithShiftKey","dragChange","notPinningLeft","__decorate$1n","SelectAllFeature","cbSelectAllVisible","processingEventFromCheckbox","filteredOnly","currentPageOnly","cbSelectAll","getCheckboxGui","headerCellCtrl","showOrHideSelectAll","onModelChanged","onCbSelectAll","refreshSelectAllLabel","isCheckboxSelection","checkRightRowModelType","updateStateOfCheckbox","allSelected","getSelectAllState","ariaStatus","setAriaDescriptionProperty","refreshAriaDescription","feature","rowModelType","rowModelMatches","__decorate$1m","TabGuardClassNames","TabGuardCtrl","skipTabGuardFocus","eTopGuard","eBottomGuard","focusInnerElement","providedFocusInnerElement","providedFocusIn","providedFocusOut","providedShouldStopEventPropagation","providedOnTabKeyDown","providedHandleKeyDown","activateTabGuards","onFocus","tabGuardsAreActive","hasAttribute","deactivateTabGuards","fromBottom","getNextFocusableElement","findFocusableElements","forceFocusOutOfContainer","tabGuardToFocus","__decorate$1l","FocusService_1","FocusService","addKeyboardModeEvents","controller","docControllers","instancesMonitored","toggleKeyboardMode","removeKeyboardModeEvents","newControllers","currentGridCore","isKeyboardActive","keyboardModeActive","isKeyboardEvent","ownerDocument","controllersForDoc","clearFocusedCellListener","onColumnEverythingChanged","unregisterGridCompController","gridCompController","focusedCellPosition","colFromColumnModel","isKeyboardMode","getFocusCellToUseAfterRefresh","isDomDataMissingInHierarchy","getFocusHeaderToUseAfterRefresh","focusedHeaderPosition","eBrowserCell","ePointer","isCellRestoreFocused","restoredFocusedCellPosition","setRestoreFocusedCell","renderingEngine","getFocusEventParams","gridColumn","isRowNodeFocused","isHeaderWrapperFocused","focusedColumn","focusedHeaderRowIndex","clearFocusedHeader","currentPosition","previousHeaderPosition","nextHeaderPosition","focusGridView","headerRowContainerCtrl","focusSuccess","focusHeader","focusFirstHeader","isAnyCellFocused","exclude","onlyUnmanaged","focusableString","excludeString","excludeNodes","focusableElements","toFocus","findFocusableElementBeforeTabGuard","referenceElement","referenceIndex","lastTabGuardIndex","TAB_GUARD_TOP","onlyManaged","nextIndex","isTargetUnderManagedComponent","managedContainers","findTabbableParent","nextRow","getLastRow","getFirstRow","focusedHeader","forceOut","focusNextInnerContainer","isDetailGrid","AG_KEYBOARD_FOCUS","__decorate$1k","HeaderCellCtrl","refreshFunctions","userHeaderClasses","ariaDescriptionProperties","updateState","setupMovingCss","setupMenuClass","setupSortableClass","setupWrapTextClass","refreshSpanHeaderHeight","addColumnHoverListener","setupFilterCss","setupColId","setupClassesFromColDef","addActiveHeaderMouseListeners","setupSelectAll","refreshAria","addMouseDownListenerIfNeeded","onColumnValueChanged","onColumnRowGroupChanged","onColumnPivotChanged","lookupUserCompDetails","createParams","menuEnabled","showColumnMenu","setSortForColumn","eGridHeader","selectAllFeature","isMenuEnabled","setActiveHeader","refreshHeaderClasses","oldClasses","eSource","dragSourceElement","draggable","hideColumnOnExit","moveDragSource","createDragItem","unlockedColumns","calculateDisplayName","workOutDraggable","refreshHeaderComp","attemptRefresh","headerCompRefreshed","attemptHeaderCompRefresh","checkDisplayName","isSuppressMovableColumns","colCanMove","updateSortableCssClass","refreshAriaSort","numberOfParents","isSpanningTotal","getColumnGroupPaddingInfo","groupHeaderHeight","wrapperElement","isMeasuring","stopResizeObserver","checkMeasuring","startMeasuring","stopMeasuring","refreshAriaMenu","descriptionArray","__decorate$1j","GroupResizeFeature","calculateInitialValues","takeFromGroup","takeFromLeafCols","resizeTakeFromCols","resizeTakeFromStartWidth","resizeTakeFromRatios","normaliseDragChange","resizeColumns","preferredSize","getPreferredWidthForColumnGroup","resizeCols","resizeRatios","__decorate$1i","GroupWidthFeature","removeChildListenersFuncs","addListenersToChildrenColumns","onDisplayedChildrenChanged","removeListenersOnChildrenColumns","widthChangedListener","__decorate$1h","HeaderGroupCellCtrl","addClasses","addAttributes","groupResizeFeature","providedColGroup","refreshExpanded","eHeaderGroup","isSuppressMoving","getDragItemForGroup","allColumnsOriginalOrder","allColumnsCurrentOrder","childSuppressesMoving","__decorate$1g","instanceIdSequence","HeaderRowCtrl","headerCellCtrls","onColumnResized","getHeaderCellCtrl","getWidthForRow","sizes","numberOfFloating","groupHeight","numberOfNonGroups","numberOfGroups","topOffset","thisRowHeight","oldCtrls","getColumnsInViewport","idOfChild","forOldColumn","isFocusedAndDisplayed","keepCtrl","ctrlsToDisplay","getColumnsInViewportPrintLayout","getColumnsInViewportNormalLayout","actualDepth","getActualDepth","allCtrls","__decorate$1f","HeaderRowContainerCtrl","includeFloatingFilter","groupsRowCtrls","setupCenterWidth","setupPinnedWidth","setupDragAndDrop","registerHeaderContainer","dropContainer","bodyDropTarget","keepColumns","refreshColumnGroups","groupRowCount","refreshColumns","needNewInstance","columnsRowCtrl","shouldDestroyInstance","COLUMN","refreshFilters","destroyPreviousComp","filtersRowCtrl","rowIndexMismatch","getAllCtrls","setCtrls","restoreFocusOnHeader","setCenterWidth","setViewportScrollLeft","hiddenChanged","addPaddingForScrollbar","widthWithPadding","setPinnedContainerWidth","getHtmlElementForColumnHeader","__decorate$1e","HeaderRowContainerComp","headerRowComps","rowCompsList","selectAndSetTemplate","eCenterContainer","pinnedLeft","pinnedRight","PINNED_LEFT_TEMPLATE","PINNED_RIGHT_TEMPLATE","CENTER_TEMPLATE","eRowContainer","destroyRowComps","destroyRowComp","oldRowComps","prevGui","appendEnsuringDomOrder","notAlreadyIn","ctrlId","existingComp","__decorate$1d","HeaderNavigationDirection","HeaderNavigationService","navigateVertically","fromHeader","rowLen","isUp","nextFocusColumn","headerPositionUtils","getColumnVisibleParent","getColumnVisibleChild","skipColumn","navigateHorizontally","nextHeader","normalisedDirection","findHeader","focusNextHeaderRow","nextRowIndex","findColAtEdgeForHeaderRow","columnToScrollTo","__decorate$1c","GridHeaderCtrl","onPivotModeChanged","setupHeaderHeight","registerGridHeaderCtrl","totalHeaderHeight","px","setHeightAndMinHeight","shouldAllowOverflow","__decorate$1b","GridHeaderComp","addContainer","__decorate$1a","HorizontalResizeService","dragStartX","setResizeIcons","MouseEvent","setResizeCursor","disableUserSelect","resetIcons","__decorate$19","StandardMenuFactory","showPopup","tabListener","trapFocusWithin","KeyboardEvent","focusableEl","__decorate$18","TabbedLayout","tabbedItemScrollMap","addItem","activeItem","tabbedItem","afterDetachedCallback","eHeader","isRightKey","nextItem","showItemWrapper","eHeaderButton","setAfterAttachedParams","afterAttachedParams","showFirstItem","titleLabel","showItem","itemWrapper","onItemClicked","onActiveItemClicked","lastScrollListener","bodyPromise","afterAttachedCallback","keepScrollPosition","scrollableContainer","getScrollableContainer","simpleHttpRequest","httpRequest","__decorate$17","DEBOUNCE_DELAY","ResizeObserverService","polyfillFunctions","getWindow","useBrowserResizeObserver","resizeObserver","ResizeObserver","disconnect","usePolyfill","widthLastTime","heightLastTime","running","periodicallyCheckWidthAndHeight","doNextPolyfillTurn","suppressResize","resizeObserverExists","schedulePolyfill","polyfillScheduled","executeAllFuncs","__decorate$16","AnimationFrameService","createTasksP1","sorted","createTasksP2","destroyTasks","ticking","scrollGoingDown","lastPage","lastScrollTop","taskCount","cancelledTasks","isPaginationActive","useAnimationFrame","isOn","verifyAnimationFrameOn","taskItem","createOrder","addTaskToList","cancelTask","taskList","sortTaskList","executeFrame","millis","p1TaskList","p1Tasks","p2TaskList","p2Tasks","frameStart","noMaxMillis","gridBodyDidSomething","requestFrame","stopTicking","webkitRequestAnimationFrame","__decorate$15","AutoWidthCalculator","eHeaderCell","getHeaderCellForColumn","getAllCellsForColumn","addElementsToContainerAndGetWidth","eDummyContainer","eBodyContainer","cloneItemIntoDummy","dummyContainerWidth","autoSizePadding","getAutoSizePadding","eCellClone","cloneNode","eCloneParent","eCloneParentClassList","isHeader","isRow","__decorate$14","StickyRowFeature","createRowCon","destroyRowCtrls","stickyRowCtrls","containerHeight","isClientSide","getStickyRowCtrls","checkStickyRows","refreshNodesAndContainerHeight","stickyRows","firstPixel","getFirstVisibleVerticalPixel","addStickyRow","stickyRow","lastChildBottom","lastAncestor","childrenAfterSort","storeBounds","childStore","getStoreBounds","heightPx","stickRowBottom","thisRowLastPx","firstPixelAfterStickyRows","firstMissingParent","refreshStickyNode","stickRowNode","allStickyNodes","removedCtrls","addedNodes","ctrlsToDestroy","removedCtrl","newCtrls","__decorate$13","DEFAULT_KEEP_DETAIL_ROW_COUNT","RowRenderer","destroyFuncsForColumnListeners","rowCtrlsByRowIndex","zombieRowCtrls","allRowCtrls","topRowCtrls","bottomRowCtrls","refreshInProgress","dataFirstRenderedFired","onPageLoaded","onBodyScroll","onDomLayoutChanged","stickyRowFeature","registerCellEventListeners","initialiseCache","redrawAfterModelUpdate","countProp","getKeepDetailRowsCount","cachedRowCtrls","RowCtrlCache","keepDetailRowsCount","updateAllRowCtrls","liveList","zombieList","cachedList","getEntries","getFullWidthRowCtrls","refreshListenersToColumnsForCellComps","removeGridColumnListeners","forEachCellWithThisCol","leftChangedListener","firstRightPinnedChangedListener","lastLeftPinnedChangedListener","colDefChangedListener","destroyRows","domLayoutChanged","datasourceChanged","firstRenderedRow","lastRenderedRow","rowIndexesToRemove","removeRowCtrls","recycleRows","keepRenderedRows","newPage","onlyBody","getAllRowCtrls","refreshFloatingRowComps","refreshFloatingRows","getPinnedTopRowData","getRenderedIndexesForRowNodes","renderedRow","partialRefresh","indexesToRemove","getCellToRestoreFocusToAfterRefresh","suppressKeepFocus","cellDomData","rowDomData","gridElementFocused","getLockOnRefresh","updateContainerHeights","scrollToTopIfNewData","rowsToRecycle","getRowsToRecycle","removeAllRowComps","dispatchDisplayedRowsChanged","restoreFocusedCell","releaseLockOnRefresh","suppressScrollToTop","setModelHeight","rowCtrlsLength","cellCtrlsLength","getCellCtrls","refreshCellParams","refreshFullWidthRows","cellRenderers","fullWidthRenderers","rowIdMap","mapRowNodes","isRowInMap","fullWidthRenderer","rowIdsMap","colIdsMap","excludeColFromRefresh","stubNodeIndexes","stubNode","ctrlsByIdMap","rowsToRemove","indexToRemove","newFocusedCell","removeRowCompsNotToDraw","indexesToDraw","indexesToDrawMap","existingIndexes","indexesNotToDraw","calculateIndexesToDraw","checkRowToDraw","indexStr","doNotUnVirtualiseRow","updateOffset","workOutFirstAndLastRowsToRender","createOrUpdateRowCtrl","redrawFullWidthEmbeddedRows","fullWidthCtrl","rowNodesMap","fullWidthCtrls","indicesToForce","refreshed","creatingNewRowCtrl","rowCtrlsMap","executeInAWhileFuncs","nodeId","addRow","getRowBuffer","rowBuffer","getRowBufferInPixels","rowsToBuffer","bufferPixels","suppressRowVirtualisation","rowHeightsChanged","lastPixel","pageFirstPixel","pageLastPixel","getCurrentPagePixelRange","divStretchOffset","bodyVRange","bodyTopPixel","bodyBottomPixel","firstVisibleVPixel","ensureAllRowsInRangeHaveHeightsCalculated","firstRowIndex","pageFirstRow","pageLastRow","rowLayoutNormal","suppressRowCountRestriction","rowBufferMaxSize","firstDiffers","lastDiffers","topPixel","bottomPixel","ensureRowHeightsValid","REMOVE_ROW","KEEP_ROW","rowHasFocus","rowIsEditing","rowIsDetail","mightWantToKeepRow","rowNodePresent","isRowPresent","rowCtrlFromCache","renderedRows","rowPosition","gridRow","isRangeInRenderedViewport","endIndex","parentClosed","blockAfterViewport","blockBeforeViewport","blockInsideViewport","maxCount","entriesMap","entriesList","rowCtrlToDestroy","removeFromCache","rowNodeMismatch","rowNodeId","__decorate$12","ValueFormatterService","suppliedFormatter","useFormatterFromColumn","__decorate$11","PinnedRowModel","pinnedTopRows","pinnedBottomRows","getRowAtPixel","createNodesFromData","allData","nextRowTop","dataItem","idPrefix","getTotalHeight","forEachPinnedTopRow","forEachPinnedBottomRow","lastNode","ServerSideTransactionResultStatus","ChangedPath","keepingColumns","nodeIdsToColumns","mapToItems","pathRoot","setInactive","depthFirstSearchChangedPath","pathItem","depthFirstSearchEverything","traverseEverything","forEachChangedNodeDepthFirst","traverseLeafNodes","includeUnchangedNodes","executeFromRootNode","createPathItems","newEntryCount","newEntry","populateColumnsMap","linkPathItems","thisItem","parentItem","addParentNode","canSkip","getValueColumnsForNode","colsForThisNode","getNotValueColumnsForNode","RowNodeBlock","STATE_WAITING_TO_LOAD","STATE_LOADING","loadFromDatasource","getVersion","setStateWaitingToLoad","pageLoadFailed","requestMostRecentAndLive","isRequestMostRecentAndLive","STATE_FAILED","processServerFail","dispatchLoadCompleted","success","successCommon","pageLoaded","thisIsMostRecentRequest","weAreNotDestroyed","STATE_LOADED","processServerResult","EVENT_LOAD_COMPLETE","block","__decorate$10","__param$7","RowNodeBlockLoader_1","RowNodeBlockLoader","activeBlockLoadsCount","blocks","maxConcurrentRequests","getMaxConcurrentDatasourceRequests","blockLoadDebounceMillis","checkBlockToLoadDebounce","performCheckBlocksToLoad","addBlock","loadComplete","checkBlockToLoad","removeBlock","BLOCK_LOADED_EVENT","BLOCK_LOADER_FINISHED_EVENT","printCacheStatus","loadAvailability","getAvailableLoadingCount","blocksToLoad","registerLoads","ssrm","getBlockStates","getBlockStateJson","isLogging","isLoading","__decorate$$","PaginationProxy","topDisplayedRowIndex","bottomDisplayedRowIndex","masterRowCount","paginateChildRows","isPaginateChildRows","onPaginationPageSizeChanged","startPixel","endPixel","startLimitIndex","endLimitIndex","calculatePages","shouldPaginate","modelUpdatedEvent","paginationChangedEvent","topRowBounds","bottomRowBounds","nodeIsInPage","forEachNodeOnPage","getRowBounds","getPageForIndex","pageSize","pageNumber","isRowInPage","rowPage","totalPages","setPageSize","calculatePagesAllRows","calculatePagesMasterRowsOnly","calculatedPagesNotActive","setPixelOffset","setZeroRows","adjustCurrentPageIfInvalid","getTopLevelRowCount","masterLastRowIndex","masterPageStartIndex","masterPageEndIndex","getTopLevelRowDisplayedIndex","firstIndexNotToShow","maxRowIndex","__decorate$_","StylingService","processAllCellClasses","onApplicableClass","onNotApplicableClass","processStaticCellClasses","classRules","classNames","classesToApply","classesToRemove","resultOfRule","singleClass","classOrClasses","cellClassFunc","cssClassItem","AgToggleButton","AgInputTextArea","AgInputDateField","usingSafari","minDate","maxDate","AgInputRange","setMinValue","setMaxValue","__decorate$Z","AgSlider","eSlider","eventChanged","textValue","sliderValue","setSliderWidth","setTextFieldWidth","minValue","maxValue","__decorate$Y","AgGroupComponent","suppressEnabledCheckbox","suppressOpenCloseIcons","alignItems","initialItems","cbGroupEnabled","setEnabled","setAlignItems","hideEnabledCheckbox","hideOpenCloseIcons","setupExpandContract","refreshAriaStatus","refreshChildDisplay","eGroupClosedIcon","eGroupOpenedIcon","eTitleBar","toggleGroupExpand","showIcon","eToolbar","newCls","EVENT_EXPANDED","EVENT_COLLAPSED","hideItem","itemToHide","eTitle","addCssClassToTitleBar","skipToggle","refreshDisabledStyles","isEnabled","onEnableChange","TabGuardComp","initialiseTabGuard","createTabGuard","tabGuards","tabGuard","addTabGuards","tabGuardCtrl","TAB_GUARD_BOTTOM","TAB_GUARD","topTabGuard","bottomTabGuard","removeAllChildrenExceptTabGuards","__decorate$X","AgMenuList","menuItems","parentGui","isManaged","closeIfIsChild","handleNavKey","topMenu","findTopMenu","clearActiveItem","activeMenuItem","addMenuItems","menuItemOrString","addSeparator","menuItemDef","menuItem","AgMenuItemComponent","isAnotherSubMenuOpen","isSubMenuOpen","EVENT_MENU_ITEM_SELECTED","EVENT_MENU_ITEM_ACTIVATED","activateFirstItem","currentItem","separatorHtml","nextParent","findNextItem","openChild","closeSubMenu","openSubMenu","foundCurrent","__decorate$W","AgMenuPanel","wrappedComponent","closePanel","__decorate$V","subMenuIsOpen","getClassName","addIcon","addName","addShortcut","addSubMenu","onItemSelected","it","subMenu","destroySubMenu","currentLevel","nextLevel","childMenu","cancelDeactivate","menuPanel","subMenuGui","mouseEnterListener","positionPopupForMenu","hideSubMenu","cancelActivate","onItemActivated","isCompact","shortcut","activateTimeoutId","deactivateTimeoutId","ACTIVATION_DELAY","suffix","__decorate$U","AgPanel","closable","hideTitleBar","setBodyComponent","setClosable","eTitleBarButtons","eContentWrapper","renderComponent","closeButtonComp","CLOSE_BTN_TEMPLATE","addTitleBarButton","onBtClose","bodyComponent","__decorate$T","AgDialog","isMaximizable","isMaximized","maximizeListeners","resizeListenerDestroy","lastPosition","maximizable","bringPopupToFront","setMaximizable","alwaysOnTop","toggleMaximize","refreshMaximizeIcon","maximizeIcon","minimizeIcon","clearMaximizebleListeners","destroyListener","maximizeButtonComp","buildMaximizeAndMinimizeElements","__decorate$S","PopupService_1","DIRECTION","instanceIdSeq","PopupService","popupList","sourceRect","getParentRect","keepXYWithinBounds","widthOfParent","maxX","xLeftPosition","xRightPosition","nudgeX","calculatePointerAlign","postProcessCallback","callPostProcessPopup","updatePopupPosition","fromResizeObserver","horizontal","WAIT_FOR_POPUP_CONTENT_RESIZE","getPopupList","popupParent","sizeProperty","anchorProperty","offsetProperty","scrollPositionProperty","docElement","documentRect","isBody","offsetSize","getSize","sizeOfParent","initialisePopupPosition","wrapperEl","createPopupWrapper","addEventListenersToPopup","addPopupToPopupList","ePopupParentRect","allThemes","setAlwaysOnTop","popupEl","click","pointerEvent","popupHidden","hidePopupOnKeyboardEvent","hidePopupOnMouseEvent","hidePopupOnTouchEvent","popupParams","isEventFromCurrentPopup","isEventSameChainAsOriginalEvent","originalMouseEvent","removePopupFromPopupList","isAnchored","setPopupPositionRelatedToElement","relativeElement","stopAnchoringPromise","destroyPositionTracker","keepPopupPositionedRelativeTo","initialDiffTop","initialDiffLeft","lastDiffTop","lastDiffLeft","leftPx","pRect","sRect","elementNotInDom","currentDiffTop","newTop","currentDiffLeft","newLeft","intervalId","indexOfThisChild","mouseEventOrTouch","screenX","screenY","xMatch","yMatch","getWrapper","popupLen","alwaysOnTopList","onTopLength","innerEls","innerElsScrollMap","isPopupAlwaysOnTop","__decorate$R","VirtualList","listName","getItemHeight","addResizeObserver","setAriaProperties","onGridStylesChanged","drawVirtualRows","destroyObserver","focusRow","lastFocusedRowIndex","getLastFocusedRow","rowNumber","eDiv","getComponentAt","rowComponent","forEachRenderedRow","getListItemHeight","viewportTopPixel","viewportBottomPixel","viewportScrolledPastRow","viewportScrolledBeforeRow","setComponentCreator","componentCreator","setComponentUpdater","componentUpdater","getRowHeight","getScrollTop","softRefresh","canSoftRefresh","clearVirtualRows","areRowsEqual","removeRow","ensureRowsRendered","refreshRows","insertRow","isRowSelected","OUTSIDE_ANGULAR_EVENTS","PASSIVE_EVENTS","VanillaFrameworkOverrides","isOutsideAngular","useCapture","__decorate$Q","CellNavigationService","ctrlPressed","getNextCellToFocusWithCtrlPressed","getNextCellToFocusWithoutCtrlPressed","upKey","downKey","leftKey","getCellAbove","getCellBelow","getCellToLeft","getCellToRight","isCellGoodToFocusOn","lastCell","colToLeft","colToRight","getRowBelow","isLastRowInContainer","nextStickyPosition","getNextStickyPosition","nextCtrl","rowBelow","lastTopIndex","lastBottomIndex","lastBodyIndex","getRowAbove","isFirstRow","getLastFloatingTopRow","getLastBodyCell","rowAbove","lastBodyRow","lastFloatingRow","getNextTabbedCellBackwards","getNextTabbedCellForwards","newRowIndex","newFloating","newColumn","__decorate$P","__param$6","AlignedGridsService","consuming","fireColumnEvent","fireEvent","otherGrids","otherGridOptions","alignedGridService","onEvent","onColumnEvent","onScrollEvent","getMasterColumns","getColumnIds","colEvent","processColumnEvent","groupOpenedEvent","processGroupOpenedEvent","masterColumnGroup","otherColumnGroup","masterColumn","otherColumn","masterColumns","movedEvent","srcColState","destColState","visibleEvent","pinnedEvent","resizedEvent","alignedGrids","grid","__decorate$O","__param$5","SelectionService","propChange","rowSelection","isMultiselect","suppressFinishActions","lastSelectedNode","getLastSelectedNode","newRowClicked","nodesChanged","selectRange","setLastSelectedNode","skipThisNode","thisNodeWasSelected","selectChildren","clearOtherNodes","updateGroupsFromChildrenSelections","fromNode","toNode","nodesToSelect","getNodesInRangeForSelection","nodeWasSelected","childrenAfterAggFilter","selectedRows","getSelectionCount","filterFromSelection","newSelectedNodes","passesPredicate","changedPath","rowNodeToKeepSelected","groupsToRefresh","otherRowNode","syncInOldRowNode","syncInNewRowNode","oldNodeHasDifferentId","oldNodeSelected","topLevelNodes","getTopLevelNodes","traverse","maybeGroup","rowModelClientSide","getNodesToSelect","selectedCount","notSelectedCount","recursivelyAddChildren","childrenAfterFilter","__decorate$N","ColumnApi","isPinning","getAllDisplayedVirtualColumns","setColumnWidth","getPivotResultColumn","getLeftDisplayedColumnGroups","getCenterDisplayedColumnGroups","getRightDisplayedColumnGroups","getAllDisplayedColumnGroups","setPivotResultColumns","getPivotResultColumns","getAllColumns","getPrimaryColumns","__decorate$M","ValueService","initialised","cellExpressions","callColumnCellValueChangedHandler","forFilter","groupDataExists","aggDataExists","ignoreSsrmAggData","ssrmFooterGroupCol","executeFilterValueGetter","executeValueGetter","cellValueGetter","openedGroup","getOpenedGroup","checkType","valueWasDifferent","setValueUsingField","valuesAreSame","fieldPieces","fieldPiece","getValueCallback","valueFromCache","getKeyForNode","keyParams","__decorate$L","__param$4","ExpressionService","expressionToFunctionCache","evaluateExpression","javaScriptFunction","createExpressionFunction","functionBody","createFunctionBody","theFunction","__decorate$K","TemplateService","templateCache","waitingCallbacks","templateFromCache","callbackList","that","client","handleHttpResult","httpResult","__decorate$J","__param$3","LoggerFactory","logging","Logger","isLoggingFunc","__decorate$I","GridCtrl","eGridHostDiv","addRtlSupport","addOrRemoveKeyboardFocusClass","onGridSizeChanged","registerGridCtrl","showDropZones","showSideBar","showStatusBar","showWatermark","EnterpriseCoreModule","setRtlClass","setCursor","setUserSelect","focusableContainers","getFocusableContainers","idxWithFocus","nextIdx","lastColumn","__decorate$H","GridComp","userSelect","webkitUserSelect","createTemplate","insertGridIntoDom","eRootWrapperBodyClassList","eRootWrapperBody","dropZones","sideBar","statusBar","watermark","gridBodyComp","__decorate$G","SortController_1","SortController","nextDirection","getNextSortDirection","columnsToUpdate","sortableRowGroupColumns","doingMultiSort","clearSortBarTheseColumns","updateSortIndex","lastColToChange","isCoupled","groupParent","lastSortIndexCol","allSortedCols","allSortedColsWithoutChanges","sortedColsWithIndices","allCols","sortedCols","columnsToSkip","columnToClear","DEFAULT_SORTING_ORDER","notInArray","lastItemInArray","getIndexedSortMap","isSortingLinked","isAggregated","sortedRowGroupCols","isSortLinked","allColsIndexes","iA","iB","indexMap","groupDisplayCol","col1","idx1","col2","idx2","getSortModel","getSortOptions","canColumnDisplayMixedSort","isColumnSortCouplingActive","isGroupDisplayColumn","linkedColumns","columnHasUniqueData","sortableColumns","firstSort","allMatch","__decorate$F","ColumnHoverService","selectedColumns","__decorate$E","ColumnAnimationService","executeNextFuncs","executeLaterFuncs","animationThreadCount","ensureAnimationCssClassPresent","executeLaterVMTurn","animationThreadCountCopy","nowFuncs","waitFuncs","__decorate$D","PaginationAutoPageSizeService","centerRowContainerCon","checkPageSize","notActive","newPageSize","isBodyRendered","__decorate$C","ValueCache","cacheVersion","neverExpires","__cacheVersion","__cacheData","__decorate$B","SOURCE_PASTE","ChangeDetectionService","doChangeDetection","nodesToRefresh","onlyChangedColumns","doAggregate","__decorate$A","AgComponentUtils","jsCompFunc","functionAdapter","adaptCellRendererFunction","Adapter","callbackResult","candidate","__decorate$z","ComponentMetadataProvider","componentMetaData","dateComponent","detailCellRenderer","loadingCellRenderer","loadingOverlayComponent","noRowsOverlayComponent","floatingFilterWrapperComponent","groupRowRenderer","statusPanel","toolPanel","__decorate$y","DEFAULT_ROW_HEIGHT","MIN_COL_WIDTH","MAT_GRID_SIZE","BASE_GRID_SIZE","BALHAM_GRID_SIZE","ALPINE_GRID_SIZE","HARD_CODED_SIZES","headerCellMinWidth","listItemHeight","chartMenuPanelWidth","SASS_PROPERTY_BUILDER","Environment","calculatedSizes","mutationObserver","fireGridStylesChangedEvent","attributeFilter","getSassVariable","themeFamily","calculateValueForSassProperty","themeElement","useTheme","classesFromThemeElement","prevEl","currentClass","currentDiv","calculatedValue","sizeName","isThemeDark","reg","themeMatch","sassVariableName","setRowHeightVariable","oldRowHeight","measuredMin","__decorate$x","__param$2","RowContainerHeightService","scrollY","uiBodyHeight","agWire","maxDivHeight","stretching","newScrollY","newBodyHeight","getUiBodyHeight","calculateOffset","setUiContainerHeight","pixelsToShave","modelHeight","uiContainerHeight","maxScrollY","scrollPercent","setDivStretchOffset","clearOffset","newOffset","newOffsetFloor","modelPixel","modelMaxScroll","scrollPixel","__decorate$w","SelectableService","updateSelectableAfterGrouping","nextChildrenFunc","recurseDown","rowSelectable","firstSelectable","__decorate$v","PaginationComp","previousAndFirstButtonsDisabled","nextButtonDisabled","lastButtonDisabled","areListenersSetup","btFirst","btPrevious","btNext","btLast","enableOrDisableButtons","updateRowLabels","setCurrentPageLabel","setTotalLabels","onBtFirst","onBtPrevious","onBtNext","onBtLast","pagesExist","toDisplay","lbCurrent","strPage","strTo","strOf","strFirst","strPrevious","strNext","strLast","toggleButtonDisabled","zeroPagesToDisplay","isZeroPagesToDisplay","onLastPage","lbFirstRowOnPage","lbLastRowOnPage","lastPageFound","hiddenGroupRow","setTotalLabelsToZero","lbTotal","lbRecordCount","moreText","__decorate$u","LoadingType","OverlayWrapperComponent","inProgress","destroyRequested","manuallyDisplayed","overlayWrapperClassList","eOverlayWrapper","onRowDataUpdated","onNewColumnsLoaded","setWrapperTypeClass","loadingType","Loading","NoRows","showOverlay","workItem","destroyActiveOverlay","activeOverlay","showOrHideOverlay","isSuppressNoRowsOverlay","__decorate$t","RowPositionUtils","pinnedBottomCount","pinnedTopCount","rowA","rowB","rowMax","rowMin","__decorate$s","CellPositionUtils","createIdFromValues","cellA","cellB","colsMatch","floatingMatch","indexMatch","UndoRedoAction","cellValueChanges","RangeUndoRedoAction","initialRange","finalRange","UndoRedoStack","maxStackSize","actionStack","DEFAULT_STACK_SIZE","shouldAddActions","getCurrentStackSize","__decorate$r","UndoRedoService","activeCellEdit","activeRowEdit","isPasting","isRangeInAction","eventCell","isCellEditing","isRowEditing","shouldCaptureAction","cellValueChange","clearStacks","undoStack","redoStack","undoRedoLimit","addRowEditingListeners","addCellEditingListeners","addPasteListeners","addFillListeners","addCellKeyListeners","keepUndoRedoStack","operationPerformed","undoRedo","endEvent","undoRedoStack","opposingUndoRedoStack","rangeProperty","cellValueChangeProperty","undoRedoAction","processAction","processRange","processCell","valueExtractor","currentRow","startColumn","setLastFocusedCell","cellRangeParams","pushActionsToUndoStack","shouldPushAction","__decorate$q","HeaderPositionUtils","nextColumn","getGroupMethod","getColMethod","currentRowType","getHeaderRowType","isAnyChildSpanningHeaderHeight","isColumn","leafChild","childContainer","__decorate$p","ColumnDefFactory","colGroupDefs","createDefFromColumn","addToResult","childDef","lastPointer","parentDef","existingParentDef","createDefFromGroup","defCloned","colDefCloned","__decorate$o","RowCssClassCalculator","extraCssClass","preProcessRowClassRules","rowCls","rowClass","rowClassFuncResult","rowClassParams","__decorate$n","RowNodeSorter","isAccentedSort","primaryColumnsSortGroups","doFullSort","sortOptions","mapper","currentPos","sortedRowNodes","compareRowNodes","sortedNodeA","sortedNodeB","sortOption","comparatorResult","providedComparator","getComparator","validResult","comparatorOnCol","groupLeafField","primaryColumn","isNodeGroupedAtLevel","isGroupRows","allLeafChildren","displayCol","__decorate$m","CtrlsService_1","CtrlsService","readyCallbacks","checkReady","stickyTopCenterRowContainerCtrl","stickyTopLeftRowContainerCtrl","stickyTopRightRowContainerCtrl","centerHeaderRowContainerCtrl","leftHeaderRowContainerCtrl","rightHeaderRowContainerCtrl","fakeHScrollComp","fakeVScrollComp","gridHeaderCtrl","createReadyParams","registerFakeHScrollComp","registerFakeVScrollComp","NAME","__decorate$l","CtrlsFactory","controllerName","controllerClass","getInstance","ControllerClass","__decorate$k","AbstractFakeScrollComp","hideTimeout","initialiseInvisibleScrollbar","hideAndShowInvisibleScrollAsNeeded","addActiveListenerToggles","setScrollVisible","attemptSettingScrollPosition","getViewport","__decorate$j","FakeHScrollComp","spacerWidthsListener","setFakeHScrollSpacerWidths","refreshCompBottom","bottomPinnedHeight","vScrollShowing","rightSpacing","scrollOnRight","eRightSpacer","leftSpacing","scrollOnLeft","eLeftSpacer","hScrollShowing","isSuppressHorizontalScroll","adjustedScrollbarWidth","scrollContainerSize","__decorate$i","PinnedWidthService","checkContainerWidths","__decorate$h","RowNodeEventThrottle","onRowGroupOpened","dispatchExpandedDebounced","__decorate$g","__param$1","isTrue","GridOptionsService","domDataKey","propertyEventService","gridOptionLookup","globalEventHandler","mergeGridCommonParams","eventParams","callbackMethodName","useGridOptions","gridLayout","allowEstimate","isNumeric","getMasterDetailRowHeight","detailRowHeight","domData","getAsyncTransactionWaitMillis","asyncTransactionWaitMillis","isClientSideRowModel","userValue","groupAggFiltering","__decorate$f","LocaleService","getLocaleText","variableValues","localeText","localisedText","__decorate$e","FakeVScrollComp","onRowContainerHeightChanged","gridBodyViewportEl","__decorate$d","MONTH_LOCALE_TEXT","january","february","march","april","may","june","july","august","september","october","november","december","MONTH_KEYS","DataTypeService","isWaitingForRowData","isColumnTypeOverrideInDataTypeDefinitions","columnStateUpdatesPendingInference","columnStateUpdateListenerDestroyFuncs","groupHideOpenParents","processDataTypeDefinitions","defaultDataTypes","getDefaultDataTypes","dataTypeDefinition","groupSafeValueFormatter","createGroupSafeValueFormatter","dataTypeMatchers","mergedDataTypeDefinition","processDataTypeDefinition","dataTypeMatcher","checkObjectValueHandlers","overriddenDataTypeMatcher","mergeDataTypeDefinitions","parentDataTypeDefinition","childDataTypeDefinition","appendColumnTypes","convertColumnTypes","alreadyProcessedDataTypes","extendsCellDataType","extendsDataType","baseDataType","baseDataTypeDefinition","validateDataTypeDefinition","extendedDataTypeDefinition","mergedExtendedDataTypeDefinition","parentCellDataType","updateColDefAndGetDataTypeDefinitionColumnType","canInferCellDataType","inferCellDataType","suppressDefaultProperties","setColDefPropertiesForBaseDataType","dataTypeDefinitionColumnType","columnStateUpdates","propsToCheckForInference","doColDefPropsPreventInference","columnTypeDefs","hasPropsPreventingInference","columnTypeDef","comparisonValue","doesColDefPropPreventInference","checkProps","initialData","getInitialData","initWaitForRowData","_cellDataType","columnTypeOverridesExist","firstRowData","processColumnsPendingInference","newRowGroupColumnStateWithoutIndex","newPivotColumnStateWithoutIndex","oldColDef","getUpdatedColumnState","columnState","resolvedObjectDataTypeDefinition","defaultObjectDataTypeDefinition","hasObjectValueParser","hasObjectValueFormatter","invalidArray","getDateStringTypeDefinition","dateString","dateParser","usingSetFilter","mergeFilterParams","valA","valB","_filterValues","treeList","treeListFormatter","pathKey","monthKey","convertToDate","treeListPathGetter","defaultDateFormatMatcher","boolean","__decorate$c","ValueParserService","Grid","GridCoreCreator","gridComp","nextGridId","createUi","acceptChanges","debug","registeredModules","getRegisteredModules","createBeansList","createProvidedBeans","contextLogger","registerModuleUserComponents","registerStackComponents","registerControllers","setColumnsAndData","dispatchGridReadyEvent","isEnterprise","controllers","ctrlsFactory","agStackComponents","createAgStackComponentsList","passedViaConstructor","registered","allModules","mapNames","addModule","mod","addIndividualModule","currentModule","dependantModules","moduleUserComps","extractModuleEntity","userComponents","compMeta","seed","moduleAgStackComps","rowModelModules","rowModelModuleNames","ClientSideRowModelModule","InfiniteRowModelModule","ServerSideRowModelModule","ViewportRowModelModule","moduleBeans","beansNoDuplicates","moduleEntities","extractor","readyEvent","BaseComponentWrapper","OriginalConstructor","componentType","createWrapper","createMethod","addMethod","createMethodProxy","hasMethod","callMethod","DEFAULT_CHART_GROUPS","barGroup","pieGroup","lineGroup","scatterGroup","areaGroup","histogramGroup","combinationGroup","CHART_TOOL_PANEL_ALLOW_LIST","CHART_TOOLBAR_ALLOW_LIST","CHART_TOOL_PANEL_MENU_OPTIONS","__FORCE_MODULE_DETECTION","BarColumnLabelPlacement","globalObj","HTMLButtonElement","HTMLSelectElement","HTMLInputElement","ClientSideNodeManager","nextId","allNodesMap","ROOT_NODE_ID","suppressParentsInRowNodes","getCopyOfNodesMap","dispatchRowDataUpdateStartedEvent","TOP_LEVEL","rowDataTran","rowNodeTransaction","nodesToUnselect","executeRemove","executeUpdate","executeAdd","updateSelection","newNodes","normalisedAddIndex","nodesBeforeIndex","nodesAfterIndex","rowIdsRemoved","lookupRowNode","setMasterForRow","numRowGroupColumns","masterRowLevel","expandByDefault","__decorate$b","RecursionType","ClientSideRowModel","onRowHeightChanged_debounced","rowsToDisplay","refreshEverythingFunc","EVERYTHING","refreshEverythingAfterColsChangedFunc","afterColumnsChanged","onValueChanged","PIVOT","onGridStylesChanges","refreshMapListener","nodeManager","atLeastOneChange","rowAtStartPixel","rowAtEndPixel","setRowTopAndRowIndex","displayedRowsMapped","changedPathActive","clearIfNotDisplayed","recurse","isRootNode","skipChildren","indexAtPixelNow","rowNodeAtPixelNow","keepEditingRows","lastHighlightedRow","highlight","showingRootNode","filteredChildren","topLevelIndex","primaryOrQuickFilterChanged","FILTER","FILTER_AGGREGATES","SORT","AGGREGATE","createChangePath","rowNodeTransactions","noTransactions","isSuppressModelUpdateAfterUpdateTransaction","transWithAddsOrDeletes","transactionsContainUpdatesOnly","buildRefreshModelParams","paramsStep","stepsMapped","everything","aggregate","modelParams","paramsOrStep","doRowGrouping","doFilter","doPivot","doFilterAggregates","doSort","doRowsToDisplay","displayedNodesMapped","rowsMissing","firstInRange","lastInRange","started","groupsSelectChildren","includeThisNode","pixelToMatch","bottomPointer","topPointer","oldBottomPointer","oldTopPointer","midPointer","isRowInPixel","caughtInInfiniteLoop","pixelInRow","recursivelyWalkNodesAndCallback","recursionType","AfterFilter","AfterFilterAndSort","forEachPivotNode","PivotNodes","firstNode","nodeChildren","aggregationStage","execute","filterAggregatesStage","expand","usingPivotMode","recursiveExpandOrCollapse","actionRow","notLeafGroup","isRowGroup","sortStage","groupStage","restoreGroupState","filterStage","pivotStage","getGroupState","idIsGroup","rowDataUpdatedEvent","applyAsyncTransactionsTimeout","rowDataTransactionBatch","waitMillis","executeBatchUpdateRowData","callbackFuncsBound","rowNodeTrans","forceRowNodeOrder","tranItem","rowNodeTran","commonUpdateRowData","createRowNodeOrder","suppressSortOrder","orderMap","flattenStage","resetRowHeightsForAllRowNodes","__decorate$a","FilterStage","filterService","__decorate$9","SortStage","sortActive","deltaSort","sortContainsGroupColumns","sortService","__decorate$8","FlattenStage","skipLeafNodes","showRootNode","topList","recursivelyAddToRowsToDisplay","atLeastOneRowPresent","includeGroupTotalFooter","addRowNodeToRowsToDisplay","rowsToFlatten","hideOpenParents","groupRemoveSingleChildren","groupRemoveLowestSingleChildren","isParent","isSkippedLeafNode","isRemovedSingleChildrenGroup","isRemovedLowestSingleChildrenGroup","neverAllowToExpand","isHiddenOpenParent","thisRowShouldBeRendered","excludedParent","uiLevelForChildren","createDetailNode","masterNode","__decorate$7","SortService","postSortFunc","useDeltaSort","groupMaintainOrder","groupColumnsPresent","allDirtyNodes","calculateDirtyNodes","pullDownGroupDataForHideOpenParents","skipSortingPivotLeafs","skipSortingGroups","childrenToBeSorted","indexedOrders","row1","row2","doDeltaSort","rowNodeSorter","updateChildIndexes","updateGroupDataForHideOpenParents","dirtyNodes","addNodesFunc","tran","allTouchedNodes","unsortedRows","oldSortedRows","untouchedRowsMap","touchedRows","sortedUntouchedRows","mapNodeToSortedNode","sortedChangedRows","mergeSortedArrays","listToSort","clearOperation","childRowNode","groupDisplayCols","displayingGroupKey","thisRowNodeMatches","parentToStealFrom","__decorate$6","FilterService","filterNodes","includeChildNodes","passBecauseChildren","passBecauseDataPasses","doingTreeDataFiltering","treeDataDepthFirstFilter","alreadyFoundInParent","foundInParent","treeDataFilterCallback","defaultFilterCallback","__decorate$5","ImmutableService","getRowIdProvided","resetRowDataOnUpdate","transactionAndMap","createTransactionForRowData","orderIdMap","existingNodesMap","existingNode","dataHasChanged","VERSION$2","__decorate$4","InfiniteBlock","parentCache","createRowNodes","blockNumber","getStartRow","getEndRow","pageStatus","createLoadParams","getRows","successCallback","failCallback","sortModel","getLastAccessed","lastAccessed","dontTouchLastAccessed","lastAccessedSequence","localIndex","finalRowCount","destroyRowNodes","__decorate$3","InfiniteCache","lastRowIndexKnown","blockCount","initialRowCount","dontCreatePage","blockId","createBlock","newBlock","purgeBlocksIfNeeded","nothingToRefresh","getBlocksInOrder","destroyAllBlocks","destroyBlock","checkRowCount","onCacheUpdated","blockToExclude","blocksForPurging","lastAccessedComparator","maxBlocksProvided","maxBlocksInCache","blocksToKeep","emptyBlocksToKeep","MAX_EMPTY_BLOCKS_TO_KEEP","purgeBecauseBlockEmpty","purgeBecauseCacheFull","isBlockCurrentlyDisplayed","isBlockFocused","removeBlockFromCache","blockIndexStart","blockIndexEnd","hasFocus","blockToRemove","lastRowIndexPlusOverflow","overflowSize","forEachNodeDeep","blockComparator","destroyAllBlocksPastVirtualRowCount","blocksToDestroy","getRowNodesInRange","lastBlockId","inActiveRange","numberSequence","foundGapInSelection","hitFirstOrLast","invalidRange","__decorate$2","InfiniteRowModel","destroyCache","verifyProps","destroyDatasource","onColumnEverything","resetRequired","cacheParams","isSortModelDifferent","infiniteCache","userGeneratingIds","resetCache","createModelUpdatedEvent","defaultIfInvalid","rowIndexForPixel","foundRowNode","VERSION$1","BaseCreator","getFileName","fileName","extension","getDefaultFileExtension","getDefaultFileName","serializingSession","createSerializingSession","gridSerializer","BaseGridSerializingSession","processCellCallback","processHeaderCallback","processGroupHeaderCallback","processRowGroupCallback","prepare","columnsToExport","extractHeaderValue","extractRowCellValue","accumulatedRowIndex","shouldRenderGroupSummaryCell","createValueForGroupNode","processedValue","currentColumnIndex","isGroupNode","currentColumnGroupIndex","isFooter","groupValue","valueToParse","valueToFormat","Downloader","download","content","createObjectURL","bubbles","revokeObjectURL","LINE_SEPARATOR$1","CsvSerializingSession","isFirstLine","suppressQuotes","columnSeparator","addCustomContent","beginNewLine","putInQuotes","mergeAcross","appendEmptyCells","onNewHeaderGroupingRow","onColumn","onNewHeaderGroupingRowColumn","header","onNewHeaderRow","onNewHeaderRowColumn","onNewBodyRow","onNewBodyRowColumn","rowCellValue","stringValue","valueEscaped","__decorate$1","CsvCreator","getMergedParams","export","isExportSuppressed","packagedFile","skipDefaultParams","GridSerializer","gridSerializingSession","getColumnsToExport","columnKeys","serializeChain","prepareSession","prependContent","exportColumnGroups","exportHeaders","processPinnedTopRows","processRows","processPinnedBottomRows","appendContent","rowSkipper","shouldRowBeSkipped","skipSingleChildrenGroup","skipLowestSingleChildrenGroup","isClipboardExport","rowPositions","isExplicitExportSelection","onlySelected","isLeafNode","skipRowGroups","skipGroups","shouldSkipLowestGroup","shouldSkipCurrentGroup","skipPinnedTop","skipPinnedBottom","nodeIsRootNode","rowAccumulator","getCustomContentBelowRow","customFooter","customHeader","skipColumnGroupHeaders","recursivelyAddHeaderGroups","skipColumnHeaders","gridRowIterator","usingCsrm","usingSsrm","onlySelectedNonStandardModel","exportedRows","onlySelectedAllPages","replicateSortedOrder","compareNodes","directChildrenHeaderGroups","doAddHeaderHeader","columnIndex","collapsibleGroupRanges","collapsibleGroups","lastGroup","groupShow","LINE_SEPARATOR","XmlFactory","createHeader","headerElement","headerStart","headerEnd","encoding","att","createXml","xmlElement","booleanTransformer","prefixedAttributes","prefixedSet","returnAttributeIfPopulated","rawMap","textNode","xmlValue","crcTable","ZipContainer","addFolders","addFolder","folders","isBase64","addFile","files","getContent","mimeType","textOutput","buildFileStream","uInt8Output","buildUint8Array","clearStream","fData","totalFiles","foData","lL","cL","currentFile","fileHeader","folderHeader","getHeader","foEnd","buildFolderEnd","utfPath","isUTF8","convertTime","dt","convertDate","extraFields","uExtraFieldPath","getFromCrc32Table","convertedContent","getConvertedContent","tLen","cLen","lLen","uint8","crc","AllCommunityModules","MD5","ieCompatibility","md5","md5cycle","ff","gg","hh","ii","add32","cmn","md51","md5blk","md5blks","rhex","hex_chr","add32Compat","add32Std","lsw","msw","LicenseManager","watermarkMessage","validateLicense","licenseKey","isWebsiteUrl","isForceWatermark","outputMissingLicenseKey","outputInvalidLicenseKey","license","isTrial","extractLicenseComponents","validateLicenseKeyForVersion","validateLegacyKey","extractExpiry","restrictionHashed","cleanedLicenseKey","hashStart","extractBracketedInformation","getLicenseDetails","trialExpired","expiry","isDisplayWatermark","isLocalhost","getWatermarkMessage","getHostname","monthNames","monthIndex","getGridReleaseDate","RELEASE_INFORMATION","keystr","utf8_decode","setLicenseKey","validateForTrial","gridReleaseDate","formattedExpiryDate","formattedReleaseDate","outputIncompatibleVersion","outputExpiredTrialKey","GridLicenseManager","licenseManager","WatermarkComp","shouldDisplayWatermark","eLicenseTextRef","VERSION$i","ClipboardService_1","EXPORT_TYPE_DRAG_COPY","EXPORT_TYPE_CLIPBOARD","CellClearType","ClipboardService","lastPasteOperationTime","navigatorApiFailed","allowNavigator","clipboard","readText","processClipboardData","pasteFromClipboardLegacy","handlePasteEvent","currentPastOperationTime","executeOnTempElement","textArea","refocusLastFocusedCell","getClipboardDelimiter","parsedData","removeLastLineIfBlank","pasteOperation","cellsToFlash","updatedRowNodes","rangeActive","pasteIntoRange","hasOnlyOneValueToPaste","pasteIntoActiveRange","pasteStartingFromFocusedCell","doPasteOperation","strData","isNewline","char","insideQuotedField","previousChar","currentChar","nextChar","ensureDataExists","pasteOperationFunc","dispatchFlashCells","fireRowChanged","abortRepeatingPasteIntoRows","getRangeSize","indexOffset","dataRowIndex","rowCallback","atEndOfClipboardData","currentRowData","iterateActiveRanges","columnsToPasteInto","isPasteSingleValueIntoRange","pasteSingleValueIntoRange","pasteMultipleValues","updateCellValue","firstRowValues","firstRowValue","lastLine","lastLineIsBlank","clipboardGridData","rowPointer","skipGroupRows","getNextGoodRowNode","skipRow","clipboardRowData","copyOrCutToClipboard","cut","includeHeaders","includeGroupHeaders","copyParams","shouldCopyRows","cellClearType","shouldSkipSingleCellRange","CellRange","SelectedRows","copyFocusedCellToClipboard","FocusedCell","clearCellsAfterCopy","cellEventSource","clearSelectedRows","clearCellValue","onlyFirst","iterateActiveRange","isLastRange","rangeIndex","isLastRow","allRangesMerge","areAllRangesAbleToMerge","buildDataFromMergedRanges","buildDataFromRanges","copyDataToClipboard","columnsSet","rowPositionsMap","allRowPositions","allCellsToFlash","getRangeRowPositionsAndCellsToFlash","rowPositionAsString","exportedColumns","buildExportParams","exportParams","processCellForClipboard","canParse","canFormat","userProvidedFunc","writeText","copyDataToClipboardLegacy","focusedElementBefore","execCommand","callbackNow","callbackAfter","eDoc","eTempInput","guiRoot","startRangeIndex","endRangeIndex","VERSION$h","ExpandState","PrimaryColsHeaderPanel","createExpandIcons","eExpand","onSelectClicked","eFilterTextField","onFilterTextChanged","onMiniFilterKeyDown","showOrHideOptions","eExpandChecked","eExpandUnchecked","eExpandIndeterminate","setExpandState","EXPANDED","showFilter","suppressColumnFilter","showSelect","suppressColumnSelectAll","showExpand","suppressColumnExpandAll","groupsPresent","onFilterTextChangedDebounced","selectState","expandState","COLLAPSED","INDETERMINATE","setSelectionState","ColumnModelItem","getDisplayName","getDept","isPassesFilter","passesFilter","setPassesFilter","ToolPanelContextMenu","initializeProperties","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","onExpandChanged","setOpenClosedIcons","setupDragging","addVisibilityListenersToAllChildren","refreshAriaLabel","isSelectable","onSelectAllChanged","contextMenu","modelItemUtils","updateColumns","pivotState","onChangeCommon","createPivotState","onExpandOrContractClicked","eColumnGroupIcons","getVisibleLeafColumns","extractCols","selectAllChildren","columnLabel","checkboxValue","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","currentColumns","getCurrentColumns","hasNotMovable","moveBlocked","virtualListGui","hoveredColumnItem","getDragColumnItem","clearHoveredItems","maxLen","getDisplayedColsList","normalizedRowIndex","targetIndex","getTargetIndex","getMoveDiff","columnItemComponent","isBefore","targetColumn","targetColumnIndex","adjustedTarget","ToolPanelColumnComp","groupsExist","indent","setColumn","anyFunctionActive","canBeToggled","canBeDragged","functionsReadOnly","noFunctionsAllowed","forceDraggable","disableDraggable","checkboxPassive","UIColumnModel","PRIMARY_COLS_LIST_PANEL_CLASS","PrimaryColsListPanel","destroyColumnItemFuncs","destroyColumnTree","allColsTree","suppressSyncLayoutWithGrid","eventsImpactingCheckedState","fireSelectionChangedEvent","expandGroupsByDefault","contractColumnSelection","columnListName","listItemElement","createComponentFromItem","suppressColumnMove","renderedGroup","columnComp","expandedStates","getExpandedStates","pivotModeActive","shouldSyncColumnLayoutWithGrid","buildTreeFromWhatGridIsDisplaying","buildTreeFromProvidedColumnDefs","setExpandedStates","markFilteredColumns","flattenAndFilterModel","displayedColsList","colGroup","groupExistedLastTime","colDefService","syncLayoutWithGrid","setColumnLayout","buildListModel","columnExpandedListener","onColumnExpanded","removeFunc","recursivelyBuild","parentList","createGroupItem","createColumnItem","columnGroupDef","skipThisGroup","skipThisColumn","recursiveFunc","focusedRow","focusRowIfAlive","notifyListeners","doSetExpandedAll","setGroupsExpanded","groupIds","expandedGroupIds","unrecognisedGroupIds","getExpandState","expandedCount","notExpandedCount","doSetSelectedAll","selectAllChecked","getSelectionState","noPivotModeOptionsAllowed","setFilterText","recursivelyCheckFilter","parentPasses","atLeastOneChildPassed","groupPasses","childPasses","fireGroupExpandedEvent","selectionState","PivotModePanel","cbPivotMode","onBtPivotMode","AggregationStage","alwaysAggregateAtRootLevel","groupIncludeTotalFooter","noValueColumns","noUserAgg","aggDetails","createAggDetails","recursivelyCreateAggData","measureColumns","isSuppressAggFilteredOnly","isGroupAggFiltering","hasNoChildren","notPivoting","aggregateRowNode","measureColumnsMissing","pivotColumnsMissing","aggResult","aggregateRowNodeUsingValuesOnly","aggregateRowNodeUsingValuesAndPivot","secondaryCol","getValuesFromMappedSet","getValuesPivotNonLeaf","aggregateValues","aggResults","currentColId","changedValueColumns","notChangedValueColumns","values2d","getValuesNormal","oldValues","valueColumn","mappedSet","mapPointer","valueColumnCount","aggFuncOrString","pivotResultColumn","aggFuncAny","BatchRemover","allSets","allParents","removeFromChildrenAfterGroup","getSet","isRemoveFromAllLeafChildren","removeFromAllLeafChildren","preventRemoveFromAllLeafChildren","getAllParents","nodeDetails","GroupStage","groupIdSequence","getDataPath","createGroupingDetails","transactions","handleTransaction","afterColsChanged","shotgunResetEverything","positionLeafsAndGroups","orderGroups","selectableService","leafNodes","groupNodes","unbalancedNode","groupedCols","includeParents","groupedColCount","batchRemover","removeNodes","moveNodesInWrongPath","insertNodes","parentsWithChildrenRemoved","removeEmptyGroups","sortChildren","didSort","recursiveSort","getExistingPathForNode","infoToKeyMapper","oldPath","getGroupInfo","nodeInCorrectPath","moveNode","removeNodesInStages","insertOneNode","newParent","leafRowNodes","removeNodesFromParents","postRemoveCreateFillerNodes","nodeParents","forEachParentGroup","nodesToRemove","provided","batchRemoverIsLocal","batchRemoverToUse","nodeToRemove","replaceWithGroup","newGroupNode","findParentForNode","possibleEmptyGroups","checkAgain","groupShouldBeRemoved","mapKey","getChildrenMappedKey","groupAlreadyRemoved","possibleEmptyGroup","addToParent","areGroupColsEqual","d2","checkAllGroupDataAfterColsChanged","groupInfo","setGroupData","noChangeInGroupingColumns","noFurtherProcessingNeeded","newGroupDisplayColIds","oldGroupingDetails","oldGroupDisplayColIds","newRowNodes","parentGroup","swapGroupWithUserNode","getOrCreateNextNode","fillerGroup","userGroup","createGroup","groupNode","setExpandedInitialValue","displayGroupForCol","userCallback","getGroupInfoFromCallback","getGroupInfoFromGroupColumns","groupInfoMapper","keyExists","createGroupForEmpty","PivotColDefService_1","PivotColDefService","createPivotColumnDefs","uniqueValues","levelsDeep","pivotColumnGroupDefs","recursiveBuildGroup","extractColDefs","pivotColumnDefs","addRowGroupTotals","addExpandablePivotGroups","addPivotTotalsToGroups","pivotColumnDefsClone","uniqueValue","maxDepth","primaryPivotColumns","buildMeasureCols","primaryPivotColumnDefs","headerNameComparator","newPivotKeys","createColDef","generateColumnGroupId","measureCol","columnName","recursivelyAddSubTotals","groupDef","currentPivotColumnDefs","childAcc","grp","firstGroup","totalColDef","pivotValueColId","insertAfter","valueCols","valueCol","sameAggFuncs","recursivelyAddPivotTotal","childColIds","extractColIdsForValueColumn","withGroup","createRowGroupTotal","parentChildren","addGroup","PIVOT_ROW_TOTAL_PREFIX","valueGroup","totalColumn","colDefToCopy","generateColumnId","userComparator","m1","m2","existingList","updatedList","pivotCols","measureColumnId","PivotStage","executePivotOn","executePivotOff","aggregationColumnsHashLastTime","bucketUpRowNodes","uniqueValuesChanged","setUniqueValues","aggregationColumns","aggregationColumnsHash","aggregationFuncsHash","aggregationColumnsChanged","aggregationFuncsChanged","aggregationFuncsHashLastTime","groupColumnsHash","groupColumnsChanged","groupColumnsHashLastTime","pivotColDefService","newValues","json1","json2","recursivelyBucketFilteredChildren","bucketRowNode","bucketChildren","mappedChildren","pivotColumn","getPivotColumnDefs","AggFuncService_1","AGBigInt","BigInt","AggFuncService","aggFuncsMap","initialiseWithDefaultAggregations","AGG_SUM","aggSum","AGG_FIRST","aggFirst","AGG_LAST","aggLast","AGG_MIN","aggMin","AGG_MAX","aggMax","AGG_COUNT","aggCount","AGG_AVG","aggAvg","isAggFuncPossible","allKeys","getFuncNames","allowed","funcExists","defaultAgg","userAllowedFuncs","existingAggData","valueToAdd","DropZoneColumnComp","dropZonePurpose","popupShowing","isFunctionsReadOnly","addElementClasses","eButton","aggFuncName","getColumnAndAggFuncName","aggSeparator","asc","columnSort","isSortSuppressed","ariaInstructions","isGroupingZone","isAggregationZone","aggregationMenuAria","sortProgressAria","deleteAria","performSort","isEnter","setTextValue","setupRemove","onShowAggFuncSelection","EVENT_COLUMN_REMOVE","isDelete","displayValueSanitised","focusoutListener","popupHiddenFunc","callbackEvent","createAggSelect","selectItem","rowToFocus","itemSelected","AggItemComp","BaseDropZonePanel","STATE_NOT_DRAGGING","guiDestroyFunctions","childColumnComponents","resizeEnabled","eColumnDropList","toggleResizable","destroyGui","refreshGui","setupDropTarget","getAriaLabel","isNext","isPrevious","checkInsertIndex","newIndex","getNewInsertIndex","insertIndex","mouseLocation","boundsList","hoveredIndex","isLast","isFirst","checkDragStartedBySelf","STATE_REARRANGE_COLUMNS","potentialDndColumns","STATE_NEW_COLUMNS_IN","goodDragColumns","isColumnDroppable","isRowGroupPanel","colModel","isPotentialDndColumns","removeColumns","showColumnOnExit","addColumns","rearrangeColumns","columnsToRemove","newColumnList","getExistingColumns","columnsToAdd","colsToAddNoDuplicates","getNonGhostColumns","focusedIndex","getFocusedItem","alternateElement","addIconAndTitleToGui","addEmptyMessageToGui","addColumnsToGui","restoreFocus","indexToFocus","nonGhostColumns","itemsToAddToGui","createColumnComponent","dndColumns","columnComponent","addArrow","addAriaLabelsToComponents","isExistingColumnsEmpty","eMessage","emptyMessage","RowGroupDropZonePanel","passBeansUp","dragAndDropIcon","PivotDropZonePanel","GridHeaderDropZones","createNorthPanel","topPanelGui","dropPanelVisibleListener","onDropPanelVisible","rowGroupComp","pivotComp","bothDisplayed","grouping","FilterAggregatesStage","isAggFilterActive","defaultPrimaryColumnPredicate","defaultSecondaryColumnPredicate","applyFilterToNode","preserveChildren","filterChildren","shouldFilterRow","doesNodePassFilter","hasChildPassed","setAllChildrenCountTreeData","setAllChildrenCountGridGrouping","VERSION$g","GroupFilter","validateParams","updateGroups","updateGroupField","getUnderlyingFilters","getSourceColumns","eGroupField","eGroupFieldSelect","allSourceColumns","sourceColumn","selectedColumn","createGroupFieldSelectElement","updateSelectedColumn","filterColumnPairs","selectedFilter","filterPromises","addUnderlyingFilterElement","eUnderlyingFilter","afterGuiAttachedParams","selectedFilterColumnPair","getFilterColumnPair","EVENT_SELECTED_COLUMN_CHANGED","getSelectedFilter","getSelectedColumn","GroupFloatingFilterComp","canShowUnderlyingFloatingFilter","setupUnderlyingFloatingFilterElement","setupReadOnlyFloatingFilterElement","onSelectedColumnChanged","updateDisplayedValue","eFloatingFilter","showingUnderlyingFloatingFilter","underlyingFloatingFilter","columnVisibleChangedListener","onColumnVisibleChanged","_model","ValuesDropZonePanel","PrimaryColsPanel","primaryColsHeaderPanel","hideFilter","hideSelect","hideExpand","primaryColsListPanel","onGroupExpanded","onSelectionChange","onExpandAll","onCollapseAll","onSelectAll","onUnselectAll","expandGroups","collapseGroups","ColumnToolPanel","childDestroyFuncs","suppressPivotMode","suppressRowGroups","suppressValues","suppressPivots","isRowGroupingModuleLoaded","pivotModePanel","primaryColsPanel","rowGroupDropZonePanel","valuesDropZonePanel","pivotDropZonePanel","setLastVisible","pivotModeListener","resetChildrenHeight","setPivotModeSectionVisible","setRowGroupsSectionVisible","setValuesSectionVisible","setPivotSectionVisible","setResizers","panel","columnDrops","columnDrop","columnDropEls","lastVisible","expandColumnGroups","collapseColumnGroups","destroyChildren","HorizontalResizeComp","setElementToResize","elementToResize","setInverted","dispatchResizeEvent","ended","startingWidth","isEnd","inverted","setMaxWidth","setMinWidth","SideBarButtonComp","getToolPanelId","setIcon","eToggleButton","onButtonPressed","labelKey","labelDefault","eIconWrapper","iconKey","EVENT_TOGGLE_BUTTON_CLICKED","getButtonElement","SideBarButtonsComp","buttonComps","setActiveButton","addButtonComp","buttonComp","EVENT_SIDE_BAR_BUTTON_CLICKED","toolPanelId","clearButtons","SideBarDefParser","toParse","toolPanels","DEFAULT_COLUMN_COMP","DEFAULT_FILTER_COMP","defaultToolPanel","lookupResult","DEFAULT_BY_KEY","parseComponents","hiddenByDefault","toAdd","filters","ToolPanelWrapper","setupResize","resizeBar","setToolPanelDef","setToolPanelComponent","toolPanelCompInstance","setResizerSizerSide","SideBarComp","toolPanelWrappers","sideBarButtonsComp","onToolPanelButtonClicked","setSideBarDef","clearDownUi","sideBarGui","openPanel","currentButton","innerButton","destroyToolPanelWrappers","sideBarRaw","shouldDisplaySideBar","toolPanelDefs","createToolPanelsAndSideButtons","resizerSide","createToolPanelAndSideButton","validateDef","moduleMissing","FiltersToolPanelModule","wrapperGui","currentlyOpenedKey","newlyOpenedKey","openToolPanelChanged","raiseToolPanelVisibleEvent","toolPanelWrapper","previousKey","switchingToolPanel","activeToolPanel","ToolPanelColDefService","isColGroupDef","invalidColIds","createDummyColGroup","mappedResults","syncLayoutCallback","leafPathTrees","getLeafPathTrees","mergedColumnTrees","mergeLeafPathTrees","getLeafPathTree","leafPathTree","allGridColumns","allPrimaryGridColumns","matchingRootGroupIds","pathA","pathB","bothPathsAreGroups","mergeTrees","treeA","treeB","mergeResult","groupToMerge","addChildrenToGroup","second","subGroupIsSplit","currentSubGroup","currentSubGroupToAdd","existingChildIds","childGroupAlreadyExists","lastChildIsDifferent","currentGroup","groupToAdd","colDefAlreadyPresent","subGroup","VERSION$f","ModelItemUtils","colTree","extractAllLeafColumns","setAllColumns","setAllPivot","setAllVisible","allItems","colStateItems","setAllPivotPassive","setAllPivotActive","copyOfPivotColumns","copyOfValueColumns","copyOfRowGroupColumns","pivotChanged","rowGroupChanged","turnOnAction","turnOffAction","pivotStateForColumn","VERSION$e","workbook","ss","html","xmlns","excelWorkbook","Width","styleId","MergeAcross","StyleID","worksheet","ws","table","Name","documentProperties","styleProperties","readingOrder","rotate","shrinkToFit","verticalText","Indent","ReadingOrder","Rotate","ShrinkToFit","VerticalText","WrapText","borders","borderBottom","borderLeft","borderRight","borderTop","LineStyle","lineStyle","Weight","Color","font","bold","fontName","italic","outline","shadow","strikeThrough","underline","verticalAlign","charSet","family","Bold","FontName","Italic","Outline","Shadow","Size","StrikeThrough","Underline","VerticalAlign","CharSet","Family","interior","patternColor","Pattern","PatternColor","protection","Protected","protected","HideFormula","hideFormula","numberFormat","ID","ExcelXmlFactory","createExcel","currentWorksheet","excelXmlHeader","docProps","eWorkbook","wb","docProperties","stylesXmlElement","styleXmlElement","addProperty","factoryMode","SINGLE_SHEET","INCH_TO_EMU","numberFormatMap","pixelsToPoint","pointsToPixel","points","pixelsToEMU","getFontFamilyId","families","getHeightFromProperty","finalHeight","heightFunc","setExcelImageTotalWidth","image","columnsInSpan","setExcelImageTotalHeight","totalHeight","nextRowHeight","createXmlPart","xmlBody","getExcelColumnName","startCode","tableWidth","tableIdx","BaseExcelSerializingSession","mixedStyles","mixedStyleCounter","stylesByIds","baseExcelStyles","excelStyles","customContent","outlineLevel","suppressRowOutline","rowObj","addImage","excelStyleId","getStyleId","createCell","getDataTypeForValue","createMergedCell","collapsed","currentCells","headerRowHeight","collapsibleRanges","styleIds","styleLinker","HEADER_GROUPING","onNewRow","onNewHeaderColumn","onNewBodyColumn","addRowOutlineIfNecessary","rowGroupExpandState","isGroupHideOpenParents","isAnyParentCollapsed","convertColumnToExcel","longestRow","sheetName","isFormula","autoConvertFormulas","isNumerical","getStyleById","smallestUsefulWidth","nameForCol","HEADER","onNewColumnAccumulator","skipCols","valueForCell","BODY","addedImage","addNewMixedStyle","excelID","excelId","resultantStyle","excelStyle","ExcelXmlSerializingSession","dataType","actualStyle","typeTransformed","getValueTransformed","suppressTextAsCDATA","cdataStart","cdataEnd","cdataEndRegex","convertBoolean","numOfCells","coreFactory","author","jsonDate","dc","dcterms","dcmitype","xsi","contentTypeFactory","ContentType","Extension","PartName","contentTypesFactory","sheetLen","worksheets","sheetsWithImages","ExcelXlsxFactory","worksheetImages","imageTypesObject","workbookImageIds","imageDocs","imageTypes","ext","contentType","getAnchor","imageAnchor","offsetX","getExt","uri","recolor","getNvPicPr","descr","altText","preferRelativeResize","getColorDetails","saturation","tint","getDuoTone","primaryColor","secondaryColor","getBlipFill","blipChildren","transparency","amt","bright","contrast","getSpPr","imageBoxSize","xfrm","cx","cy","rotation","rot","prstGeom","prst","getImageBoxSize","fitCell","getPicture","worksheetImageIndex","drawingFactory","sheetIndex","sheetImages","sheetImageIds","worksheetImageIds","boxSize","editAs","getColorChildren","innerType","lastClr","colorScheme","getFont$1","typeface","panose","fontScheme","getPropertyVal","getGs","schemeColor","satMod","lumMod","shade","getSolidFill","getGradFill","rotWithShape","gs1","gs2","gs3","lin","ang","scaled","getLine","w","cap","cmpd","algn","lim","getEffectStyle","blurRad","dist","getFillStyleList","getLineStyleList","getEffectStyleList","getBgFillStyleList","formatScheme","themeElements","officeTheme","buildSharedString","strMap","preserveSpaces","sharedStrings","strings","uniqueCount","prepareString","currentString","numberFormatFactory","formatCode","numFmtId","numberFormatsFactory","numberFormats","fontFactory","colorTheme","scheme","rgb","fontsFactory","fonts","fillFactory","patternType","fgTheme","fgTint","fgRgb","bgRgb","bgIndexed","pf","indexed","fillsFactory","fills","getWeightName","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","convertLegacyPattern","convertLegacyColor","convertLegacyBorder","namedWeight","mappedName","convertLegacyHorizontalAlignment","convertLegacyVerticalAlignment","getBorderColor","borderFactory$1","border","diagonal","leftChildren","rightChildren","topChildren","bottomChildren","diagonalChildren","bordersFactory","getReadingOrderId","alignmentFactory","textRotation","protectionFactory","locked","xfFactory","xf","borderId","fillId","fontId","xfId","applyAlignment","applyProtection","applyBorder","applyFill","applyFont","applyNumberFormat","cellStylesXfsFactory","xfs","cellXfsFactory","borderFactory","builtinId","cellStylesFactory","cellStyles","stylesMap","registeredNumberFmts","registeredFonts","registeredFills","registeredBorders","registeredCellStyleXfs","registeredCellXfs","registeredCellStyles","currentSheet","getStyleName","resetStylesheetValues","registerFill","convertedPattern","convertedFillColor","convertedPatternColor","currentFill","registerNumberFmt","currentFormat","registerBorders","bottomStyle","topStyle","leftStyle","rightStyle","bottomColor","topColor","leftColor","rightColor","currentBorder","clS","clC","crS","crC","ctS","ctC","cbS","cbC","registerFont","utf8Name","convertedColor","familyId","convertedUnderline","convertedVerticalAlign","currentFont","registerStyle","currentNumberFmt","stylesheetFactory","defaultFontSize","cellStylesXfs","cellXfs","defaultPivotStyle","defaultTableStyle","registerStyles","_currentSheet","sheetFactory","sheetId","sheetsFactory","sheet","workbookFactory","getExcelCellWidth","bestFit","excelWidth","customWidth","convertLegacyType","cellFactory","convertedType","addEmptyCells","rowIdx","posCounter","excelPos","mergedCells","shouldDisplayCell","rowFactory","ht","customHeight","spans","mergeCellFactory","getMergedCellsAndAddColumnGroups","suppressColumnOutline","cellsWithCollapsibleGroups","merges","cellIdx","outputRow","rangeMap","currentRange","rangeString","inMap","refCol","currentOutlineLevel","getPageOrientation","orientation","positions","addSheetData","sheetNumber","addMergeCells","mergeCells","mergedCell","addPageMargins","margins","addPageSetup","pageSetup","horizontalDpi","verticalDpi","paperSize","replaceHeaderFooterTokens","getHeaderPosition","applyHeaderFontStyle","headerString","processHeaderFooterContent","buildHeaderFooter","headerFooterConfig","headersAndFooters","headerFooter","namePrefix","nameSuffix","addHeaderFooter","differentFirst","differentOddEven","addDrawingRel","addSheetPr","summaryBelow","addSheetFormatPr","maxOutline","baseColWidth","outlineLevelRow","worksheetFactory","createWorksheetChildren","relationshipFactory","Id","Target","relationshipsFactory","relationship","addSheetName","sheetNames","createWorksheet","buildImageMap","currentSheetIndex","registeredImage","images","calculatedImage","currentSheetImages","currentImage","imageType","buildSheetImageMap","worksheetImageIdMap","getStringPosition","resetFactory","createWorkbook","createStylesheet","createSharedStrings","createCore","createContentTypes","createRels","rs","createTheme","createWorkbookRels","createDrawing","createDrawingRel","XMLArr","createWorksheetDrawingRel","currentRelationIndex","ExcelXlsxSerializingSession","addImageToCell","fontSize","hasImages","imgCounter","firstImage","imageRelationCounter","createImageRelationsForSheet","contents","drawingFolder","drawingFileName","relFileName","worksheetRelFile","ExcelCreator","setExportMode","packageFile","getExportMode","isXlsx","isGroupHeader","headerClasses","applicableStyles","VERSION$d","EXPAND_STATE","FiltersToolPanelHeaderPanel","preConstruct","onSearchTextChanged","showFilterSearch","suppressFilterSearch","suppressExpandAll","isFilterGroupPresent","filterGroupsPresent","onSearchTextChangedDebounced","searchText","currentExpandState","ToolPanelFilterComp","hideHeader","eFilterName","eFilterToolPanelHeader","toggleExpanded","onFilterOpened","eFilterIcon","onFilterDestroyed","getColumnFilterName","removeFilterElement","addFilterElement","collapse","filterPanelWrapper","underlyingFilter","filterContainerEl","agFilterToolPanelBody","refreshFilter","refreshVirtualList","ToolPanelFilterGroupComp","childFilterComps","expandedCallback","showingColumn","groupParams","filterGroupComp","setGroupTitle","refreshFilterClass","addExpandCollapseListeners","addFilterChangedListeners","getFilterGroupName","filterGroupName","getFilterGroupId","hideGroupItem","hideGroup","forEachToolPanelFilterChild","collapseListener","anyChildFiltersActive","getColumnGroupName","getColumnName","destroyFilters","FiltersToolPanelListPanel","filterGroupComps","syncFilterLayout","toolPanelColDefService","setFiltersLayout","recreateFilters","expansionState","getExpansionState","recursivelyAddComps","setFirstAndLastVisible","searchFilterText","searchFilters","fireExpandedEvent","recursivelyAddFilterGroupComps","shouldDisplayFilter","hideFilterCompHeader","filtersExistInChildren","newDepth","recursiveGetExpansionState","expandFilterGroups","updatedGroupIds","updateGroupExpandState","filterGroup","shouldExpandOrCollapse","expandFilters","anyChildrenChanged","childUpdated","updateFilterExpandState","unrecognisedColIds","updateExpandCounts","performFilterSearch","searchFilter","groupName","recursivelySearch","filterItem","groupNamePasses","alreadyPassed","anyChildPasses","firstVisible","firstIdx","lastIdx","FiltersToolPanel","listenerDestroyFuncs","filtersToolPanelHeaderPanel","filtersToolPanelListPanel","hideSearch","onSearchChanged","setFilterLayout","collapseFilterGroups","collapseFilters","VERSION$c","__extends$15","__extends","extendStatics","setPrototypeOf","__","TimeInterval","encode","rangeCallback","_encode","_decode","_rangeCallback","e0","CountableTimeInterval","_super","getOffset","snapTo","_this","initialOffset_1","encoded","encode$b","decode$b","millisecond","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","offset$2","encode$a","decode$a","offset$1","encode$9","decode$9","minute","encode$8","decode$8","hour","encode$7","tzOffsetMs","decode$7","weekday","dateMs","sunday","monday","tuesday","wednesday","thursday","friday","saturday","encode$6","decode$6","encode$5","decode$5","setMonth","encode$4","decode$4","utcMinute","encode$3","decode$3","utcHour","encode$2","decode$2","setUTCDate","getUTCDate","utcDay","encode$1","getUTCMonth","decode$1","UTC","utcMonth","setUTCMonth","utcYear","MOBILE","isDesktop","HdpiCanvas","domLayer","_f","_g","_h","overrideDevicePixelRatio","_container","_pixelRatio","NaN","_width","_height","imageSource","canvas","setPixelRatio","enumerable","configurable","clearRect","resetTransform","restore","toImage","img","getDataURL","toDataURL","fileFormat","dataUrl","ratio","pixelRatio","devicePixelRatio","overrideScale","imageRendering","_textMeasuringContext","_svgText","svg","visibility","svgText","_has","textMetrics","textMeasuringContext","measureText","actualBoundingBoxDescent","getTransform","textBaseline","textAlign","getTextSize","metrics","actualBoundingBoxAscent","measureSvgText","textSizeCache","fontCache","size_1","bbox","getBBox","$save","$restore","$setTransform","verifyDepthZero","name_1","__assign$v","__assign","__read$N","__read","ar","BBox","containsPoint","collidesBBox","isInfinite","shrink","grow","paddingCopy","boxes","box","__read$M","__spreadArray$u","__spreadArray","il","Matrix","setElements","AxB","B","multiplySelf","preMultiplySelf","inverse","rD","inverseTo","invertSelf","transformPoint","transformBBox","xx","xy","yx","yy","h_w","h_h","toContext","flyweight","sourceMatrix","updateTransformMatrix","matrix","scalingX","scalingY","translationX","translationY","bbcx","bbcy","sx","sy","scx","scy","scalingCenterX","scalingCenterY","cos","sin","rcx","rcy","rotationCenterX","rotationCenterY","ty","tx4","ty4","fromContext","domMatrix","ID_MAP","resetIds","createId$1","RedrawType","functionConstructorAvailable","STRING_FUNCTION_USEABLE","SceneChangeDetection","changeCb","convertor","privateKey","prepareFastGetSet","prepareSlowGetSet","TRIVIAL","checkDirtyOnAssignment","setterJs","getterJs","markDirty","markDirtyTransform","_dirtyPath","_dirtyFont","_dirty","getter","ChangeDetectable","MAJOR","_source","markClean","_opts","isDirty","__extends$14","__values$E","__values","__read$L","__spreadArray$t","PointerEvents","zIndexChangedCallback","dirtyZIndex","zIndexChanged","isVirtual","serialNumber","_nextSerialNumber","isContainerNode","_virtualChildren","_children","childSet","inverseMatrix","dirtyTransform","zIndexSubOrder","All","_datum","datum","_setLayerManager","e_1","e_2","_layerManager","_debug","e_1_1","return","e_2_1","e_3","e_3_1","hasVirtualChildren","e_4","nodes_1","nodes_1_1","layerManager","e_4_1","calculateCumulativeMatrix","computeTransformMatrix","inverseTransformPoint","inverseTransformBBox","_x","_y","pickNode","computeTransformedBBox","hit","findNodes","e_5","childResult","e_5_1","computeBBox","renderCtx","stats","nodesRendered","clearBBox","parentType","e_6","e_7","e_6_1","_j","e_7_1","visibilityChanged","e_8","e_9","dirtyCount","visibleCount","countChild","nodeCount","childCount","childVisibleCount","childDirtyCount","e_8_1","e_9_1","ascendingStringNumberUndefined","compoundAscending","toLiteral","doOnceFlags$1","doOnce$1","__read$K","__spreadArray$s","logContent","errorOnce","__extends$13","__assign$u","__values$D","__read$J","__spreadArray$r","lastBBox","layer","moveLayer","isLayer","scene","removeLayer","getComputedOpacity","getVisibility","addLayer","MINOR","_k","_l","consoleLog","_m","clipRect","forceRender","clipBBox","resized","canvasCtxTransform","isChildDirty","isChildLayerDirty","children_1","children_1_1","currentBBox","counts","layersSkipped","nodesSkipped","groupVisible","ctxTransform","clipCtx","globalAlpha","renderContextChanged","childRenderContext","skipped","children_2","children_2_1","_o","virtualChildren","_p","layersRendered","beginPath","moveTo","lineTo","closePath","clip","setClipRectInGroupCoordinateSpace","HdpiOffscreenCanvas","OffscreenCanvas","transferToImageBitmap","isSupported","windowValue","WINDOW","SceneDebugLevel","__assign$t","__awaiter$g","__awaiter","_arguments","P","generator","adopt","fulfilled","rejected","__generator$g","__generator","sent","trys","ops","verb","__read$I","__spreadArray$q","__values$C","buildSceneNodeHighlight","Scene","layers","_nextZIndex","_nextLayerId","dirtyTree","renderBoundingBoxes","SUMMARY","sceneNodeHighlight","DETAILED","pendingSize","lessThanZero","nan","layeredModes","advLayer","newLayer","sortLayers","domCanvases","newLayerIndex","lastLayer","newZIndex","newZIndexSubOrder","strip","layers_1","layers_1_1","debugSplitTimes","extraDebugStats","canvasCleared","redrawType","buildTree","debugStats","debugNodes","buildDirtyTree","drawImage","debugSceneNodeHighlight","renderCtxStats","pct","rendered","time_1","splits","statsSize","fillStyle","fillRect","statsSize_1","statsSize_1_1","stat","fillText","regexpPredicate","stringPredicate","sceneNodeHighlight_1","sceneNodeHighlight_1_1","strokeStyle","lineWidth","strokeRect","strokeText","virtualParentDirty","virtualParent","childTree","treeNodeName","selectedKey","childrenDirtyTree","Gradient","stops","twoPi","PI","normalizeAngle360","radians","normalizeAngle360Inclusive","normalizeAngle180","toRadians$1","degrees","toDegrees","__extends$12","LinearGradient","angle","createGradient","angleOffset","sqrt","diagonalAngle","atan2","quarteredAngle","gradient_1","createLinearGradient","addColorStop","__extends$11","LINEAR_GRADIENT_REGEXP","Shape","lastInstanceId","fillOpacity","strokeOpacity","defaultStyles","stroke","strokeWidth","lineDash","lineDashOffset","lineCap","lineJoin","fillShadow","shape","_setParent","restoreOwnStyles","restoreAllStyles","restoreOverriddenStyles","protoStyles","updateGradient","linearGradientMatch","colors_1","colorsPart","colorRegex","gradient","align","alignedStart","fillStroke","renderFill","renderStroke","applyFillAlpha","applyShadow","shadowColor","shadowOffsetX","xOffset","shadowOffsetY","yOffset","shadowBlur","blur","setLineDash","isPointInPath","__extends$10","__values$B","ellipsis","SceneFontChangeDetection","Text","lines","fontFamily","_setLines","splitText","_font","getFont","getPreciseBBox","getApproximateBBox","getLineHeight","fontBoundingBoxAscent","emHeightAscent","fontBoundingBoxDescent","emHeightDescent","renderLines","renderCallback","lineHeights","getVerticalOffset","textProps","wrapping","measurer","createTextMeasurer","truncateLine","cumulativeHeight","lines_1","lines_1_1","wrappedLine","wrapLine","truncated","initialSize","wrapResult","wrapLineSequentially","wordsBrokenOrTruncated","linesTruncated","linesCount","balanced","wrapLineBalanced","wrappedText","ln","breakWord","firstLineWidth","hyphens","isPunctuationAt","punctuationMarks","breaks","partWidth","breaks_1","breaks_1_1","forceEllipsis","ellipsisWidth","trunc","truncWidth","defaultLineHeightRatio","hyphenate","spaceWidth","currentLine","addNewLine","expectedHeight","wordWidth","expectedSpaceWidth","expectedLineWidth","availWidth","breakLoop","totalWordsWidth","totalSpaceWidth","averageLineWidth","newLine","words_1","words_1_1","setFont","fontStyle","fontWeight","setAlign","getLineWidth","fontProps","baselineDistance","actualBoundingBoxLeft","firstLineHeight","lineSize","allEventListeners","eventListeners","hasEventListener","clearEventListeners","isString$2","isStringObject$1","isDate$1","isDiscrete","isContinuous","isNumberObject","isNumber$4","checkDatum","isContinuousScale","__read$H","validColorString","parseHex","stringToRgba","nameToHex","fromHexString","fromRgbaString","tryParseFromString","fromArray","po","pc","rgba","fromHSB","alpha","HSBtoRGB","padHex","toHexString","toRgbaString","fractionDigits","toHSB","RGBtoHSB","S","H","rc","gc","bc","derive","hueShift","saturationFactor","brightnessFactor","opacityFactor","hsb","brighter","darker","c0","c1","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","transparent","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","__values$A","BREAK_TRANSFORM_CHAIN","CONFIG_KEY","initialiseConfig","propertyKeyOrSymbol","valueStoreKey","setters","getters","prevSet","prevGet","transformFn","setters_1","setters_1_1","addTransformToInstanceProperty","Validate","cleanKey","targetClass","targetClassName","predicateWithMessage","OPTIONAL","ARRAY","OPT_ARRAY","AND","predicates","OR","isComparable","otherField","FUNCTION","OPT_FUNCTION","BOOLEAN","OPT_BOOLEAN","STRING","OPT_STRING","DATE","OPT_DATE","DATETIME_MS","NUMBER","OPT_DATETIME_MS","OPT_DATE_OR_DATETIME_MS","colorMessage","COLOR_STRING","OPT_COLOR_STRING","COLOR_STRING_ARRAY","OPT_COLOR_STRING_ARRAY","OPT_NUMBER","NUMBER_OR_NAN","NUMBER_ARRAY","OPT_NUMBER_ARRAY","STRING_ARRAY","STRING_UNION","BOOLEAN_ARRAY","FONT_WEIGHTS","FONT_STYLE","OPT_FONT_STYLE","FONT_WEIGHT","OPT_FONT_WEIGHT","LINE_DASH","OPT_LINE_DASH","LINE_CAPS","LINE_CAP","LINE_JOINS","LINE_JOIN","POSITIONS","POSITION","INTERACTION_RANGES","INTERACTION_RANGE","TEXT_WRAPS","TEXT_WRAP","Layers","ChartAxisDirection","DataDomain","continuousDomain","discreteDomain","getDomain","__values$z","extendDomain","domain","values_1","values_1_1","__assign$s","__read$G","__values$y","__spreadArray$p","toKeyString","accuracy","fixNumericExtent","extent","INVALID_VALUE","DataModel","props_1","props_1_1","dataVisible","aggregates","groupProcessors","propertyProcessors","reducers","processors","verifyMatchGroupId","matchGroupIds","_loop_1","matchGroupId","verifyMatchScopes","matchScopes","_loop_2","matchScope","scopes","verifyMatchIds","matchIds","_loop_3","matchId","resolveProcessedDataIndexById","scope","searchId","resolveProcessedDataDefById","resolveProcessedDataIndicesById","resolveProcessedDataDefsById","allDefs","allDefs_1","allDefs_1_1","processedData","domainProp","firstMatch","processData","e_10","groupByKeys","groupByFn","extractData","postProcessGroups","aggregateData","postProcessProperties","reduceData","postProcessData","e_10_1","DEBUG","logProcessedData","valueGroupIdxLookup","valueIdxLookup","noScopesToMatch","scopeMatch","compareTo","anyScope","noScopes","e_11","e_12","e_13","e_14","keyDefs","valueDefs","initDataDomainProcessor","dataDomain","allScopesHaveSameDefs","resultData","resultDataIdx","partialValidDataCount","data_1","data_1_1","validScopes","keyIdx","keyDefs_1","keyDefs_1_1","e_12_1","valueIdx","valueDefs_1","valueDefs_1_1","e_14_1","e_13_1","e_11_1","propertyDomain","groupingFn","e_15","e_16","dataEntry","groupStr","existingData","_loop_4","e_15_1","resultGroups","dataIndex","e_16_1","e_17","aggDefs","resultAggValues","resultAggValueIndices","resultAggFns","aggregateFunction","resultGroupAggFns","groupAggregateFunction","resultFinalFns","finalFunction","_loop_5","e_18","e_19","aggValues","resultIdx","resultAggValueIndices_1","resultAggValueIndices_1_1","indices","scopeValid","groupAggValues","_loop_6","distinctValues","valuesToAgg","valuesAgg","e_19_1","finalValues","e_18_1","e_17_1","e_20","e_21","e_22","e_23","e_24","e_25","affectedIndices","updatedDomains","groupProcessorIndices","groupProcessorInitFns","groupProcessors_1","groupProcessors_1_1","processor","adjust","indices_1","indices_1_1","valueDef","e_21_1","e_20_1","updateDomains","e_26","affectedIndices_1","affectedIndices_1_1","valueIndex","e_26_1","_loop_7","e_27","_s","valueIndexes","adjustFn","_t","_u","e_27_1","groupProcessors_2","groupProcessors_2_1","e_23_1","_q","e_24_1","e_22_1","updatedDomains_1","updatedDomains_1_1","_r","e_25_1","e_28","propertyProcessors_1","propertyProcessors_1_1","e_28_1","e_29","reducerDefs","reducer","accValues","_loop_8","e_30","reducerIndex","reducers_1","reducers_1_1","e_30_1","e_29_1","accIdx","reduced","e_31","processorDefs","processorDefs_1","processorDefs_1_1","calculate","e_31_1","e_32","e_33","valueDefs_2","valueDefs_2_1","e_33_1","e_32_1","scopesCount","processorFns","initDataDomainKey","updateDataDomain","initDataDomain","accessors","buildAccessors","previousDatum","hasAccessor","valueInDatum","missingValue","missingValueDef","validation","invalidValue","e_34","defs_1","defs_1_1","isPath","fnBody","e_34_1","flattenedValues","skipKeys","skipAggValues","createDeprecationWarning","Deprecated","default","DeprecatedAndRenamedTo","newPropName","mapValue","warnDeprecated","__values$x","DEFAULT_TOOLTIP_CLASS","defaultTooltipCss$1","toTooltipHtml$1","backgroundColor","titleHtml","POSITION_TYPES","POSITION_TYPE","TooltipPosition","Tooltip","canvasElement","enableInteraction","showArrow","lastClass","showTimeout","_showArrow","tooltipRoot","IntersectionObserver","entries_1","entries_1_1","intersectionRatio","tooltipDocuments","styleElement","unobserve","updateClass","newClass","wasVisible","toggleClass","instantly","actual","canvasRect","naiveLeft","naiveTop","windowBounds","getWindowBoundingBox","maxLeft","maxTop","constrained","defaultShowArrow","updateShowArrow","innerWidth","pointerLeftOntoTooltip","sourceEvent","classListContains","__values$w","sumValues","groupSum","groupCount","groupAverage","area","aggFn","keyRange","keyWidth","accumulatedValue","memorizedFns","memo","fnGenerator","serialisedParams","__read$F","__spreadArray$o","__values$v","SMALLEST_KEY_INTERVAL","prevX","smallestSoFar","nextX","SORT_DOMAIN_GROUPS","normaliseFnBuilder","normaliseTo","normalise","valuesExtent","valueIndexes_1","valueIndexes_1_1","valIdx","valueIndexes_2","valueIndexes_2_1","normaliseGroupTo","normalisePropertyFnBuilder","rangeMin","rangeMax","normaliseSpan","pData","pIdx","groupValues","groupValues_1","groupValues_1_1","normalisePropertyTo","buildGroupAccFn","valueIndexes_3","valueIndexes_3_1","buildGroupWindowAccFn","lastValues","valueIndexes_4","valueIndexes_4_1","sumValue","accumulateGroup","modeParam","previousData","updateMovedDatums","removed","prevId","datumId","arraysEqual","ProxyPropertyOnWrite","childProperty","ActionOnSet","newValueFn","oldValueFn","changeValueFn","changeValue","__extends$$","__assign$r","__rest$5","__values$u","__read$E","__spreadArray$n","SeriesNodePickMode","basicContinuousCheckDatumValidation","basicDiscreteCheckDatumValidation","keyProperty","continuous","valueProperty","rangedValueProperty","defOpts","accumulativeValueProperty","groupAccumulativeValueProperty","SeriesNodeBaseClickEvent","nativeEvent","series","seriesId","SeriesNodeClickEvent","SeriesNodeDoubleClickEvent","SeriesItemHighlightStyle","SeriesHighlightStyle","dimOpacity","TextHighlightStyle","HighlightStyle","SeriesTooltip","interaction","SeriesTooltipInteraction","Series","seriesOpts","rootGroup","axes","directions","nodeDataRefresh","_data","_visible","showInLegend","nodeClickRange","seriesGrouping","_declarationOrder","highlightStyle","moduleCtx","useLabelLayer","pickModes","NEAREST_BY_MAIN_AXIS_FIRST","directionKeys","directionNames","contentGroupVirtual","contentGroup","SERIES_LAYER_ZINDEX","getGroupZIndexSubOrder","highlightGroup","highlightNode","highlightLabel","labelGroup","SERIES_LABEL_ZINDEX","hasData","visibleChanged","onSeriesGroupingChange","seriesStateManager","deregisterSeries","registerSeries","seriesLayerManager","changeGroup","oldGrouping","getBandScalePadding","inner","subIndex","mainAdjust","main","addChartEventListeners","releaseGroup","getDirectionValues","resolvedDirection","resolveKeyDirection","array_1","array_1_1","addValue","getKeys","getNames","markNodeDataDirty","getOpacity","defaultOpacity","isItemIdHighlighted","getStrokeWidth","defaultStrokeWidth","highlightedDatum","highlightManager","getActiveHighlight","itemId","highlighting","limitPickModes","pickModes_1","pickModes_1_1","pickMode","EXACT_SHAPE_MATCH","pickNodeExactShape","NEAREST_BY_MAIN_CATEGORY_AXIS_FIRST","pickNodeMainAxisFirst","NEAREST_NODE","pickNodeClosestDatum","distance","_point","_requireCategoryAxis","fireNodeClickEvent","eventObject","getNodeClickEvent","fireNodeDoubleClickEvent","getNodeDoubleClickEvent","toggleSeriesItem","_itemId","axis","fixedExtent","calculatePadding","paddingMin","paddingMax","highlightedZIndex","oldVal","Padding$1","Padding","__values$t","SizeMonitor","NativeResizeObserver","contentRect","checkSize","checkClientSize","pollerHandler","circleRectOverlap","edgeX","edgeY","dx","dy","rectRectOverlap","r1","x2","y2","w2","h2","xOverlap","yOverlap","rectContainsRect","r2x","r2y","r2w","r2h","isPointLabelDatum","placeLabels","bounds","labels","withinBounds","overlapPoints","overlapLabels","axisLabelsOverlap","overlap","state_1","__awaiter$f","__generator$f","debouncedAnimationFrame","buildScheduler","_delayMs","debouncedCallback","delayMs","scheduleFn","scheduleCount","promiseRunning","awaitingPromise","awaitingDone","busy","scheduleCb","maybePromise","await","sleep","sleepTimeoutMs","Overlay","justifyContent","ChartOverlays","noData","__assign$q","__read$D","__spreadArray$m","__values$s","jsonDiff","sourceType","classify","targetType","targetArray","targetElement","allProps","propsChangedCount","lhsType","rhsType","allProps_1","allProps_1_1","NOT_SPECIFIED","jsonMerge","json","avoidDeepClone","jsonTypes","finalValue","nextProp","jsonApply","matcherPath","constructors","constructedArrays","allowedTypes","targetAny","propertyMatcherPath","propertyPath","ctr","currentValueType","newValueType","allowableTypes","newValueArray","jsonWalk","visit","jsons","jsonType","otherValues","__values$r","__read$C","__spreadArray$l","Listeners","registeredListeners","addListener","dispatch","listeners_1","listeners_1_1","cancellableDispatch","cancelled","listeners_2","listeners_2_1","reduceDispatch","reduceFn","listenerResult","listeners_3","listeners_3_1","listenerSymbol","BaseManager","interpolateColor","interpolate$1","createEase","interp","linear","easeOut","__assign$p","RepeatType","autoplay","ease","repeatMax","repeatType","Loop","onComplete","onPlay","onRepeat","onStop","onUpdate","delayElapsed","elapsed","iteration","isForward","isComplete","isPlaying","driverControls","Reverse","tween","handleUpdate","animateOpts","animationControls","__extends$_","__assign$o","__rest$4","__values$q","__read$B","AnimationManager","interactionManager","throttles","throttleGroups","updaters","readyToPlay","skipAnimations","startAnimationCycle","cancelAnimationFrame","disableInteractions","optsExtra","createDriver","animateMany","playBatch","stopBatch","updateBatch","completeBatch","inner_id","animateWithThrottle","throttleId","animateManyWithThrottle","throttleGroup","isThrottled","inGroup","requestId","resume","frame","lastTime","deltaMs","updaterCount","__read$A","CursorManager","updateCursor","callerId","styleToApply","__extends$Z","ChartEventManager","legendItemClick","legendItemName","legendItemDoubleClick","numVisibleItems","axisHover","axisId","__extends$Y","__read$z","isEqual$1","HighlightManager","activeHighlight","updateHighlight","previousHighlight","highlightToApply","event_1","currentHighlight","__extends$X","__assign$n","__awaiter$e","__generator$e","__values$p","WINDOW_EVENT_HANDLERS","EVENT_HANDLERS","CSS","InteractionManager","processEvent","mouseDown","touchDown","pausers","EVENT_HANDLERS_1","EVENT_HANDLERS_1_1","WINDOW_EVENT_HANDLERS_1","WINDOW_EVENT_HANDLERS_1_1","interactionDocuments","WINDOW_EVENT_HANDLERS_2","WINDOW_EVENT_HANDLERS_2_1","EVENT_HANDLERS_2","EVENT_HANDLERS_2_1","decideInteractionEventTypes","coords","this_1","types_1","types_1_1","calculateCoordinates","interactionEvent","buildEvent","dragStartElement","isEventOverElement","mouseButtonDown","pageX","pageY","fixOffsets","TouchEvent","lastTouch","NULL_COORDS","PageTransitionEvent","persisted","offsetDragStart","offsetEvent","pageRect","builtEvent","consume","__values$o","__read$y","TooltipManager","exclusiveAreas","destroyFns","hoverRef","checkExclusiveRects","updateTooltip","updateExclusiveRect","getTooltipMeta","destroyFn","newAppliedExclusiveArea","entryId","appliedExclusiveArea","contentToApply","metaToApply","appliedState","renderInstantly","__extends$W","__assign$m","__values$n","__read$x","ZoomManager","updateAxes","removedAxes","AxisZoomManager","initialZoom","updateZoom","newZoom","getDirection","updateAxisZoom","getZoom","getAxisZoom","getAxisZooms","zoom","currentZoom","prevZoom","__assign$l","isLayoutStage","isLayoutComplete","LayoutService","layoutProcessors","dispatchPerformLayout","stage","shrinkRect","dispatchLayoutComplete","DataService","getSeries","ChartUpdateType","UpdateService","updateCallback","FULL","forceNodeDataRefresh","ChartHighlight","__values$m","__read$w","Selection","classOrFactory","garbageCollection","_nodes","_datumNodeIndices","_garbage","_garbageCollection","_factory","isPrototypeOf","getDatumId","old","datumIds","nodeIndex","datumIndex","datumNodeIndices","nodeIndexDatums","datumNodeIndices_1","datumNodeIndices_1_1","selectByClass","Class","selectByTag","linearRoot","quadraticRoots","t1","t2","cubicRoots","Q","R","T","Im","t_1","theta","acos","thirdA","twoSqrtQ","t3","__values$l","segmentIntersection","ax1","ay1","ax2","ay2","bx1","by1","bx2","by2","ua","ub","cubicSegmentIntersections","px1","py1","px2","py2","px3","py3","px4","py4","x1","y1","intersections","bx","bezierCoefficients","by","roots_1","roots_1_1","tt","ttt","P1","P2","P3","P4","arcIntersections","startAngle","endAngle","counterClockwise","y0","i1x","i2x","isXInsideLine","a1","a2","intersectionAngle","__values$k","Command","Path2D","previousCommands","previousParams","previousClosedPath","_closedPath","draw","commands_1","commands_1_1","Move","Line","Curve","bezierCurveTo","Arc","arc","ClosePath","sAngle","eAngle","antiClockwise","endX","endY","cubicCurveTo","cx1","cy1","cx2","cy2","trackChanges","cn","ox","oy","py","intersectionCount","pi","__extends$V","ScenePathChangeDetection","Path","checkPathDirty","dirtyPath","closedPath","isDirtyPath","updatePath","clipPath","clipMode","__extends$U","__values$j","Marker","half","applyPath","moves","moves_1","moves_1_1","mx","my","__extends$T","Square","hs","__extends$S","MarkerLabel","_marker","_markerSize","_spacing","markerSize","spacing","__extends$R","Circle","__extends$Q","Cross","__extends$P","Diamond","__extends$O","Heart","rad","degree","__extends$N","Plus","__extends$M","Triangle","getMarker$1","__values$i","bboxes","itemPaddingY","itemPaddingX","forceResult","secondary","processedBBoxCount","rawPages","unprocessedBBoxes","processBBoxes","pageIndices","buildPages","minGuess","startingGuess","estimateStartingGuess","guess","calculatePage","primaryCount","sumSecondary","currentMaxSecondary","currentPrimaryIndices","maxPrimaryValues","bboxIndex","primaryValueIdx","primaryValue","currentSecondaryDimension","returnResult","sumPrimary","maxPageWidth","maxPageHeight","pages","transpose","colIndices","colBBoxes","columnHeight","pageWidth","pageHeight","innerData","dataIdx","itemIdx","primarySum","PaginationLabel","PaginationMarkerStyle","PaginationMarker","_shape","onMarkerShapeChange","Pagination","chartUpdateCallback","pageUpdateCallback","cursorManager","labelNode","activeStyle","inactiveStyle","previousButtonDisabled","_orientation","_nextButton","_previousButton","nextButton","previousButton","onPaginationClick","onPaginationMouseMove","updateMarkers","updateGroupVisibility","updateLabel","updatePositions","updateLabelPosition","updateNextButtonPosition","markerPadding","labelBBox","highlightActive","buttonStyle","updateMarker","onFirstPage","nextButtonContainsPoint","previousButtonContainsPoint","incrementPage","decrementPage","SCENE_RENDER","attachPagination","__read$v","__spreadArray$k","__values$h","ORIENTATIONS","OPT_ORIENTATION","LegendLabel","LegendMarker","LegendItem","paddingX","paddingY","toggleSeriesVisible","LegendListeners","Legend","LEGEND_ZINDEX","itemSelection","oldSize","maxPageSize","paginationTrackingIndex","truncatedItems","reverseOrder","characterWidths","updateService","updatePageNumber","interactionListeners","checkLegendClick","checkLegendDoubleClick","handleLegendMouseMove","layoutListeners","layoutService","positionLegend","detachLegend","getOrientation","getCharacterWidths","cw","attachLegend","getItemLabel","callbackCache","performLayout","markerShape","itemMaxWidthPercentage","maxItemWidth","paddedMarkerWidth","markerLabel","labelText","updatePagination","maxCharLength","textChars","addEllipsis","truncatedText","cumulativeWidth","textChars_1","textChars_1_1","trackingIndex","calculatePagination","paginationBBox","paginationVertical","newCurrentPage","paginationComponentPadding","legendItemsWidth","legendItemsHeight","paginationX","paginationY","lastPassPaginationBBox","stableOutput","layout","visibleStart","visibleEnd","columnCount","itemHeight","rowSumColumnWidths","pageIndex","markerFill","markerStroke","markerStrokeWidth","markerFillOpacity","markerStrokeOpacity","getDatumForPoint","visibleChildBBoxes","closestLeftTop","childBBox","distX","distY","toTheLeftTop","pageBBox","computePagedBBox","actualBBox","dataService","legendBBox","pointerInsideLegend","chartSeries","newEnabled","chartEventManager","PROCESS_DATA","legendData","ls","getLegendData","legendType","numVisibleItems_1","clickedItem","tooltipManager","pointerOverLegendDatum","newShrinkRect","calculateLegendDimensions","legendWidth","legendHeight","calculateTranslationPerpendicularDimension","legendPadding","legendPositionedBBox","aspectRatio","maxCoefficient","minHeightCoefficient","minWidthCoefficient","heightCoefficient","widthCoefficient","LEGEND_FACTORIES","category","registerLegend","getLegend","__read$u","__spreadArray$j","CallbackCache","paramCache","invalidateCache","__assign$k","__awaiter$d","__generator$d","__values$g","__read$t","__spreadArray$i","DataController","requested","resultCb","merged","merged_1","merged_1_1","resultCbs","rejects","mergeRequested","dataModel_1","processedData_1","dataModel","splitResult","groupMatch","gr","propMatch","mergeOpts","__read$s","__spreadArray$h","SeriesStateManager","getVisiblePeerGroupIndex","visibleGroupCount","visibleGroups","groupIndex","__values$f","SeriesLayerManager","requestGroup","seriesConfig","seriesRootGroup","seriesIds","layerState","leadSeriesConfig","__extends$L","__assign$j","__awaiter$c","__generator$c","__read$r","__values$e","__spreadArray$g","Chart","resources","processedOptions","userOptions","queuedUserOptions","seriesRoot","seriesAreaPadding","subtitle","footnote","legendModules","_pendingFactoryUpdates","_performUpdateNoRenderCount","_performUpdateType","seriesToUpdate","performUpdateTrigger","error_1","performUpdate","_lastPerformUpdateError","_axes","_series","applyLegendOptions","lastInteractionEvent","pointerScheduler","handlePointer","onSeriesNodeClick","seriesNodeClickEvent","onSeriesNodeDoubleClick","seriesNodeDoubleClick","axisGroup","AXIS_ZINDEX","zoomManager","animationManager","overlays","_lastAutoSize","autoWidth","authHeight","positionPadding","positionCaptions","onDoubleClick","onLeave","disablePointer","changeHighlightDatum","getOptions","lastUpdateOptions","autoSizeChanged","optionsKey","moduleInstance","instanceConstructor","getModuleContext","removeModule","isModuleEnabled","keepTransferableResources","legend","removeAllSeries","highlightOnly","requestFactoryUpdate","_processCallbacks","updatePending","awaitUpdateCompletion","seriesToUpdate_1","seriesToUpdate_1_1","performUpdateType","seriesRect_1","seriesUpdates","tooltipMeta","PERFORM_LAYOUT","SERIES_UPDATE","TOOLTIP_RECALCULATION","checkFirstAutoSize","handleOverlays","seriesRect","durationMs","backOffMs","detachAxis","linkedTo","attachAxis","addSeries","allSeries","canAdd","initSeries","addSeriesListeners","updateAllSeriesListeners","assignSeriesToAxes","boundSeries","seriesAxis","assignAxesToSeries","directionToAxesMap","directionAxes","seriesKeys","newAxis","findMatchingAxis","directionAxes_1","directionAxes_1_1","axisKeys","directionKeys_1","directionKeys_1_1","directionKey","dataController","seriesPromises","updateLegend","visibleSeries","labelData","getLabelData","setLegendInit","initLegend","validateLegendData","labelMarkerFills","seriesType","updateCaption","caption","defaultCaptionHeight","captionLineHeight","computeTextWrap","positionTopAndShrinkBBox","baseY","bboxHeight","positionBottomAndShrinkBBox","getSeriesRect","pickSeriesNode","exactMatchOnly","maxDistance","reverseSeries","reverseSeries_1","reverseSeries_1_1","lastPick","hoverRect","handlePointerTooltip","handlePointerNode","pixelRange","isNewDatum","getTooltipHtml","isPixelRange","exactlyMatched","rangeMatched","shouldUpdateTooltip","mergePointerDatum","checkSeriesNodeRange","checkSeriesNodeClick","checkSeriesNodeDoubleClick","nearestNode","nodeMidPoint","scrollX","newSeries","newDatum","lastSeries","lastDatum","updateAll","waitForUpdate","timeoutMs","handleNoDataOverlay","shouldDisplayNoDataOverlay","__read$q","BandScale$5","BandScale","cacheProps","ordinalRange","_domain","_bandwidth","_rawBandwidth","_paddingInner","_paddingOuter","didChange","ticks","paddingInner","paddingOuter","r0","rawStep","fullBandWidth","x0","bw","bandwidth","rawBandwidth","__extends$K","Caption","PADDING","containerWidth","areArrayNumbersEqual","arrA","arrB","__read$p","ContinuousScale","nice","defaultTickCount","minTickCount","maxTickCount","niceDomain","strictClampByDefault","transformInvert","fromDomain","strict","isReversed","rMin","rMax","toDomain","isDenseInterval","availableRange","defaultMaxTickCount","__extends$J","minCount","tickStep","NumericTicks","tickMultipliers","power","log10","isWithinBounds","diffCount","singleTickDomain","countDigits","expNo","fractionalDigits","toExponential","CONSTANTS","periods","shortDays","shortMonths","dayOfYear","startOfYear","startOffset","timeDiff","timeOneDay","weekOfYear","startDay","startOfYearDay","firstWeekStartOffset","SUNDAY","MONDAY","isoWeekOfYear","firstOfYear","firstOfYearDay","firstThursdayOffset","unsignedOffset","FORMATTERS","I","L","U","W","PADS","padChar","buildFormatter","formatString","formatParts","nextEscapeIdx","literalPart","maybePadSpecifier","maybePad","maybeFormatterSpecifier","maybeFormatter","dateTime","dateTimeAsDate","__extends$I","__values$d","__read$o","__spreadArray$f","_a$3","DefaultTimeFormats","formatStrings","MILLISECOND","SECOND","MINUTE","HOUR","WEEK_DAY","SHORT_MONTH","MONTH","SHORT_YEAR","YEAR","TimeScale$1","TimeScale","week","tickIntervals","calculateDefaultTickFormat","defaultTimeFormat","updateFormat","ticks_1","ticks_1_1","getLowestGranularityFormat","firstTick","lastTick","startYear","stopYear","yearChange","buildFormatString","formatStringArray","timeEndIndex","weekDayIndex","defaultTickFormat","getTickInterval","countableTimeInterval","diff0","diff1","t0","getTicksForInterval","getDefaultTicks","ticks_2","absInterval","reversedInterval","timeInterval","tickInterval","stopDate","setMilliseconds","tickFormat","specifier","updateNiceDomain","maxAttempts","updateNiceDomainIteration","n0","n1","intervalRange","__read$n","__spreadArray$e","_a$2","optionalGroup","nonCapturingGroup","formatRegEx","zero","comma","tilde","surroundedRegEx","parseFormatter","surrounded","precisionIsNaN","formatBody","decimalTypes","integerTypes","formatterPrecision","removeTrailingZeros","insertSeparator","addSign","getSIPrefix","addPadding","absFloor","E","F","G","getSIPrefixPower","numString","integerChars","fractionalPart","siPrefixes","minSIPrefix","maxSIPrefix","signType","plusSign","padWidth","padLeft","padRight","__extends$H","__read$m","__spreadArray$d","LogScale","baseLog","basePow","updateLogFn","updatePowFn","log2","logBase_1","pow10","p0","p1","absDiff","isBaseInteger","isDiffLarge","ticks$1","isPositive","availableSpacing","lastTickPosition","nextMagnitudeTickPosition","tickPosition","prevSpacing","nextSpacing","fits","extent$4","normalisedExtent","Label$1","Label","calculateLabelRotation","parallelFlipRotation","regularFlipRotation","configuredRotation","parallelFlipFlag","regularFlipFlag","defaultRotation","parallel","getLabelSpacing","minSpacing","rotated","getTextBaseline","labelRotation","sideFlag","getTextAlign","labelAutoRotation","labelRotated","labelAutoRotated","alignFlag","calculateLabelBBox","labelX","labelY","labelMatrix","translatedBBox","Default","replaces","AxisLabel","autoWrap","autoRotate","autoRotateAngle","avoidCollisions","mirrored","getSideFlag","AxisLine","TICK_COUNT","OPT_TICK_COUNT","OPT_TICK_INTERVAL","AxisTick","StateMachine","currentStateConfig","destinationTransition","destinationState","destinationStateConfig","onExit","onEnter","__extends$G","__assign$i","__rest$3","__values$c","__read$l","__spreadArray$c","GRID_STYLE_KEYS","GRID_STYLE","Tags","TickGenerationType","AxisStateMachine","Axis","includeInvisibleDomains","lineNode","tickLineGroup","tickLabelGroup","crossLineGroup","gridGroup","gridLineGroup","AXIS_GRID_ZINDEX","tickLineGroupSelection","tickLabelGroupSelection","gridLineGroupSelection","createTick","translation","visibleRange","_titleCaption","_gridLength","gridStyle","gridPadding","maxThickness","_scale","refreshScale","axisHoverHandle","checkAxisHover","animationState","resetSelectionNodes","animateReadyUpdate","_crossLines","assignCrossLineArrayConstructor","crossLine","detachCrossLine","attachCrossLine","initCrossLine","crossLines","updateRange","rr","vr","clippedRange","setCrossLinesVisible","tolerance","inRangeEx","onLabelFormatChange","logScale","defaultLabelFormatter","labelFormatter","setDomain","tickValues","tickMin","tickMax","setTickInterval","setTickCount","isInAxis","primaryTickCount","tickId","calculateRotations","updateScale","updateLine","generateTicks","tickData","combinedRotation","ticksResult","updateSelections","calculateUpdateDiff","updateLabels","updateVisibility","updateGridLines","updateTickLines","updateTitle","anyTickVisible","updateCrossLines","updateLayoutState","calculateDomain","secondaryAxis","initialRotation","estimateTickCount","maxSpacing","maxIterations","rawTicks","labelCount","autoRotation","labelOverlap","terminate","tickStrategies","getTickStrategies","tickStrategies_1","tickStrategies_1_1","rotation_1","checkLabelOverlap","avoidLabelCollisions","filterTicks","strategies","tickGenerationType","VALUES","CREATE_SECONDARY","CREATE","tickGenerationStrategy","createTickData","tickFilterStrategy","autoWrapStrategy","wrapLabels","autoRotateStrategy","getAutoRotation","regenerateTicks","prevTicks","getTicks","previousTicks","shouldTerminate","createLabelData","labelSpacing","tickData_1","tickData_1_1","tickDatum","tickLabel","labelDatum","labelOveralap","updateSecondaryAxisTicks","createTicks","halfBandwidth","tickIdCounts","rawTick","formatTick","tickSpacing","keepEvery","calculateAvailableRange","defaultMinSpacing","defaultTickMinSpacing","requestedRange","requestedRangeMin","requestedRangeMax","visibleFn","anySeriesActive","isAnySeriesActive","domains","visibleSeries_1","visibleSeries_1_1","normaliseDataDomain","gridLength","_primaryTickCount","gridData","GridLine","TickLine","TickLabel","styleCount","labelsEnabled","userHidden","labelProps","defaultMaxLabelWidth","maxLabelWidth","defaultMaxLabelHeight","maxLabelHeight","wrappedTickLabel","identityFormatter","titleVisible","titleNode","titleRotationFlag","bboxYDimension","tickBBox","tickWidth","getTitleFormatterParams","formatDatum","clipTickLines","clipGrid","_max","getLayoutState","tickSize","createAxisContext","scaleValueFormatter","scaleBandwidth","scaleConvert","scaleInvert","axisContext","addedCount","removedCount","totalDuration","sectionDuration","animationGroup","animateSelectionNode","roundedTranslationY","resetFn","addedKeys","removedKeys","AxisTitle","__extends$F","DropShadow","__extends$E","__read$k","LinearScale$1","LinearScale","prev0","prev1","epsilon","fractionOrSignificantDigits","LN10","isPointInSector","sector","radius","innerRadius","outerRadius","lineCollidesSector","outerStart","outerEnd","innerStart","innerEnd","boxCollidesSector","__extends$D","Sector","centerX","centerY","fullPie","__extends$C","PolarSeries","computeLabelsBBox","_seriesRect","__extends$B","__assign$h","__awaiter$b","__generator$b","__read$j","__spreadArray$b","PieSeriesNodeBaseClickEvent","angleKey","calloutLabelKey","sectorLabelKey","radiusKey","PieSeriesNodeClickEvent","PieSeriesNodeDoubleClickEvent","PieNodeTag","PieSeriesCalloutLabel","minAngle","maxCollisionOffset","PieSeriesSectorLabel","positionOffset","positionRatio","PieSeriesCalloutLine","colors","PieSeriesTooltip","PieTitle","DoughnutInnerLabel","DoughnutInnerCircle","PieStateMachine","PieSeries","radiusScale","groupSelection","highlightSelection","nodeData","seriesItemEnabled","calloutLabel","sectorLabel","calloutLine","angleName","innerLabels","innerCircle","radiusName","radiusMin","radiusMax","calloutLabelName","sectorLabelName","legendItemKey","strokes","outerRadiusOffset","outerRadiusRatio","innerRadiusOffset","innerRadiusRatio","surroundingRadius","angleScale","backgroundGroup","SERIES_BACKGROUND_ZINDEX","pieCalloutLabels","pieSectorLabels","calloutLabelSelection","sectorLabelSelection","innerLabelsSelection","animateEmptyUpdateReady","animateReadyUpdateReady","processSeriesItemEnabled","onLegendItemClick","extraProps","maybeRefreshNodeData","_createNodeData","createNodeData","getProcessedDataIndexes","angleIdx","radiusIdx","calloutLabelIdx","sectorLabelIdx","legendItemIdx","currentStart","midAngle","angleValue","radiusValue","legendItemValue","getLabels","sectorFormat","getSectorFormat","midCos","midSin","skipDisabled","calloutLabelValue","sectorLabelValue","labelFormatterParams","getLabelFormatterParams","calloutLabelText","calloutLabelMinAngle","calloutLabelVisible","sectorLabelText","getTextAlignment","collisionTextAlign","collisionOffsetY","legendItem","quadrantTextOpts","midAngle180","quadrantStart","quadrantOffset","quadrant","quadrantIndex","seriesFillOpacity","isDatumHighlighted","highlightedStyle","getInnerRadius","getOuterRadius","updateRadiusScale","getTitleTranslationY","titleOffset","titleBox","updateTitleNodes","updateInnerCircleNodes","bboxIntersectsSurroundingSeries","updateNodeMidPoint","updateNodes","oldTitle","oldInnerCircle","innerCircleNode","circle","updateGroupSelection","Callout","updateSectorFn","updateInnerCircle","sectorParent","sectorGrandParent","updateCalloutLineNodes","updateCalloutLabelNodes","updateSectorLabelNodes","updateInnerLabelNodes","calloutLength","calloutStrokeWidth","calloutColors","isMoved","length_1","paddedLength","getLabelOverflow","seriesLeft","seriesRight","seriesTop","seriesBottom","errPx","visibleTextPart","hasVerticalOverflow","textLength","hasSurroundingSeriesOverflow","corners","sur2","corner","computeCalloutLabelCollisionOffsets","shouldSkip","fullData","leftLabels","rightLabels","topLabels","bottomLabels","tempTextNode","getTextBBox","labelRadius","avoidNeighbourYCollision","collidesOrBehind","avoidYCollisions","midLabel","midIndex","avoidXCollisions","labelsCollideLabelsByY","paddedBoxes","labelsCollideLabelsByX","sectors","labelsCollideSectors","displayText","textBoxes","titleCleanArea","hideWhenNecessary","isTooShort","isDoughnut","singleVisibleSector","isTextVisible","shouldPutTextInCenter","sectorBounds_1","circleRadius","antiAliasingPadding","textBBoxes","getMarginTop","getMarginBottom","labelsVisible","textBottoms","nodeDatum","tooltipRenderer","formattedAngleValue","titleText","labelParts","toggleOtherSeriesItems","datumToggledLegendItemValue","datumItemId","labelDuration","labelAnimationOptions","__assign$g","JSON_APPLY_PLUGINS","assignJsonApplyConstructedArray","ctor","JSON_APPLY_OPTIONS","getJsonApplyOptions","horizontalCrosslineTranslationDirections","xTranslationDirection","yTranslationDirection","inside","insideLeft","insideRight","insideTop","insideBottom","insideTopLeft","insideBottomLeft","insideTopRight","insideBottomRight","verticalCrossLineTranslationDirections","calculateLabelTranslation","yDirection","crossLineTranslationDirections","xTranslation","yTranslation","calculateLabelChartPadding","chartPadding","POSITION_TOP_COORDINATES","xEnd","yStart","yEnd","POSITION_LEFT_COORDINATES","xStart","POSITION_RIGHT_COORDINATES","POSITION_BOTTOM_COORDINATES","POSITION_INSIDE_COORDINATES","POSITION_TOP_LEFT_COORDINATES","POSITION_BOTTOM_LEFT_COORDINATES","POSITION_TOP_RIGHT_COORDINATES","POSITION_BOTTOM_RIGHT_COORDINATES","labeldDirectionHandling","__extends$A","__assign$f","Range","startLine","endLine","fillActive","strokeActive","__read$i","__spreadArray$a","CROSSLINE_LABEL_POSITIONS","OPT_CROSSLINE_LABEL_POSITION","OPT_CROSSLINE_TYPE","CartesianCrossLineLabel","CartesianCrossLine","LINE_LAYER_ZINDEX","crossLineRange","crossLineLabel","labelPoint","dataCreated","getZIndex","updateRangeNode","positionLabel","clippedRangeClamper","getRange","clampedYStart","clampedYEnd","validRange","computeLabelBBox","RANGE_LAYER_ZINDEX","labelPadding","crossLineLabelBBox","SERIES_CROSSLINE_LINE_ZINDEX","SERIES_CROSSLINE_RANGE_ZINDEX","__extends$z","__assign$e","CartesianAxis","thickness","updateDirection","__extends$y","__values$b","__read$h","__spreadArray$9","CategoryAxis","_paddingOverrideEnabled","groupPaddingInner","valuesSet","d_1","d_1_1","paddings","subtreeLeft","subtreeRight","leafCount","prelim","getLeftSibling","getLeftmostSibling","nextLeft","thread","nextRight","ticksToTree","insertTick","pathParts","lastPartIndex","pathPart","isNotLeaf","moveSubtree","wm","wp","subtrees","vim","defaultAncestor","executeShifts","apportion","vop","vip","vom","sip","sop","sim","som","firstWalk","defaultAncestor_1","midpoint","leftSibling","Dimensions","secondWalk","thirdWalk","treeLayout","TreeLayout","nonLeafNodes","shiftX","shiftY","flipX","xSteps","ySteps","existingSpacingX","desiredSpacingX","existingSpacingY","desiredSpacingY","screenDimensions","__extends$x","__read$g","__spreadArray$8","GroupedCategoryAxisLabel","GroupedCategoryAxis","tickScale","labelColor","gridLineSelection","axisLineSelection","separatorSelection","labelSelection","resizeTickTree","tickTreeLayout","isNumericX","domain_1","tickTree","tickScaleDomain","rangeStart","rangeEnd","treeLabels","isLabelTree","labelBBoxes","maxLeafLabelWidth","labelGrid","separatorData","minX","lineCount","styles_1","styleCount_1","__extends$w","__assign$d","__awaiter$a","__generator$a","__values$a","__read$f","CartesianChart","paired","_lastAxisWidths","_lastVisibility","clipSeries","seriesPaddedRect","hoverRectPadding","paddedRect","inputShrinkRect","axisWidths","liveAxisWidths","stableOutputs","otherAxisWidths","otherVisibility","otherW","ceilValues","records","lastPassAxisWidths","lastPassVisibility","updateAxesPass","clipRectPadding","lastPassSeriesRect","visited","newAxisWidths","primaryTickCounts","paddedBounds","applySeriesPadding","crossLinePadding","buildCrossLinePadding","axisBound","buildAxisBound","buildSeriesRect","calculateAxisDimensions","addInterAxisPadding","newClipSeries","axisThickness","axisOffset","positionAxis","reversedAxes","horizontalPadding","verticalPadding","clampToOutsideSeriesRect","dimension","clampBounds","axisLeftRightRange","paddedBoundsCoefficient","axisPadding","__extends$v","PolarAxis","__extends$u","__awaiter$9","__generator$9","__read$e","__spreadArray$7","__values$9","PolarChart","fullSeriesRect","computeSeriesRect","computeCircle","angleAxis","angles","gridAngles","seriesBox","polarSeries","polarAxes","setSeriesCircle","pieSeries","innerRadii","initialRadius","labelBoxes","labelBox","refined","refineCircle","labelsBox","minCircleRatio","circleLeft","circleTop","circleRight","circleBottom","padTop","padBottom","availCircleWidth","availCircleHeight","newRadius","minHorizontalRadius","minVerticalRadius","minRadius","padHeight","__extends$t","__awaiter$8","__generator$8","HierarchyChart","calculateNiceSecondaryAxis","calculateNiceStart","getTickStep","magnitude","stepPower","calculateNextNiceStep","__extends$s","__read$d","NumberAxisTick","NumberAxis","__extends$r","NON_ZERO_NUMBER","LogAxis","isInverted","crossesZero","hasZeroExtent","invalidDomain","__extends$q","TimeAxisTick","TimeAxis","datumFormat","datumFormatter","_min","_a$1","AXIS_CONSTRUCTORS","registerAxis","axisType","getAxis","axisConstructor","AXIS_TYPES","axesTypes","AXIS_THEME_TEMPLATES","registerAxisThemeTemplate","getAxisThemeTemplate","__extends$p","MARKER_SHAPES","MARKER_SHAPE","SeriesMarker","maxSize","__extends$o","__assign$c","__awaiter$7","__generator$7","__values$8","__read$c","DEFAULT_DIRECTION_KEYS","DEFAULT_DIRECTION_NAMES","CartesianSeriesNodeBaseClickEvent","xKey","yKey","CartesianSeriesNodeClickEvent","CartesianSeriesNodeDoubleClickEvent","CartesianStateMachine","CartesianSeries","useSeriesGroupLayer","_contextNodeData","nodeDataDependencies","hasMarkers","markerFactory","nodeFactory","highlightLabelSelection","subGroups","subGroupId","datumSelectionGarbageCollection","pathsPerSeries","hasHighlightedLabels","pathsZIndexSubOrderOffset","animateReadyHighlight","highlightMarkers","animateReadyHighlightMarkers","animateReadyResize","waiting","animateWaitingUpdateReady","onLegendItemDoubleClick","checkDomainXY","isContinuousX","isContinuousY","isValidDatum","checkRangeXY","xAxis","yAxis","seriesHighlighted","newNodeDataDependencies","seriesRectWidth","seriesRectHeight","datumSelections","datumSelection","markerSelections","markerSelection","contextData","labelSelections","anySeriesItemEnabled","updateHighlightSelection","isPathOrSelectionDirty","updateSeriesGroups","updateSeriesGroupSelections","seriesIdx","updateDatumSelection","updateLabelSelection","updateMarkerSelection","MarkerShape","contextNodeData","totalGroups","dataNodeGroup","markerGroup","paths_1","paths_1_1","pathOffset_1","superFn_1","subGroupOpacities","updateMarkerNodes","isHighlight","updateDatumNodes","updateLabelNodes","subGroupVisible","subGroupOpacity","paths_2","paths_2_1","labelItem","itemId_1","contextNodeData_1","contextNodeData_1_1","updateHighlightSelectionItem","isLabelEnabled","ld","updateHighlightSelectionLabel","hitPoint","minDistance","closestDatum","contextNodeData_2","contextNodeData_2_1","datumX","datumY","isInRange","requireCategoryAxis","primaryDirection","hitPointCoords","contextNodeData_3","contextNodeData_3_1","point_1","newMinDistance","matchedLegendItemName","totalVisibleItems","CartesianSeriesMarker","__read$b","interpolatePattern","formats","valueName","formatName","locales","toLocaleString","toDateString","sanitizeHtml","__extends$n","__assign$b","__awaiter$6","__generator$6","__read$a","__spreadArray$6","AreaSeriesLabel","AreaSeriesTooltip","AreaSeriesTag","AreaSeries","xName","normalizedTo","keyDef","yExtent","fixedYExtent","groupedData","xScale","yScale","continuousY","yStartIndex","yEndIndex","yRawIndex","yPreviousStartIndex","yPreviousEndIndex","yCumulativeIndex","createPathCoordinates","createMarkerCoordinate","labelSelectionData","markerSelectionData","strokeSelectionData","fillSelectionData","fillPoints","fillPhantomPoints","strokePoints","yValues","datumIdx","lastXDatum","xDatum","lastYEnd","prevYCoordinate","currYCoordinate","rawYDatum","currY","normalized","normalizedAndValid","datumGroup","datumArray","valuesArray","seriesDatum","yRawDatum","yPreviousStart","yPreviousEnd","yCumulative","validPoint","cumulativeValue","yValue","xValue","windowX","windowYStart","windowYEnd","prevCoordinates","nextCoordinates","seriesFill","seriesStroke","highlightedFill","highlightFillOpacity","highlightedStroke","highlightedDatumStrokeWidth","customMarker","labelEnabled","yName","markerFormatter","xString","yString","processedYValue","tooltipFormat","markerDuration","points_1","yValues_1","Stroke","allPoints","points_2","bottomPoints_1","reverseIndex","bottomY","animateFormatter","__extends$m","Rect","borderPath","crisp","lastUpdatePathStrokeWidth","effectiveStrokeWidth","microPixelEffectOpacity","pixelSize","lx","borderClipPath","ly","halfStrokeWidth","borderActive","__assign$a","__rest$2","__read$9","barAlongX","labelTextAlign","labelTextBaseline","updateRect","getRectConfig","isHighlighted","stackGroup","itemFill","itemStroke","itemStrokeWidth","checkCrisp","visibleMin","visibleMax","isZoomed","__extends$l","__awaiter$5","__generator$5","__read$8","__spreadArray$5","BAR_LABEL_PLACEMENTS","OPT_BAR_LABEL_PLACEMENT","BarSeriesNodeTag","BarSeriesLabel","BarSeriesTooltip","BarSeries","groupScale","smallestDataInterval","getBarDirection","normalizedToAbs","stackGroupName","stackGroupTrailingName","getCategoryAxis","getValueAxis","smallestX","categoryAxis","valueAxis","getCategoryDirection","scalePadding","keysExtent","calculateStep","smallestInterval","domainLength","intervals","maxBands","bands","xBandWidth","groupIdx","barWidth","xIndex","prevY","yRawValue","barX","labelFontStyle","labelFontWeight","labelFontSize","labelFontFamily","Bar","itemHighlightStyle","categoryAlongX","getDirectionStartingValues","startingX","startingY","contextX","contextWidth","contextY","contextHeight","resetSelectionRects","datumIdKey","addedIds","removedIds","rectThrottleGroup","labelThrottleGroup","isAdded","isRemoved","isColumnSeries","ColumnSeries","__extends$k","__awaiter$4","__generator$4","__read$7","__spreadArray$4","HISTOGRAM_AGGREGATIONS","HISTOGRAM_AGGREGATION","HistogramSeriesNodeTag","HistogramSeriesLabel","defaultBinCount","HistogramSeriesTooltip","HistogramSeries","areaPlot","bins","aggregation","binCount","calculatedBins","deriveBins","xDomain","binStarts","binSize_1","firstBinEnd","expandStartToBin","calculateNiceBins","startGuess","binSize","getBins","aggProp","dataSet","xExtent","nextBin","yDomain","xDomainMin","xDomainMax","negativeAgg","positiveAgg","frequency","xMinPx","xMaxPx","yZeroPx","yMaxPx","selectionDatumLabel","aggregatedValue","Bin","__extends$j","__assign$9","__awaiter$3","__generator$3","__read$6","LineSeriesLabel","LineSeriesTooltip","LineSeries","xDef","markerEnabled","xIdx","yIdx","prevXInRange","nextPoint","actualLength","yDatum","nextXDatum","xInRange","nextXInRange","lineStroke","contextDataIndex","linePath","nodeLengths","lineLength","segmentLength","remainingLength","resetMarkersAndPaths","ColorScale","parsedRange","isSmallRange","__extends$i","__assign$8","__awaiter$2","__generator$2","__read$5","__spreadArray$3","__values$7","ScatterSeriesLabel","ScatterSeriesNodeBaseClickEvent","sizeKey","ScatterSeriesNodeClickEvent","ScatterSeriesNodeDoubleClickEvent","ScatterSeriesTooltip","ScatterSeries","sizeScale","labelName","colorKey","colorName","colorDomain","colorRange","colorScale","sizeKeyIdx","processedSize","colorKeyIdx","dataDef","xDataIdx","yDataIdx","sizeDataIdx","colorDataIdx","labelDataIdx","sizeValue","placedLabels","placedNodeDatum","resetMarkers","__extends$h","HierarchySeries","__extends$g","__assign$7","__awaiter$1","__generator$1","__values$6","TreemapSeriesTooltip","TreemapSeriesNodeBaseClickEvent","TreemapSeriesNodeClickEvent","TreemapSeriesNodeDoubleClickEvent","TreemapSeriesLabel","TreemapSeriesTileLabel","TreemapValueLabel","TextNodeTag","tempText","validateColor","fallbackColor","TreemapTextHighlightStyle","TreemapHighlightStyle","TreemapSeries","large","medium","small","nodePadding","nodeGap","groupFill","groupStroke","groupStrokeWidth","tileStroke","tileStrokeWidth","rootName","highlightGroups","tileShadow","labelShadow","getNodePaddingTop","isLeaf","textSize","heightRatioThreshold","getNodePadding","squarify","outputNodesBoxes","targetTileAspectRatio","stackSum","minRatioDiff","partitionSum","innerBox","isVertical_1","partThickness","partLength","firstTileLength","stackThickness","start_1","width_1","height_1","childBox","applyGap","width_2","height_2","gap","getBounds","innerBounds","childBounds","sides","createTreeNodeDatum","colorScaleValue","childNodeDatum","dataRoot","nameLabel","valueLabel","Value","getTileFormat","highlightedFillOpacity","highlightedTextColor","labelMeta","highlightedSubtree","updateRectFn","updateLabelFn","buildLabelMeta","getHighlightedSubtree","fillColor","hAlign","vAlign","treeNodeDatum","wrappedRegExp","availTextWidth","availTextHeight","isBoxTooSmall","labelStyle","minSizeRatio","valueText","valueConfig","valueStyle","valueMargin","valueSize","pickStyle","availHeight","labelStyles","labelStyles_1","labelStyles_1_1","smallSize","labelSize","hasValueText","_direction","valueKey","TYPES","bar","histogram","scatter","treemap","pie","CHART_TYPES","isCartesian","isPolar","isHierarchy","seriesTypes","cartesianTypes","polarTypes","hierarchyTypes","registerChartSeriesType","chartType","registerChartDefaults","getChartDefaults","BUILT_IN_SERIES_FACTORIES","SERIES_FACTORIES","SERIES_DEFAULTS","SERIES_THEME_TEMPLATES","SERIES_PALETTE_FACTORIES","cstr","paletteFactory","addSeriesPaletteFactory","seriesConstructor","getSeriesDefaults","getSeriesThemeTemplate","getSeriesPaletteFactory","DEFAULT_CARTESIAN_CHART_OVERRIDES","DEFAULT_BAR_CHART_OVERRIDES","DEFAULT_SCATTER_HISTOGRAM_CHART_OVERRIDES","deepMerge$1","result_1","__assign$6","__read$4","__values$5","palette$8","EXTENDS_AXES_DEFAULTS","EXTENDS_AXES_LABEL_DEFAULTS","EXTENDS_AXES_LINE_DEFAULTS","EXTENDS_SERIES_DEFAULTS","OVERRIDE_SERIES_LABEL_DEFAULTS","DEFAULT_FONT_FAMILY","BOLD","INSIDE","BOTTOM","ChartTheme","palette","createChartConfigPerChartType","getDefaults","common","cartesian","polar","hierarchy","applyOverrides","overrideOpts","chartConfig","getPalette","getAxisDefaults","getBarSeriesDefaults","getLineSeriesDefaults","seriesDefaults","getAreaSeriesDefaults","getScatterSeriesDefaults","getCartesianSeriesMarkerDefaults","getCaptionWrappingDefaults","background","typeToAliases","groupedCategory","nextType","aliases","typeDefaults","templateTheme","getOverridesByType","themeTemplate","themeInstance","getTemplateParameters","extensions","source_1","mergeWithParentDefaults","parentDefaults","cartesianDefaults","polarDefaults","hierarchyDefaults","__extends$f","__assign$5","DarkTheme","fontColor","mutedFontColor","axisDefaults","seriesLabelDefaults","chartAxesDefaults","chartDefaults","__extends$e","palette$7","MaterialLight","__extends$d","palette$6","MaterialDark","__extends$c","palette$5","PastelLight","__extends$b","palette$4","PastelDark","__extends$a","palette$3","SolarLight","__extends$9","palette$2","SolarDark","__extends$8","palette$1","VividLight","__extends$7","VividDark","__assign$4","lightTheme","darkTheme","lightThemes","null","darkThemes","themes$1","getChartTheme","stockTheme","baseTheme","flattenedTheme","__assign$3","__values$4","__read$3","__spreadArray$2","STACKABLE_SERIES_TYPES","GROUPABLE_SERIES_TYPES","groupSeriesByType","seriesOptions","groupMap","stackMap","anyStacked","defaultUnstackedGroup","seriesOptions_1","seriesOptions_1_1","stackable","groupable","sStacked","sStackGroup","sGrouped","groupingKey","indexKey","processSeriesOptions","preprocessed","addSeriesGroupingMeta","stackIdx","stackIndex","stackCount","grouped_1","grouped_1_1","__assign$2","__values$3","__read$2","__spreadArray$1","optionsType","isAgCartesianChartOptions","specifiedType","isAgHierarchyChartOptions","isAgPolarChartOptions","isSeriesOptionType","isAxisOptionType","countArrayElements","input_1","input_1_1","takeColours","colours","colourIndex","noDataCloneMergeOptions","prepareOptions","fallbackOptions","sanityCheckOptions","userSuppliedOptionsType","globalTooltipPositionOptions","checkSeriesType","defaultSeriesType","defaultOverrides","removeDisabledOptions","prepareMainOptions","mergedOptions","axesThemes","seriesThemes","mergedSeries","mergeSeriesOptions","preparePieOptions","prepareSeries","checkAxisType","isAxisType","validAxesTypes","axesTheme","prepareAxis","prepareLegendEnabledOption","prepareEnabledOptions","deprecatedArrayProps","yKeys","yNames","mergedTooltipPosition","prepareTheme","cleanedTheme","themeConfig","paletteOptions","calculateSeriesPalette","removeOptions","takeColors","colorsCount","singleSeriesPaletteFactory","inputAny","seriesCount","axisTheme","crossLinesTheme_1","cleanTheme","visitingUserOpts","visitingMergedOpts","_enabledFromTheme","pieSeriesTheme","__values$2","BaseModuleInstance","REGISTERED_MODULES","registerModule","otherModule","packageType","__extends$6","RangeHandle$1","RangeHandle","_fill","_stroke","_strokeWidth","_lineCap","_centerX","_centerY","_gripLineGap","_gripLineLength","ax","ay","axw","ayh","gripLineGap","gripLineLength","__extends$5","RangeMask","_fillOpacity","minRange","onRangeChange","computeVisibleRangeBBox","__extends$4","__assign$1","RangeSelector","minHandle","maxHandle","mask","updateHandles","NavigatorMask","rangeMask","rm","NavigatorHandle","rangeHandle","rh","__extends$3","Navigator","minHandleDragging","maxHandleDragging","panHandleOffset","onDrag","layoutComplete","navigatorTotalHeight","getRatio","stopHandleDragging","CHART_NAVIGATOR_MODULE","chartTypes","__extends$2","Background","onLayoutComplete","rectNode","layoutHandle","CHART_BACKGROUND_MODULE","__values$1","setupModules","REGISTERED_MODULES_1","REGISTERED_MODULES_1_1","optionConstructors","axisTypes","__read$1","AgChart","AgChartInternal","createOrUpdate","AgChartInstanceProxy","isInstance","updateDelta","deltaOptions","updateUserDelta","getImageDataURL","signatureProps","heuristicTypeCheck","initialiseModules","proxy","mixinOpts","createChartInstance","chartToUpdate","dequeue","queuedOptionsIdx","asyncDownload","maybeClone","prepareResizedChart","currentWidth","currentHeight","clonedChart","oldChart","transferableResource","applyChartOptions","optionalParams","completeOptions","modulesChanged","applyModules","registerListeners","applyOptionValues","applySeries","axesPresent","applyAxes","applyLegend","seriesDataUpdate","otherRefreshUpdate","majorChange","updateType","matchingChartType","rootModules","rootModules_1","rootModules_1_1","shouldBeEnabled","optSeries","matchingTypes","previousOpts","seriesDiff","applySeriesValues","createSeries","optAxes","oldOpts_1","axisDiff","createAxis","moduleContext","seriesInstance","axisOptions","applyAxisModules","rootModules_2","rootModules_2_1","applyOpts","jsonApplyOptions","ctrs","seriesTypeOverrides","newSeriesGroup","VERSION$b","__extends$1","ArcType","Open","Chord","Round","Image","sourceImage","themes","_Scale","_Util","isNumberEqual","interpolateString","isStringObject","toRadians","VALID_SERIES_TYPES","getSeriesType","ALL_AXIS_TYPES","getLegacyAxisType","createAgChartTheme","chartProxyParams","chartOptionsToRestore","chartPaletteToRestore","chartThemeToRestore","themeName","getSelectedTheme","isStockTheme","rootTheme","lookupCustomChartTheme","gridOptionsThemeOverrides","getGridOptionsChartThemeOverrides","apiThemeOverrides","apiChartThemeOverrides","standaloneChartType","crossFilterThemeOverridePoint","crossFilteringOverrides","crossFiltering","createCrossFilterThemeOverrides","formattingPanelOverrides","isTitleEnabled","inbuiltStockThemeOverrides","rootThemePalette","isIdenticalPalette","paletteA","paletteB","arrayCompare","overrideType","getChart","totalValue","crossFilterCallback","STATIC_INBUILT_STOCK_THEME_AXES_OVERRIDES","titleEnabled","extraPadding","getExtraPaddingDirections","chartThemeName","getChartThemeName","availableThemes","getChartThemes","customChartThemes","customChartTheme","validateIfDefined","validationFn","isString$1","isValidSeriesChartType","createWarnMessage","expectedType","UpdateParamsValidator","validateChartParams","paramsToValidate","validateUpdateRangeChartParams","validateUpdatePivotChartParams","validateUpdateCrossFilterChartParams","validations","commonValidations","cellRangeValidations","warnMessage","validateProperties","validPropertyNames","paramsType","validChartTypes","validateChartType","validateAgChartThemeOverrides","themeOverrides","validateChartParamsCellRange","validateAggFunc","DEFAULT_THEMES","ChartController","setChartRange","updateForRangeChange","setCellRanges","updateForGridChange","updateForDataChange","validUpdateType","unlinkChart","pivotChart","suppliedCellRange","seriesChartTypes","suppressChartRanges","chartModelParams","createCellRange","removeChartCellRanges","updateCellRanges","raiseChartModelUpdateEvent","raiseChartRangeSelectionChangedEvent","updateForPanelChange","updatedCol","getChartUpdateParams","updatedOverrides","selectedCols","getSelectedValueColState","getChartData","selectedDimension","getSelectedDimension","isGrouping","getChartDataType","getChartId","getCrossFilteringContext","lastSelectedChartId","getSeriesChartTypes","getChartModel","modelType","isComboChart","comboChartModel","chartOptions","chartProxy","getChartThemeOverrides","chartPalette","getChartPalette","getCellRangeParams","chartData","getChartType","setChartType","updateSeriesChartTypes","raiseChartOptionsChangedEvent","setChartThemeName","isPivotChart","isCrossFilterChart","getThemes","getPalettes","themeNames","getValueColState","valueColState","displayNameMapper","columnNames","getColDisplayName","getColStateForMenu","dimensionCols","dimensionColState","detachChartRange","setChartProxy","getChartProxy","isActiveXYChart","isChartLinked","customComboExists","savedCustomSeriesChartTypes","updateSeriesChartType","seriesChartType","updateChartType","prevSeriesChartType","EVENT_CHART_TYPE_CHANGED","EVENT_CHART_SERIES_CHART_TYPE_CHANGED","getActiveSeriesChartTypes","selectedColIds","getChartSeriesTypes","supportedComboSeriesTypes","dimensionCellRange","valueCellRange","createCellRangeFromCellRangeParams","chartTypeMap","currentChartType","firstCellRange","EVENT_CHART_MODEL_UPDATE","raiseChartUpdatedEvent","EVENT_CHART_UPDATED","raiseChartApiUpdateEvent","EVENT_CHART_API_UPDATE","DefaultDataPanelDef","isOpen","ChartDataPanel","chartController","chartOptionsService","columnComps","updatePanels","clearComponents","groupExpandedState","getGroupExpandedState","getSeriesLabel","generateGetSeriesLabel","seriesChartTypeGroupComp","seriesChartTypeIndex","getDataPanelDef","prevVal","createSeriesChartTypeGroup","createCategoriesGroup","createSeriesGroup","restoreGroupExpandedState","groupType","categoriesGroupComp","seriesGroupComp","defaultExpanded","addComponentAtIndex","addChangeListener","getCategoryGroupTitle","getSeriesGroupTitle","pairedModeToggle","chartTranslationService","getPairedMode","setPairedMode","addDragHandle","seriesGroupGui","seriesItemGroup","secondaryAxisComp","defaultText","availableChartTypes","chartTypeComp","ChartPanel","isBubble","isInPairedMode","selectedValuesCount","indexToAxisLabel","escapedLabel","axisLabel","userProvidedDataPanelDef","dataPanel","getSeriesOption","itemHovered","checkHoveredItem","lastDraggedColumn","lastHoveredComp","lastHoveredPosition","lastHoveredItem","isOverComp","draggedColumnState","FontPanel","activeComps","fontGroup","initGroup","initFontFamilySelect","initFontWeightStyleSelect","initFontSizeSelect","initFontColorPicker","addCompToPanel","initialFont","lowerCaseValues","capitalisedFontValue","familySelect","sizeSelect","weightStyles","selectedOption","weightStyleSelect","selectedWeightStyle","newColor","addItemToPanel","destroyActiveComps","LegendPanel","isExpandedOnInit","activePanels","legendGroup","initLegendGroup","initLegendPosition","initLegendPadding","initLegendItems","initLabelPanel","getChartOption","setChartOption","legendPositionSelect","legendPaddingSlider","getMaxValue","initSlider","defaultMaxValue","markerSizeSlider","markerStrokeSlider","markerPaddingSlider","itemPaddingXSlider","itemPaddingYSlider","fontPanelComp","destroyActivePanels","AxisTicksPanel","axisTicksGroup","initAxisTicks","axisTicksColorPicker","getAxisProperty","setAxisProperty","initInput","axisTicksWidthSlider","axisTicksSizeSlider","AgAngleSelect","dragListener","eParentCircle","parentCircleRect","calculateAngleDrag","eAngleValue","floatValue","updateNumberInput","normalizeNegativeValue","positionChildCircle","eChildCircle","calculatePolar","calculateCartesian","getRadius","setOffsetX","setOffsetY","setRadius","radiansValue","AxisPanel","axisLabelUpdateFuncs","prevXRotation","prevYRotation","initAxis","initAxisLabels","updateAxisLabelRotations","axisColorInput","axisLineWidthSlider","axisTicksComp","labelPanelComp","addAdditionalLabelComps","addLabelPadding","xRotationComp","yRotationComp","createRotationWidgets","autoRotateCb","initLabelRotations","getLabelRotation","setLabelRotation","updateAutoRotate","getAutoRotateValue","xRotation","yRotation","autoRotateCheckbox","degreesSymbol","createRotationComp","angleSelect","labelPaddingSlider","NavigatorPanel","navigatorGroup","initNavigator","navigatorHeightSlider","PaddingPanel","chartPaddingGroup","updateTopPadding","initChartPaddingItems","paddingTopSlider","paddingRightSlider","paddingBottomSlider","paddingLeftSlider","topPadding","BackgroundPanel","chartBackgroundGroup","initColorPicker","TitlePanel","initFontPanel","titlePlaceholder","hasTitle","getOption","isSilent","setOption","fontPanelParams","toolbarExists","currentTitleText","replaceableTitleText","createSpacingSlicer","spacingSlider","toolbarItemsFunc","defaultItems","topItems","chartGroup","initTitles","initPaddingPanel","initBackgroundPanel","titlePanelComp","paddingPanelComp","backgroundPanelComp","ShadowPanel","getSelectedSeries","shadowGroup","shadowBlurSlider","shadowXOffsetSlider","shadowYOffsetSlider","initSeriesShadow","setSeriesOption","shadowColorPicker","initFontPanelParams","seriesOptionLabelProperty","getFontOptionExpression","fontOption","getFontOption","setFontOption","MarkersPanel","seriesMarkersGroup","initMarkers","seriesMarkerShapeOptions","seriesMarkerShapeSelect","shouldHideEnabledCheckbox","seriesMarkerMinSizeSlider","seriesMarkerSizeSlider","seriesMarkerStrokeWidthSlider","CalloutPanel","calloutGroup","initCalloutOptions","calloutLengthSlider","calloutStrokeWidthSlider","labelOffsetSlider","SeriesPanel","widgetFuncs","initLineWidth","initStrokeWidth","initLineDash","initLineOpacity","initFillOpacity","initLabels","initShadow","initTooltips","initBins","seriesWidgetMappings","getChartSeriesType","seriesGroup","refreshWidgets","updateSeriesType","initSeriesSelect","seriesSelect","getSeriesSelectOptions","seriesTooltipsToggle","addWidget","seriesStrokeWidthSlider","seriesLineWidthSlider","seriesLineDashSlider","seriesLineOpacitySlider","seriesFillOpacitySlider","labelParams","calloutPanelComp","sectorParams","sectorPanelComp","positionRatioComp","getSectorLabelPositionRatio","sectorLabelPositionRatioSlider","shadowPanelComp","markersPanelComp","seriesBinCountSlider","widget","seriesSelectOptions","activeChartTypes","invalidSeriesType","DefaultFormatPanelDef","FormatPanel","panels","isGroupPanelShownInSeries","commonGroupPanels","cartesianOnlyGroupPanels","cartesianSeries","createPanels","reuse","destroyPanels","getFormatPanelDef","userProvidedFormatPanelDef","formatPanel","MiniChart","tooltipName","MiniChartWithAxes","axisOvershoot","addAxes","leftAxis","bottomAxis","createColumnRects","xScalePadding","xScaleDomain","yScaleDomain","createBars","createLinePaths","linesGroup","MiniColumn","columnData","updateColors","MiniStackedColumn","stackedColumns","MiniNormalizedColumn","MiniBar","bars","MiniStackedBar","MiniNormalizedBar","MiniDoughnut","centerRadiusScaler","MiniPie","MiniLine","MiniScatter","pointsGroup","MiniBubble","MiniArea","xCount","pathData","areas","MiniStackedArea","MiniNormalizedArea","MiniHistogram","MiniColumnLineCombo","lineData","MiniAreaColumnCombo","areaData","yZero","firstX","lastX","MiniCustomCombo","axisStroke","penIcon","buildPenIconPath","miniChartMapping","stackedColumn","normalizedColumn","stackedBar","normalizedBar","doughnut","bubble","stackedArea","normalizedArea","columnLineCombo","areaColumnCombo","customCombo","MiniChartsContainer","chartGroups","wrappers","chartGroupValues","groupComponent","MiniClass","miniWrapper","miniClassChartType","updateSelectedMiniChart","selectedChartType","miniChartType","miniChart","ChartSettingsPanel","miniChartsContainers","cardItems","activePaletteIndex","palettes","resetPalettes","ePrevBtn","eNextBtn","setActivePalette","getPrev","getNext","scrollSelectedIntoView","isMiniChartsContainerVisible","currentMiniChartContainer","currentChart","eMiniChartsContainer","forceReset","settingsPanel","chartGroupsDef","isAnimating","eCardSelector","destroyMiniCharts","isActivePalette","miniChartsContainer","addCardLink","eNavBar","animationDirection","currentPalette","currentGui","futurePalette","nextGui","final","animatingClass","TabbedChartMenu","tabs","panelType","createTab","getPanelClass","tabbedLayout","TabPanelClass","eWrapperDiv","titleEl","translatedTitle","showTab","tabItem","TAB_DATA","TAB_FORMAT","ChartMenu","eChartContainer","eMenuPanelContainer","chartSettings","defaultPanel","chartFormat","chartLink","toggleDetached","chartUnlink","chartDownload","saveChart","buttonListenersDestroyFuncs","createButtons","showDefaultToolPanel","refreshMenuClasses","eHideButton","toggleMenu","rightItems","chartToolbarOptions","getToolbarOptions","useChartToolPanelCustomisation","defaultChartToolbarOptions","panelsOverride","menuOption","tabOptions","isLegacyToolbar","ignoreOptions","tooltipKey","tooltipTitle","menuEl","buttonConfig","buttonEl","EVENT_DOWNLOAD_CHART","createMenuPanel","defaultTab","tabbedMenu","hideMenu","showContainer","showParent","hideParent","eHideButtonIcon","TitleEdit","chartMenu","destroyableChartListeners","handleEndEditing","updateHeight","endEditing","refreshTitle","destroyDbleClickListener","wasInTitle","destroyMouseMoveListener","inTitle","titleBBox","canvasWidth","minimumTargetInputWidth","inputWidth","inputStyle","isTitlePlaceholder","oldTitleLines","currentTitleLines","fixedLineHeight","titleColor","transparentColor","awaitChartOptionUpdate","ChartDatasource","isServerSide","pivoting","updatePivotKeysForSSRM","extractRowsFromGridRowModel","aggregateRowsByDimension","extractedRowData","groupNodeIndexes","groupsToRemove","filteredNodes","allRowNodes","numRows","getFilteredRowNodes","getAllRowNodes","modelLastRow","gridRowModel","rangeLastRow","valueObject","getGroupLabels","ChartDataModel","DEFAULT_CATEGORY","columnNamesArr","filteredOutColId","actualValue","isScatter","groupIndexesToRemove","filterFunc","dataFromGrid","lastColId","dataAggregated","currentMap","groupItem","__children","dimCol","dimColId","dataToAgg","dataToAggFiltered","aggResultFiltered","pivotKeySeparator","extractPivotKeySeparator","extractSeparator","childId","firstSecondaryCol","initialLabel","sortRowNodes","noSort","ChartColumnService","getChartColumns","isNumberCol","extractLeafData","childRow","ComboChartModel","chartDataModel","suppressComboChartWarnings","initComboCharts","seriesChartTypesExist","primaryOnly","updateSeriesChartTypesForCustomCombo","updateChartSeriesTypesForBuiltInCombos","seriesChartTypesSupplied","SUPPORTED_COMBO_CHART_TYPES","getSeriesChartType","providedSeriesChartType","updatedSeriesChartTypes","primaryChartType","secondaryChartType","lineIndex","referenceCellRange","chartColumnService","updateSelectedDimension","shouldUpdateComboModel","updatedColState","allColsFromRanges","getAllColumnsFromRanges","updateColumnState","setDimensionCellRange","setValueCellRange","syncDimensionCellRange","getRowIndexes","getSelectedValueCols","isGroupActive","displayedGroupCols","groupDimensionSelected","endRowPosition","isInitialising","hasSelectedDimension","aggFuncDimension","defaultCategory","valueColumnsFromReferenceRange","idsMatch","orderedColIds","reorderColState","ascColStateOrder","colsInRange","selectedDimensionColState","selectedValueCols","colIdSet","foundColState","colState","deproxy","chartOrProxy","ChartProxy","clearThemeOverrides","chartInstance","getCommonChartOptions","rawChart","imageFileName","getChartOptions","chartOptionsTheme","setPaired","isPaired","transformData","categoryKey","existingOptions","getActiveFormattingPanelOverrides","inUseTheme","keepChartInstance","destroyChart","CartesianChartProxy","crossFilteringAllPoints","crossFilteringSelectedPoints","getAxes","supportsCrossFiltering","xAxisIsCategory","getCrossFilterData","getDataTransformedData","isCategoryAxis","getXAxisType","isTimeAxis","testDatum","crossFilteringReset","crossFilteringPointSelected","crossFilteringDeselectedPoints","extractLineAreaCrossFilterSeries","getYKey","nodeClick","multiSelection","crossFilteringAddSelectedPoint","pointSelected","emptyTarget","cloneUnlessOtherwiseSpecified","isMergeableObject","deepMerge","defaultArrayMerge","getMergeFunction","customMerge","getEnumerableOwnPropertySymbols","propertyIsOnObject","propertyIsUnsafe","mergeObject","defaultIsMergeableObject","isSpecial","arrayMerge","sourceIsArray","targetIsArray","sourceAndTargetTypesMatch","hexToRGBA","changeOpacity","BarChartProxy","isBar","isNormalised","numberAxis","groupedCharts","isGrouped","extractCrossFilterSeries","updatePrimarySeries","updateFilteredOutSeries","primarySeries","normalisedCharts","AreaChartProxy","LineChartProxy","PieChartProxy","numFields","currentOffset","offsetAmount","getFields","calculateOffsets","primaryOptions","filteredOutOptions","primaryOpts","ScatterChartProxy","_params","seriesDefinitions","getSeriesDefinitions","labelFieldDefinition","seriesDefinition","xField","yField","sizeField","filteredOutKey","calcMarkerDomain","markerDomain","filterableEvent","updatedSeries","isBubbleChart","currentXField","HistogramChartProxy","firstField","ChartOptionsService","chartSeriesTypes","createChartOptions","getUpdateAxisOptions","chartAxis","isMatchingSeries","validAxisTypes","chartRef","ComboChartProxy","fieldsMap","primaryYKeys","secondaryYKeys","getYKeys","secondaryYKey","secondaryAxisIsVisible","secondaryAxisOptions","primaryYAxis","primaryYKey","lastSecondaryAxis","groupedOpts","GridChartComp","availableChartThemes","validateCustomThemes","createChart","insideDialog","addDialog","addMenu","addTitleEditComp","setActiveChartCellRange","raiseChartCreatedEvent","suppliedThemes","customThemeName","crossFilteringContext","crossFilteringResetCallback","crossFilterService","chartThemeOverrides","eChart","toTranslate","createChartProxy","titleEdit","getBestDialogSize","chartDialog","eMenuContainer","eTitleEditContainer","validUpdate","chartTypeChanged","chartEmpty","handleEmptyChart","chartUpdateParams","updateParams","currentType","updatedChartType","pivotModeDisabled","minFieldsRequired","isEmptyChart","eEmpty","getUnderlyingChart","raiseChartDestroyedEvent","VERSION$a","__rest$1","upgradeChartModel","heuristicVersionDetection","migrateIfBefore","migrateV23","migrateV24","migrateV25_1","migrateV26","migrateV26_1","migrateV26_2","migrateV28","migrateV28_2","migrateV29","migrateV29_1","migrateV29_2","migrateV30","jsonRename","jsonDelete","LEGACY_PALETTES","highlightOptUpdate","jsonMutate","jsonDeleteDefault","jsonMove","otherChartOptions","otherModelProps","chartTypeMixin","minimalAxis","updatedAxes","axisProps","updatedChartOptions","jsonBackfill","jsonMoveIfMissing","tooltipOptUpdate","tracking","jsonAdd","modelAny","hints","matchingHints","heuristicVersion","maxVersion","migration","versionNumber","versionParts","major","minor","jsonMutateProperty","nextPath","hasProperty","valueToMove","valueFound","renameTo","skipMissing","mutator","pathElements","parentPathElements","targetName","pathOptions","pathOption","arrayName","jsonProp","borneo","material","pastel","flat","ChartService","activeCharts","activeChartComps","chartComp","versionedModel","cr","getChartComp","createChartFromCurrentRange","selectedRange","getSelectedRange","getCellRange","chartAllRangeParams","suppressChartRangesSupplied","createChartContainerFunc","generateId","createChartRef","chartElement","destroyAllActiveCharts","CHARTS_VERSION","ChartTranslationService_1","ChartTranslationService","defaultTranslation","DEFAULT_TRANSLATIONS","pivotChartTitle","rangeChartTitle","categories","xyValues","xType","automatic","calloutLabels","sectorLabels","minSize","itemSpacing","layoutHorizontalSpacing","layoutVerticalSpacing","tooltips","callout","markers","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","histogramFrequency","ChartCrossFilterService_1","ChartCrossFilterService","resetFilters","extractFilterColId","isValidColumnFilter","updateFilters","filtersExist","dataKey","existingGridValues","getCurrentGridValuesForCategory","valueAlreadyExists","updatedValues","getUpdatedFilterModel","columnFilterType","getColumnFilterType","filterModels","filteredValues","getColumnById","RangeService","bodyScrollListener","intersectionRange","refreshLastRangeStart","beforeCols","colsInRangeChanged","dispatchChangedEvent","countBefore","lastRange","refreshRangeStart","rangeColumns","allPositions","pinnedBottomRowCount","pinnedBottom","appendRange","calculateColumnsBetween","suppressMultiRangeSelections","rowForCell","setNewestRangeStartCell","newestRangeStartCell","updateRangeEnd","endColumn","colsToAdd","isLastCellOfRange","moveColInCellRange","colToMove","moveToFront","otherCols","getRangeEdgeColumns","shouldMoveLeftCol","shouldMoveRightCol","allIndices","startCell","firstCol","endCellIndex","endCellFloating","endCellColumn","newEndCell","newRange","forEachRowInRange","startsOnTheRight","rowToColumnMap","rowName","currentRangeColIds","filteredColumns","columnsString","currentValString","topRow","bottomRow","columnInRange","rowInRange","isRowInRange","rangeFirstIndexColumn","rangeLastIndexColumn","lastRangeColumn","isLastColumn","isRightColumn","thisRow","equalsFirstRow","equalsLastRow","afterFirstRow","beforeLastRow","getDraggingRange","draggingRange","allowMulti","isMultiSelect","extendRange","updateValuesOnMove","lastCellHovered","mouseRowPosition","fromMouseClick","intersectionStartRow","intersectionEndRow","newRanges","intersectCols","rangeCountBefore","middle","cellHasChanged","isMouseAndStartInPinned","columnFrom","columnTo","isSameColumn","AbstractSelectionHandle","changedCalculatedValues","shouldDestroyOnEndDragging","onDragEnd","clearValues","getDraggingCssClass","preventRangeExtension","setCellCtrl","rangeStartRow","setRangeStartRow","rangeEndRow","setRangeEndRow","getLastCellHovered","cellHoverListener","oldCellComp","findLineByLeastSquares","maxDecimals","splitExponent","sum_x","sum_y","sum_xy","sum_xx","FillHandle","markedCells","cellValues","isReduce","initialXY","newX","newY","allowedDirection","getFillHandleDirection","dragAxis","initialPosition","markPathFrom","isX","colLen","lastCellMarked","raiseFillStartEvent","handleValueChanged","raiseFillEndEvent","fillStartEvent","fillEndEvent","initialRangeEndRow","initialRangeStartRow","finalRangeEndRow","finalRangeStartRow","clearCellsInRange","withinInitialRange","initialValues","resetValues","iterateAcrossCells","fillValues","updateInitialSet","skipValue","fromUserFunction","sourceRowNode","processValues","userFillOperation","currentCellValue","userResult","allNumbers","asFloat","clearMarkedPath","clearCellValues","reduceVertical","extendVertical","initialColumn","reduceHorizontal","extendHorizontal","endPosition","isMovingUp","rowPos","isInitialRow","celPos","isMovingLeft","startCol","endCol","colsToMark","isColumnRange","rangeFixed","fixRangeStartEnd","rowChanged","SelectionHandleFactory","VERSION$9","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","existingColor","spectrumDragger","brightness","dragger","draggerRect","innerHtml","addRecentColor","currentColor","maxRecentColors","AgColorPicker","eGuiRect","colorDialog","colorPanel","VERSION_CHECKING_FIRST_GRID_MAJOR_VERSION","VERSION_CHECKING_FIRST_CHARTS_MAJOR_VERSION","isValidVersion","isValidMajorVersion","gridMajorVersion","chartsMajorVersion","gridMajor","chartsMajor","gridMajorDifference","chartsMajorDifference","isFirstOrAfterVersion","gridChartVersion","gridVersion","gridMinor","gridMajorMinor","gridMajorNumber","chartsMinor","chartsMajorMinor","validGridChartsVersionErrorMessage","chartsVersion","invalidMessage","validGridChartsVersion","isValidMajor","__FORCE_MODULE_DETECTION_AG_GRID_CORE_EXT","agCharts","DetailCellRendererCtrl","loadRowDataVersion","doNothingBecauseInsidePinnedSection","setAutoHeightClasses","setupRefreshStrategy","addThemeToDetailGrid","createDetailGrid","loadRowData","eventRow","isSameRow","parentClass","detailClass","addOrRemoveDetailGridCssClass","providedStrategy","refreshStrategy","validSelection","detailGridOptions","setDetailGrid","registerDetailWithMaster","masterGridApi","detailGridInfo","versionThisCall","getDetailRowData","mostRecentCall","funcParams","GET_GRID_TO_REFRESH","GET_GRID_TO_DO_NOTHING","DetailCellRenderer","eDetailGrid","setDefaultTemplate","templateFunc","agGridReact","agGridReactCloned","detailApi","VERSION$8","EnterpriseMenuFactory","activeMenu","restrictToTabs","eMenuGui","currentHeaderPosition","getMenuParams","closedFuncs","getClosedCallback","showTabBasedOnPreviousSelection","addStopAnchoring","EnterpriseMenu","EVENT_TAB_SELECTED","lastSelectedTab","closedFuncsArr","stopAnchoringFunc","columnToFocus","TABS_DEFAULT","initialSelection","restrictTo","tabFactories","includeChecks","TAB_GENERAL","createMainPanel","TAB_FILTER","createFilterPanel","TAB_COLUMNS","createColumnsPanel","getTabsToCreate","onHidePopup","onTabItemClicked","mainMenuList","tabName","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","allowExpandAndContract","menuItemMapper","mapWithStockItems","hidePopupFunc","afterFilterAttachedCallback","columnSelectPanel","columnLayout","columnSelectPanelGui","CSS_MENU","CSS_CONTEXT_MENU_OPEN","ContextMenuFactory","csvModuleMissing","excelModuleMissing","suppressExcel","suppressCsv","onIPad","anyExport","blockMiddleClickScrollsIfNeeded","which","eGridBodyGui","ContextMenu","currentFocusedCell","MenuItemMapper","originalList","resultList","getStockMenuItem","resultDef","createAggregationSubMenu","isEditable","exportSubMenuItems","csvModuleLoaded","excelModuleLoaded","chartMenuItemMapper","getChartItems","columnToUse","columnIsAlreadyAggValue","funcNames","VERSION$7","ChartMenuItemMapper_1","ChartMenuItemMapper","PivotMenuItemMapper","RangeMenuItemMapper","topLevelMenuItem","getMenuItem","filterAndOrderChartMenu","getConfigLookup","cleanInternals","removeKey","buildLookup","itemLookup","configLookup","menuItemLookup","orderedAndFiltered","chartConfigGroup","subMenus","localeKey","MultiFilter","filterDefs","guiDestroyFuncs","activeFilterIndices","lastActivatedMenuItem","afterFiltersReadyFuncs","getFilterDefs","filterDef","createFilter","lastOpenedInContainer","filterTitle","filterGui","insertFilterMenu","insertFilterGroup","filterWithoutType","getLastActiveFilterIndex","rowPasses","providedFilter","updateActiveList","getChildFilterInstance","executeFunctionIfExists","executeWhenAllFiltersReady","filterChanged","changedFilter","lastActiveIndex","activeFilter","MultiFloatingFilterComp","floatingFilters","floatingFilterPromises","floatingFilterParams","parentMultiFilterInstance","floatingFilterPromise","createFloatingFilter","lastActiveFloatingFilterIndex","shouldShow","defaultComponentName","VERSION$6","bindCellRendererToHtmlElement","cellRendererPromise","eTarget","RichSelectRow","rendererSuccessful","populateWithRenderer","populateWithoutRenderer","updateSelected","valueToRender","RichSelectCellEditor","selectionConfirmed","searchString","originalSelectedValue","createRowComponent","eList","renderSelectedValue","debounceDelay","searchDebounceDelay","clearSearchString","confirmSelection","valueToSelect","setSelectedValue","keyString","runSearch","searchStrings","topSuggestion","topSuggestionIndex","topValue","mouseY","selectedIndex","VERSION$5","FullStore","ssrmParams","storeParams","nodeIdSequence","groupLevel","nodeIdPrefix","blockUtils","createNodeIdPrefix","groupColVo","groupField","isRootStore","userInitialRowCount","storeUtils","getServerSideInitialRowCount","initialiseRowNodes","nodesAfterSort","nodesAfterFilter","loadingRowsCount","loadingRowNode","createRowNode","parentBlock","fail","createDataNode","defaultId","prefixId","setDataIntoRowNode","addRowNode","checkOpenByDefault","fireStoreUpdatedEvent","storeInfo","groupLevelInfo","nodesToRecycle","createOrRecycleNodes","filterAndSortNodes","lookupNodeToRecycle","foundNode","recycleNode","updateDataIntoRowNode","nodeToRecycle","transactionManager","filterRowNodes","serverIsSorting","isServerSideSortAllLevels","isServerSideSortOnServer","noSortApplied","serverIsFiltering","isServerSideOnlyRefreshFilteredGroups","isServerSideFilterOnServer","clearDisplayIndexes","displayIndexStart","displayIndexEnd","clearDisplayIndex","getDisplayIndexEnd","isDisplayIndexInStore","setDisplayIndexes","displayIndexSeq","visibleNodeIds","setDisplayIndex","forEachStoreDeep","childCache","forEachNodeDeepAfterFilterAndSort","getRowUsingDisplayIndex","displayRowIndex","binarySearchForDisplayIndex","extractRowBounds","pixelBeforeThisStore","pixelAfterThisStore","lastRowNode","lastRowNodeBottomPx","res2","getIndexAtPixel","pixelIsPastLastRow","getChildStore","forEachChildStoreShallow","refreshAfterFilter","storeIsImpacted","isServerRefreshNeeded","serverIsFilteringAllLevels","refreshAfterSort","serverIsSortingAllLevels","StoreLoadingFailed","StoreLoading","StoreWaitingToLoad","applyCallback","Cancelled","Applied","newRowNode","addStoreStates","suppressInfiniteScroll","purge","loadingRowsToShow","scheduleLoad","LazyBlockLoader","loadingNodes","checkForLoadQueued","loaderTimeout","nextBlockToLoad","queueLoadAction","isRowLoading","getBlockToLoad","firstRowInViewport","lastRowInViewport","getNodeCachedByDisplayIndex","lazyNode","getNodes","getBy","__needsRefreshWhenVisible","getBlockStartIndexForIndex","getNodesToRefresh","nodeToRefresh","nodeToRefreshDist","distToViewportTop","distToViewportBottom","lazyIndex","executeLoad","getSsrmParams","groupKeys","removeNodesFromLoadingMap","addNodesToLoadingMap","onLoadSuccess","onLoadFailed","getNextBlockToLoad","getBlockSize","queueLoadCheck","queueMicrotask","startRowString","attemptLoad","availableLoadingCount","cacheBlockSize","DEFAULT_BLOCK_SIZE","storeIndex","getBlockBoundsForIndex","startOfBlock","MultiIndexMap","maps","getIterator","LazyCache","numberOfRows","removedNodeCache","isLastRowKnown","nodeMap","nodeDisplayIndexMap","defaultNodeIdPrefix","getParentNode","rowLoader","destroyRowNode","getRowByDisplayIndex","getDisplayIndexStart","createStubNode","contiguouslyPreviousNode","lazyCacheNode","adjacentNodes","getSurroundingNodesByDisplayIndex","storeIndexFromEndIndex","displayIndexDiff","newStoreIndex","rowBounds","newNode","createRowAtIndex","getRowByStoreIndex","skipDisplayIndexes","numberOfRowsToSkip","orderedMap","stringIndex","numericIndex","purgeExcessRows","getDisplayIndexFromStoreIndex","nodeAtIndex","storeIndexDiff","previousDisplayIndex","atStoreIndex","createNodeCallback","doesNodeMatch","destroyRowAtIndex","getRowId","deletedNode","markBlockForVerify","getRowDetails","getPrefixedId","getIdSequence","blockCounts","blockStates","blockStart","rowState","statePriorityMap","loading","failed","needsLoading","blockPrefix","uniqueStates","sortedStates","priorityState","loadedRowCount","lazyNodesInRange","purgeStubsOutsideOfViewport","firstRowBlockStart","lastRowBlockEnd","getBlocksDistanceFromRow","otherDisplayIndex","blockDistanceToMiddle","blockEnd","distStart","distEnd","lastLazyNode","farthest","allLoadedBlocks","blocksInViewport","isInViewport","numberOfBlocksToRetain","loadedBlockCount","blocksToRemove","lastRowBlockStart","MIN_SAFE_INTEGER","disposableNodes","rowBlockStart","rowBlockInViewport","isNodeCached","midViewportRow","blockDistanceArray","isNodeFocused","extractDuplicateIds","newIds","duplicates","numberOfRowsExpected","setStoreInfo","duplicateIdText","wasRefreshing","responseRowIndex","nodeFromCache","finishedRefreshing","fireRefreshFinishedEvent","lastInferredRow","lazyNodesAfterStoreEnd","markNodesForRefresh","isNodeInCache","updateRowNodes","updatedNodes","insertRowNodes","inserts","indexToAdd","uniqueInsertsMap","dataId","uniqueInserts","numberOfInserts","nodesToMove","uniqueInsertOffset","getOrderedNodeMap","removeRowNodes","idsToRemove","removedNodes","nodesToVerify","deletedNodeCount","remainingIdsToRemove","allNodes","contiguousIndex","matchIndex","idToRemove","numericStoreIndex","LazyStore","idSequence","idFunc","insertedNodes","allIdsToRemove","allUniqueIdsToRemove","updateSelectionAfterTransaction","nodesToDeselect","orderedNodes","thisNode","boundsFromRow","numberOfRowDiff","lastTop","distToPreviousNodeTop","distToNextNodeTop","distBetween","indexOfRow","nextTop","serverSortsAllLevels","oldCount","serverFiltersAllLevels","ServerSideRowModel","pauseStoreUpdateListening","onStoreUpdated","resetListener","getRootStore","rowGroupColumnVos","columnsToValueObjects","valueColumnVos","pivotColumnVos","areColsSame","oldCols","allColsUnchanged","equivalentCol","missingCols","allowRemovedColumns","sortModelDifferent","sortListener","extractSortModel","rowGroupDifferent","pivotDifferent","createStoreParams","destroyRootStore","newSortModel","rootStore","storeFactory","createStore","updateRowIndexesAndBounds","rowDataChangedEvent","dispatchModelUpdated","dynamicRowHeight","getParams","newFilterModel","executeOnStore","storeToExecuteOn","nodeRange","thisRowIndex","StoreUtils","getRowsParams","currentCache","findNodeFunc","nextKey","keyListForNextLevel","nextStore","valueColChanged","secondaryColChanged","colIdThisGroup","actionOnThisGroup","affectedGroupCols","assertRowModelIsServerSide","assertNotTreeData","GROUP_MISSING_KEY_ID","BlockUtils","usingMasterDetail","preserveStore","setTreeGroupInfo","getKeyFunc","setRowGroupInfo","setMasterDetailInfo","isMasterFunc","setChildCountIntoRowNode","cachedRowHeight","setGroupDataIntoRowNode","getChildCount","hasChildStore","hasDetailNode","hasDetailRow","expandedMasterRow","userFuncRes","NodeManager","TransactionManager","asyncTransactions","asyncTransactionsTimeout","scheduleExecuteAsync","executeAsyncTransactions","resultFuncs","resultsForEvent","transactionsToRetry","atLeastOneTransactionApplied","txWrapper","StoreNotFound","retryTransaction","removedRowIds","deleteSelectionStateFromParent","ExpandListener","storeUpdatedEvent","defaultDetailRowHeight","SortListener","replaceAutoGroupColumnWithActualRowGroupColumns","removeMultiColumnPrefixOnColumnIds","multiColumnPrefix","autoGroupSortModel","sm","autoGroupIndex","isNotInSortModel","mapColumnToSortModel","newModels","oldSortModel","findChangedColumnsInSort","listenerUtils","isSortingWithValueColumn","isSortingWithSecondaryColumn","allColsInBothSorts","differentSorts","oldSortItem","newSortItem","oldSort","newSort","differentIndexes","FilterListener","oldModel","findChangedColumns","allColKeysMap","oldJson","newJson","StoreFactory","getStoreParams","CacheClass","userStoreParams","getLevelSpecificParams","infiniteScroll","isInfiniteScroll","getMaxBlocksInCache","maxBlocksActive","storeType","isSuppressServerSideInfiniteScroll","ListenerUtils","changedColumnsInSort","valueColIds","secondaryColIds","DefaultStrategy","selectedState","toggledNodes","lastSelected","selectAllUsed","getSelectedState","setSelectedState","newState","removedNodeIds","anyNodesToggled","onlyThisNode","updateNodeState","doesNodeConform","processNewRow","isNodeSelected","isToggled","clearedRows","GroupSelectsChildrenStrategy","removeRedundantState","recursivelySerializeState","normalisedState","recursivelyDeserializeState","parentSelected","allHaveIds","innerState","isThisNodeSelected","convertedChildren","doesRedundantStateExist","parentRoute","parentState","remainingRoute","anyStateChanged","rangeOfNodes","getRouteToNode","completedRoutes","recursivelySelectNode","idPathToNode","isNodePathSelected","pathToNode","tempNode","recursivelyRemoveState","allChildNodesFound","noIndeterminateChildren","isLastNode","needsDeleted","doesStateAlreadyExist","ServerSideSelectionService","selectionStrategy","StrategyClazz","shotgunResetNodeSelectionState","changedNodes","storeRoute","stateChanged","VERSION$4","ClientSideValuesExtractor","createKey","caseFormat","treeDataOrGrouping","extractUniqueValues","existingValues","existingFormattedKeys","extractExistingFormattedKeys","formattedKeys","unformattedKey","formattedKey","keyToAdd","existingUnformattedKey","addValueForTreeDataOrGrouping","convertValuesToStrings","addValueForConvertValuesToString","processedPart","dataPath","treeKey","SetFilterDisplayValue","SELECT_ALL","FlatSetDisplayValueModel","displayedKeys","updateDisplayedValuesToAllAvailable","_getValue","_allKeys","availableKeys","updateDisplayedValuesToMatchMiniFilter","matchesFilter","nullMatchesFilter","valueFormatterValue","textFormatterValue","getDisplayedValueCount","getDisplayedItem","getSelectAllItem","getDisplayedKeys","forEachDisplayedKey","someDisplayedKey","TreeSetDisplayValueModel","allDisplayedItemsTree","activeDisplayedItemsFlat","selectAllItem","available","parentTreeKeys","generateItemTree","updateAvailable","updateExpandAll","flattenItems","updateFilter","getTreeListPathGetter","availableKey","DATE_TREE_LIST_PATH_GETTER","recursivelyFlattenDisplayedItems","recursiveFilterReset","recursiveItemCheck","recursiveForEachItem","topParentExpanded","recursiveSomeItem","recursiveExpansionCheck","someTrue","someFalse","childExpanded","checkFunction","itemProp","itemPasses","isAvailable","SetFilterModelValuesType","SetValueModel","miniFilterText","providedValues","selectedKeys","usingComplexObjects","treeDataTreeList","groupingTreeList","suppressSorting","setIsLoading","keyComparator","compareByValue","entryComparator","createTreeDataOrGroupingComparator","_aKey","aValue","_bKey","bValue","clientSideValuesExtractor","valuesType","TAKEN_FROM_GRID_VALUES","PROVIDED_LIST","PROVIDED_CALLBACK","displayValueModel","updateAllValues","updatedKeys","resetSelectionState","refreshValues","overrideValues","valuesToUse","allValuesPromise","refreshAfterAnyFilterChanged","showAvailableOnly","updateAvailableKeys","isInitialised","processAllKeys","getFromRows","getValuesFromRows","validateProvidedValues","sortedKeys","sortKeys","firstKey","setValuesType","getValuesType","isKeyAvailable","EVENT_AVAILABLE_VALUES_CHANGED","updateDisplayedValues","nullableValues","excelMode","removeUnavailableValues","setMiniFilter","getMiniFilter","formattedFilterText","valueToCheck","hasSelections","defaultToNothingSelected","selectAllMatchingMiniFilter","clearExistingSelection","deselectAllMatchingMiniFilter","selectKey","deselectKey","isEverythingVisibleSelected","isKeySelected","isNothingVisibleSelected","convertAndGetKey","SetFilterListItem","GROUP_TEMPLATE","isTree","hasIndeterminateExpandState","destroyCellRendererComponent","refreshVariableAriaLabels","setupExpansion","eGroupIndeterminateIcon","setExpandedIcons","toggleSelected","setupFixedAriaLabels","itemLabel","valueFunction","setTooltipAndCellRendererParams","cellRendererComponent","renderCellWithoutCellRenderer","oldComponent","renderCell","formattedValue","getFormattedValue","showTooltips","tooltipValue","getComponentHolder","DEFAULT_LOCALE_TEXT","loadingOoo","blanks","searchOoo","selectAllSearchResults","noMatches","SetFilterModelFormatter","valueModel","getValueModel","numValues","SetFilter","setFilterParams","hardRefreshVirtualList","noValueFormatterSupplied","appliedModelKeys","noAppliedModelKeys","translateForSetFilter","handleKeySpace","handleKeyEnter","handleKeyLeft","handleKeyRight","getComponentForKeyEvent","eMiniFilter","eSetFilterList","setModelAndRefresh","applyExcelModeOptions","setValueFormatter","isGroupCol","generateCreateKey","initialiseFilterBodyUi","addEventListenersForDataChanges","providedValueFormatter","isRefData","getKeyCreatorParams","applyMiniFilterWhileTyping","isValuesTakenFromGrid","syncAfterDataChange","eFilterLoading","initVirtualList","initMiniFilter","filterListName","createSetListItem","updateSetListItem","suppressSelectAll","ModelWrapper","ModelWrapperWithSelectAll","isSelectAllSelected","TreeModelWrapper","getSelectAllLabel","selectedListener","expandedListener","isSetFilterModelTreeItem","onGroupItemSelected","onExpandedChanged","isSelectedExpanded","itemParams","translateKey","listItem","areAllChildrenSelected","suppressMiniFilter","onMiniFilterInput","resetExpansion","resetMiniFilter","showOrHideResults","doesFilterPassForTreeData","doesFilterPassForGrouping","getValueFromNode","doesFilterPassForConvertValuesToString","isInAppliedModel","checkMakeNullDataPath","setFilterValues","resetFilterValues","refreshFilterValues","filterOnAllVisibleValues","updateUiAfterMiniFilterChange","hideResults","eNoMatches","applyImmediately","refreshAfterSelection","recursiveGroupSelection","childItem","recursiveExpansion","refreshAfterExpansion","newMiniFilter","getFilterKeys","getFilterValues","refreshValuesOnOpen","recursiveChildSelectionCheck","mixed","childSelected","recursiveCollapse","oldRow","newRow","SetFloatingFilterComp","availableValuesListenerAdded","updateFloatingFilterText","parentSetFilterInstance","addAvailableValuesListener","setValueModel","VERSION$3","StatusBarService","allComponents","registerStatusPanel","StatusBar","statusPanels","leftStatusPanelComponents","componentConfig","createAndRenderComponents","eStatusBarLeft","centerStatusPanelComponents","eStatusBarCenter","rightStatusPanelComponents","eStatusBarRight","statusBarComponents","ePanelComponent","componentDetails","componentDetail","NameValueComp","TotalAndFilteredRowsComp","getFilteredRowCountValue","totalRowCount","getTotalRowCount","filteredRowCount","FilteredRowsComp","totalRowCountValue","getTotalRowCountValue","filteredRowCountValue","TotalRowsComp","getRowCountValue","SelectedRowsComp","isValidRowModel","onRowSelectionChanged","eventListener","selectedRowCount","AggregationComp","avgAggregationComp","countAggregationComp","minAggregationComp","maxAggregationComp","sumAggregationComp","setAggregationComponentValue","statusBarValueComponent","getAggregationValueComponent","refComponentName","aggregationPanelConfig","statusPanelParams","numberCount","cellsSoFar","finishedAllRows","gotResult","gotNumberResult","DEFAULT_VIEWPORT_ROW_MODEL_PAGE_SIZE","DEFAULT_VIEWPORT_ROW_MODEL_BUFFER_SIZE","ViewportRowModel","rowNodesByIndex","onViewportChanged","getViewportRowModelPageSize","getViewportRowModelBufferSize","calculateFirstRow","bufferSize","afterBuffer","calculateLastRow","purgeRowsNotInViewport","setViewportRange","createBlankRowNode","firstNodeOutOfRange","lastNodeOutOfRange","callbackCount","defaultTooltipCss","extent$3","isNumber$3","BandScale$4","ZINDICIES","SparklineAxis","Sparkline","xData","yData","layoutId","defaultDateFormatter","Intl","hour12","_onMouseMove","_onMouseOut","setupDomEventListeners","updateHitPoint","scheduleLayout","updateYScale","updateYScaleRange","updateYScaleDomain","updateXScale","getXScale","updateXScaleRange","updateXScaleDomain","xMinMax","updateAxisLine","updateCrosshairs","updateXCrosshairLine","updateYCrosshairLine","generateNodeData","getNodeData","highlightDatum","dehighlightDatum","pickClosestSeriesNodeDatum","oldHighlightedDatum","handleTooltip","invalidData","getDataType","xValueType","setSmallestXInterval","getDatum","immediateLayout","layoutScheduled","setSparklineDimensions","shrunkWidth","shrunkHeight","getDistance","p2","tooltipOptions","tooltipRendererResult","formatNumericDatum","cleanupDomEventListeners","toTooltipHtml","contentHtml","SparklineTooltip","tooltipRect","containerRect","getMarker","getLineDash","buttOrNull","solid","dash","dot","dashDot","dashDotDot","shortDot","shortDash","shortDashDot","shortDashDotDot","longDash","longDashDot","longDashDotDot","roundOrSquare","extent$2","BandScale$3","SparklineMarker$1","SparklineLine$1","SparklineCrosshairs$1","xLine","yLine","AreaSparkline","strokePath","fillPath","xCrosshairLine","yCrosshairLine","areaSparklineGroup","xAxisLine","crosshairs","AXIS_LINE_ZINDEX","SERIES_FILL_ZINDEX","SERIES_STROKE_ZINDEX","CROSSHAIR_ZINDEX","SERIES_MARKERS_ZINDEX","fillData","strokeData","updateStroke","updateFill","yMinMax","yMin","yMax","firstValidX","lastValidX","previousX","selectionData","highlightSize","highlightFill","highlightStroke","highlightStrokeWidth","markerFormat","extent$1","BandScale$2","SparklineMarker","SparklineLine","SparklineCrosshairs","LineSparkline","lineSparklineGroup","BarColumnNodeTag","BarColumnLabel","InsideEnd","BarColumnSparkline","valueAxisDomain","axisLine","bandWidth","sparklineGroup","rectGroup","rectSelection","nodeSelectionData","updateRectSelection","updateRectNodes","gaps","nodeFormatter","nodeFill","nodeStroke","nodeStrokeWidth","nodeFormat","formatLabelValue","isNumber$2","BandScale$1","BarSparkline","labelPlacement","invalidDatum","midPoint","isPositiveY","OutsideEnd","textWidth","positiveBoundary","negativeBoundary","exceedsBoundaries","isNumber$1","ColumnSparkline","textHeight","AgSparkline","sparkline","getSparklineInstance","initSparkline","initSparklineByType","initBarColumnSparkline","initAreaSparkline","initLineSparkline","setValueIfPropertyExists","initPaddingOptions","initAxisOptions","initHighlightStyleOptions","initMarkerOptions","initLineOptions","initCrosshairsOptions","initLabelOptions","initCrosshairLineOptions","offsetValidator","defaultOffset","SparklineCellRenderer","firstTimeIn","updateSparkline","sparklineOptions","sparklineTooltipSingleton","getSparklineTooltip","eSparkline","SparklineTooltipSingleton","destroyTooltip","AllEnterpriseModules","AllModules","listenToTriggersV2","registerOutsideClick","registerEscClick","BsComponentRef","ContentRef","ComponentLoader","_componentFactoryResolver","_ngZone","_applicationRef","_posService","onBeforeShow","onShown","onBeforeHide","onHidden","_providers","_isHiding","containerDefaultSelector","_listenOpts","_globalListener","isShown","compType","_componentFactory","attachment","provider","_subscribePositioning","_innerComponent","_contentRef","_getContentRef","attachView","selectedElement","changeDetectorRef","_registerOutsideClick","deletePositionElement","componentEl","_removeGlobalListener","_unsubscribePositioning","_unregisterListenersFn","listenOpts","outsideClick","outsideEsc","registerHide","attachInline","vRef","_inlineViewRef","targets","getInnerComponent","_zoneSubscription","appendToBody","onStable","calcPosition","rootNodes","contentCmptFactory","modalContentInjector","ComponentLoaderFactory","createLoader","PositioningService","distinctUntilChanged","isFirstDayOfWeek","shiftDate","endOf","isAfter","startOf","isSame","getFirstDayOfMonth","getLocale","isSameMonth","isSameDay","isDisabledDay","isSameYear","isDateValid","setFullDate","utcAsLocal","Subscription","MiniStore","MiniState","i5","i11","i6","TooltipModule","i7","TimepickerActions","TimepickerModule","BsDatepickerConfig","adaptivePosition","useUtc","isAnimated","startView","returnFocusToInput","displayMonths","showWeekNumbers","dateInputFormat","rangeSeparator","rangeInputFormat","monthTitle","yearTitle","dayLabel","monthLabel","yearLabel","weekNumbers","showTodayButton","showClearButton","todayPosition","clearPosition","todayButtonLabel","clearButtonLabel","customRangeButtonLabel","withTimepicker","allowedPositions","DATEPICKER_ANIMATION_TIMING","datepickerAnimation","BsDatepickerAbstractComponent","customRanges","chosenRange","_daysCalendarSub","selectedTimeSub","_effects","setMinDate","setMaxDate","daysDisabled","setDaysDisabled","datesDisabled","setDatesDisabled","datesEnabled","setDatesEnabled","dateCustomClasses","setDateCustomClasses","dateTooltipTexts","setDateTooltipTexts","daysCalendar$","_daysCalendar$","multipleCalendars","setViewMode","dayHoverHandler","weekHoverHandler","monthHoverHandler","yearHoverHandler","timeSelectHandler","daySelectHandler","monthSelectHandler","yearSelectHandler","setRangeOnCalendar","dates","setToday","clearDate","_stopPropagation","BsDatepickerActions","CALCULATE","FORMAT","FLAG","SELECT","payload","selectTime","SELECT_TIME","changeViewMode","CHANGE_VIEWMODE","NAVIGATE_TO","navigateStep","NAVIGATE_OFFSET","SET_OPTIONS","SELECT_RANGE","hoverDay","HOVER","SET_MIN_DATE","SET_MAX_DATE","SET_DAYSDISABLED","SET_DATESDISABLED","SET_DATESENABLED","SET_IS_DISABLED","SET_DATE_CUSTOM_CLASSES","SET_DATE_TOOLTIP_TEXTS","setLocale","SET_LOCALE","BsLocaleService","_defaultLocale","_localeChange","localeChange","currentLocale","use","BsDatepickerEffects","_actions","_localeService","_subs","_bsDatepickerStore","_store","setRangeValue","setBindings","selectedTime","flaggedMonths","monthsCalendar","flaggedMonthsCalendar","yearsCalendar","yearsCalendarFlagged","years","viewMode","options$","latest","setEventHandlers","_cell","isOtherMonth","registerDatepickerSideEffects","monthsModel","monthModel","formattedMonths","selectedDate","yearsCalendarModel","hoveredDate","defaultMonthOptions","dayInMilliseconds","BsDatepickerState","_initialView","initialDatepickerState","monthViewOptions","getStartingDayOfCalendar","firstDayOfWeek","weekDay","calculateDateOffset","startingDayOffset","_startingDayOffset","isMonthDisabled","minBound","maxBound","isYearDisabled","isDisabledDate","dateDisabled","isEnabledDate","enabledDate","getYearsCalendarInitialDate","calendarIndex","checkRangesWithMaxDate","compareDateWithMaxDateHelper","checkBsValue","editedValues","setCurrentTimeOnDateSelect","setCurrentTimeHelper","setDateRangesCurrentTimeOnDateSelect","createMatrix","prevValue","initialDate","calcDaysCalendar","startingDate","firstDay","matrixOptions","daysMatrix","formatDaysCalendar","daysCalendar","formatOptions","getWeekNumbers","weekdays","getShiftedWeekdays","weeks","weekIndex","dayIndex","hideLeftArrow","hideRightArrow","disableLeftArrow","disableRightArrow","weekdaysShort","flagDaysCalendar","formattedMonth","isSelectionStart","isSelectionEnd","isDateInRange","currentDate","isToday","customClasses","dcc","newDay","canSwitchMode","minMode","height$1","width$1","shift$1","formatMonthsCalendar","viewDate","monthMatrix","flagMonthsCalendar","monthCalendar","hoveredMonth","newMonth","yearsPerCalendar","initialYearShift","formatYearsCalendar","previousInitialDate","calculateInitialDate","yearsMatrix","formatYearRangeTitle","flagYearsCalendar","yearIndex","hoveredYear","copyTime","sourceDate","bsDatepickerReducer","calculateReducer","formatReducer","flagReducer","navigateOffsetReducer","_time","_date","getViewDate","_viewDate","dte","displayOneMonthRange","isDisplayOneMonth","showPreviousMonth","preventChangeToNextMonth","viewMonth","getFormatOptions","shiftViewDate","middleDate","BsDatepickerStore","_dispatcher","BsNavigationDirection","BsCurrentDateViewComponent","BsTimepickerViewComponent","ampm","BsCalendarLayoutComponent","BsDatepickerNavigationViewComponent","onNavigate","onViewMode","navTo","down","calendar","BsDatepickerDayDecoratorComponent","_elRef","customTodayClass","BsDaysCalendarViewComponent","onSelect","onHover","onHoverWeek","isiOS","isShowTooltip","selectDay","selectWeek","selectWeekDateRange","selectFromOtherMonth","selectedDay","lastDayOfRange","hasActiveDays","isWeekHovered","isOtherMonthHovered","dateData","TooltipDirective","BsMonthCalendarViewComponent","hoverMonth","BsYearsCalendarViewComponent","viewYear","hoverYear","BsCustomDatesViewComponent","selectFromRanges","customRangeLabel","BsDatepickerContainerComponent","_positionService","valueChange","isRangePicker","preventOverflow","event$","isTopPosition","isOtherMonthsActive","showTodayBtn","todayBtnLbl","todayPos","showClearBtn","clearBtnLbl","clearPos","customRangeBtnLbl","startTimepicker","positionServiceEnable","TimepickerComponent","BsDatepickerDirective","cis","isDestroy$","bsValueChange","_dateInputFormat$","_datepicker","isOpen$","bsValue","_bsValue","bsConfig","initCurrentTime","dateInputFormat$","setConfig","_datepickerRef","initSubscribes","unsubscribeSubscriptions","BsDatepickerInlineConfig","BsDatepickerInlineContainerComponent","_positioningService","BsDatepickerInlineDirective","BsDaterangepickerInlineConfig","BsDaterangepickerContainerComponent","_rangeStack","dateRange","endTimepicker","rangesProcessing","maxDateRange","setMaxDateRangeOnCalendar","maxDateValueInMilliseconds","maxDateRangeInMilliseconds","BsDaterangepickerInlineContainerComponent","BsDaterangepickerInlineDirective","BS_DATEPICKER_VALUE_ACCESSOR","BsDatepickerInputDirective","BS_DATEPICKER_VALIDATOR","_picker","_onTouched","_validatorChange","setBsValue","_setInputValue","onKeydownEvent","_isDateValid","bsDate","_localeKey","onBlur","BsDaterangepickerConfig","BsDaterangepickerDirective","_rangeInputFormat$","rangeInputFormat$","BS_DATERANGEPICKER_VALUE_ACCESSOR","BsDaterangepickerInputDirective","BS_DATERANGEPICKER_VALIDATOR","_isFirstDateValid","_isSecondDateValid","_input","trimmedSeparator","_val","BsDatepickerModule","entryComponents","isBs3","DROPDOWN_ANIMATION_TIMING","dropdownAnimation","BsDropdownState","autoClose","insideClick","stopOnClickPropagation","isOpenChange","isDisabledChange","toggleClick","dropdownMenu","resolveDropdownMenu","BsDropdownContainerComponent","_builder","_factoryDropDownAnimation","dropdown","BsDropdownConfig","BsDropdownDirective","_cis","dropup","_isInlineOpen","_isDisabled","_subscriptions","_isInited","_dropdown","_showInline","isBs4","_inlinedMenu","addBs4Polyfills","playAnimation","_dropup","_placement","removeShowClass","removeDropupStyles","navigationClick","firstActive","allRef","addShowClass","checkRightAlignment","addDropupStyles","isRightAligned","BsDropdownMenuDirective","BsDropdownToggleDirective","_documentClickListener","_escKeyUpListener","BsDropdownModule","FocusTrapManager","_focusTrapStack","focusTrap","ft","_disable","_enable","hasV8BreakIterator","v8BreakIterator","Platform","_platformId","EDGE","TRIDENT","BLINK","WEBKIT","IOS","FIREFOX","ANDROID","SAFARI","IsFocusableConfig","ignoreVisibility","InteractivityChecker","_platform","hasGeometry","isTabbable","frameElement","getFrameElement","getTabIndexValue","tabIndexValue","isPotentiallyTabbableIOS","isPotentiallyFocusable","getClientRects","isNativeFormElement","isHiddenInput","isInputElement","isAnchorWithHref","isAnchorElement","hasValidTabIndex","coerceBooleanProperty","FocusTrap","_checker","deferAnchors","_hasAttached","startAnchorListener","focusLastTabbableElement","endAnchorListener","focusFirstTabbableElement","attachAnchors","_startAnchor","_endAnchor","_toggleAnchorTabIndex","startAnchor","endAnchor","_createAnchor","focusInitialElementWhenReady","_executeOnStable","focusInitialElement","focusFirstTabbableElementWhenReady","focusLastTabbableElementWhenReady","_getRegionBoundary","bound","_getFirstTabbableElement","_getLastTabbableElement","redirectToElement","focusableChild","hasAttached","tabbableChild","toggleAnchors","isStable","FocusTrapFactory","deferCaptureElements","FocusTrapDirective","_focusTrapFactory","_previouslyFocusedElement","_autoCapture","autoCapture","_captureFocus","autoCaptureChange","firstChange","FocusTrapModule","Utils","document$1","window$1","BsModalRef","setClass","ModalBackdropOptions","ModalOptions","modalConfigDefaults","backdrop","keyboard","ignoreBackdropClick","animated","closeInterceptor","MODAL_CONFIG_DEFAULT_OVERRIDE","CLASS_NAME","SCROLLBAR_MEASURER","BACKDROP","OPEN","FADE","IN","SHOW","SELECTOR","DIALOG","DATA_TOGGLE","DATA_DISMISS","FIXED_CONTENT","TRANSITION_DURATIONS","MODAL","DISMISS_REASONS","BACKRDOP","ESC","BACK","ModalContainerComponent","isModalHiding","clickStartedInContent","bsModalService","getModalsCount","checkScrollbar","setScrollbar","onClickStarted","onClickStop","clickedInBackdrop","setDismissReason","onEsc","_hide","tabindex","ModalBackdropComponent","_isAnimated","_isShown","reflow","TRANSITION_DURATION","BACKDROP_TRANSITION_DURATION","ModalDirective","clf","modalDefaultOption","onShow","onHide","isBodyOverflowing","originalBodyPadding","timerHideModal","timerRmBackDrop","isNested","_backdrop","conf","getConfig","dismissReason","hideModal","showBackdrop","showElement","transitionComplete","resetScrollbar","resetAdjustments","focusOtherModal","removeBackdrop","callbackRemove","otherOpenedModals","scrollDiv","currentId","BsModalService","rendererFactory","modalsCount","loaders","_backdropLoader","_createLoaders","_showBackdrop","lastDismissReason","_showModal","_hideBackdrop","_hideModal","removeLoaders","isBackdropEnabled","isBackdropInDOM","backdropRef","modalLoader","bsModalRef","modalContainerRef","copyEvent","focusTrapModule","ModalModule","getBsVer","parseTriggers","PlacementForBs5","checkMargins","timer","i2$1","PopoverConfig","PopoverContainerComponent","_bsVersions","isBs5","checkMarginNecessity","PopoverDirective","popoverId","_popover","_ariaDescribedby","popover","_delayTimeoutId","showPopover","popoverContext","popoverTitle","cancelDelayedTooltipShowing","_popoverCancelShowFn","_timer","PopoverModule","fromEvent","animationFrameScheduler","MapPlacementInToRL","getStyleComputedProperty","noOffsetParent","nextElementSibling","isOffsetContainer","firstElementChild","findCommonOffsetParent","element1","element2","compareDocumentPosition","DOCUMENT_POSITION_FOLLOWING","setStart","setEnd","commonAncestorContainer","element1root","getFixedPositionOffsetParent","getBordersSize","sideA","sideB","_body","_html","_computedStyle","getWindowSizes","getClientRect","horizScrollbar","vertScrollbar","getScrollParent","overflowX","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","scrollParent","getScroll","upperSide","scrollingElement","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","isFixed","getBoundaries","boundariesElement","boundaries","boundariesNode","getArea","computeAutoPlacement","refRect","sortedAreas","filteredAreas","allowedPosition","computedPlacement","variation","getOffsets","getOppositePlacement","getOppositeVariation","getOuterSizes","getReferenceOffsets","commonOffsetParent","getTargetOffsets","hostOffsets","targetRect","targetOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","isModifierEnabled","availablePositions","checkPopoverMargin","checkPosition","updateContainerClass","dataPlacement","placementAuto","arrow","arrowElement","sideCapitalized","altSide","opSide","arrowElementSize","placementVariation","targetMarginSide","targetBorderSide","targetBorderRadius","targetSideArrowOffset","sideValue","offsetsHost","flipOrder","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariation","initData","hostElPosition","targetOffset","positionFixed","transformProp","targetStyles","isPlacementHorizontal","basePlacement","shiftVariation","shiftOffsets","Positioning","positionElements","chainOfModifiers","_position","modifiedData","positionService","update$$","triggerEvent$","positionElement","_getHtmlElement","addPositionElement","elRef","NgTranscludeDirective","ngTransclude","_ngTransclude","TabsetConfig","isKeysAllowed","TabsetComponent","clazz","classMap","_vertical","_justified","_type","_isKeysAllowed","setClassMap","justified","addTab","removeTab","reselect","hasAvailableTabs","newActiveIndex","getClosestTabIndex","keyNavActions","currentTab","nextTab","previousTab","firstTab","lastTab","removable","tabsLength","prevIndex","TabDirective","tabset","selectTab","deselect","_active","_customClass","customClass","ariaLabelledby","heading","TabHeadingDirective","headingRef","TabsModule","i4","dex","hoursPerDay","hoursPerDayHalf","minutesPerHour","secondsPerMinute","isValidLimit","parseHours","isPM","parseMinutes","parseSeconds","parseTime","changeTime","setTime","isHourInputValid","isMinuteInputValid","isSecondInputValid","isInputLimitValid","isOneOfDatesEmpty","isInputValid","canChangeValue","readonlyInput","mousewheel","arrowkeys","canChangeHours","canIncrementHours","canDecrementHours","canChangeMinutes","canIncrementMinutes","canDecrementMinutes","canChangeSeconds","canIncrementSeconds","canDecrementSeconds","getControlsValue","hourStep","minuteStep","secondsStep","showSpinners","showMeridian","showSeconds","meridians","timepickerControls","canToggleMeridian","_newHour","_newMinutes","_newSeconds","TimepickerConfig","allowEmptyTime","showMinutes","hoursPlaceholder","minutesPlaceholder","secondsPlaceholder","ariaLabelHours","ariaLabelMinutes","ariaLabelSeconds","WRITE_VALUE","changeHours","CHANGE_HOURS","changeMinutes","CHANGE_MINUTES","changeSeconds","CHANGE_SECONDS","SET_TIME_UNIT","updateControls","UPDATE_CONTROLS","timepickerReducer","_newTime","_newControlsState","_newState","TimepickerStore","TIMEPICKER_CONTROL_VALUE_ACCESSOR","_timepickerActions","meridianChange","meridian","invalidHours","invalidMinutes","invalidSeconds","labelHours","labelMinutes","labelSeconds","timepickerSub","_renderTime","controlsState","isTimepickerInputValid","isOneOfDatesIsEmpty","isSpinnersVisible","resetValidation","prevDef","wheelSign","updateHours","_updateTime","updateMinutes","updateSeconds","_seconds","_minutes","toggleMeridian","_hoursPerDayHalf","_hours","getUTCSeconds","OnChange","__metadata","TooltipConfig","TooltipContainerComponent","in","fade","tooltipId","tooltipChange","tooltipAnimation","tooltipFadeDuration","tooltipStateChanged","_tooltip","htmlContent","_isOpen","_appendToBody","_popupClass","_tooltipContext","_tooltipPopupDelay","_tooltipTrigger","_tooltipCancelShowFn","_delaySubscription","FilterMatchMode","NOT_EQUALS","LESS_THAN_OR_EQUAL_TO","GREATER_THAN_OR_EQUAL_TO","BETWEEN","IS","IS_NOT","BEFORE","AFTER","DATE_IS","DATE_IS_NOT","DATE_BEFORE","DATE_AFTER","PrimeNGConfig","ripple","filterMatchModeOptions","numeric","notEquals","noFilter","isNot","dateIs","dateIsNot","dateBefore","dateAfter","matchAll","matchAny","addRule","removeRule","accept","choose","dayNames","dayNamesShort","dayNamesMin","monthNamesShort","dateFormat","weekHeader","weak","strong","passwordPrompt","emptyFilterMessage","overlay","translationSource","translationObserver","getTranslation","setTranslation","TranslationKeys","NO_FILTER","LT","LTE","GT","GTE","CLEAR","APPLY","MATCH_ALL","MATCH_ANY","ADD_RULE","REMOVE_RULE","ACCEPT","REJECT","CHOOSE","UPLOAD","CANCEL","DAY_NAMES","DAY_NAMES_SHORT","DAY_NAMES_MIN","MONTH_NAMES","MONTH_NAMES_SHORT","FIRST_DAY_OF_WEEK","TODAY","WEEK_HEADER","WEAK","MEDIUM","STRONG","PASSWORD_PROMPT","EMPTY_MESSAGE","EMPTY_FILTER_MESSAGE","ConfirmEventType","ConfirmationService","requireConfirmationSource","acceptConfirmationSource","requireConfirmation$","confirm","confirmation","onAccept","filterLocale","filterValue","removeAccents","between","filterMatchMode","filteredItems","fieldValue","resolveFieldData","ContextMenuService","activeItemKeyChange","activeItemKeyChange$","changeKey","activeItemKey","MessageService","messageSource","clearSource","messageObserver","clearObserver","addAll","messages","OverlayService","clickSource","clickObservable","PrimeIcons","ALIGN_CENTER","ALIGN_JUSTIFY","ALIGN_LEFT","ALIGN_RIGHT","AMAZON","ANGLE_DOUBLE_DOWN","ANGLE_DOUBLE_LEFT","ANGLE_DOUBLE_RIGHT","ANGLE_DOUBLE_UP","ANGLE_DOWN","ANGLE_LEFT","ANGLE_RIGHT","ANGLE_UP","APPLE","ARROW_CIRCLE_DOWN","ARROW_CIRCLE_LEFT","ARROW_CIRCLE_RIGHT","ARROW_CIRCLE_UP","ARROW_DOWN_LEFT","ARROW_DOWN_RIGHT","ARROW_LEFT","ARROW_RIGHT","ARROW_UP_LEFT","ARROW_UP_RIGHT","ARROW_H","ARROW_V","AT","BACKWARD","BAN","BARS","BELL","BOLT","BOOK","BOOKMARK","BOOKMARK_FILL","BOX","BRIEFCASE","BUILDING","CALENDAR","CALENDAR_MINUS","CALENDAR_PLUS","CALENDAR_TIMES","CAMERA","CAR","CARET_DOWN","CARET_LEFT","CARET_RIGHT","CARET_UP","CHART_BAR","CHART_LINE","CHART_PIE","CHECK","CHECK_CIRCLE","CHECK_SQUARE","CHEVRON_CIRCLE_DOWN","CHEVRON_CIRCLE_LEFT","CHEVRON_CIRCLE_RIGHT","CHEVRON_CIRCLE_UP","CHEVRON_DOWN","CHEVRON_LEFT","CHEVRON_RIGHT","CHEVRON_UP","CIRCLE","CIRCLE_FILL","CLOCK","CLONE","CLOUD","CLOUD_DOWNLOAD","CLOUD_UPLOAD","CODE","COG","COMMENT","COMMENTS","COMPASS","COPY","CREDIT_CARD","DATABASE","DESKTOP","DIRECTIONS","DIRECTIONS_ALT","DISCORD","DOLLAR","DOWNLOAD","EJECT","ELLIPSIS_H","ELLIPSIS_V","ENVELOPE","EURO","EXCLAMATION_CIRCLE","EXCLAMATION_TRIANGLE","EXTERNAL_LINK","EYE","EYE_SLASH","FACEBOOK","FAST_BACKWARD","FAST_FORWARD","FILE","FILE_EXCEL","FILE_PDF","FILTER_FILL","FILTER_SLASH","FLAG_FILL","FOLDER","FOLDER_OPEN","FORWARD","GITHUB","GLOBE","GOOGLE","HASHTAG","HEART","HEART_FILL","HISTORY","HOME","ID_CARD","IMAGE","IMAGES","INBOX","INFO","INFO_CIRCLE","INSTAGRAM","KEY","LINK","LINKEDIN","LIST","LOCK","LOCK_OPEN","MAP_MARKER","MICROSOFT","MINUS","MINUS_CIRCLE","MONEY_BILL","MOON","PALETTE","PAPERCLIP","PAUSE","PAYPAL","PENCIL","PERCENTAGE","PHONE","PLAY","PLUS","PLUS_CIRCLE","POUND","POWER_OFF","PRIME","QRCODE","QUESTION","QUESTION_CIRCLE","REDDIT","REFRESH","REPLAY","REPLY","SAVE","SEARCH","SEARCH_MINUS","SEARCH_PLUS","SEND","SERVER","SHARE_ALT","SHIELD","SHOPPING_BAG","SHOPPING_CART","SIGN_IN","SIGN_OUT","SITEMAP","SLACK","SLIDERS_H","SLIDERS_V","SORT_ALPHA_DOWN","SORT_ALPHA_ALT_DOWN","SORT_ALPHA_UP","SORT_ALPHA_ALT_UP","SORT_ALT","SORT_ALT_SLASH","SORT_AMOUNT_DOWN","SORT_AMOUNT_DOWN_ALT","SORT_AMOUNT_UP","SORT_AMOUNT_UP_ALT","SORT_DOWN","SORT_NUMERIC_DOWN","SORT_NUMERIC_ALT_DOWN","SORT_NUMERIC_UP","SORT_NUMERIC_ALT_UP","SORT_UP","SPINNER","STAR","STAR_FILL","STEP_BACKWARD","STEP_BACKWARD_ALT","STEP_FORWARD","STEP_FORWARD_ALT","STOP","STOP_CIRCLE","SUN","SYNC","TABLE","TABLET","TAG","TAGS","TELEGRAM","TH_LARGE","THUMBS_DOWN","THUMBS_UP","TICKET","TIMES","TIMES_CIRCLE","TRASH","TWITTER","UNDO","UNLOCK","USER","USER_EDIT","USER_MINUS","USER_PLUS","USERS","VIDEO","VIMEO","VOLUME_DOWN","VOLUME_OFF","VOLUME_UP","WALLET","WHATSAPP","WIFI","WINDOW_MAXIMIZE","WINDOW_MINIMIZE","YOUTUBE","FilterOperator","Header","Footer","PrimeTemplate","SharedModule","TreeDragDropService","dragStartSource","dragStopSource","dragStart$","dragStop$","startDrag","stopDrag","InputTextModule","ButtonModule","RippleModule","DomHandler","ConnectedOverlayScrollHandler","UniqueComponentId","ZIndexUtils","CdkVirtualScrollViewport","ScrollingModule","AUTOCOMPLETE_VALUE_ACCESSOR","AutoComplete","overlayService","autoZIndex","baseZIndex","dropdownIcon","unique","completeOnFocus","showClear","completeMethod","onUnselect","onDropdownClick","onClear","onKeyUp","dropdownMode","showTransitionOptions","hideTransitionOptions","autocomplete","onModelChange","onModelTouched","overlayVisible","inputFieldValue","listId","_suggestions","handleSuggestionsChange","ngAfterViewChecked","suggestionsUpdated","alignOverlay","highlightOptionChanged","itemsWrapper","findSingle","scrollInView","virtualScroll","viewPort","getRenderedRange","updateVirtualScrollSelectedIndex","virtualScrollSelectedIndex","scrollToIndex","highlightOption","noResults","autoHighlight","showEmptyMessage","templates","itemTemplate","groupTemplate","selectedItemTemplate","headerTemplate","emptyTemplate","footerTemplate","findOptionIndex","filled","updateInputField","getOptionGroupChildren","optionGroup","optionGroupChildren","getOptionGroupLabel","optionGroupLabel","onInput","inputKeyDown","isIE","multiple","forceSelection","updateFilledState","onInputClick","documentClickListener","inputClick","originalEvent","forceSelectionUpdateModelTimeout","multiInputEL","inputEL","itemClicked","focusInput","onOverlayAnimationStart","appendOverlay","bindDocumentClickListener","bindDocumentResizeListener","bindScrollListener","onOverlayHide","onOverlayAnimationEnd","onOverlayClick","appendTo","restoreOverlayAppend","absolutePosition","multiContainerEL","handleDropdownClick","queryValue","emptyMessageLabel","itemIndex","removedValue","onKeydown","highlightItemIndex","findOptionGroupIndex","nextItemIndex","prevItemIndex","prevGroup","onKeyup","onInputFocus","onInputBlur","itemValue","onInputPaste","documentTarget","isDropdownClick","dropdownButton","unbindDocumentClickListener","documentResizeListener","onWindowResize","unbindDocumentResizeListener","scrollHandler","containerEL","unbindScrollListener","ButtonDirective","Ripple","CdkFixedSizeVirtualScroll","CdkVirtualForOf","panelStyle","styleClass","panelStyleClass","inputId","inputStyleClass","readonly","itemSize","dropdownAriaLabel","ariaLabelledBy","autofocus","AutoCompleteModule","iconPos","loadingIcon","_loading","_initialStyleClass","addMultipleClasses","getStyleClass","createIconEl","labelElement","initialized","setStyleClass","iconElement","iconPosClass","iconClass","getIconClass","labelEl","_icon","setIconClass","removeIconElement","_label","Button","contentTemplate","badgeStyleClass","badge","badgeClass","CALENDAR_VALUE_ACCESSOR","Calendar","multipleSeparator","inline","showOtherMonths","shortYearCutoff","hourFormat","stepHour","stepMinute","stepSecond","showOnFocus","showWeek","selectionMode","todayButtonStyleClass","clearButtonStyleClass","keepInvalid","hideOnDateTimeSelect","timeSeparator","onClose","onTodayClick","onClearClick","onMonthChange","onYearChange","onClickOutside","navigationState","_numberOfMonths","convertTo24Hour","pm","contentViewChild","isMonthNavigate","updateFocus","initFocusableCell","currentView","defaultDate","_defaultDate","currentMonth","currentYear","initTime","createMonths","_minDate","_maxDate","disabledDates","_disabledDates","disabledDays","_disabledDays","yearRange","_yearRange","yearStart","yearEnd","populateYearOptions","showTime","_showTime","currentHour","updateInputfield","responsiveOptions","_responsiveOptions","destroyResponsiveStyleElement","createResponsiveStyle","numberOfMonths","_firstDayOfWeek","createWeekDays","newLocale","attributeSelector","ticksTo1970","translationSubscription","dateTemplate","decadeTemplate","disabledDateTemplate","getOuterWidth","containerViewChild","yearOptions","weekDays","getFirstDateOfWeek","dayLabels","monthPickerValues","yearPickerValues","createMonth","getWeekNumber","checkDate","getFirstDayOfMonthIndex","daysLength","getDaysCountInMonth","prevMonthDaysLength","getDaysCountInPrevMonth","dayNo","monthRows","getPreviousMonthAndYear","otherMonth","remainingDaysLength","getNextMonthAndYear","currentMinute","currentSecond","setCurrentHourPM","timeOnly","navBackward","decrementYear","decrementDecade","navForward","incrementYear","incrementDecade","yearNavigator","switchToMonthView","setCurrentView","switchToYearView","onDateSelect","dateMeta","isMultipleSelection","isDateEquals","shouldSelectDate","selectDate","isSingleSelection","disableModality","maxDateCount","onMonthSelect","onYearSelect","dateAsString","isRangeSelection","startDate","endDate","inputfieldViewChild","formatTime","getDateFormat","stringArrValue","getSundayIndex","daylightSavingAdjust","isDateBetween","isMonthSelected","isYearSelected","validMin","validMax","validDate","validDay","selectOtherMonths","isDateDisabled","isDayDisabled","disabledDate","weekdayNumber","onButtonClick","inputfield","getMonthName","getYear","switchViewButtonDisabled","onPrevButtonClick","backward","onNextButtonClick","onContainerButtonKeydown","trapFocus","onInputKeydown","isKeydown","getFocusableElements","onDateCellKeydown","cellContent","currentTarget","cellIndex","hasClass","prevRow","previousElementSibling","prevCell","navigateToMonth","onMonthCellKeydown","onYearCellKeydown","prevMonthContainer","nextMonthContainer","selectedCell","disabledCells","todayCell","preventFocus","onMonthDropdownChange","onYearDropdownChange","validateTime","convertedHour","valueDateString","incrementHour","prevHour","newHour","newPM","onTimePickerElementMouseDown","onTimePickerElementMouseUp","clearTimePickerTimer","updateTime","onTimePickerElementMouseLeave","timePickerTimer","decrementHour","incrementMinute","decrementMinute","incrementSecond","decrementSecond","newMinute","newSecond","toggleAMPM","onUserInput","parseValueFromString","isValidSelection","updateUI","parseDateTime","tokens","populateTime","timeString","isNotEmpty","propValue","touchUI","onOverlayAnimationDone","enableModality","maskStyleClass","maskClickListener","animationEndListener","destroyMask","bodyChildren","hasBlockerMasks","bodyChild","unbindAnimationEndListener","unbindMaskClickListener","iFormat","lookAhead","shortNames","longNames","literal","validTokenLength","dim","iValue","doy","getNumber","isDoubled","getName","checkLiteral","onTodayButtonClick","onClearButtonClick","responsiveStyleElement","breakpoint","numMonths","o1","o2","isOutsideClicked","isSameNode","isNavIconClicked","isAndroid","iconAriaLabel","monthNavigator","showButtonBar","static","CalendarModule","DROPDOWN_VALUE_ACCESSOR","Dropdown","DropdownItem","onOptionClick","resetFilterOnHide","autoDisplayFirst","tooltipPosition","tooltipPositionStyle","autofocusFilter","onFilter","viewPortOffsetTop","_disabled","emptyFilterTemplate","optionsToDisplay","updateSelectedOption","labelId","findOption","optionsChanged","_filterValue","activateFilter","updateEditableLabel","getOptionLabel","emptyFilterMessageLabel","editableInputViewChild","optionLabel","getOptionValue","optionValue","isOptionDisabled","optionDisabled","onItemClick","accessibleViewChild","measureScrollOffset","selectedOptionUpdated","selectedItem","filterViewChild","onMouseclick","isInputClick","onEditableInputClick","onEditableInputFocus","onEditableInputChange","itemsWrapperSelector","selectedListItem","scrollIntoView","preventModelTouched","scrollToSelectedVirtualScrollElement","virtualAutoScrolled","scrollToOffset","resetOffset","findPrevEnabledOption","prevEnabledOption","findNextEnabledOption","nextEnabledOption","selectedItemIndex","searchTimeout","previousSearchChar","currentSearchChar","searchValue","newOption","searchIndex","searchOptionWithinGroup","searchOption","searchOptionInRange","optgroup","onFilterInputChange","searchFields","filterBy","filteredGroups","filteredSubOptions","applyFocus","preventDocumentDefault","isTouchDevice","selectId","ariaFilterLabel","tooltipStyleClass","DropdownModule","MessagesModule","ProgressBarModule","i8","FileUpload","sanitizer","http","invalidFileSizeMessageSummary","invalidFileSizeMessageDetail","invalidFileTypeMessageSummary","invalidFileTypeMessageDetail","invalidFileLimitMessageDetail","invalidFileLimitMessageSummary","previewWidth","chooseIcon","uploadIcon","cancelIcon","showUploadButton","showCancelButton","onBeforeUpload","onSend","onUpload","onProgress","uploadHandler","_files","uploadedFileCount","file","isImage","objectURL","fileTemplate","toolbarTemplate","onDragOver","advancedFileInput","onFileSelect","isIE11","duplicateIEEvent","msgs","isFileSelected","currentFiles","fileLimit","checkFileLimit","hasFiles","isFileLimitExceeded","clearIEInput","clearInputElement","sFile","isFileTypeValid","severity","summary","maxFileSize","acceptableTypes","acceptable","isWildcard","getTypeClass","getFileExtension","fileType","onImageLoad","customUpload","uploading","formData","isChooseDisabled","basicFileInput","dragHighlight","onDrop","allowDrop","dm","onBasicUploaderClick","onBasicKeydown","getBlockableElement","chooseButtonLabel","chooseLabel","uploadButtonLabel","uploadLabel","cancelButtonLabel","cancelLabel","ProgressBar","Messages","FileUploadModule","INPUTNUMBER_VALUE_ACCESSOR","InputNumber","showButtons","buttonLayout","incrementButtonIcon","decrementButtonIcon","allowEmpty","useGrouping","groupChar","prefixChar","suffixChar","clearTimer","simpleChange","updateConstructParser","constructParser","localeMatcher","currencyDisplay","minimumFractionDigits","minFractionDigits","maximumFractionDigits","maxFractionDigits","NumberFormat","numerals","_numeral","_group","getGroupingExpression","_minusSign","getMinusSignExpression","_currency","getCurrencyExpression","_decimal","getDecimalExpression","_suffix","getSuffixExpression","_prefix","getPrefixExpression","_index","filteredText","spin","validateValue","updateInput","handleOnInput","onUpButtonMouseDown","onUpButtonMouseUp","onUpButtonMouseLeave","onUpButtonKeyDown","onUpButtonKeyUp","onDownButtonMouseDown","onDownButtonMouseUp","onDownButtonMouseLeave","onDownButtonKeyUp","onDownButtonKeyDown","isSpecialChar","onInputKeyDown","selectionStart","selectionEnd","newValueStr","isNumeralChar","deleteChar","decimalCharIndex","decimalCharIndexWithoutPrefix","getDecimalCharIndexes","decimalLength","getDecimalLength","insertedText","isDecimalMode","updateValue","deleteRange","onInputKeyPress","isDecimalSign","isMinusSign","onPaste","filteredData","allowMinusSign","filteredVal","getCharIndexes","minusCharIndex","suffixCharIndex","currencyCharIndex","minusCharIndexOnText","insertText","resolvedOptions","operation","charIndex","textSplit","initCursor","valueLength","prefixLength","resetRegex","valueStr","insertedValueStr","isValueChanged","parsedCurrentValue","currentLength","concatValues","newLength","startValueStr","startExpr","sRegex","tExpr","tRegex","prevChar","isGroupChar","valueSplit","getFormatter","InputText","ariaRequired","incrementButtonClass","decrementButtonClass","InputNumberModule","ngModel","messageService","enableService","messageSubscription","filteredMessages","clearSubscription","hasMessages","removeMessage","Paginator","pageLinkSize","onPageChange","alwaysShow","dropdownScrollHeight","currentPageReportTemplate","showFirstLastIcon","totalRecords","showPageLinks","_first","_page","updatePaginatorState","updatePageLinks","updateFirst","updateRowsPerPageOptions","rowsPerPageOptions","rowsPerPageItems","isFirstPage","getPage","isLastPage","getPageCount","calculatePageLinkBoundaries","numberOfPages","visiblePages","pageLinks","showJumpToPageDropdown","pageItems","changePage","pageCount","changePageToFirst","changePageToPrev","changePageToNext","changePageToLast","onPageLinkClick","onRppChange","onPageDropdownChange","paginatorState","currentPageReport","templateLeft","templateRight","dropdownAppendTo","showCurrentPageReport","showJumpToPageInput","dropdownItemTemplate","PaginatorModule","ink","getInk","getOuterHeight","resetInk","onAnimationEnd","animationListener","ContentChild","SELECTBUTTON_VALUE_ACCESSOR","SelectButton","removeOption","SelectButtonModule","i9","TriStateCheckboxModule","i10","TableService","sortSource","selectionSource","contextMenuSource","valueSource","totalRecordsSource","columnsSource","resetSource","sortSource$","selectionSource$","contextMenuSource$","valueSource$","totalRecordsSource$","columnsSource$","resetSource$","onSort","sortMeta","onResetChange","onTotalRecordsChange","onColumnsChange","Table","tableService","alwaysShowPaginator","paginatorPosition","paginatorDropdownScrollHeight","defaultSortOrder","sortMode","resetPageOnSort","selectAllChange","selectionChange","contextMenuSelectionChange","contextMenuSelectionMode","rowTrackBy","lazy","lazyLoadOnInit","compareSelectionBy","csvSeparator","exportFilename","filterDelay","expandedRowKeys","editingRowKeys","rowExpandMode","scrollDirection","virtualScrollDelay","virtualRowHeight","columnResizeMode","showLoader","showInitialSortBadge","stateStorage","editMode","groupRowsByOrder","responsiveLayout","onRowSelect","onRowUnselect","onPage","onLazyLoad","onRowExpand","onRowCollapse","onContextMenuSelect","onColResize","onColReorder","onRowReorder","onEditInit","onEditComplete","onEditCancel","onHeaderCheckboxToggle","sortFunction","rowsChange","onStateSave","onStateRestore","_totalRecords","selectionKeys","_sortOrder","_selectAll","columnResizing","rowGroupHeaderStyleObject","virtualScrollInitialized","createLazyLoadMetadata","restoringFilter","scrollable","captionTemplate","headerGroupedTemplate","bodyTemplate","loadingBodyTemplate","footerGroupedTemplate","summaryTemplate","colGroupTemplate","expandedRowTemplate","groupHeaderTemplate","rowspanTemplate","groupFooterTemplate","frozenRowsTemplate","frozenHeaderTemplate","frozenBodyTemplate","frozenFooterTemplate","frozenColGroupTemplate","frozenExpandedRowTemplate","emptyMessageTemplate","paginatorLeftTemplate","paginatorRightTemplate","paginatorDropdownItemTemplate","isStateful","resizableColumns","restoreColumnWidths","virtualScrollSubscription","virtualScrollBody","renderedRangeStream","tableHeaderViewChild","stateRestored","restoreState","sortField","groupRowsBy","sortSingle","multiSortMeta","sortMultiple","hasFilter","_filter","_columns","reorderableColumns","columnOrderStateRestored","restoreColumnOrder","_sortField","_multiSortMeta","_selection","preventSelectionSetterPropagation","updateSelectionKeys","saveState","_rows","dataToRender","filteredValue","paginator","anchorRowIndex","resetScrollTop","getSortMeta","getGroupRowsMeta","restoringSort","customSort","data1","data2","multisortField","multisortmeta","isSorted","handleRowClick","targetNode","isMultipleSelectionMode","rangeRowIndex","clearSelectionRange","isRowSelectable","metaSelection","rowTouched","metaKeySelection","dataKeyValue","isSingleSelectionMode","selectionIndex","findIndexInSelection","handleRowTouchEnd","handleRowRightClick","contextMenuSelection","rangeRowsData","rangeRowData","toggleRowWithRadio","toggleRowWithCheckbox","toggleRowsWithCheckbox","selectionPageOnly","frozenValue","matchMode","filterTimeout","isFilterBlank","filterGlobal","globalFilterFieldsArray","globalFilterFields","localMatch","globalMatch","localFiltered","filterField","filterMeta","executeLocalFilter","globalFilterField","dataFieldValue","filterConstraint","globalFilter","getExportHeader","exportHeader","exportCSV","csv","selectionOnly","exportable","cellData","exportFunction","scrollToVirtualIndex","onScrollIndexChange","virtualScrollTimeout","virtualScrollOffset","virtualScrollChunkSize","virtualPage","wrapperViewChild","updateEditingCell","editingCell","editingCellData","editingCellField","editingCellRowIndex","bindDocumentEditListener","isEditingCellValid","documentEditListener","selfClick","unbindDocumentEditListener","overlaySubscription","initRowEdit","saveRowEdit","rowElement","cancelRowEdit","toggleRow","isRowExpanded","onColumnResizeBegin","containerLeft","resizeColumnElement","lastResizerHelperX","onColumnResize","resizeHelperViewChild","onColumnResizeEnd","newColumnWidth","nextColumnWidth","resizeTableCells","tableViewChild","widths","tableHead","destroyStyleElement","createStyleElement","onColumnDragStart","columnElement","reorderIconWidth","getHiddenElementOuterWidth","reorderIndicatorUpViewChild","reorderIconHeight","getHiddenElementOuterHeight","reorderIndicatorDownViewChild","draggedColumn","onColumnDragEnter","dropHeader","containerOffset","dropHeaderOffset","dragIndex","indexWithinGroup","dropIndex","targetLeft","targetTop","columnCenter","dropPosition","dropEffect","onColumnDragLeave","onColumnDrop","dropColumn","reorderArray","onRowDragStart","rowDragging","draggedRowIndex","onRowDragOver","rowY","getWindowScrollTop","rowMidY","prevRowElement","droppedRowIndex","onRowDragLeave","onRowDragEnd","onRowDrop","getStorage","sessionStorage","stateKey","storage","saveColumnWidths","saveColumnOrder","clearState","stateString","reviver","columnWidthsState","tableWidthState","columnOrder","reorderedColumns","findColumnByKey","destroyResponsiveStyle","TableBody","frozenColumns","tableStyle","tableStyleClass","paginatorDropdownAppendTo","rowGroupMode","frozenWidth","responsive","rowHover","autoLayout","minBufferPx","maxBufferPx","frozenRows","updateFrozenRowStickyPosition","updateFrozenRowGroupHeaderStickyPosition","shouldRenderRowGroupHeader","currentRowFieldData","prevRowData","previousRowFieldData","shouldRenderRowGroupFooter","nextRowData","nextRowFieldData","shouldRenderRowspan","calculateRowGroupSize","groupRowSpan","tableHeaderHeight","frozen","RowGroupHeader","getFrozenRowGroupHeaderStickyPosition","FrozenColumn","alignFrozen","_frozen","updateStickyPosition","filterRow","SortableColumn","updateSortState","isFilterElement","onEnterKey","pSortableColumnDisabled","SortIcon","getMultiSortMetaIndex","getBadgeValue","isMultiSorted","SelectableRow","onArrowDownKeyDown","findNextSelectableRow","onArrowUpKeyDown","findPrevSelectableRow","onPageDownKeyDown","onSpaceKeydown","pSelectableRowDisabled","SelectableRowDblClick","ContextMenuRow","pContextMenuRowDisabled","RowToggler","pRowTogglerDisabled","ResizableColumn","resizer","resizerMouseDownListener","bindDocumentEvents","documentMouseMoveListener","onDocumentMouseMove","documentMouseUpListener","onDocumentMouseUp","unbindDocumentEvents","pResizableColumnDisabled","ReorderableColumn","bindEvents","dragStartListener","dragOverListener","dragEnterListener","dragLeaveListener","unbindEvents","pReorderableColumnDisabled","EditableColumn","closeEditingCell","openCell","focusCellSelector","pFocusCellSelector","focusableElement","overlayEventListener","onShiftKeyDown","moveToPreviousCell","moveToNextCell","onArrowDown","findCell","targetCell","findNextEditableColumnByIndex","invokeElementMethod","onArrowUp","findPrevEditableColumnByIndex","onArrowLeft","onArrowRight","findPreviousEditableColumn","findNextEditableColumn","previousRow","lastElementChild","pEditableColumnDisabled","EditableRow","pEditableRowDisabled","InitEditableRow","editableRow","SaveEditableRow","CancelEditableRow","CellEditor","editableColumn","inputTemplate","outputTemplate","TableRadioButton","TableCheckbox","TableHeaderCheckbox","valueChangeSubscription","updateCheckedState","selectionChangeSubscription","selectableVal","ReorderableRowHandle","ReorderableRow","droppable","dragEndListener","pReorderableRowDisabled","ColumnFilterFormElement","onTextInputEnterKeyDown","onNumericInputKeyDown","TriStateCheckbox","filterTemplate","ColumnFilter","showOperator","showApplyButton","showMatchModes","showAddButton","hideOnClear","maxConstraints","initFieldFilterConstraint","generateMatchModeOptions","generateOperatorOptions","resetSubscription","matchModes","matchModeOptions","operatorOptions","defaultMatchMode","getDefaultMatchMode","onMenuMatchModeChange","onRowMatchModeChange","onRowMatchModeKeyDown","prevItem","findPrevItem","onRowClearItemClick","isRowMatchModeSelected","addConstraint","getDefaultOperator","removeConstraint","onOperatorChange","onToggleButtonKeyDown","onEscape","onContentClick","hasRowFilter","fieldConstraints","showRemoveIcon","showMenuButton","isShowOperator","isShowAddConstraint","applyButtonLabel","addRuleButtonLabel","removeRuleButtonLabel","noFilterLabel","fieldFilter","TableModule","_tooltipOptions","tooltipEvent","tooltipZIndex","positionTop","positionLeft","mouseLeaveListener","focusListener","blurListener","getTarget","positionStyle","showDelay","hideDelay","life","tooltipLabel","updateText","clearHideTimeout","clearShowTimeout","tooltipArrow","fadeIn","alignTop","isOutOfBounds","alignBottom","alignRight","alignLeft","getHostOffset","getWindowScrollLeft","preAlign","hostOffset","defaultClassName","resizeListener","TRISTATECHECKBOX_VALUE_ACCESSOR","checkboxTrueIcon","checkboxFalseIcon"],"sourceRoot":"webpack:///"}